feat: add repeatable Web UX inspection workbench

This commit is contained in:
2026-09-01 22:48:26 +09:00
parent 409245cb52
commit 4a4a01b730
20 changed files with 2307 additions and 0 deletions
@@ -0,0 +1,28 @@
{
"schemaVersion": 1,
"id": "anonymous-entry",
"title": "Anonymous entry and authentication review",
"baseUrl": "${WEB_UX_BASE_URL}",
"locale": "en-US",
"timezone": "UTC",
"colorScheme": "light",
"reducedMotion": "reduce",
"personas": [
{ "id": "anonymous", "label": "Anonymous visitor", "auth": { "kind": "anonymous" } }
],
"viewports": [
{ "label": "desktop", "width": 1440, "height": 1000, "deviceScaleFactor": 1 },
{ "label": "mobile", "width": 390, "height": 844, "deviceScaleFactor": 1 }
],
"routes": [
{
"id": "entry",
"label": "Authentication entry",
"path": "/",
"goal": "Understand the product and begin authentication without seeing Workspace-private content.",
"dataState": "Fresh browser context with no cookies, local storage, or session state.",
"ready": { "kind": "network-idle", "timeoutMs": 15000 },
"capturePoints": [{ "id": "initial", "label": "Anonymous entry", "fullPage": true }]
}
]
}
@@ -0,0 +1,70 @@
{
"schemaVersion": 1,
"id": "workspace-control-plane",
"title": "Workspace control-plane owner and non-owner review",
"baseUrl": "${WEB_UX_BASE_URL}",
"locale": "en-US",
"timezone": "UTC",
"colorScheme": "light",
"reducedMotion": "reduce",
"redact": {
"selectors": ["[data-web-ux-redact]", "input[type=password]"],
"text": []
},
"personas": [
{
"id": "owner",
"label": "Workspace owner",
"auth": { "kind": "storage-state", "path": "../../../.web-ux/auth/owner.json" },
"login": { "path": "/", "successUrl": "/w/" }
},
{
"id": "non-owner",
"label": "Authenticated non-owner",
"auth": { "kind": "storage-state", "path": "../../../.web-ux/auth/non-owner.json" },
"login": { "path": "/", "successUrl": "/w/" }
}
],
"viewports": [
{ "label": "desktop", "width": 1440, "height": 1000, "deviceScaleFactor": 1 },
{ "label": "narrow", "width": 900, "height": 900, "deviceScaleFactor": 1 }
],
"routes": [
{
"id": "workspace-home",
"label": "Workspace overview",
"path": "/w/${WORKSPACE_ID}",
"goal": "Orient the user and expose the highest-value Workspace actions without internal authority noise.",
"dataState": "Dogfood Workspace with current Runtime and Ticket data.",
"ready": { "kind": "selector", "selector": "main", "timeoutMs": 20000 },
"capturePoints": [{ "id": "initial", "label": "Initial viewport", "fullPage": true }]
},
{
"id": "tickets",
"label": "Ticket lanes",
"path": "/w/${WORKSPACE_ID}/tickets",
"goal": "Scan actionable Ticket lanes and reach the primary authoring action in the initial viewport.",
"dataState": "Planning, ready, queued, in-progress, and completed Tickets from the selected Workspace.",
"ready": { "kind": "selector", "selector": "main", "timeoutMs": 30000 },
"capturePoints": [{ "id": "initial", "label": "Loaded Ticket lanes", "fullPage": true }]
},
{
"id": "workers",
"label": "Workers",
"path": "/w/${WORKSPACE_ID}/workers",
"goal": "Find current Worker state and the new-Worker action without exposing transport internals as the primary content.",
"dataState": "Current Workspace Worker projection with mixed lifecycle states.",
"ready": { "kind": "selector", "selector": "main", "timeoutMs": 20000 },
"capturePoints": [{ "id": "initial", "label": "Worker list", "fullPage": true }]
},
{
"id": "repositories",
"label": "Repository settings",
"path": "/w/${WORKSPACE_ID}/settings/repositories",
"goal": "Review repository access as an owner and verify non-owner composition does not expose unusable owner actions.",
"dataState": "Workspace repository catalog projected through current permissions.",
"ready": { "kind": "selector", "selector": "main", "timeoutMs": 20000 },
"capturePoints": [{ "id": "initial", "label": "Repository settings", "fullPage": true }]
}
]
}