mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 19:01:54 +00:00
Chromium never treats plaintext .onion origins as a secure context, so keycloak-js (PKCE via crypto.subtle) could not run. A custom Playwright browser fixture launches Firefox with the Tor-Browser prefs (dom.securecontext.allowlist_onions, origin/mixed-content handling) for onion targets and keeps Chromium for clearnet; all dashboard specs share it via the register pattern. keycloak-js is now vendored from the deployment's own CDN as an ES module (jsdelivr is unreachable over Tor) with CORS opened on the CDN proxy. Personas and the oidc-login spec wait for adapter readiness and navbar settle before driving login/logout, which the async code->token exchange needs over Tor latency. Verified: full deploy matrix green (onion 14/14 twice, clearnet pass). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
40 lines
1.6 KiB
JavaScript
40 lines
1.6 KiB
JavaScript
// Dashboard Playwright spec — orchestration only. Shared env vars,
|
|
// helpers, and the `beforeEach` env-presence guard live in `_shared.js`;
|
|
// each scenario is registered from its own `test-*.js` companion module
|
|
// so each test stays atomar and individually inspectable.
|
|
|
|
const { test } = require("./fixtures/onion-test");
|
|
|
|
const shared = require("./_shared");
|
|
|
|
test.use({ ignoreHTTPSErrors: true });
|
|
|
|
test.beforeEach(shared.beforeEach);
|
|
|
|
// CSP + canonical-domain baseline.
|
|
require("./test-csp-canonical-domain").register(shared);
|
|
require("./test-no-console-noise").register(shared);
|
|
|
|
// Per-service shared / role-local asset coverage.
|
|
require("./test-shared-css").register(shared);
|
|
require("./test-cdn-role-stylesheet").register(shared);
|
|
require("./test-logout-js-injection").register(shared);
|
|
require("./test-simpleicons-cards").register(shared);
|
|
require("./test-icons").register(shared);
|
|
require("./test-header-navbar-logos").register(shared);
|
|
require("./test-iframe-sync").register(shared);
|
|
require("./test-matomo-integration").register(shared);
|
|
|
|
// OIDC login → account → logout round-trip.
|
|
require("./test-oidc-login").register(shared);
|
|
|
|
// Tile reachability per consumer role declared via roles_with_service('dashboard').
|
|
require("./test-tile-reachability").register(shared);
|
|
|
|
// Persona scenarios. Bodies live in the shared helper
|
|
// roles/test-e2e-playwright/files/personas.js so every role's persona
|
|
// flow stays consistent.
|
|
require("./test-guest-persona").register(shared);
|
|
require("./test-biber-persona").register(shared);
|
|
require("./test-administrator-persona").register(shared);
|