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.
This commit is contained in:
Steve Gravrock
2026-03-14 09:04:18 -07:00
parent 6c61b11a6e
commit 4ddb07ac2d
5 changed files with 6 additions and 18 deletions

View File

@@ -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

View File

@@ -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"
]

View File

@@ -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

View File

@@ -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:

View File

@@ -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();