init project

This commit is contained in:
root
2026-06-25 19:06:59 -04:00
parent c5dfee6efb
commit 5d017f533a
349 changed files with 31330 additions and 0 deletions
+18
View File
@@ -0,0 +1,18 @@
Test_ID,Area,Environment,Viewport,Locale,Theme,Result,Evidence_or_blocker
P11-MAN-001,Clean first load,Local Node 22.16.0,N/A,en,system,Blocked,"Pinned pnpm could not be downloaded; application server could not be built or started."
P11-MAN-002,Theme persistence,Unblocked browser required,Desktop,en,light/dark/system,Blocked,"Covered by automated test code; execution requires installed dependencies and browser."
P11-MAN-003,System theme response,Unblocked browser required,Desktop,en,system,Blocked,"CSP bootstrap and CSS fallback reviewed statically; browser execution pending."
P11-MAN-004,Locale switching,Unblocked browser required,Desktop,fr,light,Blocked,"Semantic route-switch test authored; execution pending."
P11-MAN-005,Direct localized routes,Static repository review,N/A,en/fr/ar,N/A,Pass,"Route manifest and runtime catch-all verified by node scripts/run-validations.mjs."
P11-MAN-006,JavaScript delayed or unavailable,Unblocked browser required,Mobile,ar,system,Blocked,"No-JavaScript Playwright test authored; execution pending."
P11-MAN-007,Keyboard-only navigation,Unblocked browser required,Desktop,en,light,Blocked,"Skip-link and drawer keyboard tests authored; execution pending."
P11-MAN-008,Screen-reader landmarks,Assistive technology environment required,Desktop,en,light,Blocked,"Semantic landmarks and names reviewed; manual announcement test pending."
P11-MAN-009,Zoom 200 and 400 percent,Unblocked browser required,320 CSS px,en/fr/ar,light/dark,Blocked,"Reflow tests authored at approved widths; manual browser zoom pending."
P11-MAN-010,Arabic reading order,Static source review,All,ar,light/dark,Pass,"Server document dir is rtl; logical CSS validator passes 12 CSS files."
P11-MAN-011,Mixed Arabic and Latin identifiers,Static unit design,N/A,ar,N/A,Pass,"BidiText primitive and identifier preservation utility implemented; browser announcement pending."
P11-MAN-012,Forced colors,Unblocked Windows browser required,Desktop,en,light,Blocked,"Forced-colors CSS exists; manual Windows verification pending."
P11-MAN-013,Reduced motion,Static source review,All,en/fr/ar,light/dark,Pass,"Global and skeleton reduced-motion rules are present and validator-clean."
P11-MAN-014,Mobile navigation,Unblocked browser required,390 px,ar,dark,Blocked,"Native dialog, Escape, focus return, and background lock test authored; execution pending."
P11-MAN-015,Long French and Arabic labels,Static content review,320 px,fr/ar,light/dark,Pass,"Content-driven layouts, wrapping, and no fixed text heights; browser overflow execution pending."
P11-MAN-016,Back and forward navigation,Unblocked browser required,Desktop,en/fr,light,Blocked,"Browser execution pending."
P11-MAN-017,Production build,Node 24.17.0 and pnpm 11.9.0 required,N/A,en/fr/ar,light/dark,Blocked,"Current host Node is 22.16.0 and registry fetch failed."
1 Test_ID Area Environment Viewport Locale Theme Result Evidence_or_blocker
2 P11-MAN-001 Clean first load Local Node 22.16.0 N/A en system Blocked Pinned pnpm could not be downloaded; application server could not be built or started.
3 P11-MAN-002 Theme persistence Unblocked browser required Desktop en light/dark/system Blocked Covered by automated test code; execution requires installed dependencies and browser.
4 P11-MAN-003 System theme response Unblocked browser required Desktop en system Blocked CSP bootstrap and CSS fallback reviewed statically; browser execution pending.
5 P11-MAN-004 Locale switching Unblocked browser required Desktop fr light Blocked Semantic route-switch test authored; execution pending.
6 P11-MAN-005 Direct localized routes Static repository review N/A en/fr/ar N/A Pass Route manifest and runtime catch-all verified by node scripts/run-validations.mjs.
7 P11-MAN-006 JavaScript delayed or unavailable Unblocked browser required Mobile ar system Blocked No-JavaScript Playwright test authored; execution pending.
8 P11-MAN-007 Keyboard-only navigation Unblocked browser required Desktop en light Blocked Skip-link and drawer keyboard tests authored; execution pending.
9 P11-MAN-008 Screen-reader landmarks Assistive technology environment required Desktop en light Blocked Semantic landmarks and names reviewed; manual announcement test pending.
10 P11-MAN-009 Zoom 200 and 400 percent Unblocked browser required 320 CSS px en/fr/ar light/dark Blocked Reflow tests authored at approved widths; manual browser zoom pending.
11 P11-MAN-010 Arabic reading order Static source review All ar light/dark Pass Server document dir is rtl; logical CSS validator passes 12 CSS files.
12 P11-MAN-011 Mixed Arabic and Latin identifiers Static unit design N/A ar N/A Pass BidiText primitive and identifier preservation utility implemented; browser announcement pending.
13 P11-MAN-012 Forced colors Unblocked Windows browser required Desktop en light Blocked Forced-colors CSS exists; manual Windows verification pending.
14 P11-MAN-013 Reduced motion Static source review All en/fr/ar light/dark Pass Global and skeleton reduced-motion rules are present and validator-clean.
15 P11-MAN-014 Mobile navigation Unblocked browser required 390 px ar dark Blocked Native dialog, Escape, focus return, and background lock test authored; execution pending.
16 P11-MAN-015 Long French and Arabic labels Static content review 320 px fr/ar light/dark Pass Content-driven layouts, wrapping, and no fixed text heights; browser overflow execution pending.
17 P11-MAN-016 Back and forward navigation Unblocked browser required Desktop en/fr light Blocked Browser execution pending.
18 P11-MAN-017 Production build Node 24.17.0 and pnpm 11.9.0 required N/A en/fr/ar light/dark Blocked Current host Node is 22.16.0 and registry fetch failed.
@@ -0,0 +1,47 @@
$ node --version
v22.16.0
$ corepack --version
0.32.0
$ corepack prepare pnpm@11.9.0 --activate
Preparing pnpm@11.9.0 for immediate activation...
Internal Error: Error when performing the request to https://registry.npmjs.org/pnpm/-/pnpm-11.9.0.tgz; for troubleshooting help, see https://github.com/nodejs/corepack#troubleshooting
at fetch (/opt/nvm/versions/node/v22.16.0/lib/node_modules/corepack/dist/lib/corepack.cjs:22051:11)
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async fetchUrlStream (/opt/nvm/versions/node/v22.16.0/lib/node_modules/corepack/dist/lib/corepack.cjs:22081:20)
at async download (/opt/nvm/versions/node/v22.16.0/lib/node_modules/corepack/dist/lib/corepack.cjs:22204:18)
at async installVersion (/opt/nvm/versions/node/v22.16.0/lib/node_modules/corepack/dist/lib/corepack.cjs:22296:55)
at async Engine.ensurePackageManager (/opt/nvm/versions/node/v22.16.0/lib/node_modules/corepack/dist/lib/corepack.cjs:22847:32)
at async PrepareCommand.execute (/opt/nvm/versions/node/v22.16.0/lib/node_modules/corepack/dist/lib/corepack.cjs:23567:27)
at async PrepareCommand.validateAndExecute (/opt/nvm/versions/node/v22.16.0/lib/node_modules/corepack/dist/lib/corepack.cjs:20258:22)
at async _Cli.run (/opt/nvm/versions/node/v22.16.0/lib/node_modules/corepack/dist/lib/corepack.cjs:21195:18)
at async Object.runMain (/opt/nvm/versions/node/v22.16.0/lib/node_modules/corepack/dist/lib/corepack.cjs:23642:19)
exit=1
$ node scripts/run-validations.mjs
PASS: Phase 9 contract package is immutable and 61 payload checksums match.
PASS: Pinned Node 24.17.0, pnpm 11.9.0, and 25 exact direct dependency versions match the lockfile.
PASS: English, French, and Arabic catalogs have exact key parity and valid direction metadata.
PASS: 5 route IDs have complete locale, runtime, hash, query, and hreflang contracts.
PASS: Phase 9 semantic tokens are unchanged and application styles contain no raw palette colors.
PASS: Phase 11 component tokens, theme fallback, and application-shell foundations are present.
PASS: 12 CSS files use direction-safe logical declarations.
PASS: Runtime source contains no placeholder destination, simulated submission, or research-only backdoor.
PASS: Localized canonical, hreflang, Open Graph, social, and robots foundations are present.
exit=0
$ for f in scripts/*.mjs; do node --check "$f"; done
checked=17 failures=0
$ JSON parse scan
parsed=27 failures=0
$ TypeScript transpileModule syntax scan
transpiled=62 compiler=5.8.3 syntax_failures=0
$ node scripts/generate-phase11-manifest.mjs
Generated Phase 11 manifest for 201 files.
$ node scripts/validate-phase11-manifest.mjs
PASS: Phase 11 package manifest verifies 201 repository files with no extras.
@@ -0,0 +1,89 @@
# Phase 11 repository delta against the authoritative Phase 10 ZIP
added=55
modified=24
removed=0
[ADDED]
CONTRIBUTING.md
PHASE_11_PACKAGE_MANIFEST_v1.0.json
docs/IMPLEMENTATION_ISSUE_REGISTER_v1.1.csv
docs/PHASE_11_IMPLEMENTATION_REPORT_v1.0.md
docs/PHASE_12_HANDOFF_v1.0.md
docs/TOKEN_IMPLEMENTATION_v1.0.md
docs/architecture/ADR-0002_PHASE_11_FOUNDATIONS.md
docs/quality/MANUAL_QA_RESULTS_v1.0.csv
docs/quality/PHASE_11_COMMAND_LOG_v1.0.txt
docs/quality/PHASE_11_FILE_CHANGES_v1.0.txt
docs/quality/PHASE_11_VALIDATION_RESULTS_v1.0.json
docs/quality/PHASE_11_VALIDATION_RESULTS_v1.0.md
docs/quality/VISUAL_REGRESSION_RESULTS_v1.0.json
scripts/generate-phase11-manifest.mjs
scripts/validate-metadata.mjs
scripts/validate-phase11-foundation.mjs
scripts/validate-phase11-manifest.mjs
scripts/validate-runtime-dependencies.mjs
src/app/[locale]/[slug]/page.tsx
src/app/[locale]/error.tsx
src/app/[locale]/loading.tsx
src/app/[locale]/not-found.tsx
src/components/app-shell/BrandLink.tsx
src/components/app-shell/Controls.module.css
src/components/app-shell/DisabledAction.tsx
src/components/app-shell/HeaderNavigation.tsx
src/components/app-shell/LocalizedLoading.tsx
src/components/app-shell/LocalizedNotFound.tsx
src/components/app-shell/MobileNavigation.tsx
src/components/app-shell/SiteFooter.module.css
src/components/app-shell/SiteFooter.tsx
src/components/app-shell/StateShell.module.css
src/components/app-shell/StateShell.tsx
src/components/foundation/AccessibleIcon.tsx
src/components/foundation/BidiText.module.css
src/components/foundation/BidiText.tsx
src/components/foundation/LiveRegion.module.css
src/components/foundation/LiveRegion.tsx
src/components/foundation/StatusBadge.module.css
src/components/foundation/StatusBadge.tsx
src/components/layout/LayoutPrimitives.module.css
src/components/layout/LayoutPrimitives.tsx
src/lib/localization/client-messages.ts
src/lib/localization/client.ts
src/lib/localization/format.ts
src/lib/metadata/build-metadata.ts
src/styles/component-tokens.css
tests/browser/navigation.spec.ts
tests/browser/no-javascript.spec.ts
tests/browser/responsive.spec.ts
tests/browser/text-expansion.spec.ts
tests/fixtures/README.md
tests/fixtures/foundation-matrix.json
tests/unit/format.test.ts
tests/visual/README.md
[MODIFIED]
.github/workflows/ci.yml
README.md
package.json
scripts/run-validations.mjs
scripts/validate-prohibited-content.mjs
scripts/validate-routes.mjs
src/app/[locale]/layout.tsx
src/app/[locale]/page.module.css
src/app/[locale]/page.tsx
src/components/app-shell/LocaleSelector.tsx
src/components/app-shell/SiteHeader.module.css
src/components/app-shell/SiteHeader.tsx
src/components/app-shell/ThemeSelector.tsx
src/content/locales/ar/shell.json
src/content/locales/en/shell.json
src/content/locales/fr/shell.json
src/lib/localization/config.ts
src/lib/theme/client.ts
src/proxy.ts
src/styles/globals.css
tests/browser/shell.spec.ts
tests/browser/theme-csp.spec.ts
tests/unit/localization.test.ts
tests/visual/shell.visual.spec.ts
[REMOVED]
@@ -0,0 +1,50 @@
{
"phase": 11,
"date": "2026-06-25",
"host_runtime": {
"node": "22.16.0",
"required_node": "24.17.0",
"required_pnpm": "11.9.0"
},
"passed": [
{
"command": "node scripts/run-validations.mjs",
"gates": 9
},
{
"command": "for f in scripts/*.mjs; do node --check \"$f\"; done",
"files": 17
},
{
"command": "JSON parse scan",
"files": 27
},
{
"command": "TypeScript transpileModule syntax scan",
"files": 62,
"compiler": "5.8.3"
},
{
"command": "Phase 9 package validator",
"checksums": 61
},
{
"command": "node scripts/validate-phase11-manifest.mjs",
"files": 201,
"unlisted_extras": 0
}
],
"blocked": [
"pnpm install --frozen-lockfile",
"pnpm format:check",
"pnpm lint",
"pnpm typecheck",
"pnpm test:unit",
"pnpm build",
"pnpm test:e2e",
"pnpm test:visual:update --project=chromium",
"pnpm audit --audit-level low"
],
"blocker": "corepack prepare pnpm@11.9.0 --activate failed while fetching the pnpm tarball from registry.npmjs.org",
"all_tests_passed_claimed": false
}
@@ -0,0 +1,62 @@
# Phase 11 Validation Results
## Environment
- Date: 2026-06-25
- Host Node.js: `22.16.0`
- Required Node.js: `24.17.0`
- Required pnpm: `11.9.0`
## Executed successfully
### Repository validation
```bash
node scripts/run-validations.mjs
```
Result: **9 of 9 static gates passed**.
1. Immutable Phase 9 contract: 61 payload checksums matched.
2. Runtime and dependencies: Node 24.17.0, pnpm 11.9.0, and 25 exact direct versions match the lockfile.
3. Locale catalogs: exact English, French, and Arabic key parity and direction metadata.
4. Routes: 5 route IDs with locale, runtime, hash, query, and `hreflang` coverage.
5. Phase 9 tokens: source unchanged and no raw palette literals introduced.
6. Phase 11 foundations: required component tokens, CSS system fallback, and shell files present.
7. Logical CSS: 12 CSS files passed physical-direction rejection.
8. Prohibited content: no placeholder destination, simulated submission, or research backdoor.
9. Metadata: canonical, reciprocal `hreflang`, Open Graph, social, and release-safe robots foundations present.
### TypeScript syntax scan
All 62 repository `.ts` and `.tsx` implementation/test files were transpiled with the host global TypeScript compiler using `transpileModule`. Result: **syntax passed**.
This is not a substitute for the repositorys strict TypeScript 6.0.3 project check.
## Blocked commands
The following command was attempted:
```bash
corepack prepare pnpm@11.9.0 --activate
```
It failed while fetching `https://registry.npmjs.org/pnpm/-/pnpm-11.9.0.tgz`. Therefore dependency installation was unavailable and these gates were not executed:
```bash
pnpm install --frozen-lockfile
pnpm format:check
pnpm lint
pnpm typecheck
pnpm test:unit
SITE_ORIGIN=http://127.0.0.1:3000 PUBLIC_RELEASE_APPROVED=false pnpm build
pnpm audit --audit-level low
pnpm test:e2e
pnpm test:visual:update --project=chromium
```
No claim is made that those tests passed. P11-001, P11-002, and P11-003 remain release gates.
## Raw command evidence
Exact local command output is preserved in `docs/quality/PHASE_11_COMMAND_LOG_v1.0.txt`. The generated Phase 11 manifest was also verified successfully against 201 repository payload files with no unlisted extras.
@@ -0,0 +1,76 @@
Phase 12 command log
Date: 2026-06-25
Executed host: Node 22.16.0; target: Node 24.17.0; pnpm 11.9.0
COMMAND: pnpm install --frozen-lockfile
STATUS: environment-blocked
EXIT: N/A
EVIDENCE: docs/quality/logs/pnpm-install-frozen.log
WARNINGS: registry DNS EAI_AGAIN; process terminated after retries
COMMAND: npm install --engine-strict=false --ignore-scripts --package-lock=false --no-audit --no-fund
STATUS: fallback-pass
EXIT: 0
EVIDENCE: docs/quality/logs/npm-install-fallback.log
WARNINGS: Node engine mismatch; does not satisfy frozen pnpm gate
COMMAND: npm run validate
STATUS: pass
EXIT: 0
EVIDENCE: docs/quality/logs/validate.log
COMMAND: npm run format:check
STATUS: pass
EXIT: 0
EVIDENCE: docs/quality/logs/format-check.log
COMMAND: npm run lint
STATUS: pass
EXIT: 0
EVIDENCE: docs/quality/logs/lint.log
COMMAND: npm run typecheck
STATUS: pass
EXIT: 0
EVIDENCE: docs/quality/logs/typecheck.log
COMMAND: npm run test:unit
STATUS: pass
EXIT: 0
EVIDENCE: docs/quality/logs/unit.log
COMMAND: npm run build (without SITE_ORIGIN)
STATUS: expected-fail-closed
EXIT: 1
EVIDENCE: docs/quality/logs/build-missing-site-origin.log
WARNINGS: Production metadata rejected the missing canonical origin as designed.
COMMAND: SITE_ORIGIN=http://127.0.0.1:3000 PUBLIC_RELEASE_APPROVED=false npm run build
STATUS: pass
EXIT: 0
EVIDENCE: docs/quality/logs/build.log
WARNINGS: Local evidence origin only; production origin remains P10-001.
COMMAND: standalone server + curl locale/component-lab matrix
STATUS: pass
EXIT: 0
EVIDENCE: docs/quality/PHASE_12_HTTP_ROUTE_RESULTS_v1.0.json
COMMAND: playwright test tests/browser tests/a11y --project=chromium
STATUS: environment-blocked
EXIT: N/A
EVIDENCE: docs/quality/logs/playwright-browser-a11y.log
WARNINGS: Chromium rejected loopback navigation with net::ERR_BLOCKED_BY_ADMINISTRATOR
COMMAND: playwright test tests/visual --project=chromium --update-snapshots
STATUS: not-run-after-shared-blocker
EXIT: N/A
EVIDENCE: docs/quality/PHASE_12_VISUAL_REGRESSION_RESULTS_v1.0.json
WARNINGS: Same loopback policy blocks image capture
COMMAND: pnpm audit --audit-level low
STATUS: environment-blocked
EXIT: 124
EVIDENCE: docs/quality/logs/pnpm-audit.log
WARNINGS: registry DNS EAI_AGAIN; timed out during retry delay
@@ -0,0 +1,61 @@
Phase 11 to Phase 12 repository comparison
Files /tmp/phase11_original/RentalDriveGo/README.md and /mnt/data/phase12_work/RentalDriveGo/README.md differ
Only in /mnt/data/phase12_work/RentalDriveGo/docs: DECISION_LOG_v12.0.md
Only in /mnt/data/phase12_work/RentalDriveGo/docs: IMPLEMENTATION_ISSUE_REGISTER_v1.2.csv
Only in /mnt/data/phase12_work/RentalDriveGo/docs: PHASE_12_IMPLEMENTATION_REPORT_v1.0.md
Only in /mnt/data/phase12_work/RentalDriveGo/docs: PHASE_13_HANDOFF_v1.0.md
Only in /mnt/data/phase12_work/RentalDriveGo/docs/architecture: ADR-0003_PHASE_12_COMPONENT_SYSTEM.md
Only in /mnt/data/phase12_work/RentalDriveGo/docs: phase12
Only in /mnt/data/phase12_work/RentalDriveGo/docs/quality: PHASE_12_COMMAND_LOG_v1.0.txt
Only in /mnt/data/phase12_work/RentalDriveGo/docs/quality: PHASE_12_HTTP_ROUTE_RESULTS_v1.0.json
Only in /mnt/data/phase12_work/RentalDriveGo/docs/quality: PHASE_12_MANUAL_QA_RESULTS_v1.0.csv
Only in /mnt/data/phase12_work/RentalDriveGo/docs/quality: PHASE_12_VALIDATION_RESULTS_v1.0.json
Only in /mnt/data/phase12_work/RentalDriveGo/docs/quality: PHASE_12_VALIDATION_RESULTS_v1.0.md
Only in /mnt/data/phase12_work/RentalDriveGo/docs/quality: PHASE_12_VISUAL_REGRESSION_RESULTS_v1.0.json
Only in /mnt/data/phase12_work/RentalDriveGo/docs/quality: logs
Files /tmp/phase11_original/RentalDriveGo/package.json and /mnt/data/phase12_work/RentalDriveGo/package.json differ
Files /tmp/phase11_original/RentalDriveGo/playwright.config.ts and /mnt/data/phase12_work/RentalDriveGo/playwright.config.ts differ
Only in /mnt/data/phase12_work/RentalDriveGo/scripts: generate-phase12-manifest.mjs
Files /tmp/phase11_original/RentalDriveGo/scripts/run-validations.mjs and /mnt/data/phase12_work/RentalDriveGo/scripts/run-validations.mjs differ
Only in /mnt/data/phase12_work/RentalDriveGo/scripts: validate-phase12-components.mjs
Only in /mnt/data/phase12_work/RentalDriveGo/scripts: validate-phase12-manifest.mjs
Files /tmp/phase11_original/RentalDriveGo/scripts/validate-runtime-dependencies.mjs and /mnt/data/phase12_work/RentalDriveGo/scripts/validate-runtime-dependencies.mjs differ
Only in /mnt/data/phase12_work/RentalDriveGo/src/app/[locale]: component-lab
Files /tmp/phase11_original/RentalDriveGo/src/app/[locale]/layout.tsx and /mnt/data/phase12_work/RentalDriveGo/src/app/[locale]/layout.tsx differ
Only in /mnt/data/phase12_work/RentalDriveGo/src/components: actions
Files /tmp/phase11_original/RentalDriveGo/src/components/app-shell/SiteHeader.tsx and /mnt/data/phase12_work/RentalDriveGo/src/components/app-shell/SiteHeader.tsx differ
Only in /mnt/data/phase12_work/RentalDriveGo/src/components: controls
Only in /mnt/data/phase12_work/RentalDriveGo/src/components: feedback
Only in /mnt/data/phase12_work/RentalDriveGo/src/components: forms
Files /tmp/phase11_original/RentalDriveGo/src/components/foundation/BidiText.tsx and /mnt/data/phase12_work/RentalDriveGo/src/components/foundation/BidiText.tsx differ
Only in /mnt/data/phase12_work/RentalDriveGo/src/components/foundation: Icon.module.css
Only in /mnt/data/phase12_work/RentalDriveGo/src/components/foundation: Icon.tsx
Files /tmp/phase11_original/RentalDriveGo/src/components/foundation/StatusBadge.module.css and /mnt/data/phase12_work/RentalDriveGo/src/components/foundation/StatusBadge.module.css differ
Files /tmp/phase11_original/RentalDriveGo/src/components/foundation/StatusBadge.tsx and /mnt/data/phase12_work/RentalDriveGo/src/components/foundation/StatusBadge.tsx differ
Only in /mnt/data/phase12_work/RentalDriveGo/src/components/foundation: VisuallyHidden.tsx
Only in /mnt/data/phase12_work/RentalDriveGo/src/components/foundation: client-hooks.ts
Only in /mnt/data/phase12_work/RentalDriveGo/src/components: marketing
Only in /mnt/data/phase12_work/RentalDriveGo/src/components: media
Only in /mnt/data/phase12_work/RentalDriveGo/src/components: navigation
Only in /mnt/data/phase12_work/RentalDriveGo/src/components: overlays
Only in /mnt/data/phase12_work/RentalDriveGo/src/components: surfaces
Only in /mnt/data/phase12_work/RentalDriveGo/src/components: typography
Only in /mnt/data/phase12_work/RentalDriveGo/src/content: development
Files /tmp/phase11_original/RentalDriveGo/src/content/locales/ar/shell.json and /mnt/data/phase12_work/RentalDriveGo/src/content/locales/ar/shell.json differ
Files /tmp/phase11_original/RentalDriveGo/src/content/locales/en/shell.json and /mnt/data/phase12_work/RentalDriveGo/src/content/locales/en/shell.json differ
Files /tmp/phase11_original/RentalDriveGo/src/content/locales/fr/shell.json and /mnt/data/phase12_work/RentalDriveGo/src/content/locales/fr/shell.json differ
Only in /mnt/data/phase12_work/RentalDriveGo/src/lib: components
Files /tmp/phase11_original/RentalDriveGo/src/lib/localization/client.ts and /mnt/data/phase12_work/RentalDriveGo/src/lib/localization/client.ts differ
Only in /mnt/data/phase12_work/RentalDriveGo/tests/a11y: component-system.a11y.spec.ts
Only in /mnt/data/phase12_work/RentalDriveGo/tests/browser: component-system.spec.ts
Files /tmp/phase11_original/RentalDriveGo/tests/browser/responsive.spec.ts and /mnt/data/phase12_work/RentalDriveGo/tests/browser/responsive.spec.ts differ
Files /tmp/phase11_original/RentalDriveGo/tests/browser/text-expansion.spec.ts and /mnt/data/phase12_work/RentalDriveGo/tests/browser/text-expansion.spec.ts differ
Files /tmp/phase11_original/RentalDriveGo/tests/browser/theme-csp.spec.ts and /mnt/data/phase12_work/RentalDriveGo/tests/browser/theme-csp.spec.ts differ
Only in /mnt/data/phase12_work/RentalDriveGo/tests/fixtures: component-system
Files /tmp/phase11_original/RentalDriveGo/tests/fixtures/foundation-matrix.json and /mnt/data/phase12_work/RentalDriveGo/tests/fixtures/foundation-matrix.json differ
Only in /mnt/data/phase12_work/RentalDriveGo/tests: types
Only in /mnt/data/phase12_work/RentalDriveGo/tests/unit: components
Only in /mnt/data/phase12_work/RentalDriveGo/tests/visual: component-system.visual.spec.ts
Files /tmp/phase11_original/RentalDriveGo/tsconfig.json and /mnt/data/phase12_work/RentalDriveGo/tsconfig.json differ
Only in /mnt/data/phase12_work/RentalDriveGo: tsconfig.tsbuildinfo
@@ -0,0 +1,56 @@
[
{
"route": "/en",
"curl_exit": 0,
"status": "200",
"lang": "en",
"dir": "ltr",
"bytes": 41826,
"contains_error_page": false
},
{
"route": "/fr",
"curl_exit": 0,
"status": "200",
"lang": "fr",
"dir": "ltr",
"bytes": 45433,
"contains_error_page": false
},
{
"route": "/ar",
"curl_exit": 0,
"status": "200",
"lang": "ar",
"dir": "rtl",
"bytes": 48540,
"contains_error_page": false
},
{
"route": "/en/component-lab",
"curl_exit": 0,
"status": "200",
"lang": "en",
"dir": "ltr",
"bytes": 68056,
"contains_error_page": false
},
{
"route": "/fr/component-lab",
"curl_exit": 0,
"status": "200",
"lang": "fr",
"dir": "ltr",
"bytes": 71005,
"contains_error_page": false
},
{
"route": "/ar/component-lab",
"curl_exit": 0,
"status": "200",
"lang": "ar",
"dir": "rtl",
"bytes": 74483,
"contains_error_page": false
}
]
@@ -0,0 +1,21 @@
Test_ID,Area,Environment,Viewport,Locale,Theme,Result,Evidence_or_blocker
P12-MAN-001,Buttons and links,Source review + Vitest,N/A,en/fr/ar,light/dark,Pass,"Native semantics, loading protection, accessible icon-only labels, disabled destinations, and directional icon behavior covered by source and unit tests."
P12-MAN-002,Form controls,Source review + Vitest,N/A,en/fr/ar,light/dark,Pass,"Programmatic labels, required state, help/error descriptions, invalid state, and field grouping pass unit assertions."
P12-MAN-003,Tabs,Source review + Vitest,N/A,en/ar,light/dark,Pass,Roving selection and direction-aware arrow behavior pass unit interaction tests.
P12-MAN-004,Accordion,Source review + Vitest,N/A,en/fr/ar,light/dark,Pass,Native details/summary semantics and expanded state verified.
P12-MAN-005,Dialog and drawer,Chromium required,Desktop/mobile,en/fr/ar,light/dark,Blocked,"Focus trap, Escape, inert background, scroll lock, and focus return tests are authored; Chromium loopback navigation is administrator-blocked."
P12-MAN-006,Dropdown menu and tooltip,Chromium required,Desktop/mobile,en/fr/ar,light/dark,Blocked,Keyboard/pointer/touch and announcement observations require an unblocked browser.
P12-MAN-007,Alerts and loading,Source review,All,en/fr/ar,light/dark,Pass,Live-region behavior is explicit; decorative loading is not repeatedly announced; reduced-motion CSS is present.
P12-MAN-008,Interactive cards,Source review,All,en/fr/ar,light/dark,Pass,Valid link/button semantics enforced; nested interactive usage prohibited in documentation.
P12-MAN-009,Workflow pattern,Source review + server HTML,All,en/fr/ar,light/dark,Pass,DOM and reading order remain chronological; connectors are decorative and logical-property based.
P12-MAN-010,Comparison pattern,Source review + server HTML,All,en/fr/ar,light/dark,Pass,Semantic list structure remains understandable without color; mobile order is explicit.
P12-MAN-011,Product preview tables,Source review + server HTML,All,en/fr/ar,light/dark,Pass,"Fictional deterministic fixtures, captions, responsive wrapper, and bidi isolation are present."
P12-MAN-012,CTA patterns,Source review + server HTML,All,en/fr/ar,light/dark,Pass,"One dominant action, disabled unresolved destinations, stacked layout, and localized content inputs verified."
P12-MAN-013,Localized route rendering,Standalone server + curl,Server,en/fr/ar,N/A,Pass,Six routes returned HTTP 200 with correct lang and dir; Arabic returned document-level rtl.
P12-MAN-014,Keyboard-only full flow,Chromium + human operator required,Desktop/mobile,en/fr/ar,light/dark,Blocked,"Automated scenarios exist, but browser navigation is rejected before page load."
P12-MAN-015,Screen-reader review,NVDA/JAWS/VoiceOver required,Desktop/mobile,en/fr/ar,light/dark,Blocked,Manual announcements and virtual-cursor reading order remain P12-005.
P12-MAN-016,Touch simulation,Chromium/WebKit required,Mobile,en/fr/ar,light/dark,Blocked,Browser matrix could not reach loopback pages.
P12-MAN-017,200 percent zoom,Browser required,320 CSS px,en/fr/ar,light/dark,Blocked,Reflow scenario authored; browser execution blocked.
P12-MAN-018,400 percent zoom,Browser + human operator required,320 CSS px,en/fr/ar,light/dark,Blocked,Manual acceptance remains P12-005.
P12-MAN-019,Reduced motion,Static CSS + source review,All,en/fr/ar,light/dark,Pass,Transitions and loading treatments respect prefers-reduced-motion.
P12-MAN-020,Forced colors,Windows high-contrast environment required,Desktop,en/fr/ar,light/dark,Blocked,Focus and border fallbacks are authored; manual Windows verification remains open.
1 Test_ID Area Environment Viewport Locale Theme Result Evidence_or_blocker
2 P12-MAN-001 Buttons and links Source review + Vitest N/A en/fr/ar light/dark Pass Native semantics, loading protection, accessible icon-only labels, disabled destinations, and directional icon behavior covered by source and unit tests.
3 P12-MAN-002 Form controls Source review + Vitest N/A en/fr/ar light/dark Pass Programmatic labels, required state, help/error descriptions, invalid state, and field grouping pass unit assertions.
4 P12-MAN-003 Tabs Source review + Vitest N/A en/ar light/dark Pass Roving selection and direction-aware arrow behavior pass unit interaction tests.
5 P12-MAN-004 Accordion Source review + Vitest N/A en/fr/ar light/dark Pass Native details/summary semantics and expanded state verified.
6 P12-MAN-005 Dialog and drawer Chromium required Desktop/mobile en/fr/ar light/dark Blocked Focus trap, Escape, inert background, scroll lock, and focus return tests are authored; Chromium loopback navigation is administrator-blocked.
7 P12-MAN-006 Dropdown menu and tooltip Chromium required Desktop/mobile en/fr/ar light/dark Blocked Keyboard/pointer/touch and announcement observations require an unblocked browser.
8 P12-MAN-007 Alerts and loading Source review All en/fr/ar light/dark Pass Live-region behavior is explicit; decorative loading is not repeatedly announced; reduced-motion CSS is present.
9 P12-MAN-008 Interactive cards Source review All en/fr/ar light/dark Pass Valid link/button semantics enforced; nested interactive usage prohibited in documentation.
10 P12-MAN-009 Workflow pattern Source review + server HTML All en/fr/ar light/dark Pass DOM and reading order remain chronological; connectors are decorative and logical-property based.
11 P12-MAN-010 Comparison pattern Source review + server HTML All en/fr/ar light/dark Pass Semantic list structure remains understandable without color; mobile order is explicit.
12 P12-MAN-011 Product preview tables Source review + server HTML All en/fr/ar light/dark Pass Fictional deterministic fixtures, captions, responsive wrapper, and bidi isolation are present.
13 P12-MAN-012 CTA patterns Source review + server HTML All en/fr/ar light/dark Pass One dominant action, disabled unresolved destinations, stacked layout, and localized content inputs verified.
14 P12-MAN-013 Localized route rendering Standalone server + curl Server en/fr/ar N/A Pass Six routes returned HTTP 200 with correct lang and dir; Arabic returned document-level rtl.
15 P12-MAN-014 Keyboard-only full flow Chromium + human operator required Desktop/mobile en/fr/ar light/dark Blocked Automated scenarios exist, but browser navigation is rejected before page load.
16 P12-MAN-015 Screen-reader review NVDA/JAWS/VoiceOver required Desktop/mobile en/fr/ar light/dark Blocked Manual announcements and virtual-cursor reading order remain P12-005.
17 P12-MAN-016 Touch simulation Chromium/WebKit required Mobile en/fr/ar light/dark Blocked Browser matrix could not reach loopback pages.
18 P12-MAN-017 200 percent zoom Browser required 320 CSS px en/fr/ar light/dark Blocked Reflow scenario authored; browser execution blocked.
19 P12-MAN-018 400 percent zoom Browser + human operator required 320 CSS px en/fr/ar light/dark Blocked Manual acceptance remains P12-005.
20 P12-MAN-019 Reduced motion Static CSS + source review All en/fr/ar light/dark Pass Transitions and loading treatments respect prefers-reduced-motion.
21 P12-MAN-020 Forced colors Windows high-contrast environment required Desktop en/fr/ar light/dark Blocked Focus and border fallbacks are authored; manual Windows verification remains open.
@@ -0,0 +1,162 @@
{
"phase": 12,
"date": "2026-06-25",
"runtime": {
"executedNode": "22.16.0",
"targetNode": "24.17.0",
"pnpm": "11.9.0"
},
"commands": [
{
"command": "pnpm install --frozen-lockfile",
"exitCode": null,
"status": "environment-blocked",
"testCount": 0,
"passCount": 0,
"failureCount": 0,
"skippedCount": 0,
"warnings": ["registry DNS EAI_AGAIN; process terminated after retries"],
"evidence": "docs/quality/logs/pnpm-install-frozen.log"
},
{
"command": "npm install --engine-strict=false --ignore-scripts --package-lock=false --no-audit --no-fund",
"exitCode": 0,
"status": "fallback-pass",
"testCount": 0,
"passCount": 0,
"failureCount": 0,
"skippedCount": 0,
"warnings": ["Node engine mismatch; does not satisfy frozen pnpm gate"],
"evidence": "docs/quality/logs/npm-install-fallback.log"
},
{
"command": "npm run validate",
"exitCode": 0,
"status": "pass",
"testCount": 10,
"passCount": 10,
"failureCount": 0,
"skippedCount": 0,
"warnings": [],
"evidence": "docs/quality/logs/validate.log"
},
{
"command": "npm run format:check",
"exitCode": 0,
"status": "pass",
"testCount": 1,
"passCount": 1,
"failureCount": 0,
"skippedCount": 0,
"warnings": [],
"evidence": "docs/quality/logs/format-check.log"
},
{
"command": "npm run lint",
"exitCode": 0,
"status": "pass",
"testCount": 1,
"passCount": 1,
"failureCount": 0,
"skippedCount": 0,
"warnings": [],
"evidence": "docs/quality/logs/lint.log"
},
{
"command": "npm run typecheck",
"exitCode": 0,
"status": "pass",
"testCount": 1,
"passCount": 1,
"failureCount": 0,
"skippedCount": 0,
"warnings": [],
"evidence": "docs/quality/logs/typecheck.log"
},
{
"command": "npm run test:unit",
"exitCode": 0,
"status": "pass",
"testCount": 22,
"passCount": 22,
"failureCount": 0,
"skippedCount": 0,
"warnings": [],
"evidence": "docs/quality/logs/unit.log"
},
{
"command": "npm run build (without SITE_ORIGIN)",
"exitCode": 1,
"status": "expected-fail-closed",
"testCount": 1,
"passCount": 1,
"failureCount": 0,
"skippedCount": 0,
"warnings": ["Production metadata rejected the missing canonical origin as designed."],
"evidence": "docs/quality/logs/build-missing-site-origin.log"
},
{
"command": "SITE_ORIGIN=http://127.0.0.1:3000 PUBLIC_RELEASE_APPROVED=false npm run build",
"exitCode": 0,
"status": "pass",
"testCount": 1,
"passCount": 1,
"failureCount": 0,
"skippedCount": 0,
"warnings": ["Local evidence origin only; production origin remains P10-001."],
"evidence": "docs/quality/logs/build.log"
},
{
"command": "standalone server + curl locale/component-lab matrix",
"exitCode": 0,
"status": "pass",
"testCount": 6,
"passCount": 6,
"failureCount": 0,
"skippedCount": 0,
"warnings": [],
"evidence": "docs/quality/PHASE_12_HTTP_ROUTE_RESULTS_v1.0.json"
},
{
"command": "playwright test tests/browser tests/a11y --project=chromium",
"exitCode": null,
"status": "environment-blocked",
"testCount": 44,
"passCount": 0,
"failureCount": 0,
"skippedCount": 44,
"warnings": ["Chromium rejected loopback navigation with net::ERR_BLOCKED_BY_ADMINISTRATOR"],
"evidence": "docs/quality/logs/playwright-browser-a11y.log"
},
{
"command": "playwright test tests/visual --project=chromium --update-snapshots",
"exitCode": null,
"status": "not-run-after-shared-blocker",
"testCount": 0,
"passCount": 0,
"failureCount": 0,
"skippedCount": 0,
"warnings": ["Same loopback policy blocks image capture"],
"evidence": "docs/quality/PHASE_12_VISUAL_REGRESSION_RESULTS_v1.0.json"
},
{
"command": "pnpm audit --audit-level low",
"exitCode": 124,
"status": "environment-blocked",
"testCount": 0,
"passCount": 0,
"failureCount": 0,
"skippedCount": 0,
"warnings": ["registry DNS EAI_AGAIN; timed out during retry delay"],
"evidence": "docs/quality/logs/pnpm-audit.log"
}
],
"unitCoverage": {
"statements": 92.4,
"branches": 86.04,
"functions": 95.45,
"lines": 92.64
},
"releaseAcceptance": "blocked",
"blockingIssues": ["P12-001", "P12-002", "P12-003", "P12-004", "P12-005"]
}
@@ -0,0 +1,23 @@
# Phase 12 Validation Results
Date: 2026-06-25
| Command | Status | Exit | Tests | Passed | Failed | Skipped | Evidence |
| ---------------------------------------------------------------------------------------------- | ---------------------------- | ---: | ----: | -----: | -----: | ------: | ----------------------------------------------------------- |
| `pnpm install --frozen-lockfile` | environment-blocked | N/A | 0 | 0 | 0 | 0 | `docs/quality/logs/pnpm-install-frozen.log` |
| `npm install --engine-strict=false --ignore-scripts --package-lock=false --no-audit --no-fund` | fallback-pass | 0 | 0 | 0 | 0 | 0 | `docs/quality/logs/npm-install-fallback.log` |
| `npm run validate` | pass | 0 | 10 | 10 | 0 | 0 | `docs/quality/logs/validate.log` |
| `npm run format:check` | pass | 0 | 1 | 1 | 0 | 0 | `docs/quality/logs/format-check.log` |
| `npm run lint` | pass | 0 | 1 | 1 | 0 | 0 | `docs/quality/logs/lint.log` |
| `npm run typecheck` | pass | 0 | 1 | 1 | 0 | 0 | `docs/quality/logs/typecheck.log` |
| `npm run test:unit` | pass | 0 | 22 | 22 | 0 | 0 | `docs/quality/logs/unit.log` |
| `npm run build (without SITE_ORIGIN)` | expected-fail-closed | 1 | 1 | 1 | 0 | 0 | `docs/quality/logs/build-missing-site-origin.log` |
| `SITE_ORIGIN=http://127.0.0.1:3000 PUBLIC_RELEASE_APPROVED=false npm run build` | pass | 0 | 1 | 1 | 0 | 0 | `docs/quality/logs/build.log` |
| `standalone server + curl locale/component-lab matrix` | pass | 0 | 6 | 6 | 0 | 0 | `docs/quality/PHASE_12_HTTP_ROUTE_RESULTS_v1.0.json` |
| `playwright test tests/browser tests/a11y --project=chromium` | environment-blocked | N/A | 44 | 0 | 0 | 44 | `docs/quality/logs/playwright-browser-a11y.log` |
| `playwright test tests/visual --project=chromium --update-snapshots` | not-run-after-shared-blocker | N/A | 0 | 0 | 0 | 0 | `docs/quality/PHASE_12_VISUAL_REGRESSION_RESULTS_v1.0.json` |
| `pnpm audit --audit-level low` | environment-blocked | 124 | 0 | 0 | 0 | 0 | `docs/quality/logs/pnpm-audit.log` |
Unit coverage: 92.40% statements, 86.04% branches, 95.45% functions, and 92.64% lines.
The production build intentionally fails without `SITE_ORIGIN`; the successful local evidence build used `http://127.0.0.1:3000`. Release acceptance remains blocked by P12-001 through P12-005. The source implementation is ready for Phase 13 development, but browser, visual, target-runtime, audit, and manual assistive-technology evidence still requires an unblocked pinned environment.
@@ -0,0 +1,23 @@
{
"phase": 12,
"date": "2026-06-25",
"status": "environment-blocked",
"authoredScenarios": [
"component variants",
"light and dark",
"English French Arabic",
"desktop and mobile",
"focus-visible",
"error",
"long content",
"RTL arrangements"
],
"execution": {
"attempted": true,
"browser": "system Chromium",
"result": "blocked",
"error": "net::ERR_BLOCKED_BY_ADMINISTRATOR for loopback navigation"
},
"baselinesGenerated": false,
"issue": "P12-002"
}
@@ -0,0 +1,14 @@
2026-06-25 | node --version | PASS | v22.16.0; target 24.17.0 remains unverified
2026-06-25 | npx --yes pnpm@11.9.0 --version | PASS | 11.9.0
2026-06-25 | pnpm install --frozen-lockfile --config.engine-strict=false | BLOCKED | lockfile current; registry EAI_AGAIN prevented completion
2026-06-25 | npm run validate | PASS | Phase 9-13 static controls passed
2026-06-25 | npm run format:check | PASS | all files formatted
2026-06-25 | npm run lint | PASS | zero warnings
2026-06-25 | npm run typecheck | PASS | strict TypeScript passed
2026-06-25 | npm run test:unit | PASS | 27 tests, 9 files, thresholds passed
2026-06-25 | SITE_ORIGIN=https://approved.invalid npm run build | PASS | production build and standalone preparation passed
2026-06-25 | Playwright homepage Chromium suite | BLOCKED | net::ERR_BLOCKED_BY_ADMINISTRATOR for loopback navigation
2026-06-25 | standalone HTTP EN/FR/AR checks | PASS | HTTP 200, correct lang/dir, localized hero payload present
2026-06-25 | pnpm audit --audit-level low | BLOCKED | registry connectivity did not permit completion
2026-06-25 | npm run manifest:generate | PASS | Phase 13 manifest generated
2026-06-25 | npm run validate:package | PASS | manifest verified with no extras
@@ -0,0 +1,26 @@
A PHASE_13_PACKAGE_MANIFEST_v1.0.json
A docs/DECISION_LOG_v13.0.md
A docs/IMPLEMENTATION_ISSUE_REGISTER_v1.3.csv
A docs/PHASE_13_IMPLEMENTATION_REPORT_v1.0.md
A docs/phase13/COMPONENT_VARIANT_UPDATE_v1.0.md
A docs/phase13/HOMEPAGE_CONTENT_MODEL_v1.0.md
A docs/phase13/HOMEPAGE_SECTION_MATRIX_v1.0.csv
A docs/quality/PHASE_13_COMMAND_LOG_v1.0.txt
A docs/quality/PHASE_13_FILE_CHANGES_v1.0.txt
A docs/quality/PHASE_13_HTTP_ROUTE_RESULTS_v1.0.json
A docs/quality/PHASE_13_MANUAL_QA_RESULTS_v1.0.csv
A docs/quality/PHASE_13_VALIDATION_RESULTS_v1.0.json
A docs/quality/PHASE_13_VALIDATION_RESULTS_v1.0.md
A scripts/generate-phase13-manifest.mjs
A scripts/validate-phase13-homepage.mjs
A scripts/validate-phase13-manifest.mjs
A src/content/homepage-model.ts
A tests/a11y/homepage.a11y.spec.ts
A tests/browser/homepage.spec.ts
A tests/unit/homepage-content.test.ts
A tests/visual/homepage.visual.spec.ts
M package.json
M scripts/run-validations.mjs
M src/app/[locale]/page.module.css
M src/app/[locale]/page.tsx
M src/components/marketing/ProductPreview.tsx
@@ -0,0 +1,30 @@
{
"generated_at": "2026-06-25",
"origin": "http://127.0.0.1:3100",
"results": [
{
"locale": "en",
"status": 200,
"lang": "en",
"dir": "ltr",
"hero_payload_present": true,
"bytes": 152405
},
{
"locale": "fr",
"status": 200,
"lang": "fr",
"dir": "ltr",
"hero_payload_present": true,
"bytes": 157175
},
{
"locale": "ar",
"status": 200,
"lang": "ar",
"dir": "rtl",
"hero_payload_present": true,
"bytes": 165377
}
]
}
@@ -0,0 +1,11 @@
Check_ID,Area,Scenario,Status,Evidence,Exit_criteria
P13-M01,Keyboard,Desktop EN/FR/AR full route navigation,Blocked,Chromium loopback navigation rejected by administrator,Complete keyboard path with visible focus and logical order
P13-M02,Screen reader,Landmarks headings disclosures disabled actions,Not run,Requires human assistive-technology session,Record NVDA VoiceOver or approved equivalent observations
P13-M03,Zoom,200 percent zoom at 640 CSS pixels,Not run,Browser execution blocked,No horizontal page overflow and all controls operable
P13-M04,Reflow,400 percent reflow at 320 CSS pixels,Not run,Browser execution blocked,Single-direction scrolling except explicit component overflow
P13-M05,Touch,390 and 320 CSS pixel mobile interactions,Not run,Browser execution blocked,Targets and disclosures operable without overlap
P13-M06,Themes,Light dark and system in all locales,Not run,Browser execution blocked,No unreadable contrast or flash regressions
P13-M07,RTL,Arabic desktop tablet and mobile,Not run,Browser execution blocked,True RTL with fixed media and isolated identifiers
P13-M08,Forced colors,Homepage and disabled actions,Not run,Browser execution blocked,Meaning and focus remain visible
P13-M09,Reduced motion,Decorative preview treatment and scrolling,Static pass,Source review confirms transforms are removed and smooth scrolling disabled,Confirm in browser environment
P13-M10,Content expansion,Long French and Arabic copy,Automated scenario authored,tests/browser/text-expansion.spec.ts,Execute in unblocked browser and confirm no overflow
1 Check_ID Area Scenario Status Evidence Exit_criteria
2 P13-M01 Keyboard Desktop EN/FR/AR full route navigation Blocked Chromium loopback navigation rejected by administrator Complete keyboard path with visible focus and logical order
3 P13-M02 Screen reader Landmarks headings disclosures disabled actions Not run Requires human assistive-technology session Record NVDA VoiceOver or approved equivalent observations
4 P13-M03 Zoom 200 percent zoom at 640 CSS pixels Not run Browser execution blocked No horizontal page overflow and all controls operable
5 P13-M04 Reflow 400 percent reflow at 320 CSS pixels Not run Browser execution blocked Single-direction scrolling except explicit component overflow
6 P13-M05 Touch 390 and 320 CSS pixel mobile interactions Not run Browser execution blocked Targets and disclosures operable without overlap
7 P13-M06 Themes Light dark and system in all locales Not run Browser execution blocked No unreadable contrast or flash regressions
8 P13-M07 RTL Arabic desktop tablet and mobile Not run Browser execution blocked True RTL with fixed media and isolated identifiers
9 P13-M08 Forced colors Homepage and disabled actions Not run Browser execution blocked Meaning and focus remain visible
10 P13-M09 Reduced motion Decorative preview treatment and scrolling Static pass Source review confirms transforms are removed and smooth scrolling disabled Confirm in browser environment
11 P13-M10 Content expansion Long French and Arabic copy Automated scenario authored tests/browser/text-expansion.spec.ts Execute in unblocked browser and confirm no overflow
@@ -0,0 +1,85 @@
{
"phase": 13,
"date": "2026-06-25",
"environment": {
"node": "22.16.0",
"target_node": "24.17.0",
"pnpm": "11.9.0 via npx",
"target_pnpm": "11.9.0",
"browser": "System Chromium",
"browser_constraint": "Loopback navigation rejected with net::ERR_BLOCKED_BY_ADMINISTRATOR"
},
"results": [
{
"gate": "pnpm install --frozen-lockfile",
"status": "blocked",
"detail": "Lockfile verification completed; registry requests failed with EAI_AGAIN before installation completed."
},
{
"gate": "pnpm validate",
"status": "passed",
"detail": "Phase 9 through Phase 13 static validators passed."
},
{
"gate": "pnpm format:check",
"status": "passed",
"detail": "All tracked source and documentation files matched Prettier formatting."
},
{ "gate": "pnpm lint", "status": "passed", "detail": "ESLint completed with zero warnings." },
{
"gate": "pnpm typecheck",
"status": "passed",
"detail": "Strict TypeScript validation completed without errors."
},
{
"gate": "pnpm test:unit",
"status": "passed",
"detail": "27 tests passed across 9 files; configured coverage thresholds passed."
},
{
"gate": "pnpm test:browser",
"status": "blocked",
"detail": "Homepage scenarios were invoked with video disabled and system Chromium; all navigation attempts were rejected before application response."
},
{
"gate": "pnpm test:a11y",
"status": "blocked",
"detail": "Authored axe scenarios require the same blocked loopback browser navigation."
},
{
"gate": "pnpm test:visual",
"status": "blocked",
"detail": "Authored visual scenarios and baseline generation require the same blocked loopback browser navigation."
},
{
"gate": "SITE_ORIGIN=https://approved.invalid pnpm build",
"status": "passed",
"detail": "Next.js production build, strict type phase, route generation, and standalone preparation passed."
},
{
"gate": "standalone HTTP locale checks",
"status": "passed",
"detail": "EN, FR, and AR returned HTTP 200 with correct lang and dir and localized hero content in the response payload."
},
{
"gate": "pnpm audit",
"status": "blocked",
"detail": "Registry connectivity did not permit completion of the pnpm audit request."
},
{
"gate": "pnpm manifest:generate",
"status": "passed",
"detail": "Phase 13 checksum manifest generated."
},
{
"gate": "pnpm validate:package",
"status": "passed",
"detail": "Phase 13 checksum manifest verified with no unlisted repository files."
},
{
"gate": "manual accessibility and responsive matrix",
"status": "open",
"detail": "Keyboard, touch, screen-reader, zoom, forced-colors, and human visual review are documented but not fabricated."
}
]
}
@@ -0,0 +1,41 @@
# Phase 13 Validation Results
Date: 2026-06-25
## Environment
- Available runtime: Node.js 22.16.0.
- Required runtime: Node.js 24.17.0.
- Exact pnpm CLI used for attempted frozen installation: 11.9.0 through `npx`.
- Browser: system Chromium.
- Browser restriction: every loopback navigation was rejected with `net::ERR_BLOCKED_BY_ADMINISTRATOR` before an application response.
## Results
| Gate | Result | Evidence |
| ------------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Frozen pnpm installation | Blocked | Lockfile verification completed, then registry requests failed with `EAI_AGAIN`. |
| Static validation | Passed | Phase 9 contract, runtime pins, locale parity, routes, tokens, CSS, prohibited content, metadata, Phase 12 components, and Phase 13 homepage controls passed. |
| Formatting | Passed | Prettier reported all files formatted. |
| Lint | Passed | ESLint completed with zero warnings. |
| Strict type checking | Passed | TypeScript completed without errors. |
| Unit tests | Passed | 27 tests in 9 files passed; line, statement, branch, and function thresholds passed. |
| Production build | Passed | Next.js 16.2.9 compiled, type-checked, generated route data, and prepared standalone assets. |
| Standalone HTTP checks | Passed | EN, FR, and AR returned 200, correct `lang` and `dir`, and localized hero payloads. |
| Homepage browser tests | Blocked | Nine authored scenarios could not navigate to loopback because Chromium returned the administrator policy error. |
| Axe tests | Blocked | Four authored homepage scenarios depend on the same browser navigation. |
| Visual tests | Blocked | Seven authored homepage baselines depend on the same browser navigation. |
| Dependency audit | Blocked | Registry connectivity prevented a completed pnpm audit. |
| Package manifest | Passed | Phase 13 manifest generated and verified after repository cleanup. |
| Manual QA | Open | Keyboard, touch, screen-reader, 200/400 percent zoom, reduced motion, forced colors, themes, RTL, and content expansion require human execution. |
## Coverage summary
- Statements: 92.4 percent.
- Branches: 86.04 percent.
- Functions: 95.45 percent.
- Lines: 92.64 percent.
## Acceptance statement
The implemented source is statically valid, typed, unit-tested, buildable, and directly servable in all three locales. Formal Phase 13 acceptance remains blocked by P12-001 through P12-005 and P13-001 through P13-003. Browser and human accessibility evidence cannot be replaced by source inspection, even when source inspection is substantially less annoying.
+32
View File
@@ -0,0 +1,32 @@
{
"schema_version": "1.0",
"project": "RentalDriveGo",
"executed_at": "2026-06-25",
"target_runtime": { "node": "24.17.0", "pnpm": "11.9.0" },
"execution_runtime": { "node": "22.16.0", "pnpm": "11.9.0" },
"results": [
{ "id": "phase9-validator", "status": "passed", "checks": 38, "targets": 19 },
{ "id": "phase9-manifest", "status": "passed", "manifested_files": 61, "extracted_files": 62 },
{ "id": "repository-validations", "status": "passed", "validators": 7 },
{ "id": "phase10-manifest", "status": "passed", "manifested_files": 146 },
{ "id": "format", "status": "passed" },
{ "id": "lint", "status": "passed", "warnings": 0 },
{ "id": "typecheck", "status": "passed" },
{
"id": "unit-tests",
"status": "passed",
"files": 3,
"tests": 9,
"coverage": { "statements": 95.31, "branches": 89.18, "functions": 100, "lines": 94.64 }
},
{ "id": "production-build", "status": "passed" },
{ "id": "package-audit", "status": "passed", "known_vulnerabilities": 0 },
{ "id": "http-smoke", "status": "passed" },
{
"id": "browser-tests",
"status": "environment_blocked",
"reason": "Managed system Chromium URLBlocklist blocks all navigation and Playwright CDN DNS resolution fails."
},
{ "id": "target-node-runtime", "status": "environment_blocked", "available_node": "22.16.0" }
]
}
+33
View File
@@ -0,0 +1,33 @@
# Phase 10 Validation Results
- **Execution date:** 2026-06-25
- **Execution environment:** Linux container, Node.js 22.16.0 available; repository target is Node.js 24.17.0
- **Package manager:** pnpm 11.9.0
| Check | Result | Evidence / notes |
| ------------------------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------- |
| Phase 9 supplied validator | PASS | 38 checks across 19 validator targets |
| Phase 9 manifest checksums and sizes | PASS | 61 manifested payload files matched exactly; manifest itself makes 62 extracted files |
| Contract immutability validator | PASS | Source manifest and supplied validator executed from `contracts/phase9` |
| Locale parity and direction validator | PASS | EN, FR, AR key parity, locale mapping, and implementation brand checks |
| Route parity validator | PASS | Locale paths, canonical alternates, query preservation allowlist, and hash rules |
| Token integrity validator | PASS | `src/styles/tokens.css` is byte-identical to the Phase 9 token source |
| CSS logical-property validator | PASS | No prohibited physical left/right declarations in implementation CSS |
| Prohibited-content validator | PASS | No placeholder destinations, research backdoors, simulated production success, or prohibited source behavior |
| Prettier check | PASS | Repository formatting accepted |
| ESLint | PASS | Zero warnings permitted |
| TypeScript | PASS | Strict `tsc --noEmit` |
| Unit tests | PASS | 3 files, 9 tests; 95.31% statements, 89.18% branches, 100% functions, 94.64% lines |
| Production build | PASS | Next.js dynamic locale route, static robots and not-found routes, standalone output prepared |
| Package audit | PASS | `pnpm audit --audit-level low`: no known vulnerabilities |
| Server HTTP smoke check | PASS | `/en` returned 200 with `lang`, `dir`, CSP nonce, noindex, canonical, and all `hreflang` links in server HTML |
| Browser functional suite | BLOCKED BY ENVIRONMENT | System Chromium has an administrator `URLBlocklist: ["*"]`; navigation returns `ERR_BLOCKED_BY_ADMINISTRATOR` |
| Browser installation fallback | BLOCKED BY ENVIRONMENT | Playwright CDN resolution failed with `EAI_AGAIN cdn.playwright.dev` |
| Accessibility browser suite | NOT EXECUTED LOCALLY | Configured and required in CI; depends on an unblocked Playwright browser |
| Visual regression baselines | NOT GENERATED LOCALLY | Must be generated and reviewed in approved CI/browser environment, not fabricated from failed navigation |
| Firefox/WebKit/mobile matrix | NOT EXECUTED LOCALLY | CI installs and runs configured engines; support policy owner remains unresolved under P9-011 |
| Exact target-runtime execution | NOT EXECUTED LOCALLY | Host exposes Node.js 22.16.0 only; CI and OCI image are pinned to 24.17.0 |
## Interpretation
The source, static validators, unit suite, audit, and production build are green. Browser-dependent evidence is not green; it is unavailable in this host. The CI browser job remains a required release gate and must run successfully before Phase 11 implementation is accepted.
@@ -0,0 +1,20 @@
{
"phase": 11,
"status": "blocked",
"canonical_engine": "Playwright Chromium 1.61.1 pinned browser",
"reason": "The local environment could not install pnpm 11.9.0 or the repository dependencies, so the application and Playwright snapshot runner could not execute.",
"scenarios_defined": [
"desktop-en-light",
"desktop-en-dark",
"tablet-fr-light",
"tablet-fr-dark",
"mobile-ar-light",
"mobile-ar-dark",
"mobile-ar-dark-navigation-open",
"desktop-en-light-focus"
],
"baselines_generated": 0,
"fabricated_baselines": false,
"command": "pnpm test:visual:update --project=chromium",
"release_gate": "P11-002"
}
+29
View File
@@ -0,0 +1,29 @@
> rentaldrivego-web@0.3.0 build
> next build && node scripts/prepare-standalone.mjs
▲ Next.js 16.2.9 (Turbopack)
Creating an optimized production build ...
✓ Compiled successfully in 11.6s
Running TypeScript ...
Finished TypeScript in 7.9s ...
Collecting page data using 7 workers ...
Generating static pages using 7 workers (0/3) ...
✓ Generating static pages using 7 workers (3/3) in 691ms
Finalizing page optimization ...
Route (app)
┌ ○ /_not-found
├ ƒ /[locale]
├ ƒ /[locale]/[slug]
├ ƒ /[locale]/component-lab
└ ○ /robots.txt
ƒ Proxy (Middleware)
○ (Static) prerendered as static content
ƒ (Dynamic) server-rendered on demand
Prepared standalone server assets.
@@ -0,0 +1 @@
1
@@ -0,0 +1,19 @@
> rentaldrivego-web@0.3.0 build
> next build && node scripts/prepare-standalone.mjs
▲ Next.js 16.2.9 (Turbopack)
Creating an optimized production build ...
✓ Compiled successfully in 11.6s
Running TypeScript ...
Finished TypeScript in 8.6s ...
Collecting page data using 7 workers ...
Generating static pages using 7 workers (0/3) ...
Error occurred prerendering page "/robots.txt". Read more: https://nextjs.org/docs/messages/prerender-error
Error: SITE_ORIGIN is required in production. No canonical domain is approved yet.
at <unknown> (.next/server/chunks/[root-of-the-server]__14j6iib._.js:26:33652)
at tT (.next/server/chunks/[root-of-the-server]__14j6iib._.js:26:33966)
at tA (.next/server/chunks/[root-of-the-server]__14j6iib._.js:26:34173)
Export encountered an error on /robots.txt/route: /robots.txt, exiting the build.
Next.js build worker exited with code: 1 and signal: null
+1
View File
@@ -0,0 +1 @@
0
+29
View File
@@ -0,0 +1,29 @@
> rentaldrivego-web@0.3.0 build
> next build && node scripts/prepare-standalone.mjs
▲ Next.js 16.2.9 (Turbopack)
Creating an optimized production build ...
✓ Compiled successfully in 11.4s
Running TypeScript ...
Finished TypeScript in 8.2s ...
Collecting page data using 7 workers ...
Generating static pages using 7 workers (0/3) ...
✓ Generating static pages using 7 workers (3/3) in 566ms
Finalizing page optimization ...
Route (app)
┌ ○ /_not-found
├ ƒ /[locale]
├ ƒ /[locale]/[slug]
├ ƒ /[locale]/component-lab
└ ○ /robots.txt
ƒ Proxy (Middleware)
○ (Static) prerendered as static content
ƒ (Dynamic) server-rendered on demand
Prepared standalone server assets.
+47
View File
@@ -0,0 +1,47 @@
Only in /mnt/data/phase12_work/RentalDriveGo/docs/architecture: ADR-0003_PHASE_12_COMPONENT_SYSTEM.md
Only in /mnt/data/phase12_work/RentalDriveGo/docs: phase12
Files /tmp/phase11_original/RentalDriveGo/package.json and /mnt/data/phase12_work/RentalDriveGo/package.json differ
Files /tmp/phase11_original/RentalDriveGo/playwright.config.ts and /mnt/data/phase12_work/RentalDriveGo/playwright.config.ts differ
Only in /mnt/data/phase12_work/RentalDriveGo/scripts: generate-phase12-manifest.mjs
Files /tmp/phase11_original/RentalDriveGo/scripts/run-validations.mjs and /mnt/data/phase12_work/RentalDriveGo/scripts/run-validations.mjs differ
Only in /mnt/data/phase12_work/RentalDriveGo/scripts: validate-phase12-components.mjs
Only in /mnt/data/phase12_work/RentalDriveGo/scripts: validate-phase12-manifest.mjs
Files /tmp/phase11_original/RentalDriveGo/scripts/validate-runtime-dependencies.mjs and /mnt/data/phase12_work/RentalDriveGo/scripts/validate-runtime-dependencies.mjs differ
Only in /mnt/data/phase12_work/RentalDriveGo/src/app/[locale]: component-lab
Files /tmp/phase11_original/RentalDriveGo/src/app/[locale]/layout.tsx and /mnt/data/phase12_work/RentalDriveGo/src/app/[locale]/layout.tsx differ
Only in /mnt/data/phase12_work/RentalDriveGo/src/components: actions
Files /tmp/phase11_original/RentalDriveGo/src/components/app-shell/SiteHeader.tsx and /mnt/data/phase12_work/RentalDriveGo/src/components/app-shell/SiteHeader.tsx differ
Only in /mnt/data/phase12_work/RentalDriveGo/src/components: controls
Only in /mnt/data/phase12_work/RentalDriveGo/src/components: feedback
Only in /mnt/data/phase12_work/RentalDriveGo/src/components: forms
Files /tmp/phase11_original/RentalDriveGo/src/components/foundation/BidiText.tsx and /mnt/data/phase12_work/RentalDriveGo/src/components/foundation/BidiText.tsx differ
Only in /mnt/data/phase12_work/RentalDriveGo/src/components/foundation: Icon.module.css
Only in /mnt/data/phase12_work/RentalDriveGo/src/components/foundation: Icon.tsx
Files /tmp/phase11_original/RentalDriveGo/src/components/foundation/StatusBadge.module.css and /mnt/data/phase12_work/RentalDriveGo/src/components/foundation/StatusBadge.module.css differ
Files /tmp/phase11_original/RentalDriveGo/src/components/foundation/StatusBadge.tsx and /mnt/data/phase12_work/RentalDriveGo/src/components/foundation/StatusBadge.tsx differ
Only in /mnt/data/phase12_work/RentalDriveGo/src/components/foundation: VisuallyHidden.tsx
Only in /mnt/data/phase12_work/RentalDriveGo/src/components/foundation: client-hooks.ts
Only in /mnt/data/phase12_work/RentalDriveGo/src/components: marketing
Only in /mnt/data/phase12_work/RentalDriveGo/src/components: media
Only in /mnt/data/phase12_work/RentalDriveGo/src/components: navigation
Only in /mnt/data/phase12_work/RentalDriveGo/src/components: overlays
Only in /mnt/data/phase12_work/RentalDriveGo/src/components: surfaces
Only in /mnt/data/phase12_work/RentalDriveGo/src/components: typography
Only in /mnt/data/phase12_work/RentalDriveGo/src/content: development
Files /tmp/phase11_original/RentalDriveGo/src/content/locales/ar/shell.json and /mnt/data/phase12_work/RentalDriveGo/src/content/locales/ar/shell.json differ
Files /tmp/phase11_original/RentalDriveGo/src/content/locales/en/shell.json and /mnt/data/phase12_work/RentalDriveGo/src/content/locales/en/shell.json differ
Files /tmp/phase11_original/RentalDriveGo/src/content/locales/fr/shell.json and /mnt/data/phase12_work/RentalDriveGo/src/content/locales/fr/shell.json differ
Only in /mnt/data/phase12_work/RentalDriveGo/src/lib: components
Files /tmp/phase11_original/RentalDriveGo/src/lib/localization/client.ts and /mnt/data/phase12_work/RentalDriveGo/src/lib/localization/client.ts differ
Only in /mnt/data/phase12_work/RentalDriveGo/tests/a11y: component-system.a11y.spec.ts
Only in /mnt/data/phase12_work/RentalDriveGo/tests/browser: component-system.spec.ts
Files /tmp/phase11_original/RentalDriveGo/tests/browser/responsive.spec.ts and /mnt/data/phase12_work/RentalDriveGo/tests/browser/responsive.spec.ts differ
Files /tmp/phase11_original/RentalDriveGo/tests/browser/text-expansion.spec.ts and /mnt/data/phase12_work/RentalDriveGo/tests/browser/text-expansion.spec.ts differ
Files /tmp/phase11_original/RentalDriveGo/tests/browser/theme-csp.spec.ts and /mnt/data/phase12_work/RentalDriveGo/tests/browser/theme-csp.spec.ts differ
Only in /mnt/data/phase12_work/RentalDriveGo/tests/fixtures: component-system
Files /tmp/phase11_original/RentalDriveGo/tests/fixtures/foundation-matrix.json and /mnt/data/phase12_work/RentalDriveGo/tests/fixtures/foundation-matrix.json differ
Only in /mnt/data/phase12_work/RentalDriveGo/tests: types
Only in /mnt/data/phase12_work/RentalDriveGo/tests/unit: components
Only in /mnt/data/phase12_work/RentalDriveGo/tests/visual: component-system.visual.spec.ts
Files /tmp/phase11_original/RentalDriveGo/tsconfig.json and /mnt/data/phase12_work/RentalDriveGo/tsconfig.json differ
Only in /mnt/data/phase12_work/RentalDriveGo: tsconfig.tsbuildinfo
+1
View File
@@ -0,0 +1 @@
0
+6
View File
@@ -0,0 +1,6 @@
> rentaldrivego-web@0.3.0 format:check
> prettier --check .
Checking formatting...
All matched files use Prettier code style!
+1
View File
@@ -0,0 +1 @@
0
+222
View File
@@ -0,0 +1,222 @@
> rentaldrivego-web@0.3.0 format
> prettier --write .
.github/dependabot.yml 20ms (unchanged)
.github/workflows/ci.yml 12ms (unchanged)
CONTRIBUTING.md 27ms (unchanged)
docs/architecture/ADR-0001_REPOSITORY_FOUNDATION.md 34ms (unchanged)
docs/architecture/ADR-0002_PHASE_11_FOUNDATIONS.md 17ms (unchanged)
docs/architecture/ADR-0003_PHASE_12_COMPONENT_SYSTEM.md 4ms (unchanged)
docs/BRAND_MIGRATION_v1.0.md 5ms (unchanged)
docs/DECISION_LOG_v12.0.md 7ms (unchanged)
docs/DEPENDENCY_MANIFEST_v1.0.md 9ms (unchanged)
docs/PHASE_10_HANDOFF_v1.0.md 8ms (unchanged)
docs/PHASE_10_IMPLEMENTATION_REPORT_v1.0.md 18ms (unchanged)
docs/PHASE_11_IMPLEMENTATION_REPORT_v1.0.md 37ms (unchanged)
docs/PHASE_12_HANDOFF_v1.0.md 17ms (unchanged)
docs/PHASE_12_IMPLEMENTATION_REPORT_v1.0.md 24ms (unchanged)
docs/PHASE_13_HANDOFF_v1.0.md 26ms
docs/phase12/BUNDLE_IMPACT_REPORT_v1.0.md 5ms
docs/phase12/COMPONENT_CATALOG_v1.0.md 70ms (unchanged)
docs/phase12/COMPONENT_INVENTORY_v1.0.json 68ms (unchanged)
docs/phase12/DEPENDENCY_CHANGE_REPORT_v1.0.md 3ms (unchanged)
docs/quality/PHASE_11_VALIDATION_RESULTS_v1.0.json 2ms (unchanged)
docs/quality/PHASE_11_VALIDATION_RESULTS_v1.0.md 5ms (unchanged)
docs/quality/PHASE_12_HTTP_ROUTE_RESULTS_v1.0.json 2ms (unchanged)
docs/quality/PHASE_12_VALIDATION_RESULTS_v1.0.json 4ms
docs/quality/PHASE_12_VALIDATION_RESULTS_v1.0.md 5ms
docs/quality/PHASE_12_VISUAL_REGRESSION_RESULTS_v1.0.json 1ms (unchanged)
docs/quality/VALIDATION_RESULTS_v1.0.json 2ms (unchanged)
docs/quality/VALIDATION_RESULTS_v1.0.md 7ms (unchanged)
docs/quality/VISUAL_REGRESSION_RESULTS_v1.0.json 1ms (unchanged)
docs/TOKEN_IMPLEMENTATION_v1.0.md 4ms (unchanged)
eslint.config.mjs 10ms (unchanged)
next.config.ts 10ms (unchanged)
package.json 2ms (unchanged)
PHASE_10_PACKAGE_MANIFEST_v1.0.json 24ms (unchanged)
PHASE_11_PACKAGE_MANIFEST_v1.0.json 17ms (unchanged)
playwright.config.ts 12ms (unchanged)
pnpm-workspace.yaml 2ms (unchanged)
prettier.config.mjs 4ms (unchanged)
README.md 6ms (unchanged)
scripts/generate-phase10-manifest.mjs 14ms (unchanged)
scripts/generate-phase11-manifest.mjs 7ms (unchanged)
scripts/generate-phase12-manifest.mjs 6ms (unchanged)
scripts/lib.mjs 6ms (unchanged)
scripts/prepare-standalone.mjs 3ms (unchanged)
scripts/run-checks.mjs 2ms (unchanged)
scripts/run-validations.mjs 2ms (unchanged)
scripts/validate-css-logical.mjs 3ms (unchanged)
scripts/validate-locales.mjs 5ms (unchanged)
scripts/validate-metadata.mjs 2ms (unchanged)
scripts/validate-phase10-manifest.mjs 2ms (unchanged)
scripts/validate-phase11-foundation.mjs 4ms (unchanged)
scripts/validate-phase11-manifest.mjs 5ms (unchanged)
scripts/validate-phase12-components.mjs 5ms (unchanged)
scripts/validate-phase12-manifest.mjs 6ms (unchanged)
scripts/validate-phase9-contract.mjs 2ms (unchanged)
scripts/validate-prohibited-content.mjs 2ms (unchanged)
scripts/validate-routes.mjs 3ms (unchanged)
scripts/validate-runtime-dependencies.mjs 4ms (unchanged)
scripts/validate-tokens.mjs 3ms (unchanged)
src/app/[locale]/[slug]/page.tsx 16ms (unchanged)
src/app/[locale]/component-lab/ComponentLabInteractive.tsx 11ms (unchanged)
src/app/[locale]/component-lab/page.module.css 19ms (unchanged)
src/app/[locale]/component-lab/page.tsx 10ms (unchanged)
src/app/[locale]/error.tsx 5ms (unchanged)
src/app/[locale]/layout.tsx 6ms (unchanged)
src/app/[locale]/loading.tsx 2ms (unchanged)
src/app/[locale]/not-found.tsx 1ms (unchanged)
src/app/[locale]/page.module.css 8ms (unchanged)
src/app/[locale]/page.tsx 12ms (unchanged)
src/app/robots.ts 2ms (unchanged)
src/components/actions/ActionLink.module.css 4ms (unchanged)
src/components/actions/ActionLink.tsx 8ms (unchanged)
src/components/actions/Button.module.css 14ms (unchanged)
src/components/actions/Button.tsx 11ms (unchanged)
src/components/app-shell/BrandLink.tsx 4ms (unchanged)
src/components/app-shell/Controls.module.css 3ms (unchanged)
src/components/app-shell/DisabledAction.tsx 3ms (unchanged)
src/components/app-shell/HeaderNavigation.tsx 5ms (unchanged)
src/components/app-shell/LocaleSelector.tsx 4ms (unchanged)
src/components/app-shell/LocalizedLoading.tsx 2ms (unchanged)
src/components/app-shell/LocalizedNotFound.tsx 2ms (unchanged)
src/components/app-shell/MobileNavigation.tsx 9ms (unchanged)
src/components/app-shell/SiteFooter.module.css 6ms (unchanged)
src/components/app-shell/SiteFooter.tsx 11ms (unchanged)
src/components/app-shell/SiteHeader.module.css 11ms (unchanged)
src/components/app-shell/SiteHeader.tsx 4ms (unchanged)
src/components/app-shell/StateShell.module.css 5ms (unchanged)
src/components/app-shell/StateShell.tsx 4ms (unchanged)
src/components/app-shell/ThemeController.tsx 4ms (unchanged)
src/components/app-shell/ThemeSelector.tsx 5ms (unchanged)
src/components/controls/Accordion.module.css 3ms (unchanged)
src/components/controls/Accordion.tsx 3ms (unchanged)
src/components/controls/Pagination.module.css 2ms (unchanged)
src/components/controls/Pagination.tsx 4ms (unchanged)
src/components/controls/SegmentedControl.module.css 2ms (unchanged)
src/components/controls/SegmentedControl.tsx 3ms (unchanged)
src/components/controls/Tabs.module.css 2ms (unchanged)
src/components/controls/Tabs.tsx 10ms (unchanged)
src/components/feedback/Alert.module.css 2ms (unchanged)
src/components/feedback/Alert.tsx 4ms (unchanged)
src/components/feedback/Loading.module.css 4ms (unchanged)
src/components/feedback/Loading.tsx 3ms (unchanged)
src/components/feedback/Progress.module.css 1ms (unchanged)
src/components/feedback/Progress.tsx 3ms (unchanged)
src/components/feedback/StateMessage.module.css 1ms (unchanged)
src/components/feedback/StateMessage.tsx 3ms (unchanged)
src/components/forms/ChoiceControls.module.css 4ms (unchanged)
src/components/forms/ChoiceControls.tsx 5ms (unchanged)
src/components/forms/ErrorSummary.module.css 2ms (unchanged)
src/components/forms/ErrorSummary.tsx 3ms (unchanged)
src/components/forms/FormField.module.css 3ms (unchanged)
src/components/forms/FormField.tsx 4ms (unchanged)
src/components/forms/TextInput.module.css 3ms (unchanged)
src/components/forms/TextInput.tsx 5ms (unchanged)
src/components/foundation/AccessibleIcon.tsx 2ms (unchanged)
src/components/foundation/BidiText.module.css 1ms (unchanged)
src/components/foundation/BidiText.tsx 2ms (unchanged)
src/components/foundation/client-hooks.ts 6ms (unchanged)
src/components/foundation/Icon.module.css 2ms (unchanged)
src/components/foundation/Icon.tsx 7ms (unchanged)
src/components/foundation/LiveRegion.module.css 1ms (unchanged)
src/components/foundation/LiveRegion.tsx 3ms (unchanged)
src/components/foundation/StatusBadge.module.css 2ms (unchanged)
src/components/foundation/StatusBadge.tsx 2ms (unchanged)
src/components/foundation/VisuallyHidden.tsx 2ms (unchanged)
src/components/layout/LayoutPrimitives.module.css 6ms (unchanged)
src/components/layout/LayoutPrimitives.tsx 5ms (unchanged)
src/components/marketing/Comparison.module.css 2ms (unchanged)
src/components/marketing/Comparison.tsx 6ms (unchanged)
src/components/marketing/CTA.module.css 2ms (unchanged)
src/components/marketing/CTA.tsx 4ms (unchanged)
src/components/marketing/Evidence.module.css 1ms (unchanged)
src/components/marketing/Evidence.tsx 4ms (unchanged)
src/components/marketing/FeatureCard.module.css 1ms (unchanged)
src/components/marketing/FeatureCard.tsx 3ms (unchanged)
src/components/marketing/ProductPreview.module.css 4ms (unchanged)
src/components/marketing/ProductPreview.tsx 4ms (unchanged)
src/components/marketing/SectionHeader.module.css 1ms (unchanged)
src/components/marketing/SectionHeader.tsx 2ms (unchanged)
src/components/marketing/SectionPatterns.module.css 4ms (unchanged)
src/components/marketing/SectionPatterns.tsx 3ms (unchanged)
src/components/marketing/Workflow.module.css 3ms (unchanged)
src/components/marketing/Workflow.tsx 4ms (unchanged)
src/components/media/MediaFrame.module.css 2ms (unchanged)
src/components/media/MediaFrame.tsx 3ms (unchanged)
src/components/navigation/Breadcrumbs.module.css 1ms (unchanged)
src/components/navigation/Breadcrumbs.tsx 4ms (unchanged)
src/components/navigation/FooterLinkGroup.module.css 1ms (unchanged)
src/components/navigation/FooterLinkGroup.tsx 2ms (unchanged)
src/components/navigation/SectionNavigation.module.css 2ms (unchanged)
src/components/navigation/SectionNavigation.tsx 2ms (unchanged)
src/components/overlays/Dialog.module.css 4ms (unchanged)
src/components/overlays/Dialog.tsx 6ms (unchanged)
src/components/overlays/DropdownMenu.module.css 3ms (unchanged)
src/components/overlays/DropdownMenu.tsx 6ms (unchanged)
src/components/overlays/Tooltip.module.css 4ms (unchanged)
src/components/overlays/Tooltip.tsx 1ms (unchanged)
src/components/surfaces/Callout.module.css 1ms (unchanged)
src/components/surfaces/Callout.tsx 1ms (unchanged)
src/components/surfaces/Card.module.css 2ms (unchanged)
src/components/surfaces/Card.tsx 3ms (unchanged)
src/components/typography/Typography.module.css 3ms (unchanged)
src/components/typography/Typography.tsx 3ms (unchanged)
src/content/development/component-lab.ts 19ms (unchanged)
src/content/locales/ar/homepage.json 6ms (unchanged)
src/content/locales/ar/shell.json 2ms (unchanged)
src/content/locales/en/homepage.json 4ms (unchanged)
src/content/locales/en/shell.json 2ms (unchanged)
src/content/locales/fr/homepage.json 6ms (unchanged)
src/content/locales/fr/shell.json 1ms (unchanged)
src/contracts/phase9/analytics-contract.ts 2ms (unchanged)
src/contracts/phase9/component-contracts.ts 6ms (unchanged)
src/contracts/phase9/demo-form-contract.ts 2ms (unchanged)
src/contracts/phase9/design-tokens.json 2ms (unchanged)
src/contracts/phase9/performance-budgets.json 1ms (unchanged)
src/contracts/phase9/route-manifest.json 1ms (unchanged)
src/contracts/phase9/visual-regression-scenarios.json 2ms (unchanged)
src/lib/components/classNames.ts 1ms (unchanged)
src/lib/localization/client-messages.ts 3ms (unchanged)
src/lib/localization/client.ts 3ms (unchanged)
src/lib/localization/config.ts 14ms (unchanged)
src/lib/localization/format.ts 5ms (unchanged)
src/lib/localization/messages.ts 2ms (unchanged)
src/lib/localization/site-origin.ts 3ms (unchanged)
src/lib/metadata/build-metadata.ts 3ms (unchanged)
src/lib/security/csp.ts 2ms (unchanged)
src/lib/theme/bootstrap-script.ts 1ms (unchanged)
src/lib/theme/client.ts 5ms (unchanged)
src/lib/theme/config.ts 3ms (unchanged)
src/proxy.ts 6ms (unchanged)
src/styles/component-tokens.css 10ms (unchanged)
src/styles/globals.css 6ms (unchanged)
tests/a11y/component-system.a11y.spec.ts 2ms (unchanged)
tests/a11y/shell.a11y.spec.ts 3ms (unchanged)
tests/browser/component-system.spec.ts 5ms (unchanged)
tests/browser/navigation.spec.ts 3ms (unchanged)
tests/browser/no-javascript.spec.ts 2ms (unchanged)
tests/browser/responsive.spec.ts 5ms (unchanged)
tests/browser/shell.spec.ts 14ms (unchanged)
tests/browser/text-expansion.spec.ts 4ms (unchanged)
tests/browser/theme-csp.spec.ts 12ms (unchanged)
tests/fixtures/component-system/component-matrix.json 1ms (unchanged)
tests/fixtures/foundation-matrix.json 3ms (unchanged)
tests/fixtures/README.md 5ms (unchanged)
tests/setup.ts 1ms (unchanged)
tests/types/component-contracts.test-d.tsx 2ms (unchanged)
tests/unit/components/actions.test.tsx 3ms (unchanged)
tests/unit/components/controls.test.tsx 4ms (unchanged)
tests/unit/components/evidence.test.tsx 3ms (unchanged)
tests/unit/components/forms.test.tsx 3ms (unchanged)
tests/unit/csp.test.ts 2ms (unchanged)
tests/unit/format.test.ts 3ms (unchanged)
tests/unit/localization.test.ts 4ms (unchanged)
tests/unit/theme.test.ts 2ms (unchanged)
tests/visual/component-system.visual.spec.ts 3ms (unchanged)
tests/visual/README.md 2ms (unchanged)
tests/visual/shell.visual.spec.ts 6ms (unchanged)
tsconfig.json 1ms (unchanged)
vitest.config.ts 2ms (unchanged)
+1
View File
@@ -0,0 +1 @@
0
+4
View File
@@ -0,0 +1,4 @@
> rentaldrivego-web@0.3.0 lint
> eslint . --max-warnings=0
+1
View File
@@ -0,0 +1 @@
0
+2
View File
@@ -0,0 +1,2 @@
Generating route types...
✓ Types generated successfully
@@ -0,0 +1,7 @@
npm warn EBADENGINE Unsupported engine {
npm warn EBADENGINE package: 'rentaldrivego-web@0.3.0',
npm warn EBADENGINE required: { node: '24.17.0', pnpm: '11.9.0' },
npm warn EBADENGINE current: { node: 'v22.16.0', npm: '10.9.2' }
npm warn EBADENGINE }
added 462 packages in 30s
@@ -0,0 +1,57 @@
Running 44 tests using 2 workers
××××F::error file=tests/a11y/component-system.a11y.spec.ts,title=[chromium] tests/a11y/component-system.a11y.spec.ts:5:7 en component fixture has no detectable accessibility violations,line=8,col=16:: 1) [chromium] tests/a11y/component-system.a11y.spec.ts:5:7 en component fixture has no detectable accessibility violations %0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/en/component-lab%0A Call log:%0A - navigating to "http://127.0.0.1:3000/en/component-lab", waiting until "load"%0A%0A%0A 6 | page,%0A 7 | }) => {%0A > 8 | await page.goto(`/${locale}/component-lab`);%0A | ^%0A 9 | const results = await new AxeBuilder({ page }).analyze();%0A 10 | expect(results.violations).toEqual([]);%0A 11 | });%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/component-system.a11y.spec.ts:8:16
::error file=tests/a11y/component-system.a11y.spec.ts,title=[chromium] tests/a11y/component-system.a11y.spec.ts:5:7 en component fixture has no detectable accessibility violations,line=8,col=16:: 1) [chromium] tests/a11y/component-system.a11y.spec.ts:5:7 en component fixture has no detectable accessibility violations %0A%0A Retry #1 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/en/component-lab%0A Call log:%0A - navigating to "http://127.0.0.1:3000/en/component-lab", waiting until "load"%0A%0A%0A 6 | page,%0A 7 | }) => {%0A > 8 | await page.goto(`/${locale}/component-lab`);%0A | ^%0A 9 | const results = await new AxeBuilder({ page }).analyze();%0A 10 | expect(results.violations).toEqual([]);%0A 11 | });%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/component-system.a11y.spec.ts:8:16
::error file=tests/a11y/component-system.a11y.spec.ts,title=[chromium] tests/a11y/component-system.a11y.spec.ts:5:7 en component fixture has no detectable accessibility violations,line=8,col=16:: 1) [chromium] tests/a11y/component-system.a11y.spec.ts:5:7 en component fixture has no detectable accessibility violations %0A%0A Retry #2 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/en/component-lab%0A Call log:%0A - navigating to "http://127.0.0.1:3000/en/component-lab", waiting until "load"%0A%0A%0A 6 | page,%0A 7 | }) => {%0A > 8 | await page.goto(`/${locale}/component-lab`);%0A | ^%0A 9 | const results = await new AxeBuilder({ page }).analyze();%0A 10 | expect(results.violations).toEqual([]);%0A 11 | });%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/component-system.a11y.spec.ts:8:16
F::error file=tests/a11y/component-system.a11y.spec.ts,title=[chromium] tests/a11y/component-system.a11y.spec.ts:5:7 fr component fixture has no detectable accessibility violations,line=8,col=16:: 2) [chromium] tests/a11y/component-system.a11y.spec.ts:5:7 fr component fixture has no detectable accessibility violations %0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/fr/component-lab%0A Call log:%0A - navigating to "http://127.0.0.1:3000/fr/component-lab", waiting until "load"%0A%0A%0A 6 | page,%0A 7 | }) => {%0A > 8 | await page.goto(`/${locale}/component-lab`);%0A | ^%0A 9 | const results = await new AxeBuilder({ page }).analyze();%0A 10 | expect(results.violations).toEqual([]);%0A 11 | });%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/component-system.a11y.spec.ts:8:16
::error file=tests/a11y/component-system.a11y.spec.ts,title=[chromium] tests/a11y/component-system.a11y.spec.ts:5:7 fr component fixture has no detectable accessibility violations,line=8,col=16:: 2) [chromium] tests/a11y/component-system.a11y.spec.ts:5:7 fr component fixture has no detectable accessibility violations %0A%0A Retry #1 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/fr/component-lab%0A Call log:%0A - navigating to "http://127.0.0.1:3000/fr/component-lab", waiting until "load"%0A%0A%0A 6 | page,%0A 7 | }) => {%0A > 8 | await page.goto(`/${locale}/component-lab`);%0A | ^%0A 9 | const results = await new AxeBuilder({ page }).analyze();%0A 10 | expect(results.violations).toEqual([]);%0A 11 | });%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/component-system.a11y.spec.ts:8:16
::error file=tests/a11y/component-system.a11y.spec.ts,title=[chromium] tests/a11y/component-system.a11y.spec.ts:5:7 fr component fixture has no detectable accessibility violations,line=8,col=16:: 2) [chromium] tests/a11y/component-system.a11y.spec.ts:5:7 fr component fixture has no detectable accessibility violations %0A%0A Retry #2 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/fr/component-lab%0A Call log:%0A - navigating to "http://127.0.0.1:3000/fr/component-lab", waiting until "load"%0A%0A%0A 6 | page,%0A 7 | }) => {%0A > 8 | await page.goto(`/${locale}/component-lab`);%0A | ^%0A 9 | const results = await new AxeBuilder({ page }).analyze();%0A 10 | expect(results.violations).toEqual([]);%0A 11 | });%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/component-system.a11y.spec.ts:8:16
××××F::error file=tests/a11y/component-system.a11y.spec.ts,title=[chromium] tests/a11y/component-system.a11y.spec.ts:5:7 ar component fixture has no detectable accessibility violations,line=8,col=16:: 3) [chromium] tests/a11y/component-system.a11y.spec.ts:5:7 ar component fixture has no detectable accessibility violations %0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/ar/component-lab%0A Call log:%0A - navigating to "http://127.0.0.1:3000/ar/component-lab", waiting until "load"%0A%0A%0A 6 | page,%0A 7 | }) => {%0A > 8 | await page.goto(`/${locale}/component-lab`);%0A | ^%0A 9 | const results = await new AxeBuilder({ page }).analyze();%0A 10 | expect(results.violations).toEqual([]);%0A 11 | });%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/component-system.a11y.spec.ts:8:16
::error file=tests/a11y/component-system.a11y.spec.ts,title=[chromium] tests/a11y/component-system.a11y.spec.ts:5:7 ar component fixture has no detectable accessibility violations,line=8,col=16:: 3) [chromium] tests/a11y/component-system.a11y.spec.ts:5:7 ar component fixture has no detectable accessibility violations %0A%0A Retry #1 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/ar/component-lab%0A Call log:%0A - navigating to "http://127.0.0.1:3000/ar/component-lab", waiting until "load"%0A%0A%0A 6 | page,%0A 7 | }) => {%0A > 8 | await page.goto(`/${locale}/component-lab`);%0A | ^%0A 9 | const results = await new AxeBuilder({ page }).analyze();%0A 10 | expect(results.violations).toEqual([]);%0A 11 | });%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/component-system.a11y.spec.ts:8:16
::error file=tests/a11y/component-system.a11y.spec.ts,title=[chromium] tests/a11y/component-system.a11y.spec.ts:5:7 ar component fixture has no detectable accessibility violations,line=8,col=16:: 3) [chromium] tests/a11y/component-system.a11y.spec.ts:5:7 ar component fixture has no detectable accessibility violations %0A%0A Retry #2 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/ar/component-lab%0A Call log:%0A - navigating to "http://127.0.0.1:3000/ar/component-lab", waiting until "load"%0A%0A%0A 6 | page,%0A 7 | }) => {%0A > 8 | await page.goto(`/${locale}/component-lab`);%0A | ^%0A 9 | const results = await new AxeBuilder({ page }).analyze();%0A 10 | expect(results.violations).toEqual([]);%0A 11 | });%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/component-system.a11y.spec.ts:8:16
F::error file=tests/a11y/shell.a11y.spec.ts,title=[chromium] tests/a11y/shell.a11y.spec.ts:6:9 en light shell has no detectable WCAG A/AA violations,line=20,col=18:: 4) [chromium] tests/a11y/shell.a11y.spec.ts:6:9 en light shell has no detectable WCAG A/AA violations %0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/en%0A Call log:%0A - navigating to "http://127.0.0.1:3000/en", waiting until "load"%0A%0A%0A 18 | },%0A 19 | ]);%0A > 20 | await page.goto(`/${locale}`);%0A | ^%0A 21 | const results = await new AxeBuilder({ page })%0A 22 | .withTags(['wcag2a', 'wcag2aa', 'wcag21aa', 'wcag22aa'])%0A 23 | .analyze();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/shell.a11y.spec.ts:20:18
::error file=tests/a11y/shell.a11y.spec.ts,title=[chromium] tests/a11y/shell.a11y.spec.ts:6:9 en light shell has no detectable WCAG A/AA violations,line=20,col=18:: 4) [chromium] tests/a11y/shell.a11y.spec.ts:6:9 en light shell has no detectable WCAG A/AA violations %0A%0A Retry #1 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/en%0A Call log:%0A - navigating to "http://127.0.0.1:3000/en", waiting until "load"%0A%0A%0A 18 | },%0A 19 | ]);%0A > 20 | await page.goto(`/${locale}`);%0A | ^%0A 21 | const results = await new AxeBuilder({ page })%0A 22 | .withTags(['wcag2a', 'wcag2aa', 'wcag21aa', 'wcag22aa'])%0A 23 | .analyze();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/shell.a11y.spec.ts:20:18
::error file=tests/a11y/shell.a11y.spec.ts,title=[chromium] tests/a11y/shell.a11y.spec.ts:6:9 en light shell has no detectable WCAG A/AA violations,line=20,col=18:: 4) [chromium] tests/a11y/shell.a11y.spec.ts:6:9 en light shell has no detectable WCAG A/AA violations %0A%0A Retry #2 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/en%0A Call log:%0A - navigating to "http://127.0.0.1:3000/en", waiting until "load"%0A%0A%0A 18 | },%0A 19 | ]);%0A > 20 | await page.goto(`/${locale}`);%0A | ^%0A 21 | const results = await new AxeBuilder({ page })%0A 22 | .withTags(['wcag2a', 'wcag2aa', 'wcag21aa', 'wcag22aa'])%0A 23 | .analyze();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/shell.a11y.spec.ts:20:18
××××F::error file=tests/a11y/shell.a11y.spec.ts,title=[chromium] tests/a11y/shell.a11y.spec.ts:6:9 en dark shell has no detectable WCAG A/AA violations,line=20,col=18:: 5) [chromium] tests/a11y/shell.a11y.spec.ts:6:9 en dark shell has no detectable WCAG A/AA violations %0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/en%0A Call log:%0A - navigating to "http://127.0.0.1:3000/en", waiting until "load"%0A%0A%0A 18 | },%0A 19 | ]);%0A > 20 | await page.goto(`/${locale}`);%0A | ^%0A 21 | const results = await new AxeBuilder({ page })%0A 22 | .withTags(['wcag2a', 'wcag2aa', 'wcag21aa', 'wcag22aa'])%0A 23 | .analyze();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/shell.a11y.spec.ts:20:18
::error file=tests/a11y/shell.a11y.spec.ts,title=[chromium] tests/a11y/shell.a11y.spec.ts:6:9 en dark shell has no detectable WCAG A/AA violations,line=20,col=18:: 5) [chromium] tests/a11y/shell.a11y.spec.ts:6:9 en dark shell has no detectable WCAG A/AA violations %0A%0A Retry #1 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/en%0A Call log:%0A - navigating to "http://127.0.0.1:3000/en", waiting until "load"%0A%0A%0A 18 | },%0A 19 | ]);%0A > 20 | await page.goto(`/${locale}`);%0A | ^%0A 21 | const results = await new AxeBuilder({ page })%0A 22 | .withTags(['wcag2a', 'wcag2aa', 'wcag21aa', 'wcag22aa'])%0A 23 | .analyze();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/shell.a11y.spec.ts:20:18
::error file=tests/a11y/shell.a11y.spec.ts,title=[chromium] tests/a11y/shell.a11y.spec.ts:6:9 en dark shell has no detectable WCAG A/AA violations,line=20,col=18:: 5) [chromium] tests/a11y/shell.a11y.spec.ts:6:9 en dark shell has no detectable WCAG A/AA violations %0A%0A Retry #2 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/en%0A Call log:%0A - navigating to "http://127.0.0.1:3000/en", waiting until "load"%0A%0A%0A 18 | },%0A 19 | ]);%0A > 20 | await page.goto(`/${locale}`);%0A | ^%0A 21 | const results = await new AxeBuilder({ page })%0A 22 | .withTags(['wcag2a', 'wcag2aa', 'wcag21aa', 'wcag22aa'])%0A 23 | .analyze();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/shell.a11y.spec.ts:20:18
F::error file=tests/a11y/shell.a11y.spec.ts,title=[chromium] tests/a11y/shell.a11y.spec.ts:6:9 fr light shell has no detectable WCAG A/AA violations,line=20,col=18:: 6) [chromium] tests/a11y/shell.a11y.spec.ts:6:9 fr light shell has no detectable WCAG A/AA violations %0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/fr%0A Call log:%0A - navigating to "http://127.0.0.1:3000/fr", waiting until "load"%0A%0A%0A 18 | },%0A 19 | ]);%0A > 20 | await page.goto(`/${locale}`);%0A | ^%0A 21 | const results = await new AxeBuilder({ page })%0A 22 | .withTags(['wcag2a', 'wcag2aa', 'wcag21aa', 'wcag22aa'])%0A 23 | .analyze();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/shell.a11y.spec.ts:20:18
::error file=tests/a11y/shell.a11y.spec.ts,title=[chromium] tests/a11y/shell.a11y.spec.ts:6:9 fr light shell has no detectable WCAG A/AA violations,line=20,col=18:: 6) [chromium] tests/a11y/shell.a11y.spec.ts:6:9 fr light shell has no detectable WCAG A/AA violations %0A%0A Retry #1 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/fr%0A Call log:%0A - navigating to "http://127.0.0.1:3000/fr", waiting until "load"%0A%0A%0A 18 | },%0A 19 | ]);%0A > 20 | await page.goto(`/${locale}`);%0A | ^%0A 21 | const results = await new AxeBuilder({ page })%0A 22 | .withTags(['wcag2a', 'wcag2aa', 'wcag21aa', 'wcag22aa'])%0A 23 | .analyze();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/shell.a11y.spec.ts:20:18
::error file=tests/a11y/shell.a11y.spec.ts,title=[chromium] tests/a11y/shell.a11y.spec.ts:6:9 fr light shell has no detectable WCAG A/AA violations,line=20,col=18:: 6) [chromium] tests/a11y/shell.a11y.spec.ts:6:9 fr light shell has no detectable WCAG A/AA violations %0A%0A Retry #2 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/fr%0A Call log:%0A - navigating to "http://127.0.0.1:3000/fr", waiting until "load"%0A%0A%0A 18 | },%0A 19 | ]);%0A > 20 | await page.goto(`/${locale}`);%0A | ^%0A 21 | const results = await new AxeBuilder({ page })%0A 22 | .withTags(['wcag2a', 'wcag2aa', 'wcag21aa', 'wcag22aa'])%0A 23 | .analyze();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/shell.a11y.spec.ts:20:18
××××F::error file=tests/a11y/shell.a11y.spec.ts,title=[chromium] tests/a11y/shell.a11y.spec.ts:6:9 fr dark shell has no detectable WCAG A/AA violations,line=20,col=18:: 7) [chromium] tests/a11y/shell.a11y.spec.ts:6:9 fr dark shell has no detectable WCAG A/AA violations %0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/fr%0A Call log:%0A - navigating to "http://127.0.0.1:3000/fr", waiting until "load"%0A%0A%0A 18 | },%0A 19 | ]);%0A > 20 | await page.goto(`/${locale}`);%0A | ^%0A 21 | const results = await new AxeBuilder({ page })%0A 22 | .withTags(['wcag2a', 'wcag2aa', 'wcag21aa', 'wcag22aa'])%0A 23 | .analyze();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/shell.a11y.spec.ts:20:18
::error file=tests/a11y/shell.a11y.spec.ts,title=[chromium] tests/a11y/shell.a11y.spec.ts:6:9 fr dark shell has no detectable WCAG A/AA violations,line=20,col=18:: 7) [chromium] tests/a11y/shell.a11y.spec.ts:6:9 fr dark shell has no detectable WCAG A/AA violations %0A%0A Retry #1 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/fr%0A Call log:%0A - navigating to "http://127.0.0.1:3000/fr", waiting until "load"%0A%0A%0A 18 | },%0A 19 | ]);%0A > 20 | await page.goto(`/${locale}`);%0A | ^%0A 21 | const results = await new AxeBuilder({ page })%0A 22 | .withTags(['wcag2a', 'wcag2aa', 'wcag21aa', 'wcag22aa'])%0A 23 | .analyze();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/shell.a11y.spec.ts:20:18
::error file=tests/a11y/shell.a11y.spec.ts,title=[chromium] tests/a11y/shell.a11y.spec.ts:6:9 fr dark shell has no detectable WCAG A/AA violations,line=20,col=18:: 7) [chromium] tests/a11y/shell.a11y.spec.ts:6:9 fr dark shell has no detectable WCAG A/AA violations %0A%0A Retry #2 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/fr%0A Call log:%0A - navigating to "http://127.0.0.1:3000/fr", waiting until "load"%0A%0A%0A 18 | },%0A 19 | ]);%0A > 20 | await page.goto(`/${locale}`);%0A | ^%0A 21 | const results = await new AxeBuilder({ page })%0A 22 | .withTags(['wcag2a', 'wcag2aa', 'wcag21aa', 'wcag22aa'])%0A 23 | .analyze();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/shell.a11y.spec.ts:20:18
F::error file=tests/a11y/shell.a11y.spec.ts,title=[chromium] tests/a11y/shell.a11y.spec.ts:6:9 ar light shell has no detectable WCAG A/AA violations,line=20,col=18:: 8) [chromium] tests/a11y/shell.a11y.spec.ts:6:9 ar light shell has no detectable WCAG A/AA violations %0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/ar%0A Call log:%0A - navigating to "http://127.0.0.1:3000/ar", waiting until "load"%0A%0A%0A 18 | },%0A 19 | ]);%0A > 20 | await page.goto(`/${locale}`);%0A | ^%0A 21 | const results = await new AxeBuilder({ page })%0A 22 | .withTags(['wcag2a', 'wcag2aa', 'wcag21aa', 'wcag22aa'])%0A 23 | .analyze();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/shell.a11y.spec.ts:20:18
::error file=tests/a11y/shell.a11y.spec.ts,title=[chromium] tests/a11y/shell.a11y.spec.ts:6:9 ar light shell has no detectable WCAG A/AA violations,line=20,col=18:: 8) [chromium] tests/a11y/shell.a11y.spec.ts:6:9 ar light shell has no detectable WCAG A/AA violations %0A%0A Retry #1 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/ar%0A Call log:%0A - navigating to "http://127.0.0.1:3000/ar", waiting until "load"%0A%0A%0A 18 | },%0A 19 | ]);%0A > 20 | await page.goto(`/${locale}`);%0A | ^%0A 21 | const results = await new AxeBuilder({ page })%0A 22 | .withTags(['wcag2a', 'wcag2aa', 'wcag21aa', 'wcag22aa'])%0A 23 | .analyze();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/shell.a11y.spec.ts:20:18
::error file=tests/a11y/shell.a11y.spec.ts,title=[chromium] tests/a11y/shell.a11y.spec.ts:6:9 ar light shell has no detectable WCAG A/AA violations,line=20,col=18:: 8) [chromium] tests/a11y/shell.a11y.spec.ts:6:9 ar light shell has no detectable WCAG A/AA violations %0A%0A Retry #2 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/ar%0A Call log:%0A - navigating to "http://127.0.0.1:3000/ar", waiting until "load"%0A%0A%0A 18 | },%0A 19 | ]);%0A > 20 | await page.goto(`/${locale}`);%0A | ^%0A 21 | const results = await new AxeBuilder({ page })%0A 22 | .withTags(['wcag2a', 'wcag2aa', 'wcag21aa', 'wcag22aa'])%0A 23 | .analyze();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/shell.a11y.spec.ts:20:18
××××F::error file=tests/a11y/shell.a11y.spec.ts,title=[chromium] tests/a11y/shell.a11y.spec.ts:6:9 ar dark shell has no detectable WCAG A/AA violations,line=20,col=18:: 9) [chromium] tests/a11y/shell.a11y.spec.ts:6:9 ar dark shell has no detectable WCAG A/AA violations %0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/ar%0A Call log:%0A - navigating to "http://127.0.0.1:3000/ar", waiting until "load"%0A%0A%0A 18 | },%0A 19 | ]);%0A > 20 | await page.goto(`/${locale}`);%0A | ^%0A 21 | const results = await new AxeBuilder({ page })%0A 22 | .withTags(['wcag2a', 'wcag2aa', 'wcag21aa', 'wcag22aa'])%0A 23 | .analyze();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/shell.a11y.spec.ts:20:18
::error file=tests/a11y/shell.a11y.spec.ts,title=[chromium] tests/a11y/shell.a11y.spec.ts:6:9 ar dark shell has no detectable WCAG A/AA violations,line=20,col=18:: 9) [chromium] tests/a11y/shell.a11y.spec.ts:6:9 ar dark shell has no detectable WCAG A/AA violations %0A%0A Retry #1 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/ar%0A Call log:%0A - navigating to "http://127.0.0.1:3000/ar", waiting until "load"%0A%0A%0A 18 | },%0A 19 | ]);%0A > 20 | await page.goto(`/${locale}`);%0A | ^%0A 21 | const results = await new AxeBuilder({ page })%0A 22 | .withTags(['wcag2a', 'wcag2aa', 'wcag21aa', 'wcag22aa'])%0A 23 | .analyze();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/shell.a11y.spec.ts:20:18
::error file=tests/a11y/shell.a11y.spec.ts,title=[chromium] tests/a11y/shell.a11y.spec.ts:6:9 ar dark shell has no detectable WCAG A/AA violations,line=20,col=18:: 9) [chromium] tests/a11y/shell.a11y.spec.ts:6:9 ar dark shell has no detectable WCAG A/AA violations %0A%0A Retry #2 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/ar%0A Call log:%0A - navigating to "http://127.0.0.1:3000/ar", waiting until "load"%0A%0A%0A 18 | },%0A 19 | ]);%0A > 20 | await page.goto(`/${locale}`);%0A | ^%0A 21 | const results = await new AxeBuilder({ page })%0A 22 | .withTags(['wcag2a', 'wcag2aa', 'wcag21aa', 'wcag22aa'])%0A 23 | .analyze();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/a11y/shell.a11y.spec.ts:20:18
F::error file=tests/browser/component-system.spec.ts,title=[chromium] tests/browser/component-system.spec.ts:4:7 en component fixture renders without horizontal overflow,line=5,col=16:: 10) [chromium] tests/browser/component-system.spec.ts:4:7 en component fixture renders without horizontal overflow %0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/en/component-lab%0A Call log:%0A - navigating to "http://127.0.0.1:3000/en/component-lab", waiting until "load"%0A%0A%0A 3 | for (const locale of ['en', 'fr', 'ar'] as const) {%0A 4 | test(`${locale} component fixture renders without horizontal overflow`, async ({ page }) => {%0A > 5 | await page.goto(`/${locale}/component-lab`);%0A | ^%0A 6 | await expect(page.locator('h1')).toBeVisible();%0A 7 | const overflow = await page.evaluate(%0A 8 | () => document.documentElement.scrollWidth > document.documentElement.clientWidth,%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/component-system.spec.ts:5:16
::error file=tests/browser/component-system.spec.ts,title=[chromium] tests/browser/component-system.spec.ts:4:7 en component fixture renders without horizontal overflow,line=5,col=16:: 10) [chromium] tests/browser/component-system.spec.ts:4:7 en component fixture renders without horizontal overflow %0A%0A Retry #1 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/en/component-lab%0A Call log:%0A - navigating to "http://127.0.0.1:3000/en/component-lab", waiting until "load"%0A%0A%0A 3 | for (const locale of ['en', 'fr', 'ar'] as const) {%0A 4 | test(`${locale} component fixture renders without horizontal overflow`, async ({ page }) => {%0A > 5 | await page.goto(`/${locale}/component-lab`);%0A | ^%0A 6 | await expect(page.locator('h1')).toBeVisible();%0A 7 | const overflow = await page.evaluate(%0A 8 | () => document.documentElement.scrollWidth > document.documentElement.clientWidth,%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/component-system.spec.ts:5:16
::error file=tests/browser/component-system.spec.ts,title=[chromium] tests/browser/component-system.spec.ts:4:7 en component fixture renders without horizontal overflow,line=5,col=16:: 10) [chromium] tests/browser/component-system.spec.ts:4:7 en component fixture renders without horizontal overflow %0A%0A Retry #2 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/en/component-lab%0A Call log:%0A - navigating to "http://127.0.0.1:3000/en/component-lab", waiting until "load"%0A%0A%0A 3 | for (const locale of ['en', 'fr', 'ar'] as const) {%0A 4 | test(`${locale} component fixture renders without horizontal overflow`, async ({ page }) => {%0A > 5 | await page.goto(`/${locale}/component-lab`);%0A | ^%0A 6 | await expect(page.locator('h1')).toBeVisible();%0A 7 | const overflow = await page.evaluate(%0A 8 | () => document.documentElement.scrollWidth > document.documentElement.clientWidth,%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/component-system.spec.ts:5:16
××××F::error file=tests/browser/component-system.spec.ts,title=[chromium] tests/browser/component-system.spec.ts:4:7 fr component fixture renders without horizontal overflow,line=5,col=16:: 11) [chromium] tests/browser/component-system.spec.ts:4:7 fr component fixture renders without horizontal overflow %0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/fr/component-lab%0A Call log:%0A - navigating to "http://127.0.0.1:3000/fr/component-lab", waiting until "load"%0A%0A%0A 3 | for (const locale of ['en', 'fr', 'ar'] as const) {%0A 4 | test(`${locale} component fixture renders without horizontal overflow`, async ({ page }) => {%0A > 5 | await page.goto(`/${locale}/component-lab`);%0A | ^%0A 6 | await expect(page.locator('h1')).toBeVisible();%0A 7 | const overflow = await page.evaluate(%0A 8 | () => document.documentElement.scrollWidth > document.documentElement.clientWidth,%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/component-system.spec.ts:5:16
::error file=tests/browser/component-system.spec.ts,title=[chromium] tests/browser/component-system.spec.ts:4:7 fr component fixture renders without horizontal overflow,line=5,col=16:: 11) [chromium] tests/browser/component-system.spec.ts:4:7 fr component fixture renders without horizontal overflow %0A%0A Retry #1 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/fr/component-lab%0A Call log:%0A - navigating to "http://127.0.0.1:3000/fr/component-lab", waiting until "load"%0A%0A%0A 3 | for (const locale of ['en', 'fr', 'ar'] as const) {%0A 4 | test(`${locale} component fixture renders without horizontal overflow`, async ({ page }) => {%0A > 5 | await page.goto(`/${locale}/component-lab`);%0A | ^%0A 6 | await expect(page.locator('h1')).toBeVisible();%0A 7 | const overflow = await page.evaluate(%0A 8 | () => document.documentElement.scrollWidth > document.documentElement.clientWidth,%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/component-system.spec.ts:5:16
::error file=tests/browser/component-system.spec.ts,title=[chromium] tests/browser/component-system.spec.ts:4:7 fr component fixture renders without horizontal overflow,line=5,col=16:: 11) [chromium] tests/browser/component-system.spec.ts:4:7 fr component fixture renders without horizontal overflow %0A%0A Retry #2 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/fr/component-lab%0A Call log:%0A - navigating to "http://127.0.0.1:3000/fr/component-lab", waiting until "load"%0A%0A%0A 3 | for (const locale of ['en', 'fr', 'ar'] as const) {%0A 4 | test(`${locale} component fixture renders without horizontal overflow`, async ({ page }) => {%0A > 5 | await page.goto(`/${locale}/component-lab`);%0A | ^%0A 6 | await expect(page.locator('h1')).toBeVisible();%0A 7 | const overflow = await page.evaluate(%0A 8 | () => document.documentElement.scrollWidth > document.documentElement.clientWidth,%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/component-system.spec.ts:5:16
F::error file=tests/browser/component-system.spec.ts,title=[chromium] tests/browser/component-system.spec.ts:4:7 ar component fixture renders without horizontal overflow,line=5,col=16:: 12) [chromium] tests/browser/component-system.spec.ts:4:7 ar component fixture renders without horizontal overflow %0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/ar/component-lab%0A Call log:%0A - navigating to "http://127.0.0.1:3000/ar/component-lab", waiting until "load"%0A%0A%0A 3 | for (const locale of ['en', 'fr', 'ar'] as const) {%0A 4 | test(`${locale} component fixture renders without horizontal overflow`, async ({ page }) => {%0A > 5 | await page.goto(`/${locale}/component-lab`);%0A | ^%0A 6 | await expect(page.locator('h1')).toBeVisible();%0A 7 | const overflow = await page.evaluate(%0A 8 | () => document.documentElement.scrollWidth > document.documentElement.clientWidth,%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/component-system.spec.ts:5:16
::error file=tests/browser/component-system.spec.ts,title=[chromium] tests/browser/component-system.spec.ts:4:7 ar component fixture renders without horizontal overflow,line=5,col=16:: 12) [chromium] tests/browser/component-system.spec.ts:4:7 ar component fixture renders without horizontal overflow %0A%0A Retry #1 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/ar/component-lab%0A Call log:%0A - navigating to "http://127.0.0.1:3000/ar/component-lab", waiting until "load"%0A%0A%0A 3 | for (const locale of ['en', 'fr', 'ar'] as const) {%0A 4 | test(`${locale} component fixture renders without horizontal overflow`, async ({ page }) => {%0A > 5 | await page.goto(`/${locale}/component-lab`);%0A | ^%0A 6 | await expect(page.locator('h1')).toBeVisible();%0A 7 | const overflow = await page.evaluate(%0A 8 | () => document.documentElement.scrollWidth > document.documentElement.clientWidth,%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/component-system.spec.ts:5:16
::error file=tests/browser/component-system.spec.ts,title=[chromium] tests/browser/component-system.spec.ts:4:7 ar component fixture renders without horizontal overflow,line=5,col=16:: 12) [chromium] tests/browser/component-system.spec.ts:4:7 ar component fixture renders without horizontal overflow %0A%0A Retry #2 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/ar/component-lab%0A Call log:%0A - navigating to "http://127.0.0.1:3000/ar/component-lab", waiting until "load"%0A%0A%0A 3 | for (const locale of ['en', 'fr', 'ar'] as const) {%0A 4 | test(`${locale} component fixture renders without horizontal overflow`, async ({ page }) => {%0A > 5 | await page.goto(`/${locale}/component-lab`);%0A | ^%0A 6 | await expect(page.locator('h1')).toBeVisible();%0A 7 | const overflow = await page.evaluate(%0A 8 | () => document.documentElement.scrollWidth > document.documentElement.clientWidth,%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/component-system.spec.ts:5:16
××××F::error file=tests/browser/component-system.spec.ts,title=[chromium] tests/browser/component-system.spec.ts:15:5 component controls support keyboard interaction and dialog focus return,line=18,col=14:: 13) [chromium] tests/browser/component-system.spec.ts:15:5 component controls support keyboard interaction and dialog focus return %0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/en/component-lab%0A Call log:%0A - navigating to "http://127.0.0.1:3000/en/component-lab", waiting until "load"%0A%0A%0A 16 | page,%0A 17 | }) => {%0A > 18 | await page.goto('/en/component-lab');%0A | ^%0A 19 | const firstTab = page.getByRole('tab', { name: 'Reservations' });%0A 20 | await firstTab.focus();%0A 21 | await page.keyboard.press('ArrowRight');%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/component-system.spec.ts:18:14
::error file=tests/browser/component-system.spec.ts,title=[chromium] tests/browser/component-system.spec.ts:15:5 component controls support keyboard interaction and dialog focus return,line=18,col=14:: 13) [chromium] tests/browser/component-system.spec.ts:15:5 component controls support keyboard interaction and dialog focus return %0A%0A Retry #1 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/en/component-lab%0A Call log:%0A - navigating to "http://127.0.0.1:3000/en/component-lab", waiting until "load"%0A%0A%0A 16 | page,%0A 17 | }) => {%0A > 18 | await page.goto('/en/component-lab');%0A | ^%0A 19 | const firstTab = page.getByRole('tab', { name: 'Reservations' });%0A 20 | await firstTab.focus();%0A 21 | await page.keyboard.press('ArrowRight');%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/component-system.spec.ts:18:14
::error file=tests/browser/component-system.spec.ts,title=[chromium] tests/browser/component-system.spec.ts:15:5 component controls support keyboard interaction and dialog focus return,line=18,col=14:: 13) [chromium] tests/browser/component-system.spec.ts:15:5 component controls support keyboard interaction and dialog focus return %0A%0A Retry #2 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/en/component-lab%0A Call log:%0A - navigating to "http://127.0.0.1:3000/en/component-lab", waiting until "load"%0A%0A%0A 16 | page,%0A 17 | }) => {%0A > 18 | await page.goto('/en/component-lab');%0A | ^%0A 19 | const firstTab = page.getByRole('tab', { name: 'Reservations' });%0A 20 | await firstTab.focus();%0A 21 | await page.keyboard.press('ArrowRight');%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/component-system.spec.ts:18:14
F::error file=tests/browser/component-system.spec.ts,title=[chromium] tests/browser/component-system.spec.ts:35:5 component fixture reflows at narrow mobile and 200 percent zoom equivalent,line=39,col=14:: 14) [chromium] tests/browser/component-system.spec.ts:35:5 component fixture reflows at narrow mobile and 200 percent zoom equivalent %0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/fr/component-lab%0A Call log:%0A - navigating to "http://127.0.0.1:3000/fr/component-lab", waiting until "load"%0A%0A%0A 37 | }) => {%0A 38 | await page.setViewportSize({ width: 320, height: 800 });%0A > 39 | await page.goto('/fr/component-lab');%0A | ^%0A 40 | await page.evaluate(() => (document.body.style.zoom = '2'));%0A 41 | const overflow = await page.evaluate(%0A 42 | () => document.documentElement.scrollWidth > document.documentElement.clientWidth + 1,%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/component-system.spec.ts:39:14
::error file=tests/browser/component-system.spec.ts,title=[chromium] tests/browser/component-system.spec.ts:35:5 component fixture reflows at narrow mobile and 200 percent zoom equivalent,line=39,col=14:: 14) [chromium] tests/browser/component-system.spec.ts:35:5 component fixture reflows at narrow mobile and 200 percent zoom equivalent %0A%0A Retry #1 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/fr/component-lab%0A Call log:%0A - navigating to "http://127.0.0.1:3000/fr/component-lab", waiting until "load"%0A%0A%0A 37 | }) => {%0A 38 | await page.setViewportSize({ width: 320, height: 800 });%0A > 39 | await page.goto('/fr/component-lab');%0A | ^%0A 40 | await page.evaluate(() => (document.body.style.zoom = '2'));%0A 41 | const overflow = await page.evaluate(%0A 42 | () => document.documentElement.scrollWidth > document.documentElement.clientWidth + 1,%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/component-system.spec.ts:39:14
::error file=tests/browser/component-system.spec.ts,title=[chromium] tests/browser/component-system.spec.ts:35:5 component fixture reflows at narrow mobile and 200 percent zoom equivalent,line=39,col=14:: 14) [chromium] tests/browser/component-system.spec.ts:35:5 component fixture reflows at narrow mobile and 200 percent zoom equivalent %0A%0A Retry #2 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/fr/component-lab%0A Call log:%0A - navigating to "http://127.0.0.1:3000/fr/component-lab", waiting until "load"%0A%0A%0A 37 | }) => {%0A 38 | await page.setViewportSize({ width: 320, height: 800 });%0A > 39 | await page.goto('/fr/component-lab');%0A | ^%0A 40 | await page.evaluate(() => (document.body.style.zoom = '2'));%0A 41 | const overflow = await page.evaluate(%0A 42 | () => document.documentElement.scrollWidth > document.documentElement.clientWidth + 1,%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/component-system.spec.ts:39:14
××××F::error file=tests/browser/navigation.spec.ts,title=[chromium] tests/browser/navigation.spec.ts:5:5 mobile navigation opens modally, closes with Escape, and returns focus,line=6,col=14:: 15) [chromium] tests/browser/navigation.spec.ts:5:5 mobile navigation opens modally, closes with Escape, and returns focus %0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/en%0A Call log:%0A - navigating to "http://127.0.0.1:3000/en", waiting until "load"%0A%0A%0A 4 |%0A 5 | test('mobile navigation opens modally, closes with Escape, and returns focus', async ({ page }) => {%0A > 6 | await page.goto('/en');%0A | ^%0A 7 | const trigger = page.getByRole('button', { name: 'Open navigation menu' });%0A 8 | await trigger.focus();%0A 9 | await trigger.click();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/navigation.spec.ts:6:14
::error file=tests/browser/navigation.spec.ts,title=[chromium] tests/browser/navigation.spec.ts:5:5 mobile navigation opens modally, closes with Escape, and returns focus,line=6,col=14:: 15) [chromium] tests/browser/navigation.spec.ts:5:5 mobile navigation opens modally, closes with Escape, and returns focus %0A%0A Retry #1 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/en%0A Call log:%0A - navigating to "http://127.0.0.1:3000/en", waiting until "load"%0A%0A%0A 4 |%0A 5 | test('mobile navigation opens modally, closes with Escape, and returns focus', async ({ page }) => {%0A > 6 | await page.goto('/en');%0A | ^%0A 7 | const trigger = page.getByRole('button', { name: 'Open navigation menu' });%0A 8 | await trigger.focus();%0A 9 | await trigger.click();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/navigation.spec.ts:6:14
::error file=tests/browser/navigation.spec.ts,title=[chromium] tests/browser/navigation.spec.ts:5:5 mobile navigation opens modally, closes with Escape, and returns focus,line=6,col=14:: 15) [chromium] tests/browser/navigation.spec.ts:5:5 mobile navigation opens modally, closes with Escape, and returns focus %0A%0A Retry #2 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/en%0A Call log:%0A - navigating to "http://127.0.0.1:3000/en", waiting until "load"%0A%0A%0A 4 |%0A 5 | test('mobile navigation opens modally, closes with Escape, and returns focus', async ({ page }) => {%0A > 6 | await page.goto('/en');%0A | ^%0A 7 | const trigger = page.getByRole('button', { name: 'Open navigation menu' });%0A 8 | await trigger.focus();%0A 9 | await trigger.click();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/navigation.spec.ts:6:14
F::error file=tests/browser/navigation.spec.ts,title=[chromium] tests/browser/navigation.spec.ts:21:5 skip navigation moves focus to the main landmark,line=22,col=14:: 16) [chromium] tests/browser/navigation.spec.ts:21:5 skip navigation moves focus to the main landmark %0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/en%0A Call log:%0A - navigating to "http://127.0.0.1:3000/en", waiting until "load"%0A%0A%0A 20 |%0A 21 | test('skip navigation moves focus to the main landmark', async ({ page }) => {%0A > 22 | await page.goto('/en');%0A | ^%0A 23 | await page.keyboard.press('Tab');%0A 24 | const skip = page.getByRole('link', { name: 'Skip to main content' });%0A 25 | await expect(skip).toBeFocused();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/navigation.spec.ts:22:14
::error file=tests/browser/navigation.spec.ts,title=[chromium] tests/browser/navigation.spec.ts:21:5 skip navigation moves focus to the main landmark,line=22,col=14:: 16) [chromium] tests/browser/navigation.spec.ts:21:5 skip navigation moves focus to the main landmark %0A%0A Retry #1 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/en%0A Call log:%0A - navigating to "http://127.0.0.1:3000/en", waiting until "load"%0A%0A%0A 20 |%0A 21 | test('skip navigation moves focus to the main landmark', async ({ page }) => {%0A > 22 | await page.goto('/en');%0A | ^%0A 23 | await page.keyboard.press('Tab');%0A 24 | const skip = page.getByRole('link', { name: 'Skip to main content' });%0A 25 | await expect(skip).toBeFocused();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/navigation.spec.ts:22:14
::error file=tests/browser/navigation.spec.ts,title=[chromium] tests/browser/navigation.spec.ts:21:5 skip navigation moves focus to the main landmark,line=22,col=14:: 16) [chromium] tests/browser/navigation.spec.ts:21:5 skip navigation moves focus to the main landmark %0A%0A Retry #2 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/en%0A Call log:%0A - navigating to "http://127.0.0.1:3000/en", waiting until "load"%0A%0A%0A 20 |%0A 21 | test('skip navigation moves focus to the main landmark', async ({ page }) => {%0A > 22 | await page.goto('/en');%0A | ^%0A 23 | await page.keyboard.press('Tab');%0A 24 | const skip = page.getByRole('link', { name: 'Skip to main content' });%0A 25 | await expect(skip).toBeFocused();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/navigation.spec.ts:22:14
××××F::error file=tests/browser/no-javascript.spec.ts,title=[chromium] tests/browser/no-javascript.spec.ts:3:5 server shell remains readable with JavaScript disabled,line=6,col=14:: 17) [chromium] tests/browser/no-javascript.spec.ts:3:5 server shell remains readable with JavaScript disabled %0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/ar%0A Call log:%0A - navigating to "http://127.0.0.1:3000/ar", waiting until "load"%0A%0A%0A 4 | const context = await browser.newContext({ javaScriptEnabled: false, colorScheme: 'dark' });%0A 5 | const page = await context.newPage();%0A > 6 | await page.goto('/ar');%0A | ^%0A 7 | await expect(page.locator('html')).toHaveAttribute('lang', 'ar');%0A 8 | await expect(page.locator('html')).toHaveAttribute('dir', 'rtl');%0A 9 | await expect(page.locator('h1')).toBeVisible();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/no-javascript.spec.ts:6:14
::error file=tests/browser/no-javascript.spec.ts,title=[chromium] tests/browser/no-javascript.spec.ts:3:5 server shell remains readable with JavaScript disabled,line=6,col=14:: 17) [chromium] tests/browser/no-javascript.spec.ts:3:5 server shell remains readable with JavaScript disabled %0A%0A Retry #1 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/ar%0A Call log:%0A - navigating to "http://127.0.0.1:3000/ar", waiting until "load"%0A%0A%0A 4 | const context = await browser.newContext({ javaScriptEnabled: false, colorScheme: 'dark' });%0A 5 | const page = await context.newPage();%0A > 6 | await page.goto('/ar');%0A | ^%0A 7 | await expect(page.locator('html')).toHaveAttribute('lang', 'ar');%0A 8 | await expect(page.locator('html')).toHaveAttribute('dir', 'rtl');%0A 9 | await expect(page.locator('h1')).toBeVisible();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/no-javascript.spec.ts:6:14
::error file=tests/browser/no-javascript.spec.ts,title=[chromium] tests/browser/no-javascript.spec.ts:3:5 server shell remains readable with JavaScript disabled,line=6,col=14:: 17) [chromium] tests/browser/no-javascript.spec.ts:3:5 server shell remains readable with JavaScript disabled %0A%0A Retry #2 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/ar%0A Call log:%0A - navigating to "http://127.0.0.1:3000/ar", waiting until "load"%0A%0A%0A 4 | const context = await browser.newContext({ javaScriptEnabled: false, colorScheme: 'dark' });%0A 5 | const page = await context.newPage();%0A > 6 | await page.goto('/ar');%0A | ^%0A 7 | await expect(page.locator('html')).toHaveAttribute('lang', 'ar');%0A 8 | await expect(page.locator('html')).toHaveAttribute('dir', 'rtl');%0A 9 | await expect(page.locator('h1')).toBeVisible();%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/no-javascript.spec.ts:6:14
F::error file=tests/browser/responsive.spec.ts,title=[chromium] tests/browser/responsive.spec.ts:7:9 en has no horizontal overflow at 320px,line=9,col=18:: 18) [chromium] tests/browser/responsive.spec.ts:7:9 en has no horizontal overflow at 320px ───%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/en%0A Call log:%0A - navigating to "http://127.0.0.1:3000/en", waiting until "load"%0A%0A%0A 7 | test(`${locale} has no horizontal overflow at ${width}px`, async ({ page }) => {%0A 8 | await page.setViewportSize({ width, height: 900 });%0A > 9 | await page.goto(`/${locale}`);%0A | ^%0A 10 | const overflow = await page.evaluate(%0A 11 | () => document.documentElement.scrollWidth - document.documentElement.clientWidth,%0A 12 | );%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/responsive.spec.ts:9:18
::error file=tests/browser/responsive.spec.ts,title=[chromium] tests/browser/responsive.spec.ts:7:9 en has no horizontal overflow at 320px,line=9,col=18:: 18) [chromium] tests/browser/responsive.spec.ts:7:9 en has no horizontal overflow at 320px ───%0A%0A Retry #1 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/en%0A Call log:%0A - navigating to "http://127.0.0.1:3000/en", waiting until "load"%0A%0A%0A 7 | test(`${locale} has no horizontal overflow at ${width}px`, async ({ page }) => {%0A 8 | await page.setViewportSize({ width, height: 900 });%0A > 9 | await page.goto(`/${locale}`);%0A | ^%0A 10 | const overflow = await page.evaluate(%0A 11 | () => document.documentElement.scrollWidth - document.documentElement.clientWidth,%0A 12 | );%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/responsive.spec.ts:9:18
::error file=tests/browser/responsive.spec.ts,title=[chromium] tests/browser/responsive.spec.ts:7:9 en has no horizontal overflow at 320px,line=9,col=18:: 18) [chromium] tests/browser/responsive.spec.ts:7:9 en has no horizontal overflow at 320px ───%0A%0A Retry #2 ───────────────────────────────────────────────────────────────────────────────────────%0A Error: page.goto: net::ERR_BLOCKED_BY_ADMINISTRATOR at http://127.0.0.1:3000/en%0A Call log:%0A - navigating to "http://127.0.0.1:3000/en", waiting until "load"%0A%0A%0A 7 | test(`${locale} has no horizontal overflow at ${width}px`, async ({ page }) => {%0A 8 | await page.setViewportSize({ width, height: 900 });%0A > 9 | await page.goto(`/${locale}`);%0A | ^%0A 10 | const overflow = await page.evaluate(%0A 11 | () => document.documentElement.scrollWidth - document.documentElement.clientWidth,%0A 12 | );%0A at /mnt/data/phase12_work/RentalDriveGo/tests/browser/responsive.spec.ts:9:18
××××
@@ -0,0 +1,47 @@
Listing tests:
[chromium] a11y/component-system.a11y.spec.ts:5:7 en component fixture has no detectable accessibility violations
[chromium] a11y/component-system.a11y.spec.ts:5:7 fr component fixture has no detectable accessibility violations
[chromium] a11y/component-system.a11y.spec.ts:5:7 ar component fixture has no detectable accessibility violations
[chromium] a11y/shell.a11y.spec.ts:6:9 en light shell has no detectable WCAG A/AA violations
[chromium] a11y/shell.a11y.spec.ts:6:9 en dark shell has no detectable WCAG A/AA violations
[chromium] a11y/shell.a11y.spec.ts:6:9 fr light shell has no detectable WCAG A/AA violations
[chromium] a11y/shell.a11y.spec.ts:6:9 fr dark shell has no detectable WCAG A/AA violations
[chromium] a11y/shell.a11y.spec.ts:6:9 ar light shell has no detectable WCAG A/AA violations
[chromium] a11y/shell.a11y.spec.ts:6:9 ar dark shell has no detectable WCAG A/AA violations
[chromium] browser/component-system.spec.ts:4:7 en component fixture renders without horizontal overflow
[chromium] browser/component-system.spec.ts:4:7 fr component fixture renders without horizontal overflow
[chromium] browser/component-system.spec.ts:4:7 ar component fixture renders without horizontal overflow
[chromium] browser/component-system.spec.ts:15:5 component controls support keyboard interaction and dialog focus return
[chromium] browser/component-system.spec.ts:35:5 component fixture reflows at narrow mobile and 200 percent zoom equivalent
[chromium] browser/navigation.spec.ts:5:5 mobile navigation opens modally, closes with Escape, and returns focus
[chromium] browser/navigation.spec.ts:21:5 skip navigation moves focus to the main landmark
[chromium] browser/no-javascript.spec.ts:3:5 server shell remains readable with JavaScript disabled
[chromium] browser/responsive.spec.ts:7:9 en has no horizontal overflow at 320px
[chromium] browser/responsive.spec.ts:7:9 en has no horizontal overflow at 390px
[chromium] browser/responsive.spec.ts:7:9 en has no horizontal overflow at 768px
[chromium] browser/responsive.spec.ts:7:9 en has no horizontal overflow at 1024px
[chromium] browser/responsive.spec.ts:7:9 en has no horizontal overflow at 1440px
[chromium] browser/responsive.spec.ts:7:9 fr has no horizontal overflow at 320px
[chromium] browser/responsive.spec.ts:7:9 fr has no horizontal overflow at 390px
[chromium] browser/responsive.spec.ts:7:9 fr has no horizontal overflow at 768px
[chromium] browser/responsive.spec.ts:7:9 fr has no horizontal overflow at 1024px
[chromium] browser/responsive.spec.ts:7:9 fr has no horizontal overflow at 1440px
[chromium] browser/responsive.spec.ts:7:9 ar has no horizontal overflow at 320px
[chromium] browser/responsive.spec.ts:7:9 ar has no horizontal overflow at 390px
[chromium] browser/responsive.spec.ts:7:9 ar has no horizontal overflow at 768px
[chromium] browser/responsive.spec.ts:7:9 ar has no horizontal overflow at 1024px
[chromium] browser/responsive.spec.ts:7:9 ar has no horizontal overflow at 1440px
[chromium] browser/responsive.spec.ts:18:5 shell remains operable at a 320 CSS pixel reflow equivalent to 200 percent zoom
[chromium] browser/shell.spec.ts:8:7 en shell is server rendered
[chromium] browser/shell.spec.ts:8:7 fr shell is server rendered
[chromium] browser/shell.spec.ts:8:7 ar shell is server rendered
[chromium] browser/shell.spec.ts:38:5 root locale detection honors Accept-Language
[chromium] browser/shell.spec.ts:48:5 locale switching keeps the semantic route and approved campaign state
[chromium] browser/shell.spec.ts:54:5 pending route shells are localized and noindex
[chromium] browser/text-expansion.spec.ts:4:7 fr shell tolerates long content expansion
[chromium] browser/text-expansion.spec.ts:4:7 ar shell tolerates long content expansion
[chromium] browser/theme-csp.spec.ts:3:5 explicit dark theme is present on the server-rendered root
[chromium] browser/theme-csp.spec.ts:27:5 system preference resolves before interaction
[chromium] browser/theme-csp.spec.ts:36:5 system follows operating-system changes while explicit preferences ignore them
Total: 44 tests in 9 files
::notice title=🎭 Playwright Run Summary:: 44 did not run
+3
View File
@@ -0,0 +1,3 @@
[WARN] Unsupported engine: wanted: {"node":"24.17.0"} (current: {"node":"v22.16.0","pnpm":"11.9.0"})
[WARN] POST https://registry.npmjs.org/-/npm/v1/security/advisories/bulk error (EAI_AGAIN). Will retry in 10 seconds. 2 retries left.
[WARN] POST https://registry.npmjs.org/-/npm/v1/security/advisories/bulk error (EAI_AGAIN). Will retry in 1 minute. 1 retries left.
+30
View File
@@ -0,0 +1,30 @@
[WARN] Unsupported engine: wanted: {"node":"24.17.0"} (current: {"node":"v22.16.0","pnpm":"11.9.0"})
? Verifying lockfile against supply-chain policies (533 entries)...
Lockfile is up to date, resolution step is skipped
[WARN] GET https://registry.npmjs.org/@adobe%2Fcss-tools error (EAI_AGAIN). Will retry in 1 second. 4 retries left.
[WARN] GET https://registry.npmjs.org/@asamuzakjp%2Fcss-color error (EAI_AGAIN). Will retry in 1 second. 4 retries left.
[WARN] GET https://registry.npmjs.org/@asamuzakjp%2Fdom-selector error (EAI_AGAIN). Will retry in 1 second. 4 retries left.
Progress: resolved 1, reused 0, downloaded 0, added 0
Packages: +449
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Progress: resolved 449, reused 0, downloaded 0, added 0
[WARN] GET https://registry.npmjs.org/@asamuzakjp%2Fgenerational-cache error (EAI_AGAIN). Will retry in 1 second. 4 retries left.
[WARN] GET https://registry.npmjs.org/@axe-core%2Fplaywright error (EAI_AGAIN). Will retry in 1 second. 4 retries left.
[WARN] GET https://registry.npmjs.org/@asamuzakjp%2Fnwsapi error (EAI_AGAIN). Will retry in 1 second. 4 retries left.
[WARN] GET https://registry.npmjs.org/@babel%2Fcode-frame error (EAI_AGAIN). Will retry in 1 second. 4 retries left.
[WARN] GET https://registry.npmjs.org/@babel%2Fcompat-data error (EAI_AGAIN). Will retry in 1 second. 4 retries left.
[WARN] GET https://registry.npmjs.org/@babel%2Fgenerator error (EAI_AGAIN). Will retry in 1 second. 4 retries left.
[WARN] GET https://registry.npmjs.org/@babel%2Fcore error (EAI_AGAIN). Will retry in 1 second. 4 retries left.
[WARN] GET https://registry.npmjs.org/@babel%2Fhelper-globals error (EAI_AGAIN). Will retry in 1 second. 4 retries left.
[WARN] GET https://registry.npmjs.org/@babel%2Fhelper-compilation-targets error (EAI_AGAIN). Will retry in 1 second. 4 retries left.
[WARN] GET https://registry.npmjs.org/@babel%2Fhelper-module-imports error (EAI_AGAIN). Will retry in 1 second. 4 retries left.
[WARN] GET https://registry.npmjs.org/@babel%2Fhelper-module-transforms error (EAI_AGAIN). Will retry in 1 second. 4 retries left.
[WARN] GET https://registry.npmjs.org/@babel%2Fhelper-string-parser error (EAI_AGAIN). Will retry in 1 second. 4 retries left.
[WARN] GET https://registry.npmjs.org/@babel%2Fhelper-validator-identifier error (EAI_AGAIN). Will retry in 1 second. 4 retries left.
[WARN] GET https://registry.npmjs.org/@babel%2Fhelper-validator-option error (EAI_AGAIN). Will retry in 1 second. 4 retries left.
[WARN] GET https://registry.npmjs.org/@babel%2Fhelpers error (EAI_AGAIN). Will retry in 1 second. 4 retries left.
[WARN] GET https://registry.npmjs.org/@babel%2Fparser error (EAI_AGAIN). Will retry in 1 second. 4 retries left.
[WARN] GET https://registry.npmjs.org/@babel%2Fruntime error (EAI_AGAIN). Will retry in 1 second. 4 retries left.
[WARN] GET https://registry.npmjs.org/@babel%2Ftemplate error (EAI_AGAIN). Will retry in 1 second. 4 retries left.
[WARN] GET https://registry.npmjs.org/@babel%2Ftraverse error (EAI_AGAIN). Will retry in 1 second. 4 retries left.
[WARN] GET https://registry.npmjs.org/@babel%2Ftypes error (EAI_AGAIN). Will retry in 1 second. 4 retries left.
+4
View File
@@ -0,0 +1,4 @@
▲ Next.js 16.2.9
- Local: http://127.0.0.1:3100
- Network: http://127.0.0.1:3100
✓ Ready in 0ms
+1
View File
@@ -0,0 +1 @@
0
+4
View File
@@ -0,0 +1,4 @@
> rentaldrivego-web@0.3.0 typecheck
> tsc --noEmit
+1
View File
@@ -0,0 +1 @@
0
+34
View File
@@ -0,0 +1,34 @@
> rentaldrivego-web@0.3.0 test:unit
> vitest run --coverage
 RUN  v4.1.9 /mnt/data/phase12_work/RentalDriveGo
Coverage enabled with v8
✓ tests/unit/theme.test.ts (2 tests) 4ms
✓ tests/unit/csp.test.ts (2 tests) 6ms
✓ tests/unit/format.test.ts (3 tests) 79ms
✓ tests/unit/localization.test.ts (5 tests) 9ms
✓ tests/unit/components/actions.test.tsx (3 tests) 234ms
✓ tests/unit/components/evidence.test.tsx (3 tests) 217ms
✓ tests/unit/components/forms.test.tsx (2 tests) 224ms
✓ tests/unit/components/controls.test.tsx (2 tests) 297ms
 Test Files  8 passed (8)
 Tests  22 passed (22)
 Start at  22:37:18
 Duration  9.12s (transform 2.44s, setup 7.11s, import 3.02s, tests 1.07s, environment 48.19s)
 % Coverage report from v8
--------------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
--------------|---------|----------|---------|---------|-------------------
All files | 92.4 | 86.04 | 95.45 | 92.64 |
localization | 90.9 | 82.75 | 94.11 | 91.07 |
config.ts | 90.9 | 82.75 | 94.11 | 91.07 | 58,67,89,112,127
security | 100 | 100 | 100 | 100 |
csp.ts | 100 | 100 | 100 | 100 |
theme | 100 | 87.5 | 100 | 100 |
config.ts | 100 | 87.5 | 100 | 100 | 18
--------------|---------|----------|---------|---------|-------------------
+1
View File
@@ -0,0 +1 @@
0
+14
View File
@@ -0,0 +1,14 @@
> rentaldrivego-web@0.3.0 validate
> node scripts/run-validations.mjs
PASS: Phase 9 contract package is immutable and 61 payload checksums match.
PASS: Pinned Node 24.17.0, pnpm 11.9.0, and 25 exact direct dependency versions match the lockfile.
PASS: English, French, and Arabic catalogs have exact key parity and valid direction metadata.
PASS: 5 route IDs have complete locale, runtime, hash, query, and hreflang contracts.
PASS: Phase 9 semantic tokens are unchanged and application styles contain no raw palette colors.
PASS: Phase 11 component tokens, theme fallback, and application-shell foundations are present.
PASS: 46 CSS files use direction-safe logical declarations.
PASS: Runtime source contains no placeholder destination, simulated submission, or research-only backdoor.
PASS: Localized canonical, hreflang, Open Graph, social, and robots foundations are present.
PASS: 60 inventory entries and 93 component source files satisfy Phase 12 static controls.