Merge Phase 6 and reconcile offline completion, response capture and contract tests
This commit is contained in:
@@ -347,3 +347,25 @@ node --test frontend/media-icons.test.js
|
||||
Both harnesses run Chromium and WebKit at mobile dimensions with stubbed SpeechRecognition and local Saved/Queue metadata. They serve only the frontend, block service workers and external requests, and never download media. Geometry tests cold and switched layouts, six widths (320–430), mic visible/hidden and update icon visible/hidden: center spread ≤1px, touch targets ≥40px, Saved image/text gap ≥8px, no horizontal overflow or clipped car control. `--quick` limits widths and speech cases; `--browser` selects an engine; `--frontend` selects historical fixtures. `--measure-only --label before` records known broken geometry without exiting nonzero.
|
||||
|
||||
Icon checks switch the same page through four layouts × dark/light/contrast, assert SVG definitions, inherited colour, stroke family and save/progress/offline state, and save Queue/Now Playing/navigation shots. Glass Stage intentionally hides bottom navigation, so its full page is recorded instead. Any assertion failure exits nonzero. Shots and raw measurements live in git-ignored plans/ui-shots/. Full production inventory: plans/ui-icon-inventory.md. Native speech recognition, installed-PWA safe-area insets and iPhone rendering still need device verification.
|
||||
|
||||
### Cold waterfall diagnosis
|
||||
|
||||
`--source-root perf/.tmp/<historical-worktree>` runs that worktree's matching
|
||||
frontend **and server**; `--frontend-commit` instead combines archived frontend
|
||||
with the current backend. Run historical comparisons sequentially to avoid CPU
|
||||
contention. The result records `sourceCommit`, `sourceRoot` and the served build.
|
||||
Every cold sample has `waterfalls`: proxy request order/start/headers/end times
|
||||
and page Resource Timing discovery/start/end times. Proxy times start when
|
||||
tracking begins; page times start at navigation. Compare within each clock,
|
||||
then use the page FCP to locate the rendering dependency.
|
||||
|
||||
Pass `--assert-cold` on new builds to require exactly one positive-byte app.js
|
||||
response in every cold sample, including worker installation. Omit this assertion
|
||||
when diagnosing historical regressions.
|
||||
|
||||
Phase 6 counts its fetch-owned app.js response in initial JS/CSS bytes. Since the
|
||||
bootstrap consumes that response asynchronously, DOMContentLoaded no longer means
|
||||
app execution is complete; compare the existing actual boot-done landmark.
|
||||
|
||||
`--scenario warm,offline,update-js,update-css,update-feature` runs a regression
|
||||
sweep without repeating an already-completed cold acceptance run.
|
||||
|
||||
Reference in New Issue
Block a user