test(a11y): demonstrate clipped initial mobile CV preview
This commit is contained in:
@@ -2,9 +2,9 @@
|
||||
|
||||
## Current P5-15-02 bounded audit reconciliation
|
||||
|
||||
[Responsive/accessibility audit](p5-15-02/README.md) adds actual keyboard/zoom/native-picker evidence without changing application code. [Native observations](p5-15-02/evidence/native-issues.json) and [defect register](p5-15-02/DEFECTS.md) prove keyboard attachment/import activation failures (W08/J10), reduced-motion drawer focus/Escape failure (E07), unsupported CV source action (C07), and report-link target-size failure (S01, contextual WCAG exception review retained). These are new audit observations, not a claim that all original data semantics failed or that this checkpoint introduced them.
|
||||
[Responsive/accessibility audit](p5-15-02/README.md) adds actual keyboard/zoom/native-picker evidence without changing application code. [Native observations](p5-15-02/evidence/native-issues.json) and [defect register](p5-15-02/DEFECTS.md) prove keyboard attachment/import activation failures (W08/J10), reduced-motion drawer focus/Escape failure (E07), unsupported CV source action (C07), and report-link target-size failure (S01, contextual WCAG exception review retained), and clipped initial mobile CV preview (C06). These are new audit observations, not a claim that all original data semantics failed or that this checkpoint introduced them.
|
||||
|
||||
Current totals: **PASS0 / PARTIAL51 / FAIL5 / DEFERRED1 / BLOCKED0 / NOT VERIFIED0 =57**. All original00/01/R-01/R-02/R-03 columns and their failed/green evidence remain historical. No whole group earns PASS. Avatar/heading/iframe-landmark warnings and absent human/device evidence remain PARTIAL rather than invented failures. C11/P5-13 remains deferred, unqualified and Production-withheld. A11Y-01 is P1 and blocks progression/release acceptance until independently repaired; other findings remain assigned to bounded P5-15-04 work. Complete ordinary regression is a separate audit evidence step, not yet claimed green here. Production main is unchanged and NO-GO.
|
||||
Current totals: **PASS0 / PARTIAL50 / FAIL6 / DEFERRED1 / BLOCKED0 / NOT VERIFIED0 =57**. All original00/01/R-01/R-02/R-03 columns and their failed/green evidence remain historical. No whole group earns PASS. Avatar/heading/iframe-landmark warnings and absent human/device evidence remain PARTIAL rather than invented failures. C11/P5-13 remains deferred, unqualified and Production-withheld. A11Y-01 and A11Y-11 are P1 and blocks progression/release acceptance until independently repaired; other findings remain assigned to bounded P5-15-04 work. Complete ordinary regression is a separate audit evidence step, not yet claimed green here. Production main is unchanged and NO-GO.
|
||||
|
||||
## Historical P5-15-01R-03 reconciliation
|
||||
|
||||
@@ -104,7 +104,7 @@ Historical visual links describe only their recorded fixtures and review. Four t
|
||||
| **PRES-C03** — Upload/extract/rebuild/reprocess/diff/select/accept/discard/retry/cancel | Career import/review; [extraction/diff/review consumer](../../../../job-tracker-ui/src/views/CareerProfilePage.tsx). Entry only: existing Career upload/extraction/reprocess/diff/accept/discard/retry/cancel owners retained. | [F:profile-page](../../../../job-tracker-ui/src/profile-page.test.tsx); [B:ProfileCvController](../../../../JobTrackerApi.Tests/ProfileCvControllerTests.cs); [B:CvProfileDiffService](../../../../JobTrackerApi.Tests/CvProfileDiffServiceTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [02 audit](p5-15-02/README.md), [findings](p5-15-02/DEFECTS.md); human/device and complete-group acceptance remain open | Unusual/scanned/OCR document quality and full low-confidence deselection/discard browser acceptance remain unverified; no provider certification. | Career/extraction owner; H — audit low-confidence deselect/discard/retry/cancel and corpus quality; approve provider calls separately. |
|
||||
| **PRES-C04** — Evidence bank source/category/tags/add/list/delete | Career overview/evidence; [CareerEvidenceBank](../../../../job-tracker-ui/src/views/career/CareerEvidenceBank.tsx). Evidence-bank owner unchanged; job source relationships retained through [P5-08b](../p5-08b/README.md). | [F:career-evidence](../../../../job-tracker-ui/src/career-evidence.test.tsx); [B:CareerEvidenceController](../../../../JobTrackerApi.Tests/CareerEvidenceControllerTests.cs) | [Inherited P4 visual/manual limits](../../phase-4/p4-06/PRESERVATION_ACCEPTANCE.md); [P5-01 moved entry](../p5-01/README.md). No dedicated full-group current EN/NB responsive sign-off. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [02 audit](p5-15-02/README.md), [findings](p5-15-02/DEFECTS.md); human/device and complete-group acceptance remain open | Full delete/many-item search/keyboard browser acceptance remains open; broader Career page work stays Phase 7. | Career owner; M — audit evidence source/category/tags/delete and large-list keyboard/source navigation. |
|
||||
| **PRES-C05** — CV library create/copy/delete/templates/share/publication/PDF | `/career/builder`; [CvBuilderPage](../../../../job-tracker-ui/src/views/CvBuilderPage.tsx), [template gallery](../../../../job-tracker-ui/src/components/CvTemplateGallery.tsx). Library/CRUD/public ownership retained; editor actions in [P5-09](../p5-09/README.md) and shared template gallery in [P5-12](../p5-12/README.md). | [F:cv-builder-page](../../../../job-tracker-ui/src/cv-builder-page.test.tsx); [F:cv-template-thumbnail](../../../../job-tracker-ui/src/cv-template-thumbnail.test.tsx); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs); [B:PublicCvController](../../../../JobTrackerApi.Tests/PublicCvControllerTests.cs) | [P5-09–12 CV evidence](../p5-12/README.md); [P5-14 four pairs, 320–1440/landscape, keyboard/pointer/emulated touch](../p5-14/README.md). Human/physical/zoom/production unaccepted. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [02 audit](p5-15-02/README.md), [findings](p5-15-02/DEFECTS.md); human/device and complete-group acceptance remain open | Complete publish/unpublish/old-link revocation chain and every library/template combination remain unverified; library redesign is not claimed. | CV owner; H — audit create/copy/delete/gallery/share/publish/unpublish and old-public-link revocation; keep numeric/slug identity distinct. |
|
||||
| **PRES-C06** — Studio tabs, preview debounce/pages/fit/save state/mobile panes | `/career/builder/:id`; [editor/preview owner](../../../../job-tracker-ui/src/views/CvBuilderEditor.tsx). Direct [P5-09](../p5-09/README.md) frame/navigation, [P5-11](../p5-11/README.md) live preview and [P5-12](../p5-12/README.md) controls; one save/preview/mobile owner. [P5-14 responsive/ownership successor](../p5-14/README.md) now supplements this record. | [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | [P5-09–12 CV evidence](../p5-12/README.md); [P5-14 four pairs, 320–1440/landscape, keyboard/pointer/emulated touch](../p5-14/README.md). Human/physical/zoom/production unaccepted. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [02 audit](p5-15-02/README.md), [findings](p5-15-02/DEFECTS.md); human/device and complete-group acceptance remain open | P5-14 now supplies the integrated held-PUT pane/viewport, preview boundary-key/scroll, reachable return, canvas and hit-test successor. Physical touch/software keyboard, 200%/400% zoom, human AT, broader wrapped/short-height states and production rendering remain unaccepted. | CV/accessibility owner; H — retain P5-14 held-PUT/responsive/scroll checks; obtain physical touch/software keyboard/zoom/manual AT evidence. |
|
||||
| **PRES-C06** — Studio tabs, preview debounce/pages/fit/save state/mobile panes | `/career/builder/:id`; [editor/preview owner](../../../../job-tracker-ui/src/views/CvBuilderEditor.tsx). Direct [P5-09](../p5-09/README.md) frame/navigation, [P5-11](../p5-11/README.md) live preview and [P5-12](../p5-12/README.md) controls; one save/preview/mobile owner. [P5-14 responsive/ownership successor](../p5-14/README.md) now supplements this record. | [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | [P5-09–12 CV evidence](../p5-12/README.md); [P5-14 four pairs, 320–1440/landscape, keyboard/pointer/emulated touch](../p5-14/README.md). Human/physical/zoom/production unaccepted. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **FAIL**; [02 native mobile/PDF proof](p5-15-02/evidence/mobile-preview-proof.json), [A11Y-11](p5-15-02/DEFECTS.md); initially hidden visible page retains zero-width flow/clipped content; fixture page count matches PDF; desktop keyboard/fidelity and source/history remain separately green | P5-14 now supplies the integrated held-PUT pane/viewport, preview boundary-key/scroll, reachable return, canvas and hit-test successor. Physical touch/software keyboard, 200%/400% zoom, human AT, broader wrapped/short-height states and production rendering remain unaccepted. | CV/accessibility owner; H — retain P5-14 held-PUT/responsive/scroll checks; obtain physical touch/software keyboard/zoom/manual AT evidence. |
|
||||
| **PRES-C07** — Visibility/order/custom sections and item/document overrides | Builder Content; [ContentTab/EntryEditor](../../../../job-tracker-ui/src/views/CvBuilderEditor.tsx), [useDragReorder](../../../../job-tracker-ui/src/hooks/useDragReorder.ts). Direct [P5-10](../p5-10/README.md) source/item/custom editing and [P5-12](../p5-12/README.md) settings retention; explicit reset/inclusion/order retained. [P5-14 responsive/ownership successor](../p5-14/README.md) now supplements this record. | [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [F:cvBuilder](../../../../job-tracker-ui/src/cvBuilder.test.ts); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | [P5-09–12 CV evidence](../p5-12/README.md); [P5-14 four pairs, 320–1440/landscape, keyboard/pointer/emulated touch](../p5-14/README.md). Human/physical/zoom/production unaccepted. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **FAIL**; [02 audit](p5-15-02/README.md), [findings](p5-15-02/DEFECTS.md); A11Y-03 source-editor404 | P5-14 closes P5-10-O01 only for tested ownership/default-drop cases: entry/section order, inactive nested lists and foreign editable-title non-mutation. Physical touch/text selection/all-browser gestures and exhaustive saved override/reset combinations remain unqualified. | CV/accessibility owner; H — retain tested native nested ownership/default-drop checks; audit physical touch/text selection/all-browser overrides before broader claim. |
|
||||
| **PRES-C08** — Capability-aware templates/typography/color/header/skills/sidebar/photo | Builder Template/Customize; [CvCustomizeTab](../../../../job-tracker-ui/src/components/cv/CvCustomizeTab.tsx), [gallery](../../../../job-tracker-ui/src/components/CvTemplateGallery.tsx). Direct [P5-12](../p5-12/README.md) nine-template capability/control presentation and [P5-11](../p5-11/README.md) preview; renderer/template IDs retained. | [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [F:cvBuilder](../../../../job-tracker-ui/src/cvBuilder.test.ts); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | [P5-09–12 CV evidence](../p5-12/README.md); [P5-14 four pairs, 320–1440/landscape, keyboard/pointer/emulated touch](../p5-14/README.md). Human/physical/zoom/production unaccepted. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [02 audit](p5-15-02/README.md), [findings](p5-15-02/DEFECTS.md); human/device and complete-group acceptance remain open | All-template/font/photo/wrapped-line/browser/control combinations and broad custom-colour/manual AT remain unverified; finite capability matrix and Pro locks are not exhaustive. | CV/renderer owner; M — audit capability controls/locks and broader font/photo/wrapped text; manual custom-colour names and contrast. |
|
||||
| **PRES-C09** — A4/Letter/density/margins/dates/document locale/section presentation | Builder Customize/Content; [document settings](../../../../job-tracker-ui/src/components/cv/CvCustomizeTab.tsx), [settings client](../../../../job-tracker-ui/src/cvBuilder.ts). Direct [P5-12](../p5-12/README.md) A4/Letter/density/margin/date/language/columns controls; [pagination repair](../p5-09-pagination-readiness/README.md) retained. | [F:cvBuilder](../../../../job-tracker-ui/src/cvBuilder.test.ts); [F:cv-builder-deep-link](../../../../job-tracker-ui/src/cv-builder-deep-link.test.tsx); [B:CvBuilder](../../../../JobTrackerApi.Tests/CvBuilderTests.cs) | [P5-09–12 CV evidence](../p5-12/README.md); [P5-14 four pairs, 320–1440/landscape, keyboard/pointer/emulated touch](../p5-14/README.md). Human/physical/zoom/production unaccepted. | **PARTIAL** | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [01 evidence](p5-15-01/PRES_RESULTS.md) | **PARTIAL**; [02 audit](p5-15-02/README.md), [findings](p5-15-02/DEFECTS.md); human/device and complete-group acceptance remain open | Recorded unchanged-tolerance local fidelity supersedes prior six-fixture failures; all advanced combinations, deployment fonts/photo/wrapped text and manual print inspection remain open. | CV/renderer owner; H — retain unchanged numerical oracle/settings exports; audit advanced locale/layout combinations and actual deployed print/fonts. |
|
||||
|
||||
@@ -6,7 +6,7 @@ Reconciled against [OPEN_BLOCKERS](../OPEN_BLOCKERS.md), [P4-06](../../phase-4/p
|
||||
|
||||
## P5-15-02 current acceptance delta
|
||||
|
||||
The [02 native audit](p5-15-02/README.md) and [findings](p5-15-02/DEFECTS.md) supersede inherited accessibility counts/status only for measured scopes. Confirmed **A11Y-01 P1 keyboard upload/import failure** is **A+B**, owned by attachments/import UI and accessibility, requiring its own native-keyboard repair/round-trip before release or progression. Reduced-motion drawer return/source404/report target sizing are also open acceptance defects. No broad remediation is hidden in this audit. Mandatory independent human reader and physical-device/software-keyboard acceptance remain unperformed; operator availability alone does not close RD06/07. Actual Chromium zoom adds bounded measurements, not all-action/all-browser acceptance. All production/provider/recovery blockers and P5-13 deferral remain unchanged.
|
||||
The [02 native audit](p5-15-02/README.md) and [findings](p5-15-02/DEFECTS.md) supersede inherited accessibility counts/status only for measured scopes. Confirmed **A11Y-01 P1 keyboard upload/import failure** is **A+B**, owned by attachments/import UI and accessibility, requiring its own native-keyboard repair/round-trip before release or progression. Reduced-motion drawer return/source404/report target sizing are also open acceptance defects. New **A11Y-11 P1** initial mobile visible-page zero-width/collapsed content is also **A+B**, CV/rendering owner, requiring independent P5-15-04-CV-01; native PDF remains authoritative and this fixture page count matches. No broad remediation is hidden in this audit. Mandatory independent human reader and physical-device/software-keyboard acceptance remain unperformed; operator availability alone does not close RD06/07. Actual Chromium zoom adds bounded measurements, not all-action/all-browser acceptance. All production/provider/recovery blockers and P5-13 deferral remain unchanged.
|
||||
|
||||
## Classification
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
[02 audit](p5-15-02/README.md), [native coverage](p5-15-02/TEST_COVERAGE.md), [findings](p5-15-02/DEFECTS.md), [reflow measurements](p5-15-02/RESPONSIVE_RESULTS.md) and [manual packet](p5-15-02/MANUAL_ACCEPTANCE.md) now supersede the prior “02 not started” statements. Application/API/renderer behavior is unchanged. Actual Chromium100/200/400 zoom is measured separately from touch emulation, screen-reader speech and physical-device/software-keyboard acceptance. Owner reports a reader operator available; actual results remain NOT VERIFIED until supplied.
|
||||
|
||||
**P5-15-02: NO-GO for P5-15-03** on confirmed P1 keyboard upload/import failure. Reduced-motion drawer return, source-editor404 and small report targets also need bounded disposition. [57-group matrix](PRESERVATION_ACCEPTANCE.md) now reconciles **0PASS/51PARTIAL/5FAIL/1DEFERRED/0BLOCKED/0NOT VERIFIED** while retaining every historical status column. Separate UI-rule warnings/manual gaps are not automatically failures. Complete regression/fidelity and final audit reconciliation are still being collected at this intermediate record; known failures are neither skipped nor expected-failing.
|
||||
**P5-15-02: NO-GO for P5-15-03** on confirmed P1 keyboard upload/import failure and the [native initial mobile CV/PDF mismatch](p5-15-02/evidence/mobile-preview-proof.json). Reduced-motion drawer return, source-editor404 and small report targets also need bounded disposition. [57-group matrix](PRESERVATION_ACCEPTANCE.md) now reconciles **0PASS/50PARTIAL/6FAIL/1DEFERRED/0BLOCKED/0NOT VERIFIED** while retaining every historical status column. Separate UI-rule warnings/manual gaps are not automatically failures. Complete regression/fidelity and final audit reconciliation are still being collected at this intermediate record; known failures are neither skipped nor expected-failing.
|
||||
|
||||
P5-13 remains deferred/unqualified/Production-withheld0/366,0human semantic reviews, UI unimplemented. Production main remains unchanged/NO-GO; F04, current complete backup/tested restore, configuration/schema/secrets, rollback and deployed acceptance remain open. No automatic P5-15-03/04, P5-13, B07 or deployment follows from this audit.
|
||||
|
||||
|
||||
@@ -10,9 +10,11 @@ Audit source `cf847e9b256d9aec733abf3f37c42852c9dd2421`,2026-10-10. These findin
|
||||
| **A11Y-02 — Mobile drawer focus and immediate Escape. E07** | Jobs390×900 EN/light, reduced motion: focus Open navigation, Enter; drawer visible, Dashboard does not receive focus. Focus remains on the now-hidden background trigger before and after axe. Immediate Escape leaves drawer open. Tab then Escape can close it, but restores focus to another background button. CV390×844 NB/dark emulated tap also fails immediate Escape return. | **P2, release acceptance blocker**; focus order/modal containment/return (WCAG2.4.3/2.4.7 and PRES-E07). Recovery exists through an additional Tab, so this evidence does not establish every navigation action permanently unusable. Ordinary historical shell checks passing do not close the new reduced-motion path. No security/data finding. | Shell/accessibility owner; independent **P5-15-04-A11Y-02**, deterministic reduced-motion entry, containment, Escape/Tab and correct trigger return at breakpoints; retain existing shell behavior. Exact transition/focus race diagnosis remains required. **OPEN**. |
|
||||
| **A11Y-03 — CV source-editor destination. C07** | Native CV Content, desktop EN/light: keyboard-activate Open Career Profile; actual href/destination `/career/profile`, which has no current route and resolves404. Expected existing `/career` or `/career?section=profile`, preserving canonical source isolation. Source action is equally incorrect for pointer activation. | **P2, functional acceptance blocker**; accessible destination/product source-versus-override contract. Canonical editor is reachable through shell; no canonical mutation, CV/history corruption or lost persisted data demonstrated. | CV/navigation owner; independent **P5-15-04-A11Y-03**, minimal existing-route correction and real source/action/Back/localisation tests. **OPEN**. Do not add a second embedded canonical editor. |
|
||||
|
||||
| **A11Y-11 — Initial mobile visible-page measurement. C06; C09/C12 supporting** | Open the synthetic CV directly at390×844 EN/light in initial Edit mode, wait for the native ready signal, Enter Preview and settle fonts/two animation frames. Hidden measurement width793.6875 is physical; visible page width/flow remains0 with ready=true/non-finite page dataset. Preview says1page and shows collapsed/clipped text. The same owned native export API returns200 and **1 A4 PDF page**: page count matches, content placement does not. [Native proof](evidence/mobile-preview-proof.json), [preview](evidence/screenshots/mobile-preview-measurement-390-en-light.png), [PDF page1](evidence/screenshots/mobile-preview-native-pdf-page1.png). Bokmål/dark emulated screenshot independently shows the same collapsed strip. | **P1, production/progression-blocking** materially incorrect content placement/clipping and unusable preview; no page-count mismatch is claimed for this fixture. [CV frame](../../../../../job-tracker-ui/src/views/CvBuilderEditor.tsx) hides visible-page frames in compact Edit mode; [pagination](../../../../../job-tracker-ui/src/cvPreview.ts) reads their width under display:none and publishes ready/page data without visible-mode remeasurement. The finite direct-renderer/desktop-first16 fixtures can pass while this lifecycle fails. Native PDF remains correct/authoritative; no content/revision/source mutation observed. | CV/rendering owner; independent **P5-15-04-CV-01**, regression-first deterministic visible-page physical measurement when initially hidden, readiness/layout after mode switch, EN/NB/themes/mobile/direct reload and full fidelity gates. Do not alter print geometry/PDF to match collapsed preview. **OPEN**. |
|
||||
|
||||
## Automated findings requiring a contextual disposition
|
||||
|
||||
These are rule entries/nodes, not a count of independent defects. Best-practice tags are not mislabeled as WCAG-AA violations; absence of a human reader is not a functional FAIL.
|
||||
These are rule entries/nodes, not a count of independent defects. Best-practice tags are not mislabeled as WCAG-AA violations; absence of completed human-reader results is not a functional FAIL.
|
||||
|
||||
| ID / route / PRES | Measured evidence | Classification and next action |
|
||||
|---|---|---|
|
||||
@@ -34,4 +36,4 @@ These are rule entries/nodes, not a count of independent defects. Best-practice
|
||||
|
||||
## Scope and stop conditions
|
||||
|
||||
**A11Y-01 makes P5-15-02 NO-GO for P5-15-03 until the severe keyboard gap is repaired or explicitly reviewed with adequate evidence.** Continue only safe audit collection; no upload of real user data, emergency broad UI change or automatic next slice. Other findings remain separately owned in P5-15-04; production additionally stays NO-GO for F04, backup/restore, configuration/schema/secrets, rollback and deployed acceptance. No new authentication/tenant-integrity regression is demonstrated by these UI findings. P5-13 remains deferred/unqualified/Production-withheld (0/366, no human semantic reviews/UI); no Docker/provider/B07/deployment work.
|
||||
**A11Y-01 and A11Y-11 make P5-15-02 NO-GO for P5-15-03 until the severe keyboard gap is repaired or explicitly reviewed with adequate evidence.** Continue only safe audit collection; no upload of real user data, emergency broad UI change or automatic next slice. Other findings remain separately owned in P5-15-04; production additionally stays NO-GO for F04, backup/restore, configuration/schema/secrets, rollback and deployed acceptance. No new authentication/tenant-integrity regression is demonstrated by these UI findings. P5-13 remains deferred/unqualified/Production-withheld (0/366, no human semantic reviews/UI); no Docker/provider/B07/deployment work.
|
||||
|
||||
@@ -26,3 +26,7 @@ The two remaining controls failures are genuine: source action goes to unsupport
|
||||
Genuine zoom collection **2/2 passes**,102 geometry observations. Earlier zoom harness attempts are retained locally: explicit `deviceScaleFactor:undefined` is required with `viewport:null`; Correspondence has two actual H1s, so readiness now identifies its intended inbox heading exactly while still recording both headings. Those harness corrections do not close product heading/manual-review issues. Earlier metadata incorrectly implied tag-only axe selection: installed builder `.options()` replaces earlier `.withTags()` options. The committed collector correctly declares **all enabled rules**, including best practices; per-rule tags distinguish them from WCAG failures.
|
||||
|
||||
App and E2E TypeScript, lint and whitespace checks pass. Complete ordinary regression and final rule/viewport/57-group reconciliation are separate pending audit evidence at this commit; neither the previous134 passes nor collection success is used to claim this audit green. Production remains NO-GO. P5-13 remains deferred, unqualified and Production-withheld; no UI/qualification/Docker work.
|
||||
|
||||
## Supplemental initial-mobile preservation regression
|
||||
|
||||
A tenth ordinary audit case was added after the main143-case discovery snapshot: `[P5-15-02 C06 C09 C12] mobile edit-to-preview retains physical document measurement`. Native direct390px initial Edit, settled layout/ready state, Enter Preview and owned export-PDF200 reproduce the defect without axe or mocked rendering. It **fails** on zero measurement width; preview1 versus1 native PDF pages. [Proof](evidence/mobile-preview-proof.json) retains exact measurements, page dimensions/hash and representative preview/PDF images. This is a separately executed1-case supplement, not represented as a single144-case full run. No tolerance, app renderer or PDF semantics changed. The known16fixture/36page corpus remains a separate finite gate.
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
{
|
||||
"sourceReportSha256": "ab1e812bc98e68c2298d4aacbaa7b103decea8636cc61ebb27c7ff21d2234874",
|
||||
"stats": {
|
||||
"startTime": "2026-10-10T18:59:43.272Z",
|
||||
"duration": 23714.858,
|
||||
"expected": 0,
|
||||
"skipped": 0,
|
||||
"unexpected": 1,
|
||||
"flaky": 0
|
||||
},
|
||||
"nativeMeasurements": {
|
||||
"inEdit": [
|
||||
{
|
||||
"title": "CV preview",
|
||||
"hiddenMeasurement": true,
|
||||
"frameVisible": false,
|
||||
"measuredWidth": 793.6875,
|
||||
"measuredPages": 1,
|
||||
"ready": "true",
|
||||
"physicalPageWidth": 793.6875,
|
||||
"flowWidth": 793.6875
|
||||
},
|
||||
{
|
||||
"title": "CV preview page 1",
|
||||
"hiddenMeasurement": false,
|
||||
"frameVisible": false,
|
||||
"measuredWidth": 0,
|
||||
"measuredPages": null,
|
||||
"ready": "true",
|
||||
"physicalPageWidth": 0,
|
||||
"flowWidth": 0
|
||||
}
|
||||
],
|
||||
"inPreview": [
|
||||
{
|
||||
"title": "CV preview",
|
||||
"hiddenMeasurement": true,
|
||||
"frameVisible": true,
|
||||
"measuredWidth": 793.6875,
|
||||
"measuredPages": 1,
|
||||
"ready": "true",
|
||||
"physicalPageWidth": 793.6875,
|
||||
"flowWidth": 793.6875
|
||||
},
|
||||
{
|
||||
"title": "CV preview page 1",
|
||||
"hiddenMeasurement": false,
|
||||
"frameVisible": true,
|
||||
"measuredWidth": 0,
|
||||
"measuredPages": null,
|
||||
"ready": "true",
|
||||
"physicalPageWidth": 0,
|
||||
"flowWidth": 0
|
||||
}
|
||||
],
|
||||
"pageCountText": [
|
||||
"1-page CV"
|
||||
],
|
||||
"method": "native DOM measurements before axe; A4 physical width 210mm =793.7008CSSpx at96dpi"
|
||||
},
|
||||
"measurementWidthCssPx": 793.6875,
|
||||
"measurementWidthAfterSwitchCssPx": 793.6875,
|
||||
"visibleMeasuredWidthCssPx": 0,
|
||||
"visibleFlowWidthCssPx": 0,
|
||||
"previewPages": 1,
|
||||
"pageIndicator": [
|
||||
"1-page CV"
|
||||
],
|
||||
"pdfPages": 1,
|
||||
"pageCountMismatch": false,
|
||||
"pdfDimensions": [
|
||||
{
|
||||
"widthMm": 209.88865255555555,
|
||||
"heightMm": 297.0106596111111,
|
||||
"textCharacters": 1718
|
||||
}
|
||||
],
|
||||
"nativePdfSha256": "931002209d8ce6af7303cbf1e2c9e27afb0928dff6b328759f655795a4ce872f",
|
||||
"nativePdfPath": "ignored artifact; not a production or personal CV",
|
||||
"confirmedMaterialMismatch": true,
|
||||
"screenshots": [
|
||||
{
|
||||
"file": "screenshots/mobile-preview-measurement-390-en-light.png",
|
||||
"sha256": "5c74bcea99890b52591dbb108c2c7b2802817deee80d19fe518074b0b3c0986f"
|
||||
},
|
||||
{
|
||||
"file": "screenshots/mobile-preview-native-pdf-page1.png",
|
||||
"sha256": "5ccd04217a5acea2b6c09b7bc7cdb0a6135216f392e07c090df39385173c6b13"
|
||||
}
|
||||
],
|
||||
"method": "Synthetic native owned CV; measurement before axe, fonts and two animation frames settled; real API Chromium PDF export200. PDF is authoritative. No tolerance changes or app fixes.",
|
||||
"finding": "Initially compact edit pane hides visible-page iframe while it paginates. Hidden measurement frame has physical width793.6875 and reports1page; visible-page document instead publishes0width and non-finite page count. Switching exposes its previously zero-width flow without recalculating it. Native PDF comparison establishes actual page count separately; no false count is assumed from collapsed content.",
|
||||
"scope": "Direct initial390px mobile route; standard direct-renderer/desktop-first16 fixtures do not cover this hidden-pane lifecycle. Physical devices and production fonts/photos remain unqualified."
|
||||
}
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 40 KiB |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 97 KiB |
@@ -1,4 +1,5 @@
|
||||
import AxeBuilder from '@axe-core/playwright';
|
||||
import { writeFile } from 'node:fs/promises';
|
||||
import { expect, test as base, type APIRequestContext, type BrowserContext, type Page, type TestInfo } from '@playwright/test';
|
||||
import { translations } from '../src/i18n/translations';
|
||||
|
||||
@@ -308,6 +309,42 @@ test('[P5-15-02 W08 J10] keyboard upload and import controls open the native fil
|
||||
await info.attach('native-keyboard-file-chooser', { body: JSON.stringify({ outcomes, fileDataWritten: false }), contentType: 'application/json' });
|
||||
});
|
||||
|
||||
test('[P5-15-02 C06 C09 C12] mobile edit-to-preview retains physical document measurement', async ({ page, owner }, info) => {
|
||||
test.setTimeout(60_000);
|
||||
const t = translations.en;
|
||||
await enter(page, owner, { area: 'cv', path: `/career/builder/${owner.cvId}`, width: 390, height: 844, language: 'en', theme: 'light' });
|
||||
const metrics = () => page.locator('iframe').evaluateAll(frames => frames.filter(frame => (frame as HTMLIFrameElement).contentDocument?.querySelector('.page')).map(frame => {
|
||||
const doc = (frame as HTMLIFrameElement).contentDocument!;
|
||||
const sheet = doc.querySelector('.page')!;
|
||||
return { title: frame.getAttribute('title'), hiddenMeasurement: frame.getAttribute('aria-hidden') === 'true', frameVisible: frame.getBoundingClientRect().width > 0,
|
||||
measuredWidth: Number(doc.documentElement.dataset.cvPreviewWidth), measuredPages: Number(doc.documentElement.dataset.cvPreviewPages), ready: doc.documentElement.dataset.cvPreviewReady,
|
||||
physicalPageWidth: sheet.getBoundingClientRect().width, flowWidth: doc.querySelector('[data-cv-preview-flow]')?.getBoundingClientRect().width };
|
||||
}));
|
||||
const inEdit = await metrics();
|
||||
await page.getByRole('button', { name: t.cvEditorPreview, exact: true }).press('Enter');
|
||||
const preview = page.getByRole('region', { name: t.cvEditorLivePreview, exact: true });
|
||||
await expect(preview).toBeVisible();
|
||||
await expect(preview).toHaveAttribute('aria-busy', 'false');
|
||||
await page.evaluate(async () => { await document.fonts.ready; await new Promise(resolve => requestAnimationFrame(() => requestAnimationFrame(resolve))); });
|
||||
const inPreview = await metrics();
|
||||
const screenshot = info.outputPath('mobile-preview-measurement-390-en-light.png');
|
||||
await page.screenshot({ path: screenshot, animations: 'disabled' });
|
||||
await info.attach('mobile-preview-measurement', { path: screenshot, contentType: 'image/png' });
|
||||
await info.attach('mobile-preview-physical-measurement', { body: JSON.stringify({ inEdit, inPreview, pageCountText: await page.getByRole('status').allTextContents(), method: 'native DOM measurements before axe; A4 physical width 210mm =793.7008CSSpx at96dpi' }), contentType: 'application/json' });
|
||||
const pdf = await page.request.post(`${apiUrl}/cv/variants/${owner.cvId}/export-pdf`, { headers: owner.headers });
|
||||
expect(pdf.status()).toBe(200);
|
||||
const exportPath = info.outputPath('mobile-preview-export.pdf');
|
||||
await writeFile(exportPath, await pdf.body());
|
||||
await info.attach('mobile-preview-native-export', { path: exportPath, contentType: 'application/pdf' });
|
||||
const measurement = inPreview.find(frame => frame.hiddenMeasurement)!;
|
||||
expect(measurement.measuredWidth, 'hidden mobile pane must not publish a zero-width document').toBeGreaterThan(790);
|
||||
expect(measurement.measuredWidth).toBeLessThan(798);
|
||||
for (const frame of inPreview.filter(frame => frame.frameVisible)) {
|
||||
expect(frame.flowWidth, `${frame.title} content flow matches physical paper width`).toBeGreaterThan(790);
|
||||
expect(frame.flowWidth).toBeLessThan(798);
|
||||
}
|
||||
});
|
||||
|
||||
test.describe('Chromium emulated touch; not physical-device acceptance', () => {
|
||||
test.use({ hasTouch: true });
|
||||
test('[P5-15-02] emulated taps preserve CV modes and navigation across portrait/landscape viewport changes', async ({ page, owner }, info) => {
|
||||
|
||||
Reference in New Issue
Block a user