# E2E visual artifacts (#65) Screenshots from `npx playwright test` for Milestone 2 Photos-ready evidence. ## How to run (local box — not ubudual :10880) ```bash cd frontend npm ci npx playwright install chromium # once per machine npm run test:e2e ``` Or against an already-running preview: ```bash npm run build && npm run preview -- --host 127.0.0.1 --port 4173 # other terminal: npx playwright test ``` Fixtures: `tests/fixtures/set1-48x2/` (L=48, thickness=2) and `set2-31x2p5/` (L=31, thickness=2.5). Black sheet — e2e selects **Black** and may nudge sensitivity. ## Expected screenshots (this folder) | File | Step | |---|---| | `01-batch.png` | Batch with fixtures loaded | | `02-pick-calibration.png` | Pick calibration | | `03-mask.png` | Mask (Black sheet) ready to approve | | `04-axis.png` | Tape calibration page | | `05-tape-calibration.png` | Length and thickness entered on the tape page | | `06-photos-ready.png` | Photos ready lineup (clean + overlay + siblings) | | `tape-fixed-line.png` | #99 fixed tape line: no tick-drag copy, ticks follow the crop slider | | `tape-fixed-line-crop50.png` | #99 fixed tape line at 50% crop fill (line ends pulled in) | `tape-fixed-line.spec.ts` asserts the #99 contract: the line is a stage fixture, its ends are a pure function of `crop_fill`, a drag starting on a tick behaves exactly like a pan elsewhere, and arrow keys cannot move the ends. Large regenerating `*.png` and Playwright `test-results/` / `playwright-report/` are gitignored. Committed small evidence JPEGs live in `evidence/` (regenerate with a green `npm run test:e2e`, then re-encode if needed). ## Unit tests `npm test` must still pass separately from Playwright.