mirror of
https://github.com/aaddrick/claude-desktop-debian.git
synced 2026-05-17 00:26:21 +03:00
Build out a Playwright-based regression-detection harness covering the compat-matrix surfaces (KDE-W, KDE-X, GNOME, Sway, i3, Niri, packaging formats). Adds: - Planning + decision docs under docs/testing/ — README, matrix, runbook, automation, cases/ (11 case files), quick-entry-closeout - Playwright scaffolding (config, tsconfig) - 78 spec runners under tools/test-harness/src/runners/ — T## case- doc runners and S## distribution/smoke runners - Substrate primitives in tools/test-harness/src/lib/: AX-tree loader (snapshotAx + waitForAxNode + axTreeToSnapshot), focus- shifter, eipc-registry, niri-native bridge, drag-drop bridge, electron-mocks, claudeai page-objects, inspector client S03 (DEB Depends declared) and S04 (RPM Requires declared) ship marked test.fail() — they're regression detectors for the case-doc gap (deb.sh emits no Depends:, rpm.sh sets AutoReqProv: no), and the expected-failure shape lets them report green on every host until upstream packaging starts declaring runtime deps. 127 files, no runtime changes; harness is opt-in via 'cd tools/test-harness && npx playwright test'. Co-authored-by: Claude <claude@anthropic.com>
49 lines
1.2 KiB
TypeScript
49 lines
1.2 KiB
TypeScript
// Row-aware skip primitive.
|
|
//
|
|
// Spec files declare which matrix rows they apply to. Anything else is
|
|
// skipped (not failed) so the JUnit run carries `<skipped>` →
|
|
// `matrix.md` cell `-`. See Decision 1 in docs/testing/automation.md
|
|
// for the JUnit-to-cell mapping.
|
|
//
|
|
// Usage in a runner:
|
|
// skipUnlessRow(testInfo, ['KDE-W', 'GNOME-W', 'Ubu-W']);
|
|
//
|
|
// The reason is auto-formatted from the row list so the dashboard
|
|
// caller doesn't have to write it.
|
|
|
|
import type { TestInfo } from '@playwright/test';
|
|
import { getEnv } from './env.js';
|
|
|
|
export type Row =
|
|
| 'KDE-W'
|
|
| 'KDE-X'
|
|
| 'GNOME-W'
|
|
| 'GNOME-X'
|
|
| 'Ubu-W'
|
|
| 'Ubu-X'
|
|
| 'COSMIC'
|
|
| 'Sway'
|
|
| 'Niri'
|
|
| 'Hypr-O'
|
|
| 'Hypr-N'
|
|
| 'i3';
|
|
|
|
export function currentRow(): string {
|
|
return getEnv().row;
|
|
}
|
|
|
|
export function skipUnlessRow(testInfo: TestInfo, allowed: Row[]): void {
|
|
const row = currentRow();
|
|
if (allowed.includes(row as Row)) return;
|
|
testInfo.skip(
|
|
true,
|
|
`row ${row} not in [${allowed.join(', ')}] — applies-to mismatch`,
|
|
);
|
|
}
|
|
|
|
export function skipOnRow(testInfo: TestInfo, blocked: Row[]): void {
|
|
const row = currentRow();
|
|
if (!blocked.includes(row as Row)) return;
|
|
testInfo.skip(true, `row ${row} excluded`);
|
|
}
|