diff --git a/.claude/worktrees/wf_e5d13a3b-48d-1 b/.claude/worktrees/wf_e5d13a3b-48d-1 new file mode 160000 index 00000000..e0099ac4 --- /dev/null +++ b/.claude/worktrees/wf_e5d13a3b-48d-1 @@ -0,0 +1 @@ +Subproject commit e0099ac429df04af0d3edf2bbc2efe9a5eafd8a1 diff --git a/.claude/worktrees/wf_e5d13a3b-48d-2 b/.claude/worktrees/wf_e5d13a3b-48d-2 new file mode 160000 index 00000000..61169603 --- /dev/null +++ b/.claude/worktrees/wf_e5d13a3b-48d-2 @@ -0,0 +1 @@ +Subproject commit 6116960367a17623dc54a174e9d5dc1fde669523 diff --git a/.claude/worktrees/wf_e5d13a3b-48d-3 b/.claude/worktrees/wf_e5d13a3b-48d-3 new file mode 160000 index 00000000..292a82d1 --- /dev/null +++ b/.claude/worktrees/wf_e5d13a3b-48d-3 @@ -0,0 +1 @@ +Subproject commit 292a82d105b8a3691bde7590fdd41f6cd6ac8c8e diff --git a/.claude/worktrees/wf_e5d13a3b-48d-4 b/.claude/worktrees/wf_e5d13a3b-48d-4 new file mode 160000 index 00000000..b7373193 --- /dev/null +++ b/.claude/worktrees/wf_e5d13a3b-48d-4 @@ -0,0 +1 @@ +Subproject commit b7373193a470ad818421d4e42ee2dc5ca14412cd diff --git a/tests/diagnostics/core-interactions.spec.ts b/tests/diagnostics/core-interactions.spec.ts index d631aee4..223a5d70 100644 --- a/tests/diagnostics/core-interactions.spec.ts +++ b/tests/diagnostics/core-interactions.spec.ts @@ -1,5 +1,5 @@ import { test, expect, Page } from '@playwright/test'; -import { login, TEST_USERS } from '../helpers/auth'; +import { login, TEST_USERS } from '../lib/auth'; /** * CORE INTERACTION MATRIX — the "basic user checks" every build must pass. diff --git a/tests/diagnostics/explorer-tree.spec.ts b/tests/diagnostics/explorer-tree.spec.ts index 5760243b..afc4fee1 100644 --- a/tests/diagnostics/explorer-tree.spec.ts +++ b/tests/diagnostics/explorer-tree.spec.ts @@ -1,5 +1,5 @@ import { test, expect } from '@playwright/test'; -import { login, TEST_USERS } from '../helpers/auth'; +import { login, TEST_USERS } from '../lib/auth'; /** * Project-explorer hierarchy: the graph selector expands a parent graph diff --git a/tests/diagnostics/graph-balance.spec.ts b/tests/diagnostics/graph-balance.spec.ts index fb0c65d3..30d01532 100644 --- a/tests/diagnostics/graph-balance.spec.ts +++ b/tests/diagnostics/graph-balance.spec.ts @@ -1,5 +1,5 @@ import { test, expect } from '@playwright/test'; -import { login, TEST_USERS, getBaseURL } from '../helpers/auth'; +import { login, TEST_USERS, getBaseURL } from '../lib/auth'; import { execFileSync } from 'node:child_process'; import { mkdirSync } from 'node:fs'; import * as path from 'node:path'; @@ -9,7 +9,7 @@ import * as path from 'node:path'; * * Clips a screenshot to the graph canvas (`.graph-container`, which excludes the * nav rail, top bar, and the body-portaled minimap), then runs - * tests/helpers/balance_metrics.py to compute OBJECTIVE numbers about how the + * tests/lib/metrics/balance_metrics.py to compute OBJECTIVE numbers about how the * graph is placed: centroid offset from centre, bbox coverage, content usage, * margin balance, quadrant mass distribution, and an informational balanceScore. * @@ -27,7 +27,7 @@ import * as path from 'node:path'; const MAX_OFF_MAG = 0.30; // centroid offset from frame centre (0 = dead centre) const MIN_BBOX_COVERAGE = 0.35; // graph bbox vs canvas (off-screen graph ~= 0.06) -const PY = path.join(process.cwd(), 'tests/helpers/balance_metrics.py'); +const PY = path.join(process.cwd(), 'tests/lib/metrics/balance_metrics.py'); const OUT = path.join(process.cwd(), 'test-artifacts/balance'); mkdirSync(OUT, { recursive: true }); diff --git a/tests/diagnostics/graph-geometry.spec.ts b/tests/diagnostics/graph-geometry.spec.ts index d4673229..f4f9af68 100644 --- a/tests/diagnostics/graph-geometry.spec.ts +++ b/tests/diagnostics/graph-geometry.spec.ts @@ -1,8 +1,8 @@ import { test, expect, Page } from '@playwright/test'; import * as fs from 'fs'; import * as path from 'path'; -import { login, TEST_USERS } from '../helpers/auth'; -import { sweepTestData, TEST_GRAPH_PREFIX } from '../helpers/dbHealing'; +import { login, TEST_USERS } from '../lib/auth'; +import { sweepTestData, TEST_GRAPH_PREFIX } from '../lib/dbHealing'; /** * Graph-geometry diagnostic — measures node/edge/label geometry from the REAL diff --git a/tests/diagnostics/hierarchy-navigation.spec.ts b/tests/diagnostics/hierarchy-navigation.spec.ts index aed0a135..986e7167 100644 --- a/tests/diagnostics/hierarchy-navigation.spec.ts +++ b/tests/diagnostics/hierarchy-navigation.spec.ts @@ -1,7 +1,7 @@ import { test, expect, Page } from '@playwright/test'; import * as fs from 'fs'; import * as path from 'path'; -import { login, TEST_USERS } from '../helpers/auth'; +import { login, TEST_USERS } from '../lib/auth'; /** * Altium-style "graphs of graphs" navigation: from the System Overview, a diff --git a/tests/diagnostics/insecure-connection-banner.spec.ts b/tests/diagnostics/insecure-connection-banner.spec.ts index d3a16b4b..a4d0cade 100644 --- a/tests/diagnostics/insecure-connection-banner.spec.ts +++ b/tests/diagnostics/insecure-connection-banner.spec.ts @@ -1,7 +1,7 @@ import { test, expect, Page } from '@playwright/test'; import * as fs from 'fs'; import * as path from 'path'; -import { login, TEST_USERS } from '../helpers/auth'; +import { login, TEST_USERS } from '../lib/auth'; /** * The insecure-connection (HTTP) warning must integrate cleanly: a slim strip diff --git a/tests/diagnostics/interaction-audit.spec.ts b/tests/diagnostics/interaction-audit.spec.ts index 461b7a71..8d061594 100644 --- a/tests/diagnostics/interaction-audit.spec.ts +++ b/tests/diagnostics/interaction-audit.spec.ts @@ -1,8 +1,8 @@ import { test, expect, Page } from '@playwright/test'; import * as fs from 'fs'; import * as path from 'path'; -import { login, TEST_USERS } from '../helpers/auth'; -import { sweepTestData, TEST_GRAPH_PREFIX } from '../helpers/dbHealing'; +import { login, TEST_USERS } from '../lib/auth'; +import { sweepTestData, TEST_GRAPH_PREFIX } from '../lib/dbHealing'; /** * Basic-interaction audit — walks the everyday graph interactions a user does diff --git a/tests/diagnostics/large-graph-profile.spec.ts b/tests/diagnostics/large-graph-profile.spec.ts index 0749b07c..fde3f8e4 100644 --- a/tests/diagnostics/large-graph-profile.spec.ts +++ b/tests/diagnostics/large-graph-profile.spec.ts @@ -1,7 +1,7 @@ import { test, expect, Page } from '@playwright/test'; import * as fs from 'fs'; import * as path from 'path'; -import { login, TEST_USERS } from '../helpers/auth'; +import { login, TEST_USERS } from '../lib/auth'; /** * BASELINE profiler for the Compute Core (1000-node) example graph the user diff --git a/tests/diagnostics/minimap-zoom.spec.ts b/tests/diagnostics/minimap-zoom.spec.ts index 518984a7..11beacfd 100644 --- a/tests/diagnostics/minimap-zoom.spec.ts +++ b/tests/diagnostics/minimap-zoom.spec.ts @@ -1,5 +1,5 @@ import { test, expect, Page } from '@playwright/test'; -import { login, TEST_USERS } from '../helpers/auth'; +import { login, TEST_USERS } from '../lib/auth'; /** * Minimap wheel/pinch zoom: a wheel over the minimap zooms the MAIN view diff --git a/tests/diagnostics/node-expand-legibility.spec.ts b/tests/diagnostics/node-expand-legibility.spec.ts index 5eff8775..ed5d911a 100644 --- a/tests/diagnostics/node-expand-legibility.spec.ts +++ b/tests/diagnostics/node-expand-legibility.spec.ts @@ -1,5 +1,5 @@ import { test, expect, Page } from '@playwright/test'; -import { login, TEST_USERS } from '../helpers/auth'; +import { login, TEST_USERS } from '../lib/auth'; /** * PR-3 (expand-in-place) + PR-4 (zoom-decoupled legibility floor). diff --git a/tests/diagnostics/node-inspector.spec.ts b/tests/diagnostics/node-inspector.spec.ts index 1750586c..0e3b902f 100644 --- a/tests/diagnostics/node-inspector.spec.ts +++ b/tests/diagnostics/node-inspector.spec.ts @@ -1,5 +1,5 @@ import { test, expect, Page } from '@playwright/test'; -import { login, TEST_USERS } from '../helpers/auth'; +import { login, TEST_USERS } from '../lib/auth'; /** * Docked inspector: selecting a node opens it; Contents renders its description diff --git a/tests/diagnostics/physics-settle.spec.ts b/tests/diagnostics/physics-settle.spec.ts index ea29827b..b99f1356 100644 --- a/tests/diagnostics/physics-settle.spec.ts +++ b/tests/diagnostics/physics-settle.spec.ts @@ -1,7 +1,7 @@ import { test, expect, Page } from '@playwright/test'; import * as fs from 'fs'; import * as path from 'path'; -import { login, TEST_USERS } from '../helpers/auth'; +import { login, TEST_USERS } from '../lib/auth'; /** * Physics-lifecycle diagnostic — proves the one-shot model: a graph settles, diff --git a/tests/e2e/a11y-focus.spec.ts b/tests/e2e/a11y-focus.spec.ts index 95ff6b4d..3980f95f 100644 --- a/tests/e2e/a11y-focus.spec.ts +++ b/tests/e2e/a11y-focus.spec.ts @@ -1,5 +1,5 @@ import { test, expect, Page } from '@playwright/test'; -import { login, TEST_USERS, getBaseURL } from '../helpers/auth'; +import { login, TEST_USERS, getBaseURL } from '../lib/auth'; /** * Modal accessibility / keyboard-focus gate (@a11y). Asserts the contract added diff --git a/tests/e2e/admin-database-tab.spec.ts b/tests/e2e/admin-database-tab.spec.ts index 10554e69..10186c99 100644 --- a/tests/e2e/admin-database-tab.spec.ts +++ b/tests/e2e/admin-database-tab.spec.ts @@ -1,5 +1,5 @@ import { test, expect } from '@playwright/test'; -import { login, TEST_USERS, getBaseURL } from '../helpers/auth'; +import { login, TEST_USERS, getBaseURL } from '../lib/auth'; test.describe('Admin Database Tab', () => { test.beforeEach(async ({ page }) => { diff --git a/tests/e2e/api-health.spec.ts b/tests/e2e/api-health.spec.ts index 649fb9f2..4abea61e 100644 --- a/tests/e2e/api-health.spec.ts +++ b/tests/e2e/api-health.spec.ts @@ -1,9 +1,9 @@ import { test, expect } from '@playwright/test'; -import { HEALTH_URL, gqlRequest, apiLogin } from '../helpers/api'; +import { HEALTH_URL, gqlRequest, apiLogin } from '../lib/api'; // API health checks, deployment-agnostic: every URL derives from TEST_URL // (nginx route layout in production, Vite proxy in dev) and data queries -// authenticate the same way the UI does. See tests/helpers/api.ts. +// authenticate the same way the UI does. See tests/lib/api.ts. test.describe('GraphQL API Health Tests', () => { let token: string; diff --git a/tests/e2e/basic-workflow.spec.ts b/tests/e2e/basic-workflow.spec.ts index 52ac7a72..95a79daf 100644 --- a/tests/e2e/basic-workflow.spec.ts +++ b/tests/e2e/basic-workflow.spec.ts @@ -1,5 +1,5 @@ import { test, expect } from '@playwright/test'; -import { login, TEST_USERS } from '../helpers/auth'; +import { login, TEST_USERS } from '../lib/auth'; test.describe('Basic User Workflow', () => { test('should complete full user journey: login → select/create graph → create node → verify node appears without refresh', async ({ page }) => { diff --git a/tests/e2e/camera.spec.ts b/tests/e2e/camera.spec.ts index 2582ffaa..64236514 100644 --- a/tests/e2e/camera.spec.ts +++ b/tests/e2e/camera.spec.ts @@ -1,5 +1,5 @@ import { test, expect, Page } from '@playwright/test'; -import { login, TEST_USERS, getBaseURL } from '../helpers/auth'; +import { login, TEST_USERS, getBaseURL } from '../lib/auth'; /** * Camera framing + persistence (@camera). diff --git a/tests/e2e/copy-id.spec.ts b/tests/e2e/copy-id.spec.ts index e91a7266..1bd8d9a8 100644 --- a/tests/e2e/copy-id.spec.ts +++ b/tests/e2e/copy-id.spec.ts @@ -1,5 +1,5 @@ import { test, expect } from '@playwright/test'; -import { login, TEST_USERS, getBaseURL } from '../helpers/auth'; +import { login, TEST_USERS, getBaseURL } from '../lib/auth'; /** * Click-to-copy node id (@copyid, #23): the node inspector shows a short id chip; diff --git a/tests/e2e/feature-matrix.spec.ts b/tests/e2e/feature-matrix.spec.ts index 567ea88d..db0d7307 100644 --- a/tests/e2e/feature-matrix.spec.ts +++ b/tests/e2e/feature-matrix.spec.ts @@ -1,8 +1,8 @@ import { test, expect, Page, TestInfo } from '@playwright/test'; import * as fs from 'fs'; import * as path from 'path'; -import { getBaseURL } from '../helpers/auth'; -import { auditLayout, auditContrast } from '../helpers/mobileAudit'; +import { getBaseURL } from '../lib/auth'; +import { auditLayout, auditContrast } from '../lib/mobileAudit'; const SHOT_ROOT = path.resolve(process.cwd(), 'test-artifacts/matrix'); diff --git a/tests/e2e/form-validation.spec.ts b/tests/e2e/form-validation.spec.ts index c85c7e70..7abbed1e 100644 --- a/tests/e2e/form-validation.spec.ts +++ b/tests/e2e/form-validation.spec.ts @@ -1,5 +1,5 @@ import { test, expect, Page } from '@playwright/test'; -import { login, TEST_USERS, getBaseURL } from '../helpers/auth'; +import { login, TEST_USERS, getBaseURL } from '../lib/auth'; /** * Form-validation gate (@validation). Exercises the client-side validation diff --git a/tests/e2e/living-graph.spec.ts b/tests/e2e/living-graph.spec.ts index 79d40c0a..fcf5486f 100644 --- a/tests/e2e/living-graph.spec.ts +++ b/tests/e2e/living-graph.spec.ts @@ -1,5 +1,5 @@ import { test, expect, Page } from '@playwright/test'; -import { login, TEST_USERS } from '../helpers/auth'; +import { login, TEST_USERS } from '../lib/auth'; /** * The living graph is the product's differentiator (breathing, glow, energy diff --git a/tests/e2e/login-focus.spec.ts b/tests/e2e/login-focus.spec.ts index 736ee7a9..8fd1154e 100644 --- a/tests/e2e/login-focus.spec.ts +++ b/tests/e2e/login-focus.spec.ts @@ -1,5 +1,5 @@ import { test, expect } from '@playwright/test'; -import { getBaseURL } from '../helpers/auth'; +import { getBaseURL } from '../lib/auth'; /** * Passwordless sign-in focus order (@loginfocus). When the user switches to the diff --git a/tests/e2e/matrix.setup.ts b/tests/e2e/matrix.setup.ts index 220a997b..a1137a33 100644 --- a/tests/e2e/matrix.setup.ts +++ b/tests/e2e/matrix.setup.ts @@ -1,5 +1,5 @@ import { test as setup } from '@playwright/test'; -import { login, TEST_USERS } from '../helpers/auth'; +import { login, TEST_USERS } from '../lib/auth'; // One real login for the whole matrix run; every feature-matrix test reuses this // storage state so the ~100-cell resolution×feature sweep doesn't re-login each diff --git a/tests/e2e/mobile-audit.spec.ts b/tests/e2e/mobile-audit.spec.ts index 8c0135c8..c879dcfb 100644 --- a/tests/e2e/mobile-audit.spec.ts +++ b/tests/e2e/mobile-audit.spec.ts @@ -1,6 +1,6 @@ import { test, expect } from '@playwright/test'; -import { login, TEST_USERS, getBaseURL } from '../helpers/auth'; -import { auditLayout, auditContrast } from '../helpers/mobileAudit'; +import { login, TEST_USERS, getBaseURL } from '../lib/auth'; +import { auditLayout, auditContrast } from '../lib/mobileAudit'; /** * Automated mobile sweep — runs the layout + contrast auditors against EVERY diff --git a/tests/e2e/mobile-dialogs.spec.ts b/tests/e2e/mobile-dialogs.spec.ts index c557b741..38ee38f7 100644 --- a/tests/e2e/mobile-dialogs.spec.ts +++ b/tests/e2e/mobile-dialogs.spec.ts @@ -1,6 +1,6 @@ import { test, expect } from '@playwright/test'; -import { login, TEST_USERS, getBaseURL } from '../helpers/auth'; -import { auditDialog } from '../helpers/mobileAudit'; +import { login, TEST_USERS, getBaseURL } from '../lib/auth'; +import { auditDialog } from '../lib/mobileAudit'; /** * Automated dialog sweep — opens the modals a phone user actually hits and diff --git a/tests/e2e/mobile-experience.spec.ts b/tests/e2e/mobile-experience.spec.ts index 3754cb7b..ac8b6a25 100644 --- a/tests/e2e/mobile-experience.spec.ts +++ b/tests/e2e/mobile-experience.spec.ts @@ -1,5 +1,5 @@ import { test, expect } from '@playwright/test'; -import { login, TEST_USERS } from '../helpers/auth'; +import { login, TEST_USERS } from '../lib/auth'; /** * Mobile experience contract. A phone-sized screen should land on a readable diff --git a/tests/e2e/mobile-views.spec.ts b/tests/e2e/mobile-views.spec.ts index fb42f14e..0b6092b9 100644 --- a/tests/e2e/mobile-views.spec.ts +++ b/tests/e2e/mobile-views.spec.ts @@ -1,5 +1,5 @@ import { test, expect, Page } from '@playwright/test'; -import { login, TEST_USERS } from '../helpers/auth'; +import { login, TEST_USERS } from '../lib/auth'; /** * Mobile usability of the non-graph views. On a phone a user should be able to diff --git a/tests/e2e/node-quick-edit.spec.ts b/tests/e2e/node-quick-edit.spec.ts index 8858e0c2..f5b0f405 100644 --- a/tests/e2e/node-quick-edit.spec.ts +++ b/tests/e2e/node-quick-edit.spec.ts @@ -1,5 +1,5 @@ import { test, expect, Page } from '@playwright/test'; -import { login, TEST_USERS, getBaseURL } from '../helpers/auth'; +import { login, TEST_USERS, getBaseURL } from '../lib/auth'; /** * In-context node quick-edit (@quickedit, #87): double-clicking a node opens a diff --git a/tests/e2e/oauth-provider-config.spec.ts b/tests/e2e/oauth-provider-config.spec.ts index c3584805..648a6742 100644 --- a/tests/e2e/oauth-provider-config.spec.ts +++ b/tests/e2e/oauth-provider-config.spec.ts @@ -1,5 +1,5 @@ import { test, expect } from '@playwright/test'; -import { login, TEST_USERS, getBaseURL } from '../helpers/auth'; +import { login, TEST_USERS, getBaseURL } from '../lib/auth'; test.describe('OAuth Provider Configuration (Admin Panel)', () => { test.beforeEach(async ({ page }) => { diff --git a/tests/e2e/overlay-dismissal.spec.ts b/tests/e2e/overlay-dismissal.spec.ts index 1b52d562..648c2b7b 100644 --- a/tests/e2e/overlay-dismissal.spec.ts +++ b/tests/e2e/overlay-dismissal.spec.ts @@ -1,5 +1,5 @@ import { test, expect, Page } from '@playwright/test'; -import { login, TEST_USERS, getBaseURL } from '../helpers/auth'; +import { login, TEST_USERS, getBaseURL } from '../lib/auth'; /** * Overlay dismissal gate (@dismissal). Verifies the dialog-manager "friction diff --git a/tests/e2e/relationship-flip.spec.ts b/tests/e2e/relationship-flip.spec.ts index 05f6fc16..f28123d9 100644 --- a/tests/e2e/relationship-flip.spec.ts +++ b/tests/e2e/relationship-flip.spec.ts @@ -1,5 +1,5 @@ import { test, expect } from '@playwright/test'; -import { login, TEST_USERS, navigateToWorkspace } from '../helpers/auth'; +import { login, TEST_USERS, navigateToWorkspace } from '../lib/auth'; test.describe('Relationship Flip Functionality', () => { test.beforeEach(async ({ page }) => { diff --git a/tests/e2e/responsive.spec.ts b/tests/e2e/responsive.spec.ts index 499e342a..5508b05d 100644 --- a/tests/e2e/responsive.spec.ts +++ b/tests/e2e/responsive.spec.ts @@ -1,5 +1,5 @@ import { test, expect, Page } from '@playwright/test'; -import { login, TEST_USERS } from '../helpers/auth'; +import { login, TEST_USERS } from '../lib/auth'; // RESP-5 (docs/USER_STORIES.md): the core flow must work on phone, tablet and // desktop viewports, with no horizontal scroll and visible primary navigation. diff --git a/tests/e2e/showcase.spec.ts b/tests/e2e/showcase.spec.ts index 85fca48e..5fddbf16 100644 --- a/tests/e2e/showcase.spec.ts +++ b/tests/e2e/showcase.spec.ts @@ -1,5 +1,5 @@ import { test, expect, Page } from '@playwright/test'; -import { login, TEST_USERS } from '../helpers/auth'; +import { login, TEST_USERS } from '../lib/auth'; import * as fs from 'fs'; import * as path from 'path'; diff --git a/tests/e2e/signup-fit.spec.ts b/tests/e2e/signup-fit.spec.ts index 2f7799d3..03815498 100644 --- a/tests/e2e/signup-fit.spec.ts +++ b/tests/e2e/signup-fit.spec.ts @@ -1,5 +1,5 @@ import { test, expect } from '@playwright/test'; -import { getBaseURL } from '../helpers/auth'; +import { getBaseURL } from '../lib/auth'; /** * Responsive "fit the window" religion (@signup-fit): on a large screen the diff --git a/tests/e2e/user-smoke.spec.ts b/tests/e2e/user-smoke.spec.ts index 0bd9072c..9919e283 100644 --- a/tests/e2e/user-smoke.spec.ts +++ b/tests/e2e/user-smoke.spec.ts @@ -1,5 +1,5 @@ import { test, expect } from '@playwright/test'; -import { login, TEST_USERS } from '../helpers/auth'; +import { login, TEST_USERS } from '../lib/auth'; /** * THE GATE. This spec sees the app exactly as a user does — if it fails, diff --git a/tests/e2e/visual-vlm.spec.ts b/tests/e2e/visual-vlm.spec.ts index e5ca9673..b35e379e 100644 --- a/tests/e2e/visual-vlm.spec.ts +++ b/tests/e2e/visual-vlm.spec.ts @@ -1,11 +1,11 @@ import { test, expect, Page } from '@playwright/test'; import * as fs from 'fs'; import * as path from 'path'; -import { login, TEST_USERS } from '../helpers/auth'; -import { seedLargeGraph, deleteGraphDeep } from '../helpers/seedGraph'; -import { sweepTestData, TEST_GRAPH_PREFIX } from '../helpers/dbHealing'; -import '../helpers/testEnv'; -import { isVlmAvailable, evaluateBatch, PERSONAS, personaByKey } from '../helpers/vlm'; +import { login, TEST_USERS } from '../lib/auth'; +import { seedLargeGraph, deleteGraphDeep } from '../lib/seedGraph'; +import { sweepTestData, TEST_GRAPH_PREFIX } from '../lib/dbHealing'; +import '../lib/testEnv'; +import { isVlmAvailable, evaluateBatch, PERSONAS, personaByKey } from '../lib/vlm'; /** * Local-VLM visual evaluation. Captures key user-facing states, then asks a diff --git a/tests/e2e/z-order.spec.ts b/tests/e2e/z-order.spec.ts index a38733fb..661bcddc 100644 --- a/tests/e2e/z-order.spec.ts +++ b/tests/e2e/z-order.spec.ts @@ -1,7 +1,7 @@ import { test, expect, Page } from '@playwright/test'; -import { login, TEST_USERS, getBaseURL } from '../helpers/auth'; -import { auditOnTop } from '../helpers/zorder'; -import { auditDialog } from '../helpers/mobileAudit'; +import { login, TEST_USERS, getBaseURL } from '../lib/auth'; +import { auditOnTop } from '../lib/zorder'; +import { auditDialog } from '../lib/mobileAudit'; /** * Z-order / stacking gate. Opens every floating overlay in the app (dropdowns, diff --git a/tests/helpers/README.md b/tests/lib/README.md similarity index 100% rename from tests/helpers/README.md rename to tests/lib/README.md diff --git a/tests/helpers/api.ts b/tests/lib/api.ts similarity index 100% rename from tests/helpers/api.ts rename to tests/lib/api.ts diff --git a/tests/helpers/auth.ts b/tests/lib/auth.ts similarity index 100% rename from tests/helpers/auth.ts rename to tests/lib/auth.ts diff --git a/tests/helpers/dbHealing.ts b/tests/lib/dbHealing.ts similarity index 100% rename from tests/helpers/dbHealing.ts rename to tests/lib/dbHealing.ts diff --git a/tests/helpers/balance_metrics.py b/tests/lib/metrics/balance_metrics.py similarity index 100% rename from tests/helpers/balance_metrics.py rename to tests/lib/metrics/balance_metrics.py diff --git a/tests/helpers/mobileAudit.ts b/tests/lib/mobileAudit.ts similarity index 100% rename from tests/helpers/mobileAudit.ts rename to tests/lib/mobileAudit.ts diff --git a/tests/helpers/mock-oauth-server.ts b/tests/lib/mock-oauth-server.ts similarity index 100% rename from tests/helpers/mock-oauth-server.ts rename to tests/lib/mock-oauth-server.ts diff --git a/tests/helpers/seedGraph.ts b/tests/lib/seedGraph.ts similarity index 100% rename from tests/helpers/seedGraph.ts rename to tests/lib/seedGraph.ts diff --git a/tests/helpers/testEnv.ts b/tests/lib/testEnv.ts similarity index 97% rename from tests/helpers/testEnv.ts rename to tests/lib/testEnv.ts index f29c8c80..771d65fd 100644 --- a/tests/helpers/testEnv.ts +++ b/tests/lib/testEnv.ts @@ -8,7 +8,7 @@ import dotenv from 'dotenv'; * this for its side effect at the top of any spec/generator that needs the VLM * endpoints or sweep config: * - * import '../helpers/testEnv'; + * import '../lib/testEnv'; * * Safe to import everywhere — it's a no-op when the file is absent (e.g. CI), * so VLM-driven suites skip cleanly. Existing process.env values win, so you diff --git a/tests/helpers/vlm.ts b/tests/lib/vlm.ts similarity index 100% rename from tests/helpers/vlm.ts rename to tests/lib/vlm.ts diff --git a/tests/helpers/zorder.ts b/tests/lib/zorder.ts similarity index 100% rename from tests/helpers/zorder.ts rename to tests/lib/zorder.ts diff --git a/tests/perf/graph-perf.spec.ts b/tests/perf/graph-perf.spec.ts index 9bdfec3f..00366ac6 100644 --- a/tests/perf/graph-perf.spec.ts +++ b/tests/perf/graph-perf.spec.ts @@ -1,5 +1,5 @@ import { test, expect, Page } from '@playwright/test'; -import { login, TEST_USERS } from '../helpers/auth'; +import { login, TEST_USERS } from '../lib/auth'; /** * Runtime performance budgets (ADAPT-8). Numbers come from the in-app diff --git a/tests/perf/scale-sweep.spec.ts b/tests/perf/scale-sweep.spec.ts index 00b452e5..cf12e06c 100644 --- a/tests/perf/scale-sweep.spec.ts +++ b/tests/perf/scale-sweep.spec.ts @@ -1,11 +1,11 @@ import { test, expect, Page } from '@playwright/test'; import * as fs from 'fs'; import * as path from 'path'; -import { login, TEST_USERS } from '../helpers/auth'; -import { seedLargeGraph, deleteGraphDeep } from '../helpers/seedGraph'; -import { sweepTestData } from '../helpers/dbHealing'; -import '../helpers/testEnv'; -import { envIntList, envList } from '../helpers/testEnv'; +import { login, TEST_USERS } from '../lib/auth'; +import { seedLargeGraph, deleteGraphDeep } from '../lib/seedGraph'; +import { sweepTestData } from '../lib/dbHealing'; +import '../lib/testEnv'; +import { envIntList, envList } from '../lib/testEnv'; /** * Large-scale graph creation + performance metric sweep. Seeds real graphs of