feat: explicit hosting administrators and persistent self-registration policy
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
import { resolve } from "@std/path";
|
||||
import type { Scenario } from "../../../../tools/web-ux/src/types.ts";
|
||||
const root = resolve(import.meta.dirname!, "../../../..");
|
||||
for (const theme of ["light", "dark"]) {
|
||||
const scenario: Scenario = JSON.parse(
|
||||
await Deno.readTextFile(`${root}/tools/web-ux/scenarios/hosting-settings-${theme}.json`),
|
||||
);
|
||||
scenario.id = `hosting-baseline-${theme}`;
|
||||
scenario.title = "Before: tracked HEAD Account and global navigation; no hosting route existed";
|
||||
scenario.routes = [
|
||||
{
|
||||
id: "account-on",
|
||||
label: "Anonymous Account before",
|
||||
path: "/account?fixture=account-on",
|
||||
goal: "Compare existing Account registration/login before policy gating.",
|
||||
dataState: "Synthetic anonymous session; unchanged baseline production shell.",
|
||||
ready: { kind: "selector", selector: 'button:has-text("Register new account"):enabled' },
|
||||
capturePoints: [{ id: "initial", label: "Before anonymous Account" }],
|
||||
},
|
||||
{
|
||||
id: "admin-account",
|
||||
label: "Signed-in Account before",
|
||||
path: "/account?fixture=admin-account",
|
||||
goal: "Compare Account and global navigation before admin settings link.",
|
||||
dataState: "Synthetic signed-in session; no hosting route/link before.",
|
||||
ready: { kind: "selector", selector: 'button:has-text("Add passkey to alice")' },
|
||||
capturePoints: [{ id: "initial", label: "Before signed-in Account" }],
|
||||
},
|
||||
];
|
||||
scenario.processes![0].cwd = root;
|
||||
scenario.processes![0].args![scenario.processes![0].args!.length - 1] =
|
||||
"target/web-ux/baseline-source/web/workspace/build";
|
||||
for (const route of scenario.routes) route.capturePoints[0].fullPage = true;
|
||||
await Deno.writeTextFile(
|
||||
`${root}/target/web-ux/baseline-${theme}.json`,
|
||||
JSON.stringify(scenario, null, 2),
|
||||
);
|
||||
for (const version of ["before", "after"]) {
|
||||
const nav = structuredClone(scenario);
|
||||
nav.id = `hosting-navigation-${version}-${theme}`;
|
||||
nav.title = `${version} mobile global navigation on production shell`;
|
||||
nav.viewports = nav.viewports.filter((item) => item.width === 390);
|
||||
for (const route of nav.routes) {
|
||||
route.capturePoints = [{
|
||||
id: "navigation",
|
||||
label: "Mobile global links",
|
||||
interaction: [{ action: "click", selector: 'button[aria-label="Show sidebar"]' }],
|
||||
ready: { kind: "selector", selector: 'nav[aria-label="Global pages"]' },
|
||||
}];
|
||||
}
|
||||
if (version === "after") {
|
||||
nav.processes![0].args![nav.processes![0].args!.length - 1] = "web/workspace/build";
|
||||
}
|
||||
await Deno.writeTextFile(
|
||||
`${root}/target/web-ux/navigation-${version}-${theme}.json`,
|
||||
JSON.stringify(nav, null, 2),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user