Measure complete CSS updates and fully cached warm reloads

This commit is contained in:
Jonathan Sykes
2026-10-08 05:12:32 +08:00
parent ce5a159d4a
commit a08d363f2d
5 changed files with 88 additions and 28 deletions

View File

@@ -311,3 +311,27 @@ plus the source frontend build tag. WebKit does not expose the long-task API.
Migration supports `--out` to preserve earlier phase evidence. Existing lazy
harness results are copied to `phase4-lazy-2026-10-08.json` after each Phase 4 run
and the Phase 3 result is restored. No production requests or deploys are needed.
## Phase 5 complete measurements
```bash
node --test perf/measurement.test.mjs
node perf/baseline.mjs --runs 5 --browser all --profile all --scenario all \
--out perf/results/final-2026-10-08.json \
--compare perf/results/baseline-2026-10-07.json
node perf/lazy.mjs --browser all --out perf/results/phase5-lazy-2026-10-08.json
```
Warm reloads now wait for verified idle asset caching before counters reset and
assert that no application asset body transfers. CSS update totals now include
activation and the changed inactive stylesheet's verified background cache fill,
matching the feature-update boundary. `readyWireBytes`/`readyDuration` retain the
blocking readiness snapshot separately. Core updates stop at blocking readiness
because app.js is blocking. Every update asserts that the only application asset
payload is the edited file; worker script checks/imports and index/manifest count
as overhead in the total. Historical Phase 3/4 CSS numbers were readiness only.
No product behavior changes are involved in these measurement corrections.
Keep browser/build/test processes idle during full timing measurements. WebKit's
zero long-task field means unavailable, not zero work. Autoplay-blocked/media-ready
null results do not establish playback performance or iPhone audio continuity.