diff --git a/docs/test-tree-refactor-plan.json b/docs/test-tree-refactor-plan.json new file mode 100644 index 00000000..b843ac3a --- /dev/null +++ b/docs/test-tree-refactor-plan.json @@ -0,0 +1,592 @@ +{ + "summary": "Inventory the sprawling test surface (both repos) and synthesize a clean target tree + migration plan + unified dual-output harness design", + "agentCount": 7, + "logs": [], + "result": { + "targetTree": "CANONICAL CONFIG STAYS AT REPO ROOT: /playwright.config.ts (the one config; tests/playwright.config.ts + tests/playwright.config.production.ts deleted). Playwright auto-discovers it from cwd; its projects point testDir at the folders below.\n\ntests/\n├── run-unified.mjs # SINGLE entry → npm run test:unified (report.html + report.json)\n├── sequences/\n│ └── unified.config.mjs # declarative manifest of sequences + profiles (smoke|pr|full|report)\n├── e2e/ # default PW project testDir; grouped by domain\n│ ├── smoke/\n│ │ └── user-smoke.spec.ts # THE GATE (@smoke) — kept runnable\n│ ├── auth/\n│ │ ├── form-validation.spec.ts\n│ │ ├── responsive-layout.spec.ts (was signup-fit)\n│ │ └── passwordless-focus.spec.ts (was login-focus)\n│ ├── graph/\n│ │ ├── camera.spec.ts\n│ │ ├── living-graph-effects.spec.ts (was living-graph)\n│ │ ├── relationship-flip.spec.ts\n│ │ ├── node-quick-edit.spec.ts\n│ │ └── node-inspector-copyid.spec.ts (was copy-id)\n│ ├── ui/\n│ │ ├── overlay-dismissal.spec.ts\n│ │ └── z-order.spec.ts\n│ ├── a11y/\n│ │ └── modal-focus.spec.ts (was a11y-focus)\n│ ├── mobile/\n│ │ ├── experience.spec.ts\n│ │ ├── view-navigation.spec.ts (was mobile-views)\n│ │ ├── accessibility-audit.spec.ts (was mobile-audit)\n│ │ ├── dialog-positioning.spec.ts (was mobile-dialogs)\n│ │ └── tls-compat.spec.ts (ported from mobile-https-compatibility-test.js)\n│ ├── responsive/\n│ │ └── viewports.spec.ts (was responsive)\n│ ├── api/\n│ │ └── health.spec.ts (was api-health)\n│ ├── admin/\n│ │ ├── database-tab.spec.ts (was admin-database-tab)\n│ │ └── oauth-provider-config.spec.ts\n│ └── reports/ # capture-heavy, own PW projects, report-only\n│ ├── showcase.spec.ts # records .webm + screenshots (video source)\n│ ├── feature-matrix.spec.ts\n│ ├── matrix.setup.ts\n│ ├── visual-regression.spec.ts (was visual-regression-suite)\n│ └── vlm-evaluation.spec.ts (was visual-vlm)\n├── perf/ # perf + perf-scale PW projects\n│ ├── graph-perf.spec.ts # budget gate (@perf)\n│ ├── scale-sweep.spec.ts\n│ └── check-bundle-size.mjs\n├── diagnostics/ # geometry PW project (recursive testDir)\n│ ├── layout/\n│ │ ├── geometry.spec.ts (was graph-geometry)\n│ │ └── graph-balance.spec.ts\n│ ├── interactions/\n│ │ ├── core-matrix.spec.ts (was core-interactions)\n│ │ └── relationship-audit.spec.ts (was interaction-audit)\n│ ├── hierarchy/\n│ │ ├── explorer-tree.spec.ts\n│ │ └── navigation.spec.ts (was hierarchy-navigation)\n│ ├── inspector/\n│ │ └── node-inspector.spec.ts\n│ ├── physics/\n│ │ └── settle.spec.ts (was physics-settle)\n│ ├── perf/\n│ │ └── large-graph-profile.spec.ts\n│ └── ui/\n│ ├── legibility-floor.spec.ts (was node-expand-legibility)\n│ ├── minimap-zoom.spec.ts\n│ ├── captcha-layout.spec.ts\n│ └── tls-banner.spec.ts (was insecure-connection-banner)\n├── integration/ # non-app infra specs (excluded from default project)\n│ ├── tls-integration.spec.ts\n│ ├── tls-certificate-cross-browser.spec.ts (ported from ssl-certificate-analysis.js)\n│ └── installation-validation.spec.ts\n├── fixtures/\n│ └── oauth-profiles.ts\n└── lib/ # REUSABLE harness + helpers (shared by Core AND Cloud)\n ├── README.md\n ├── auth.ts (from helpers/) # most-imported helper — battle-tested login\n ├── api.ts (from helpers/)\n ├── seedGraph.ts (from helpers/)\n ├── dbHealing.ts (from helpers/)\n ├── testEnv.ts (from helpers/)\n ├── mobileAudit.ts (from helpers/)\n ├── zorder.ts (from helpers/)\n ├── vlm.ts (from helpers/)\n ├── mock-oauth-server.ts (from helpers/)\n ├── metrics/\n │ └── balance_metrics.py (from helpers/) # subprocess; Cloud audit-kit BALANCE_PY cross-links here\n ├── audit/ # promoted from GraphDone-Cloud/scripts/lib (Cloud cross-links back)\n │ ├── audit-kit.mjs\n │ ├── schema-contract.mjs\n │ └── schema-coverage.mjs\n ├── reporting/\n │ ├── aggregate.mjs (from tests/_draft_unified/aggregate.mjs) # pure rollup\n │ ├── html.mjs # unified HTML report: screenshots +