From 4ddb07ac2d8a35be18550770d9b192177469f949 Mon Sep 17 00:00:00 2001 From: Steve Gravrock Date: Sat, 14 Mar 2026 09:04:18 -0700 Subject: [PATCH] Drop support for Firefox 102, 115, and 128 (old ESRs) These browsers have bugs that occasionally cause typed array comparisons to pass when they should fail, or vice versa: * for...in loops sometimes omit keys, such that two typed arrays with different lengths appear to have the same set of keys. * Typed arrays sometimes have mulitple undefined keys (which is to say that the key itself is undefined). Two typed arrays with identical length and contents can compare unequal because of the spurious undefined keys.) Those problems could be avoided by comparing keys 0...length-1 rather than the actual set of exposed keys, but that would be a pretty nasty breaking change for anyone whose code tacks extra properties onto typed arrays. So far these bugs haven't been seen in anything newer than FF 128. Since the affected browsers are all past end of life, the most sensible thing is to just stop testing against them. --- README.md | 2 +- package.json | 4 ++-- scripts/run-sauce-browsers | 13 +------------ spec/core/StackTraceSpec.js | 2 +- spec/core/jasmineNamespaceSpec.js | 3 +-- 5 files changed, 6 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index c0ef41dd..14e946b5 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Microsoft Edge) as well as Node. | Node | 20, 22, 24 | | Safari | 26* | | Chrome | Evergreen | -| Firefox | Evergreen, 102*, 115*, 128*, 140 | +| Firefox | Evergreen, 140 | | Edge | Evergreen | For evergreen browsers, each version of Jasmine is tested against the version of the browser that is available to us diff --git a/package.json b/package.json index 57822b3c..736c90cb 100644 --- a/package.json +++ b/package.json @@ -52,8 +52,8 @@ "sass": "^1.58.3" }, "browserslist": [ - "Safari >= 16", - "Firefox >= 102", + "Safari >= 26", + "Firefox >= 140", "last 2 Chrome versions", "last 2 Edge versions" ] diff --git a/scripts/run-sauce-browsers b/scripts/run-sauce-browsers index 8816594c..324ed6d2 100755 --- a/scripts/run-sauce-browsers +++ b/scripts/run-sauce-browsers @@ -31,19 +31,8 @@ passfile=`mktemp -t jasmine-results.XXXXXX` || exit 1 failfile=`mktemp -t jasmine-results.XXXXXX` || exit 1 run_browser chrome latest - run_browser firefox latest -if [ "$1" = "--not-actually-all" ]; then - echo "SKIPPED: firefox 140" >> "$passfile" - echo "SKIPPED: firefox 128" >> "$passfile" - echo "SKIPPED: firefox 115" >> "$passfile" -else - run_browser firefox 140 - run_browser firefox 128 - run_browser firefox 115 -fi -run_browser firefox 102 - +run_browser firefox 140 run_browser MicrosoftEdge latest echo diff --git a/spec/core/StackTraceSpec.js b/spec/core/StackTraceSpec.js index 0248b5f3..1a7e99a9 100644 --- a/spec/core/StackTraceSpec.js +++ b/spec/core/StackTraceSpec.js @@ -116,7 +116,7 @@ describe('StackTrace', function() { ]); }); - it('understands Safari <=14/Firefox style traces', function() { + it('understands Firefox style traces', function() { const error = { message: 'nope', stack: diff --git a/spec/core/jasmineNamespaceSpec.js b/spec/core/jasmineNamespaceSpec.js index 20f55925..baa50734 100644 --- a/spec/core/jasmineNamespaceSpec.js +++ b/spec/core/jasmineNamespaceSpec.js @@ -128,8 +128,7 @@ describe('The jasmine namespace', function() { return result; } - // Can't use Set#difference yet because it isn't available in Node <22, - // Firefox <108, or Safari <17. + // Can't use Set#difference yet because it isn't available in Node <22 function setDifference(a, b) { const result = new Set();