Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .claude/worktrees/wf_e5d13a3b-48d-1
Submodule wf_e5d13a3b-48d-1 added at e0099a
1 change: 1 addition & 0 deletions .claude/worktrees/wf_e5d13a3b-48d-2
Submodule wf_e5d13a3b-48d-2 added at 611696
1 change: 1 addition & 0 deletions .claude/worktrees/wf_e5d13a3b-48d-3
Submodule wf_e5d13a3b-48d-3 added at 292a82
1 change: 1 addition & 0 deletions .claude/worktrees/wf_e5d13a3b-48d-4
Submodule wf_e5d13a3b-48d-4 added at b73731
2 changes: 1 addition & 1 deletion tests/diagnostics/core-interactions.spec.ts
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
2 changes: 1 addition & 1 deletion tests/diagnostics/explorer-tree.spec.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down
6 changes: 3 additions & 3 deletions tests/diagnostics/graph-balance.spec.ts
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -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.
*
Expand All @@ -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 });

Expand Down
4 changes: 2 additions & 2 deletions tests/diagnostics/graph-geometry.spec.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/diagnostics/hierarchy-navigation.spec.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/diagnostics/insecure-connection-banner.spec.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down
4 changes: 2 additions & 2 deletions tests/diagnostics/interaction-audit.spec.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/diagnostics/large-graph-profile.spec.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/diagnostics/minimap-zoom.spec.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/diagnostics/node-expand-legibility.spec.ts
Original file line number Diff line number Diff line change
@@ -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).
Expand Down
2 changes: 1 addition & 1 deletion tests/diagnostics/node-inspector.spec.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/diagnostics/physics-settle.spec.ts
Original file line number Diff line number Diff line change
@@ -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,
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/a11y-focus.spec.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/admin-database-tab.spec.ts
Original file line number Diff line number Diff line change
@@ -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 }) => {
Expand Down
4 changes: 2 additions & 2 deletions tests/e2e/api-health.spec.ts
Original file line number Diff line number Diff line change
@@ -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;

Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/basic-workflow.spec.ts
Original file line number Diff line number Diff line change
@@ -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 }) => {
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/camera.spec.ts
Original file line number Diff line number Diff line change
@@ -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).
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/copy-id.spec.ts
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
4 changes: 2 additions & 2 deletions tests/e2e/feature-matrix.spec.ts
Original file line number Diff line number Diff line change
@@ -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');

Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/form-validation.spec.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/living-graph.spec.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/login-focus.spec.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/matrix.setup.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down
4 changes: 2 additions & 2 deletions tests/e2e/mobile-audit.spec.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down
4 changes: 2 additions & 2 deletions tests/e2e/mobile-dialogs.spec.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/mobile-experience.spec.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/mobile-views.spec.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/node-quick-edit.spec.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/oauth-provider-config.spec.ts
Original file line number Diff line number Diff line change
@@ -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 }) => {
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/overlay-dismissal.spec.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/relationship-flip.spec.ts
Original file line number Diff line number Diff line change
@@ -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 }) => {
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/responsive.spec.ts
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/showcase.spec.ts
Original file line number Diff line number Diff line change
@@ -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';

Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/signup-fit.spec.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/user-smoke.spec.ts
Original file line number Diff line number Diff line change
@@ -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,
Expand Down
10 changes: 5 additions & 5 deletions tests/e2e/visual-vlm.spec.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down
6 changes: 3 additions & 3 deletions tests/e2e/z-order.spec.ts
Original file line number Diff line number Diff line change
@@ -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,
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion tests/helpers/testEnv.ts → tests/lib/testEnv.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion tests/perf/graph-perf.spec.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down
10 changes: 5 additions & 5 deletions tests/perf/scale-sweep.spec.ts
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Loading