style(13-03): apply Prettier formatting across repo
Mechanical reformat — no logic changes. 398 files changed, 19125 insertions(+), 16457 deletions(-). Prettier 3.8.4 with .prettierrc (singleQuote:true, semi:true, tabWidth:2, trailingComma:all, printWidth:100). Isolated per D-13-08 for reviewability.
This commit is contained in:
@@ -3,7 +3,7 @@ phase: 07-mobile-test-harness
|
||||
plan: 03
|
||||
type: execute
|
||||
wave: 3
|
||||
depends_on: ["07-01", "07-02"]
|
||||
depends_on: ['07-01', '07-02']
|
||||
files_modified:
|
||||
- apps/pwa/e2e/layout.spec.ts
|
||||
autonomous: true
|
||||
@@ -12,25 +12,25 @@ user_setup: []
|
||||
|
||||
must_haves:
|
||||
truths:
|
||||
- "On both iphone and pixel profiles (D-03/D-04), BottomTabBar Calendar/Lists tabs each measure >=44x44 CSS px"
|
||||
- "The New Event FAB measures >=56x56 and the PhoneNav settings button >=44x44 on both profiles"
|
||||
- "Neither /calendar nor /lists has horizontal overflow (documentElement.scrollWidth <= clientWidth) on either profile"
|
||||
- "BottomTabBar is visible and fully in-viewport (bottom edge <= viewport height) on both mobile profiles"
|
||||
- "Every asserted interactive element is locatable by ARIA role + accessible name (no CSS-selector fallback)"
|
||||
- "The harness PROVABLY fails on injected defects: a forced 20px tap target fails Rule 1; a forced 2000px body width fails Rule 2; both pass after the injection is removed"
|
||||
- 'On both iphone and pixel profiles (D-03/D-04), BottomTabBar Calendar/Lists tabs each measure >=44x44 CSS px'
|
||||
- 'The New Event FAB measures >=56x56 and the PhoneNav settings button >=44x44 on both profiles'
|
||||
- 'Neither /calendar nor /lists has horizontal overflow (documentElement.scrollWidth <= clientWidth) on either profile'
|
||||
- 'BottomTabBar is visible and fully in-viewport (bottom edge <= viewport height) on both mobile profiles'
|
||||
- 'Every asserted interactive element is locatable by ARIA role + accessible name (no CSS-selector fallback)'
|
||||
- 'The harness PROVABLY fails on injected defects: a forced 20px tap target fails Rule 1; a forced 2000px body width fails Rule 2; both pass after the injection is removed'
|
||||
artifacts:
|
||||
- path: "apps/pwa/e2e/layout.spec.ts"
|
||||
provides: "UI-SPEC Rules 1-4 assertions (tap targets, overflow, in-viewport, accessible names) + harness self-validation injected-defect proofs"
|
||||
contains: "boundingBox"
|
||||
- path: 'apps/pwa/e2e/layout.spec.ts'
|
||||
provides: 'UI-SPEC Rules 1-4 assertions (tap targets, overflow, in-viewport, accessible names) + harness self-validation injected-defect proofs'
|
||||
contains: 'boundingBox'
|
||||
key_links:
|
||||
- from: "apps/pwa/e2e/layout.spec.ts"
|
||||
- from: 'apps/pwa/e2e/layout.spec.ts'
|
||||
to: "BottomTabBar aria-label='Main navigation' + 'Calendar'/'Lists' links"
|
||||
via: "getByRole('navigation'/'link', { name })"
|
||||
pattern: "getByRole"
|
||||
- from: "apps/pwa/e2e/layout.spec.ts"
|
||||
to: "page.addStyleTag injected-defect proof"
|
||||
via: "self-validation must-fail assertions"
|
||||
pattern: "addStyleTag"
|
||||
pattern: 'getByRole'
|
||||
- from: 'apps/pwa/e2e/layout.spec.ts'
|
||||
to: 'page.addStyleTag injected-defect proof'
|
||||
via: 'self-validation must-fail assertions'
|
||||
pattern: 'addStyleTag'
|
||||
---
|
||||
|
||||
<objective>
|
||||
@@ -120,19 +120,21 @@ Output: `apps/pwa/e2e/layout.spec.ts`.
|
||||
</tasks>
|
||||
|
||||
<threat_model>
|
||||
|
||||
## Trust Boundaries
|
||||
|
||||
| Boundary | Description |
|
||||
|----------|-------------|
|
||||
| Boundary | Description |
|
||||
| ------------------ | -------------------------------------------------------------------------------------------- |
|
||||
| spec → dev PWA/API | Playwright drives the authed PWA (DEV_AUTH_BYPASS); read-only assertions, no form submission |
|
||||
|
||||
## STRIDE Threat Register
|
||||
|
||||
| Threat ID | Category | Component | Disposition | Mitigation Plan |
|
||||
|-----------|----------|-----------|-------------|-----------------|
|
||||
| T-07-07 | Tampering | injected `addStyleTag` defect styles leaking between tests | mitigate | Each self-validation proof removes its injected style (handle.remove or page.reload) within the same test before completing; styles are page-scoped and do not persist across navigations/contexts. No global state is mutated. |
|
||||
| T-07-08 | Information Disclosure | spec hardcoding a host/credential | mitigate | All navigation uses relative paths against the env-driven baseURL (Rule 8); no absolute URL or credential appears in the spec (grep-gated in acceptance). |
|
||||
| T-07-12 | Tampering | `serviceWorkers: 'block'` (D-02) not applied → SW intercepts and masks a real layout defect | mitigate | The block is set per-context in playwright.config.ts (Plan 01); these specs assume it and Plan 04 asserts no SW controller. A stale Workbox response cannot satisfy a boundingBox/overflow measurement, so the geometry assertions remain authoritative. |
|
||||
| Threat ID | Category | Component | Disposition | Mitigation Plan |
|
||||
| --------- | ---------------------- | ------------------------------------------------------------------------------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| T-07-07 | Tampering | injected `addStyleTag` defect styles leaking between tests | mitigate | Each self-validation proof removes its injected style (handle.remove or page.reload) within the same test before completing; styles are page-scoped and do not persist across navigations/contexts. No global state is mutated. |
|
||||
| T-07-08 | Information Disclosure | spec hardcoding a host/credential | mitigate | All navigation uses relative paths against the env-driven baseURL (Rule 8); no absolute URL or credential appears in the spec (grep-gated in acceptance). |
|
||||
| T-07-12 | Tampering | `serviceWorkers: 'block'` (D-02) not applied → SW intercepts and masks a real layout defect | mitigate | The block is set per-context in playwright.config.ts (Plan 01); these specs assume it and Plan 04 asserts no SW controller. A stale Workbox response cannot satisfy a boundingBox/overflow measurement, so the geometry assertions remain authoritative. |
|
||||
|
||||
</threat_model>
|
||||
|
||||
<verification>
|
||||
@@ -142,10 +144,11 @@ Output: `apps/pwa/e2e/layout.spec.ts`.
|
||||
</verification>
|
||||
|
||||
<success_criteria>
|
||||
|
||||
- layout.spec.ts enforces UI-SPEC Rules 1-4 on both device profiles (D-03/D-04).
|
||||
- Harness self-validation proves the assertions are live (injected-defect must-fail-then-pass).
|
||||
- No strict-mode collisions; no absolute URLs.
|
||||
</success_criteria>
|
||||
</success_criteria>
|
||||
|
||||
<output>
|
||||
Create `.planning/phases/07-mobile-test-harness/07-03-SUMMARY.md` when done.
|
||||
|
||||
Reference in New Issue
Block a user