test: prove the frame lifecycle fixes against the real extension

The evidence for the frame-observation fixes was a reimplementation of the
logic measured in a browser console, not the shipped code. Two extension
specs now cover the observable behaviour end to end: a player frame that
swaps its document, and the same one level deeper.

The nested case fails against the pre-fix content.js and passes now. The
top-level case already passed before the fix, so that fix removed dead
observer registrations without changing what a user could see; recorded
here so the distinction is not lost.

Also adds bench-finder.mjs, which measures the extracted shipped finder
instead of a transcription of it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
KoalaDev
2026-08-14 07:53:45 +02:00
parent 66971150c7
commit ef1fdc89c3
8 changed files with 177 additions and 0 deletions
+15
View File
@@ -50,6 +50,21 @@ reads as a broken fixture instead of a scoring regression.
| `background-loop.html` | Silent looping hero must lose despite being the largest |
| `multi-player.html` | Between equal players, the playing one wins |
| `sourceless.html` | A large `<video>` with no source can never be the player |
| `nested-frame.html` | Player two frame levels down |
| `reloading-frame.html` | Frame that swaps its document, with no mutation in the top one |
## Benchmark
`bench-finder.mjs` is not a spec, because timings are machine dependent and
would only add noise to CI. Run it by hand when the finder changes:
```bash
node tests/e2e/fixture-server.mjs 4173 & node tests/e2e/bench-finder.mjs
```
It measures the shipped finder (lifted from `content.js`) against the
pre-v3.1.0 formula, which is transcribed inside the script since that code no
longer exists in the tree.
## Regenerating the media