387 lines
11 KiB
JSON
387 lines
11 KiB
JSON
{
|
|
"schemaVersion": 1,
|
|
"id": "hosting-settings-light",
|
|
"title": "Hosting settings: synthetic UI conditions on production shell",
|
|
"baseUrl": "http://127.0.0.1:15378",
|
|
"colorScheme": "light",
|
|
"reducedMotion": "reduce",
|
|
"personas": [
|
|
{
|
|
"id": "fixture",
|
|
"label": "Synthetic API projection; no real authentication",
|
|
"auth": {
|
|
"kind": "anonymous"
|
|
}
|
|
}
|
|
],
|
|
"viewports": [
|
|
{
|
|
"label": "desktop",
|
|
"width": 1440,
|
|
"height": 900
|
|
},
|
|
{
|
|
"label": "narrow",
|
|
"width": 768,
|
|
"height": 900
|
|
},
|
|
{
|
|
"label": "mobile",
|
|
"width": 390,
|
|
"height": 844
|
|
}
|
|
],
|
|
"routes": [
|
|
{
|
|
"id": "admin-on",
|
|
"label": "admin-on",
|
|
"path": "/hosting/settings?fixture=admin-on",
|
|
"goal": "Verify production shell UI projection, not server authorization.",
|
|
"dataState": "Synthetic admin; policy on.",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": "button:has-text(\"Edit registration policy\")"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Loaded hosting-wide policy"
|
|
},
|
|
{
|
|
"id": "edit",
|
|
"label": "Keyboard edit focus",
|
|
"interaction": [
|
|
{
|
|
"action": "press",
|
|
"selector": "button:has-text(\"Edit registration policy\")",
|
|
"key": "Enter"
|
|
}
|
|
],
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": "input[type=\"checkbox\"]:focus"
|
|
}
|
|
},
|
|
{
|
|
"id": "saved",
|
|
"label": "Confirmed save",
|
|
"interaction": [
|
|
{
|
|
"action": "press",
|
|
"selector": "input[type=\"checkbox\"]",
|
|
"key": "Space"
|
|
},
|
|
{
|
|
"action": "click",
|
|
"selector": "button:has-text(\"Save settings\")"
|
|
}
|
|
],
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": "[role=\"status\"]:has-text(\"Hosting settings saved.\")"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "admin-off",
|
|
"label": "admin-off",
|
|
"path": "/hosting/settings?fixture=admin-off",
|
|
"goal": "Verify production shell UI projection, not server authorization.",
|
|
"dataState": "Synthetic admin; policy off.",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": "button:has-text(\"Edit registration policy\")"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Loaded hosting-wide policy"
|
|
},
|
|
{
|
|
"id": "edit",
|
|
"label": "Keyboard edit focus",
|
|
"interaction": [
|
|
{
|
|
"action": "press",
|
|
"selector": "button:has-text(\"Edit registration policy\")",
|
|
"key": "Enter"
|
|
}
|
|
],
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": "input[type=\"checkbox\"]:focus"
|
|
}
|
|
},
|
|
{
|
|
"id": "saved",
|
|
"label": "Confirmed save",
|
|
"interaction": [
|
|
{
|
|
"action": "press",
|
|
"selector": "input[type=\"checkbox\"]",
|
|
"key": "Space"
|
|
},
|
|
{
|
|
"action": "click",
|
|
"selector": "button:has-text(\"Save settings\")"
|
|
}
|
|
],
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": "[role=\"status\"]:has-text(\"Hosting settings saved.\")"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "ordinary",
|
|
"label": "ordinary",
|
|
"path": "/hosting/settings?fixture=ordinary",
|
|
"goal": "Verify production shell UI projection, not server authorization.",
|
|
"dataState": "Synthetic authenticated ordinary user, no admin controls.",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": "p:has-text(\"Hosting administrator access is required.\")"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Initial state"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "anonymous",
|
|
"label": "anonymous",
|
|
"path": "/hosting/settings?fixture=anonymous",
|
|
"goal": "Verify production shell UI projection, not server authorization.",
|
|
"dataState": "Synthetic anonymous visitor; sign-in guidance, no controls.",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": "a:has-text(\"Open Account\")"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Initial state"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "admin-loading",
|
|
"label": "admin-loading",
|
|
"path": "/hosting/settings?fixture=admin-loading",
|
|
"goal": "Verify production shell UI projection, not server authorization.",
|
|
"dataState": "Settings GET intentionally held pending; shell remains usable.",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": "[role=\"status\"]:has-text(\"Loading hosting settings\")"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Initial state"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "admin-load-error",
|
|
"label": "admin-load-error",
|
|
"path": "/hosting/settings?fixture=admin-load-error",
|
|
"goal": "Verify production shell UI projection, not server authorization.",
|
|
"dataState": "Intentional HTTP503; expected console resource error and visible alert.",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": "button:has-text(\"Retry loading settings\")"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Initial state"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "admin-saving",
|
|
"label": "admin-saving",
|
|
"path": "/hosting/settings?fixture=admin-saving",
|
|
"goal": "Verify production shell UI projection, not server authorization.",
|
|
"dataState": "PUT held pending; last loaded policy retained, edit controls disabled.",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": "button:has-text(\"Edit registration policy\")"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "saving",
|
|
"label": "saving",
|
|
"interaction": [
|
|
{
|
|
"action": "click",
|
|
"selector": "button:has-text(\"Edit registration policy\")"
|
|
},
|
|
{
|
|
"action": "press",
|
|
"selector": "input[type=\"checkbox\"]",
|
|
"key": "Space"
|
|
},
|
|
{
|
|
"action": "click",
|
|
"selector": "button:has-text(\"Save settings\")"
|
|
}
|
|
],
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": "button:has-text(\"Saving…\")"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "admin-save-error",
|
|
"label": "admin-save-error",
|
|
"path": "/hosting/settings?fixture=admin-save-error",
|
|
"goal": "Verify production shell UI projection, not server authorization.",
|
|
"dataState": "Intentional PUT HTTP503; outcome unknown, retry blocked until reload.",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": "button:has-text(\"Edit registration policy\")"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "save-error",
|
|
"label": "save-error",
|
|
"interaction": [
|
|
{
|
|
"action": "click",
|
|
"selector": "button:has-text(\"Edit registration policy\")"
|
|
},
|
|
{
|
|
"action": "press",
|
|
"selector": "input[type=\"checkbox\"]",
|
|
"key": "Space"
|
|
},
|
|
{
|
|
"action": "click",
|
|
"selector": "button:has-text(\"Save settings\")"
|
|
}
|
|
],
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": "[role=\"alert\"]"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "account-off",
|
|
"label": "account-off",
|
|
"path": "/register?fixture=account-off",
|
|
"goal": "Verify production shell UI projection, not server authorization.",
|
|
"dataState": "Anonymous policy off; registration disabled and existing login link available.",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": "p:has-text(\"New account registration is disabled.\")"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Initial state",
|
|
"fullPage": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "admin-account",
|
|
"label": "admin-account",
|
|
"path": "/account?fixture=admin-account",
|
|
"goal": "Verify production shell UI projection, not server authorization.",
|
|
"dataState": "Authenticated own account; addition available independently of registration policy. Global navigation remains on Workspace shell.",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": "button:has-text(\"Add passkey to alice\")"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Initial state",
|
|
"fullPage": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "ordinary-account-off",
|
|
"label": "ordinary-account-off",
|
|
"path": "/account?fixture=ordinary-account-off",
|
|
"goal": "Verify production shell UI projection, not server authorization.",
|
|
"dataState": "Authenticated own account; addition available independently of registration policy. Global navigation remains on Workspace shell.",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": "button:has-text(\"Add passkey to alice\")"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Initial state",
|
|
"fullPage": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "account-error",
|
|
"label": "account-error",
|
|
"path": "/register?fixture=account-error",
|
|
"goal": "Verify production shell UI projection, not server authorization.",
|
|
"dataState": "Intentional policy HTTP503; expected console resource error and visible alert; login retained.",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": "button:has-text(\"Retry registration availability\")"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Initial state",
|
|
"fullPage": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "account-loading",
|
|
"label": "account-loading",
|
|
"path": "/register?fixture=account-loading",
|
|
"goal": "Verify production shell UI projection, not server authorization.",
|
|
"dataState": "Policy request held pending; login remains available after session loads.",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": "[role=\"status\"]:has-text(\"Checking registration availability\")"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Initial state",
|
|
"fullPage": true
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"processes": [
|
|
{
|
|
"id": "hosting-ui-fixture",
|
|
"command": "deno",
|
|
"cwd": "../../..",
|
|
"args": [
|
|
"run",
|
|
"--config",
|
|
"tools/web-ux/deno.json",
|
|
"--allow-read",
|
|
"--allow-net",
|
|
"web/workspace/test/hosting-browser/fixture-server.ts",
|
|
"15378",
|
|
"web/workspace/build"
|
|
],
|
|
"readyUrl": "http://127.0.0.1:15378/health"
|
|
}
|
|
]
|
|
}
|