test: approve automated portfolio visual quality

This commit is contained in:
2026-09-02 08:03:41 +03:00
parent f4cf9fc77e
commit a1520f2783
7 changed files with 815 additions and 20 deletions

View 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.