{ "schemaVersion": 1, "id": "tickets", "title": "Ticket cases, classification and independent Orchestrator handling", "baseUrl": "http://127.0.0.1:15289", "colorScheme": "light", "reducedMotion": "reduce", "personas": [ { "id": "member", "label": "Workspace member, not settings owner", "auth": { "kind": "anonymous" } } ], "viewports": [ { "label": "desktop", "width": 1440, "height": 900 }, { "label": "narrow", "width": 768, "height": 900 }, { "label": "mobile", "width": 390, "height": 844 } ], "routes": [ { "id": "posts", "label": "Discussion with initial post and edited replies", "path": "/w/tickets-posts/tickets/T-900", "goal": "Read and edit any discussion post without changing Ticket metadata", "dataState": "Four realistic posts, distinct authors, original and edited times", "ready": { "kind": "selector", "selector": ".ticket-timeline article:nth-of-type(4)" }, "capturePoints": [ { "id": "initial", "label": "Thread and metadata", "fullPage": true }, { "id": "edit-initial", "label": "Same post editor on initial post", "interaction": [ { "action": "click", "selector": ".ticket-timeline article:first-of-type button" } ], "fullPage": true }, { "id": "later-posts", "label": "Later discussion and edited attribution", "interaction": [ { "action": "click", "selector": ".ticket-timeline article:first-of-type button[type=button]" }, { "action": "click", "selector": ".ticket-timeline article:last-of-type header strong" } ], "fullPage": true }, { "id": "composer", "label": "Thread-only comment and close footer", "interaction": [ { "action": "click", "selector": ".ticket-thread-composer textarea" } ], "fullPage": true }, { "id": "metadata", "label": "Title editing separate from post bodies", "interaction": [ { "action": "click", "selector": ".ticket-metadata button" } ], "fullPage": true } ] }, { "id": "options", "label": "Return options without conclusion", "path": "/w/tickets/tickets/T-1", "goal": "Read intent, record results and progress without a repository", "dataState": "No repository or MR", "ready": { "kind": "selector", "selector": ".ticket-detail-header" }, "capturePoints": [ { "id": "initial", "label": "Ticket detail", "fullPage": true }, { "id": "resolution", "label": "Reasoned case judgment", "interaction": [ { "action": "click", "selector": ".ticket-thread-composer textarea" } ], "fullPage": true } ] }, { "id": "read-only", "label": "Investigation without review", "path": "/w/tickets/tickets/T-2", "goal": "Use read-only resources without requiring write or MR", "dataState": "Read-only target", "ready": { "kind": "selector", "selector": ".ticket-detail-header" }, "capturePoints": [ { "id": "initial", "label": "Ticket detail", "fullPage": true }, { "id": "resolution", "label": "Reasoned case judgment", "interaction": [ { "action": "click", "selector": ".ticket-thread-composer textarea" } ], "fullPage": true } ] }, { "id": "review", "label": "Independent review before merge", "path": "/w/tickets/tickets/T-3", "goal": "Separate progress from actual MR review and integration", "dataState": "Open MR, unavailable source observation", "ready": { "kind": "selector", "selector": ".ticket-detail-header" }, "capturePoints": [ { "id": "initial", "label": "Ticket detail", "fullPage": true }, { "id": "resolution", "label": "Reasoned case judgment", "interaction": [ { "action": "click", "selector": ".ticket-thread-composer textarea" } ], "fullPage": true } ] }, { "id": "launch", "label": "Natural request with optional recipe and resources", "path": "/w/tickets/workers/new?ticketId=T-1&ticketTitle=Compare%20options%20without%20deciding&initialInput=Return%20options%20without%20a%20conclusion.%20Review%20is%20unnecessary.", "goal": "Choose the general Ticket worker, no mandatory repository or Flow", "dataState": "Member with embedded and remote Runtimes, read-only external grant available but not claimed", "ready": { "kind": "selector", "selector": ".worker-launch-form" }, "capturePoints": [ { "id": "initial", "label": "Ticket launch", "fullPage": true } ] }, { "id": "list", "label": "Member creates a repository-free Ticket", "path": "/w/tickets/tickets", "goal": "Search one server-ordered Ticket list with typed qualifiers; create without a repository", "dataState": "Default open cases; closed reason search and optional creation", "ready": { "kind": "selector", "selector": ".ticket-list-row" }, "capturePoints": [ { "id": "initial", "label": "Case list", "fullPage": true }, { "id": "create", "label": "Optional resources", "interaction": [ { "action": "click", "selector": "button:has-text(\"Add Ticket\")" } ], "ready": { "kind": "selector", "selector": ".ticket-create-form" }, "fullPage": true }, { "id": "reason-query", "label": "Closed cases with a current completed reason", "interaction": [ { "action": "click", "selector": ".ticket-panel-controls button:has-text(\"Cancel\")" }, { "action": "fill", "selector": "input[aria-label=\"Search tickets\"]", "value": "state:closed reason:completed" }, { "action": "click", "selector": "form[aria-label=\"Search tickets\"] button:has-text(\"Search\")" } ], "ready": { "kind": "selector", "selector": ".ticket-list-row:has(.ticket-list-key:text-is(\"T-4\"))" }, "fullPage": true } ] }, { "id": "orchestrator", "path": "/w/tickets/orchestrator", "label": "Current self-reported handling", "goal": "Current self-reported handling", "dataState": "Waiting, inprogress and done independent of case", "ready": { "kind": "selector", "selector": ".orchestrator-assignments" }, "capturePoints": [ { "id": "initial", "label": "Current self-reported handling", "fullPage": true }, { "id": "last-case", "label": "Closed case and final handling result", "interaction": [ { "action": "press", "selector": ".orchestrator-assignment:last-child", "key": "End" } ], "fullPage": true } ] }, { "id": "closed", "path": "/w/tickets/tickets/T-4", "label": "Closed case and retained history", "goal": "Closed case and retained history", "dataState": "Completed closure and replaced/unassigned history", "ready": { "kind": "selector", "selector": ".ticket-detail-header" }, "capturePoints": [ { "id": "initial", "label": "Closed case and retained history", "fullPage": true } ] }, { "id": "permission", "path": "/w/tickets-readonly/tickets/T-2", "label": "Read-only assignment", "goal": "Read-only assignment", "dataState": "Backend assignment eligibility denied", "ready": { "kind": "selector", "selector": ".ticket-detail-header" }, "capturePoints": [ { "id": "initial", "label": "Read-only assignment", "fullPage": true } ] }, { "id": "long", "path": "/w/tickets-long/tickets?q=", "label": "Long list titles and handling", "goal": "Long list titles and handling", "dataState": "Long titles and multiline results", "ready": { "kind": "selector", "selector": ".ticket-list-row" }, "capturePoints": [ { "id": "initial", "label": "Long list titles and handling", "fullPage": true }, { "id": "last-case", "label": "Closed case and final handling result", "interaction": [ { "action": "press", "selector": ".ticket-list-rows > li:last-child .ticket-list-row", "key": "End" } ], "fullPage": true } ] }, { "id": "empty", "path": "/w/tickets-empty/orchestrator", "label": "No current assignments", "goal": "No current assignments", "dataState": "Empty response", "ready": { "kind": "selector", "selector": ".orchestrator-assignments" }, "capturePoints": [ { "id": "initial", "label": "No current assignments", "fullPage": true } ] }, { "id": "error", "path": "/w/tickets-error/tickets", "label": "Query failure recovery", "goal": "Query failure recovery", "dataState": "503 query, single list error and retry", "ready": { "kind": "selector", "selector": "[role=alert]" }, "capturePoints": [ { "id": "initial", "label": "Query failure recovery", "fullPage": true } ] }, { "id": "unknown", "path": "/w/tickets-unknown/orchestrator", "label": "Unknown historical handling", "goal": "Unknown historical handling", "dataState": "Null handling without inference", "ready": { "kind": "selector", "selector": ".orchestrator-assignments" }, "capturePoints": [ { "id": "initial", "label": "Unknown historical handling", "fullPage": true } ] }, { "id": "running", "path": "/w/tickets-running/tickets/T-2", "label": "Waiting with running Orchestrator Worker", "goal": "Waiting with running Orchestrator Worker", "dataState": "Waiting remains waiting while Worker is running", "ready": { "kind": "selector", "selector": ".ticket-detail-header" }, "capturePoints": [ { "id": "initial", "label": "Waiting with running Orchestrator Worker", "fullPage": true } ] }, { "id": "mixed", "path": "/w/tickets/tickets?q=", "label": "Explicit empty query includes both case states", "goal": "Scan open and closed cases in one server-ordered list", "dataState": "Open+done, open+waiting, inprogress with MR, closed with history", "ready": { "kind": "selector", "selector": ".ticket-list-row:has(.ticket-list-key:text-is(\"T-4\"))" }, "capturePoints": [ { "id": "initial", "label": "Mixed-state flat list", "fullPage": true } ] }, { "id": "list-empty", "path": "/w/tickets-empty/tickets?q=", "label": "No matching Tickets", "goal": "Distinguish an empty list from a failed read", "dataState": "Empty response", "ready": { "kind": "selector", "selector": ".ticket-list :text-is(\"No tickets match this query.\")" }, "capturePoints": [ { "id": "initial", "label": "Empty Ticket list", "fullPage": true } ] }, { "id": "invalid-query", "path": "/w/tickets/tickets?q=state%3Aclose", "label": "Invalid recognized state qualifier", "goal": "Correct a query without issuing a broad fallback read", "dataState": "Rejected close alias", "ready": { "kind": "selector", "selector": "[role=alert]" }, "capturePoints": [ { "id": "initial", "label": "Query validation error", "fullPage": true } ] } ], "processes": [ { "id": "ticket-fixture", "command": "deno", "cwd": "..", "args": [ "run", "--allow-net", "--allow-read", "browser-tests/ticket_fixture_server.ts", "15289", "../../web/workspace/build" ], "readyUrl": "http://127.0.0.1:15289/health" } ] }