test: approve automated portfolio visual quality
This commit is contained in:
46
docs/accessibility/flash-analysis.md
Normal file
46
docs/accessibility/flash-analysis.md
Normal file
@@ -0,0 +1,46 @@
|
||||
# Flash analysis evidence
|
||||
|
||||
Status date: 2026-09-02
|
||||
|
||||
## Shipped surfaces in scope
|
||||
|
||||
- Procedural journey scene in its default and scroll-accelerated states.
|
||||
- Static and `prefers-reduced-motion` poster states.
|
||||
- Project media: **not applicable yet**. The public asset manifest is intentionally empty while final derivatives and imagery rights await Luca's approval. This record must be extended before any video or animated project asset is published.
|
||||
|
||||
## Automated method
|
||||
|
||||
`tests/browser/visual-regression.spec.ts` captures the real `.journey-world` at 10 frames per second. The accelerated sequence receives two production wheel inputs before a two-second capture. Static and reduced-motion sequences are captured separately.
|
||||
|
||||
Each frame is downsampled to 160×90 RGB pixels. Between adjacent frames, a pixel is classed as a general-flash luminance change when:
|
||||
|
||||
1. relative luminance changes by at least 0.1; and
|
||||
2. the darker state is below 0.8.
|
||||
|
||||
A transition is conservatively treated as large-area when one direction affects at least 25% of the sampled viewport. Within every rolling one-second window, opposing large-area transitions are paired into flashes. The test fails above three flashes per second. JSON event evidence is attached to the Playwright result for the live, Static, and reduced-motion sequences.
|
||||
|
||||
This deliberately conservative area rule does not use the WCAG small-area exemption. It checks luminance flash, not red-flash chromaticity in isolation; the shipped scene contains no full-field saturated-red strobe, and the manual review below remains required.
|
||||
|
||||
## Automated result
|
||||
|
||||
| Engine/state | Result | Evidence |
|
||||
| -------------------------------------------------------- | -------------------------------------------------------------- | ---------------------------------------------------------- |
|
||||
| Chrome for Testing 151.0.7922.34, accelerated live scene | **PASS — no rolling one-second window exceeded three flashes** | `live-scene-flash-analysis.json` Playwright attachment |
|
||||
| Chrome for Testing 151.0.7922.34, Static | **PASS — zero qualifying flashes** | `static-flash-analysis.json` Playwright attachment |
|
||||
| Chrome for Testing 151.0.7922.34, reduced motion | **PASS — zero qualifying flashes** | `reduced-motion-flash-analysis.json` Playwright attachment |
|
||||
|
||||
These results came from Playwright 1.62.1 and were reconfirmed in the final successful complete browser run (157 passed, 41 deliberate skips):
|
||||
|
||||
```text
|
||||
npm run test:browser -- tests/browser/visual-regression.spec.ts
|
||||
```
|
||||
|
||||
## Required human/platform evidence — pending, not passed
|
||||
|
||||
- [ ] Review the accelerated scene at normal speed and during repeated direction changes; record reviewer, date, display refresh rate, and result.
|
||||
- [ ] Review every final encoded project video/animation after its exact approved bytes are bound into the public manifest.
|
||||
- [ ] Run the automated capture in current Firefox and WebKit/Safari-capable infrastructure and attach the corresponding JSON.
|
||||
- [ ] Run the automated capture in current Edge and the previous stable desktop majors named by the release matrix.
|
||||
- [ ] Review on the physical iPhone 13 and Pixel 6 during `physical-drive.v1`.
|
||||
|
||||
No unsupported engine, physical device, or unpublished project-media result is represented as passed.
|
||||
Reference in New Issue
Block a user