{ "schemaVersion": 1, "id": "journal-browser-dark", "title": "Journal browser UI fixture — dark", "baseUrl": "http://127.0.0.1:15287", "colorScheme": "dark", "reducedMotion": "reduce", "personas": [ { "id": "fixture", "label": "HTTP-only Journal UI fixture", "auth": { "kind": "anonymous" } } ], "viewports": [ { "label": "desktop", "width": 1440, "height": 900 }, { "label": "narrow", "width": 768, "height": 900 }, { "label": "mobile", "width": 390, "height": 844 } ], "routes": [ { "id": "sessions", "label": "Session journals", "path": "/w/memory-review/memory/release-coordination-subject-with-a-deliberately-long-stable-identity-for-responsive-review/journal?view=sessions", "goal": "Choose among saved Session journals and distinguish pending work from source presence.", "dataState": "Two Sessions, one with unreflected sources; deleted versus unavailable originals; bounded next page.", "ready": { "kind": "selector", "selector": ".session-list > li" }, "capturePoints": [ { "id": "initial", "label": "Multiple Sessions" }, { "id": "source-state", "label": "Missing and unavailable originals", "interaction": [ { "action": "click", "selector": ".session-list li:first-child summary" } ] } ] }, { "id": "list", "label": "Literal search results", "path": "/w/memory-review/memory/release-coordination-subject-with-a-deliberately-long-stable-identity-for-responsive-review/journal?q=release%20%5Ba%2Bb%5D%20%25_", "goal": "Find literal text across Sessions and continue a bounded search.", "dataState": "Sixteen matching events across two Sessions with fixed/open states and a continuation.", "ready": { "kind": "selector", "selector": ".entry-list > li" }, "capturePoints": [ { "id": "initial", "label": "Literal search results" } ] }, { "id": "detail-missing", "label": "Saved Journal with deleted original", "path": "/w/memory-review/memory/release-coordination-subject-with-a-deliberately-long-stable-identity-for-responsive-review/journal?journal=journal-release&entry=entry-00", "goal": "Read narrative, correction and related Memory without restoring a Worker or original Session.", "dataState": "Open event, three of eight related Memories, correcting entry; original conversation is deleted.", "ready": { "kind": "selector", "selector": "[data-journal-view=detail] .related-list a" }, "capturePoints": [ { "id": "initial", "label": "Narrative and open event" }, { "id": "related", "label": "Correction and related Memory preview", "interaction": [ { "action": "click", "selector": "#related-memory-title" } ] }, { "id": "source", "label": "Deleted original; saved narrative independent", "interaction": [ { "action": "click", "selector": "section[aria-label=原資料] h2" } ] } ] }, { "id": "detail-unavailable", "label": "Journal with unavailable original", "path": "/w/memory-review/memory/release-coordination-subject-with-a-deliberately-long-stable-identity-for-responsive-review/journal?journal=journal-review&entry=entry-01", "goal": "Distinguish inability to check the original from confirmed deletion.", "dataState": "Fixed event remains readable, but original presence/permission is unavailable.", "ready": { "kind": "selector", "selector": "[data-journal-view=detail] .related-list a" }, "capturePoints": [ { "id": "source", "label": "Unavailable original, not deleted", "interaction": [ { "action": "click", "selector": "section[aria-label=原資料] h2" } ] } ] }, { "id": "memory", "label": "Memory links back to exact Journal events", "path": "/w/memory-review/memory/release-coordination-subject-with-a-deliberately-long-stable-identity-for-responsive-review/memory-decision-with-a-deliberately-long-stable-identity-for-overflow-review-0000000001?change_id=change-current", "goal": "Identify Journal targets by title and date, with bounded continuation and separate original-source status.", "dataState": "Three of eight persisted candidate links, including missing/unavailable originals and reconsideration.", "ready": { "kind": "selector", "selector": "#related-journal .journal-link-list a" }, "capturePoints": [ { "id": "related", "label": "Journal title/date preview", "interaction": [ { "action": "click", "selector": "#related-journal-heading" } ] }, { "id": "source", "label": "Originals separate from Journal links", "interaction": [ { "action": "click", "selector": "section[aria-label=原資料] h2" } ] } ] }, { "id": "memory-unconnected", "label": "Unconnected Memory", "path": "/w/memory-review/memory/release-coordination-subject-with-a-deliberately-long-stable-identity-for-responsive-review/memory-resolved-0002?change_id=change-earlier", "goal": "Recognize a missing persisted connection without fabricating a target or pending reason.", "dataState": "Immutable historical change with insufficient_source; no Journal anchors.", "ready": { "kind": "selector", "selector": "#related-journal .empty-copy" }, "capturePoints": [ { "id": "unconnected", "label": "Unconnected is not pending", "interaction": [ { "action": "click", "selector": "#related-journal-heading" } ] } ] }, { "id": "no-journal", "label": "No saved Journal", "path": "/w/memory-review/memory/empty-subject/journal?view=sessions", "goal": "Distinguish no saved Journal from pending, no search results and read failure.", "dataState": "Successful empty Session-journal page.", "ready": { "kind": "selector", "selector": "[data-journal-view=list] [role=status]" }, "capturePoints": [ { "id": "initial", "label": "No saved Journal" } ] }, { "id": "no-search-result", "label": "No literal search matches", "path": "/w/memory-review/memory/release-coordination-subject-with-a-deliberately-long-stable-identity-for-responsive-review/journal?q=definitely-no-such-literal", "goal": "Keep the query visible when search succeeds with zero results.", "dataState": "Successful empty search, not an unavailable Journal.", "ready": { "kind": "selector", "selector": "[data-journal-view=list] [role=status]" }, "capturePoints": [ { "id": "initial", "label": "No literal search matches" } ] }, { "id": "denied", "label": "Journal read denied", "path": "/w/memory-review/memory/release-coordination-subject-with-a-deliberately-long-stable-identity-for-responsive-review/journal?journal=journal-denied&entry=entry-00", "goal": "Show a read failure rather than inventing an empty or deleted Journal.", "dataState": "Intentional fixture HTTP 403; verifies error presentation only, not backend authorization.", "ready": { "kind": "selector", "selector": "[data-journal-view=detail] [role=alert]" }, "capturePoints": [ { "id": "initial", "label": "Journal read denied" } ] }, { "id": "request-failure", "label": "Journal list unavailable", "path": "/w/memory-review/memory/release-coordination-subject-with-a-deliberately-long-stable-identity-for-responsive-review/journal?q=fixture-failure", "goal": "Keep request failure distinct from zero matching entries.", "dataState": "Intentional fixture HTTP 503 with the search query retained.", "ready": { "kind": "selector", "selector": "[data-journal-view=list] [role=alert]" }, "capturePoints": [ { "id": "initial", "label": "Journal list unavailable" } ] } ], "processes": [ { "id": "memory-fixture", "command": "deno", "cwd": "..", "args": [ "run", "--allow-net", "--allow-read", "browser-tests/memory_document_fixture_server.ts", "15287", "../../web/workspace/build" ], "readyUrl": "http://127.0.0.1:15287/health" } ] }