\u001b[39m\n \u001b[0mRegistrerte søknadsfrister og oppfølgingsdatoer, gruppert etter lagret kalenderdato. Klokkeslett og opprinnelige tidssoner utledes ikke. Intervjuavtaler lagres ikke her; oppgaver uten dato vises i Påminnelser nedenfor.\u001b[0m\n \u001b[36m
\u001b[39m\n\u001b[36m\u001b[39m\n at Object.getElementError (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\@testing-library\\dom\\dist\\config.js:37:19)\n at C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\@testing-library\\dom\\dist\\query-helpers.js:76:38\n at C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\@testing-library\\dom\\dist\\query-helpers.js:52:17\n at C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\@testing-library\\dom\\dist\\query-helpers.js:95:19\n at Object.getByRole (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\calendar-agenda.test.tsx:52:17)"],"fullName":"locale changes translate controls without repeating the read or translating source text","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"startAt":1793714541094,"status":"failed","title":"locale changes translate controls without repeating the read or translating source text"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"failed read offers bounded retry and never claims an empty successful calendar","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793714541495,"status":"pending","title":"failed read offers bounded retry and never claims an empty successful calendar"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"invalid and unknown-kind fixture data is not turned into guessed events","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793714541496,"status":"pending","title":"invalid and unknown-kind fixture data is not turned into guessed events"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"month navigation requests only the selected calendar range","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793714541496,"status":"pending","title":"month navigation requests only the selected calendar range"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"view preference is scoped to the signed-in owner","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793714541496,"status":"pending","title":"view preference is scoped to the signed-in owner"}],"endTime":1793714541513,"message":" ● locale changes translate controls without repeating the read or translating source text\n\n TestingLibraryElementError: Unable to find an accessible element with the role \"combobox\" and name \"Valgt måned\"\n\n Here are the accessible roles:\n\n banner:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n heading:\n\n Name \"Kalender\":\n \u001b[36m\u001b[39m\n\n Name \"15. nov. 2026\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n paragraph:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n group:\n\n Name \"Kalendervisning\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n button:\n\n Name \"Agenda\":\n \u001b[36m\u001b[39m\n\n Name \"Måned\":\n \u001b[36m\u001b[39m\n\n Name \"Forrige måned\":\n \u001b[36m\u001b[39m\n\n Name \"Neste måned\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n region:\n\n Name \"Kalender\":\n \u001b[36m\u001b[39m\n\n Name \"15. nov. 2026\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n status:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n article:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n time:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n link:\n\n Name \"Recorded teacher role · School\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n\n Ignored nodes: comments, script, style\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[0mRegistrerte søknadsfrister og oppfølgingsdatoer, gruppert etter lagret kalenderdato. Klokkeslett og opprinnelige tidssoner utledes ikke. Intervjuavtaler lagres ikke her; oppgaver uten dato vises i Påminnelser nedenfor.\u001b[0m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n\n 50 | act(() => window.dispatchEvent(new StorageEvent('storage', { key: 'uiLanguage', newValue: 'nb' })));\n 51 | expect(screen.getByRole('button', { name: translations.nb.calendarMonth })).toBeVisible();\n > 52 | expect(screen.getByRole('combobox', { name: translations.nb.calendarSelectedMonth })).toHaveTextContent(new Intl.DateTimeFormat('nb-NO', { month: 'long', year: 'numeric', timeZone: 'UTC' }).format(new Date(`${month}-01T12:00:00Z`)));\n | ^\n 53 | expect(screen.getByRole('link', { name: /Recorded teacher role/ })).toBeVisible();\n 54 | expect(get).toHaveBeenCalledTimes(1);\n 55 | });\n\n at Object.getElementError (node_modules/@testing-library/dom/dist/config.js:37:19)\n at node_modules/@testing-library/dom/dist/query-helpers.js:76:38\n at node_modules/@testing-library/dom/dist/query-helpers.js:52:17\n at node_modules/@testing-library/dom/dist/query-helpers.js:95:19\n at Object.getByRole (src/calendar-agenda.test.tsx:52:17)\n","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\calendar-agenda.test.tsx","startTime":1793714536400,"status":"failed","summary":""}],"wasInterrupted":false}
diff --git a/docs/ui-modernisation/evidence/documents-inbox/frontend/a3-documents-inbox-baseline.json b/docs/ui-modernisation/evidence/documents-inbox/frontend/a3-documents-inbox-baseline.json
new file mode 100644
index 00000000..0a0e1b37
--- /dev/null
+++ b/docs/ui-modernisation/evidence/documents-inbox/frontend/a3-documents-inbox-baseline.json
@@ -0,0 +1 @@
+{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":2,"numPassedTests":66,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":2,"numTotalTests":66,"openHandles":[],"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesRemovedList":[],"filesUnmatched":0,"filesUpdated":0,"matched":0,"total":0,"unchecked":0,"uncheckedKeysByFile":[],"unmatched":0,"updated":0},"startTime":1793713975453,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":["CorrespondenceInboxPage"],"duration":470,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage [P7-11 inbox] resumed draft fallback metadata follows locale without mutating stored prose or refetching","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793713985902,"status":"passed","title":"[P7-11 inbox] resumed draft fallback metadata follows locale without mutating stored prose or refetching"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":316,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage renders correspondence inbox items and reloads with filters","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"startAt":1793713986372,"status":"passed","title":"renders correspondence inbox items and reloads with filters"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":93,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage keeps saved correspondence visible when provider status is unavailable","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793713986688,"status":"passed","title":"keeps saved correspondence visible when provider status is unavailable"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":94,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage opens provider-backed plain-text message detail in the hub","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793713986781,"status":"passed","title":"opens provider-backed plain-text message detail in the hub"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":134,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage navigates beyond the first correspondence page","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793713986875,"status":"passed","title":"navigates beyond the first correspondence page"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":252,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage unlinks a Gmail thread only after confirmation and returns it to review","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793713987010,"status":"passed","title":"unlinks a Gmail thread only after confirmation and returns it to review"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":183,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage falls back to the saved copy when provider detail is unavailable","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793713987262,"status":"passed","title":"falls back to the saved copy when provider detail is unavailable"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":957,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage keeps replies editable and requires final send confirmation","invocations":1,"location":null,"numPassingAsserts":14,"retryReasons":[],"startAt":1793713987445,"status":"passed","title":"keeps replies editable and requires final send confirmation"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":384,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage saves an incomplete reply with its server delivery identity","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793713988402,"status":"passed","title":"saves an incomplete reply with its server delivery identity"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":285,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage resumes a saved draft and surfaces revision conflicts without overwriting it","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793713988786,"status":"passed","title":"resumes a saved draft and surfaces revision conflicts without overwriting it"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":581,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage persists a new delivery identity only after a definitive failed attempt","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793713989071,"status":"passed","title":"persists a new delivery identity only after a definitive failed attempt"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":595,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage starts a new-message draft only from an owned job and send-capable provider choice","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793713989652,"status":"passed","title":"starts a new-message draft only from an owned job and send-capable provider choice"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":663,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage searches the complete server-side job choice set while composing","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793713990247,"status":"passed","title":"searches the complete server-side job choice set while composing"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":658,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage does not offer retry when delivery is uncertain","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793713990910,"status":"passed","title":"does not offer retry when delivery is uncertain"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":221,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage uses one hub for linked messages and recruitment suggestions","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793713991568,"status":"passed","title":"uses one hub for linked messages and recruitment suggestions"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":102,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage localizes inbox controls while preserving correspondence content","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793713991789,"status":"passed","title":"localizes inbox controls while preserving correspondence content"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":101,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage legacy Gmail review route redirects into the consolidated hub filter","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793713991891,"status":"passed","title":"legacy Gmail review route redirects into the consolidated hub filter"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":94,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage failed inbox reads retain a current-language error and recover with one explicit GET-only Retry","invocations":1,"location":null,"numPassingAsserts":13,"retryReasons":[],"startAt":1793713991993,"status":"passed","title":"failed inbox reads retain a current-language error and recover with one explicit GET-only Retry"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":310,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage a late old page cannot overwrite the latest query and page-one inbox snapshot","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793713992087,"status":"passed","title":"a late old page cannot overwrite the latest query and page-one inbox snapshot"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":295,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage message Retry replays the captured owned detail read without hiding it and localizes saved-copy fallback","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793713992397,"status":"passed","title":"message Retry replays the captured owned detail read without hiding it and localizes saved-copy fallback"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":440,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage hidden or inactive details never resume a saved-copy fallback and hub return preserves inbox context","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793713992692,"status":"passed","title":"hidden or inactive details never resume a saved-copy fallback and hub return preserves inbox context"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":240,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage provider status Retry is isolated from saved messages and drafts and live locale changes cause no reads","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"startAt":1793713993132,"status":"passed","title":"provider status Retry is isolated from saved messages and drafts and live locale changes cause no reads"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":532,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage confirmed unlink owns pending actions and a failed successful-write refresh recovers with GET only","invocations":1,"location":null,"numPassingAsserts":13,"retryReasons":[],"startAt":1793713993372,"status":"passed","title":"confirmed unlink owns pending actions and a failed successful-write refresh recovers with GET only"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":570,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage literal all search preserves source and hash and hides another query snapshot while retaining same-query refresh data","invocations":1,"location":null,"numPassingAsserts":29,"retryReasons":[],"startAt":1793713993904,"status":"passed","title":"literal all search preserves source and hash and hides another query snapshot while retaining same-query refresh data"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":238,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage typing an inbox search keeps one natural Back step to the prior screen and preserves filter context","invocations":1,"location":null,"numPassingAsserts":14,"retryReasons":[],"startAt":1793713994474,"status":"passed","title":"typing an inbox search keeps one natural Back step to the prior screen and preserves filter context"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":451,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage held draft Save captures one write and locks edits, Send, Discard and every draft replacement entry","invocations":1,"location":null,"numPassingAsserts":15,"retryReasons":[],"startAt":1793713994712,"status":"passed","title":"held draft Save captures one write and locks edits, Send, Discard and every draft replacement entry"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":1142,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage double Review creates one confirmation, Cancel sends nothing and explicit double Send owns one captured attempt","invocations":1,"location":null,"numPassingAsserts":14,"retryReasons":[],"startAt":1793713995163,"status":"passed","title":"double Review creates one confirmation, Cancel sends nothing and explicit double Send owns one captured attempt"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":3942,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage recipient, subject and body edits cannot erase any recorded delivery state or rotate its attempt identity","invocations":1,"location":null,"numPassingAsserts":70,"retryReasons":[],"startAt":1793713996305,"status":"passed","title":"recipient, subject and body edits cannot erase any recorded delivery state or rotate its attempt identity"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":1430,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage generic 409 cannot prepare a new attempt while an authoritative failed result requires one explicit server rotation","invocations":1,"location":null,"numPassingAsserts":14,"retryReasons":[],"startAt":1793714000247,"status":"passed","title":"generic 409 cannot prepare a new attempt while an authoritative failed result requires one explicit server rotation"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":2056,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage recipient-only and subject-only unsaved changes require replacement and discard confirmation whose Cancel retains the draft","invocations":1,"location":null,"numPassingAsserts":22,"retryReasons":[],"startAt":1793714001677,"status":"passed","title":"recipient-only and subject-only unsaved changes require replacement and discard confirmation whose Cancel retains the draft"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":748,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage saved-draft initial read and post-save refresh failures recover with GET-only Retry without replaying the successful Save","invocations":1,"location":null,"numPassingAsserts":13,"retryReasons":[],"startAt":1793714003733,"status":"passed","title":"saved-draft initial read and post-save refresh failures recover with GET-only Retry without replaying the successful Save"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":431,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage a late Save after inbox unmount cannot refresh drafts or attach its result to another page","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793714004481,"status":"passed","title":"a late Save after inbox unmount cannot refresh drafts or attach its result to another page"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":566,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage a held managed-draft 409 retains recipient, subject, body and revision with current-language original Save recovery","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"startAt":1793714004912,"status":"passed","title":"a held managed-draft 409 retains recipient, subject, body and revision with current-language original Save recovery"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":1517,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage server attempt rotation preserves three unsaved fields and their dirty state while the next send uses the new identity","invocations":1,"location":null,"numPassingAsserts":15,"retryReasons":[],"startAt":1793714005478,"status":"passed","title":"server attempt rotation preserves three unsaved fields and their dirty state while the next send uses the new identity"},{"ancestorTitles":["CorrespondenceInboxPage"],"duration":600,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CorrespondenceInboxPage a committed Save starts a fresh draft-list read despite an older pending GET and rejects the late old snapshot","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"startAt":1793714006995,"status":"passed","title":"a committed Save starts a fresh draft-list read despite an older pending GET and rejects the late old snapshot"}],"endTime":1793714007597,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\correspondence-inbox-page.test.tsx","startTime":1793713977509,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["en unknown attachment purposes"],"duration":154,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"en unknown attachment purposes uses the localized Other label for constructor","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793714009040,"status":"passed","title":"uses the localized Other label for constructor"},{"ancestorTitles":["en unknown attachment purposes"],"duration":94,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"en unknown attachment purposes uses the localized Other label for toString","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793714009194,"status":"passed","title":"uses the localized Other label for toString"},{"ancestorTitles":["en unknown attachment purposes"],"duration":87,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"en unknown attachment purposes uses the localized Other label for __proto__","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793714009289,"status":"passed","title":"uses the localized Other label for __proto__"},{"ancestorTitles":["nb unknown attachment purposes"],"duration":91,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"nb unknown attachment purposes uses the localized Other label for constructor","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793714009376,"status":"passed","title":"uses the localized Other label for constructor"},{"ancestorTitles":["nb unknown attachment purposes"],"duration":94,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"nb unknown attachment purposes uses the localized Other label for toString","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793714009467,"status":"passed","title":"uses the localized Other label for toString"},{"ancestorTitles":["nb unknown attachment purposes"],"duration":95,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"nb unknown attachment purposes uses the localized Other label for __proto__","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793714009561,"status":"passed","title":"uses the localized Other label for __proto__"},{"ancestorTitles":["en uploaded wall-clock dates"],"duration":107,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"en uploaded wall-clock dates does not invent a timestamp from 2026-02-30T09:15:00","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793714009656,"status":"passed","title":"does not invent a timestamp from 2026-02-30T09:15:00"},{"ancestorTitles":["en uploaded wall-clock dates"],"duration":60,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"en uploaded wall-clock dates does not invent a timestamp from 2026-02-12T24:15:00","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793714009764,"status":"passed","title":"does not invent a timestamp from 2026-02-12T24:15:00"},{"ancestorTitles":["en uploaded wall-clock dates"],"duration":46,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"en uploaded wall-clock dates does not invent a timestamp from 2026-02-12T09:61:00","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793714009824,"status":"passed","title":"does not invent a timestamp from 2026-02-12T09:61:00"},{"ancestorTitles":["en uploaded wall-clock dates"],"duration":46,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"en uploaded wall-clock dates does not invent a timestamp from 2026-02-12T09:15:00junk","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793714009870,"status":"passed","title":"does not invent a timestamp from 2026-02-12T09:15:00junk"},{"ancestorTitles":["en uploaded wall-clock dates"],"duration":44,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"en uploaded wall-clock dates preserves fractional-second wall-clock metadata without timezone conversion","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793714009916,"status":"passed","title":"preserves fractional-second wall-clock metadata without timezone conversion"},{"ancestorTitles":["nb uploaded wall-clock dates"],"duration":47,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"nb uploaded wall-clock dates does not invent a timestamp from 2026-02-30T09:15:00","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793714009961,"status":"passed","title":"does not invent a timestamp from 2026-02-30T09:15:00"},{"ancestorTitles":["nb uploaded wall-clock dates"],"duration":44,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"nb uploaded wall-clock dates does not invent a timestamp from 2026-02-12T24:15:00","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793714010008,"status":"passed","title":"does not invent a timestamp from 2026-02-12T24:15:00"},{"ancestorTitles":["nb uploaded wall-clock dates"],"duration":81,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"nb uploaded wall-clock dates does not invent a timestamp from 2026-02-12T09:61:00","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793714010052,"status":"passed","title":"does not invent a timestamp from 2026-02-12T09:61:00"},{"ancestorTitles":["nb uploaded wall-clock dates"],"duration":92,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"nb uploaded wall-clock dates does not invent a timestamp from 2026-02-12T09:15:00junk","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793714010134,"status":"passed","title":"does not invent a timestamp from 2026-02-12T09:15:00junk"},{"ancestorTitles":["nb uploaded wall-clock dates"],"duration":91,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"nb uploaded wall-clock dates preserves fractional-second wall-clock metadata without timezone conversion","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793714010226,"status":"passed","title":"preserves fractional-second wall-clock metadata without timezone conversion"},{"ancestorTitles":[],"duration":102,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P7-07 documents] validates URL filters and reads one metadata page with literal Nordic search","invocations":1,"location":null,"numPassingAsserts":10,"retryReasons":[],"startAt":1793714010317,"status":"passed","title":"[P7-07 documents] validates URL filters and reads one metadata page with literal Nordic search"},{"ancestorTitles":[],"duration":367,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P7-07 documents] server pagination and filter history preserve unknown query, hash and router state","invocations":1,"location":null,"numPassingAsserts":15,"retryReasons":[],"startAt":1793714010419,"status":"passed","title":"[P7-07 documents] server pagination and filter history preserve unknown query, hash and router state"},{"ancestorTitles":[],"duration":94,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P7-07 documents] literal search all remains free text and preserves unrelated navigation context","invocations":1,"location":null,"numPassingAsserts":12,"retryReasons":[],"startAt":1793714010786,"status":"passed","title":"[P7-07 documents] literal search all remains free text and preserves unrelated navigation context"},{"ancestorTitles":[],"duration":248,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P7-07 documents] a batched sort selection and immediate search preserve both filters and navigation context","invocations":1,"location":null,"numPassingAsserts":23,"retryReasons":[],"startAt":1793714010880,"status":"passed","title":"[P7-07 documents] a batched sort selection and immediate search preserve both filters and navigation context"},{"ancestorTitles":[],"duration":302,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P7-07 documents] incompatible pending and failed queries hide old actions and late results cannot replace current metadata","invocations":1,"location":null,"numPassingAsserts":12,"retryReasons":[],"startAt":1793714011128,"status":"passed","title":"[P7-07 documents] incompatible pending and failed queries hide old actions and late results cannot replace current metadata"},{"ancestorTitles":[],"duration":140,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P7-07 documents] Retry is one guarded GET and a completion after leaving cannot publish or start follow-up work","invocations":1,"location":null,"numPassingAsserts":10,"retryReasons":[],"startAt":1793714011430,"status":"passed","title":"[P7-07 documents] Retry is one guarded GET and a completion after leaving cannot publish or start follow-up work"},{"ancestorTitles":[],"duration":190,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P7-07 documents] a true empty index, filtered no-match and request failure remain distinct","invocations":1,"location":null,"numPassingAsserts":10,"retryReasons":[],"startAt":1793714011570,"status":"passed","title":"[P7-07 documents] a true empty index, filtered no-match and request failure remain distinct"},{"ancestorTitles":[],"duration":91,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P7-07 documents] English and Bokmål presentation changes preserve query context without a metadata refetch","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"startAt":1793714011760,"status":"passed","title":"[P7-07 documents] English and Bokmål presentation changes preserve query context without a metadata refetch"},{"ancestorTitles":[],"duration":114,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P7-07 documents] an out-of-range page offers explicit first-page recovery without claiming an empty index","invocations":1,"location":null,"numPassingAsserts":17,"retryReasons":[],"startAt":1793714011851,"status":"passed","title":"[P7-07 documents] an out-of-range page offers explicit first-page recovery without claiming an empty index"},{"ancestorTitles":[],"duration":140,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P7-07 documents] seven resource kinds retain exact source actions, frozen provenance and honest date labels","invocations":1,"location":null,"numPassingAsserts":24,"retryReasons":[],"startAt":1793714011966,"status":"passed","title":"[P7-07 documents] seven resource kinds retain exact source actions, frozen provenance and honest date labels"},{"ancestorTitles":[],"duration":178,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P7-07 documents] attachment download is explicit, API-relative and single-flight with original MIME, filename and URL disposal","invocations":1,"location":null,"numPassingAsserts":13,"retryReasons":[],"startAt":1793714012106,"status":"passed","title":"[P7-07 documents] attachment download is explicit, API-relative and single-flight with original MIME, filename and URL disposal"},{"ancestorTitles":[],"duration":170,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P7-07 documents] a completed download preserves deliberate Search focus instead of restoring the old button","invocations":1,"location":null,"numPassingAsserts":12,"retryReasons":[],"startAt":1793714012284,"status":"passed","title":"[P7-07 documents] a completed download preserves deliberate Search focus instead of restoring the old button"},{"ancestorTitles":[],"duration":277,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P7-07 documents] download errors retry only that file and late download completion after leaving creates no URL","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"startAt":1793714012454,"status":"passed","title":"[P7-07 documents] download errors retry only that file and late download completion after leaving creates no URL"},{"ancestorTitles":[],"duration":71,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P7-07 documents] a published historical CV retains its percent-encoded Nordic public slug without fetching its body","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793714012731,"status":"passed","title":"[P7-07 documents] a published historical CV retains its percent-encoded Nordic public slug without fetching its body"},{"ancestorTitles":[],"duration":46,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P7-07 documents] malformed external and mismatched resource paths never become source, public or download actions","invocations":1,"location":null,"numPassingAsserts":15,"retryReasons":[],"startAt":1793714012802,"status":"passed","title":"[P7-07 documents] malformed external and mismatched resource paths never become source, public or download actions"}],"endTime":1793714012848,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\documents-page.test.tsx","startTime":1793714007609,"status":"passed","summary":""}],"wasInterrupted":false}
diff --git a/docs/ui-modernisation/evidence/documents-inbox/frontend/a3-documents-inbox-navigation-red.json b/docs/ui-modernisation/evidence/documents-inbox/frontend/a3-documents-inbox-navigation-red.json
new file mode 100644
index 00000000..ff441518
--- /dev/null
+++ b/docs/ui-modernisation/evidence/documents-inbox/frontend/a3-documents-inbox-navigation-red.json
@@ -0,0 +1 @@
+{"numFailedTestSuites":2,"numFailedTests":4,"numPassedTestSuites":0,"numPassedTests":0,"numPendingTestSuites":0,"numPendingTests":66,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":2,"numTotalTests":70,"openHandles":[],"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesRemovedList":[],"filesUnmatched":0,"filesUpdated":0,"matched":0,"total":0,"unchecked":0,"uncheckedKeysByFile":[],"unmatched":0,"updated":0},"startTime":1793714084717,"success":false,"testResults":[{"assertionResults":[{"ancestorTitles":["CorrespondenceInboxPage"],"duration":366,"failing":false,"failureDetails":[{"name":"TestingLibraryElementError"}],"failureMessages":["TestingLibraryElementError: Unable to find an accessible element with the role \"button\" and name \"emailInboxJumpMessages\"\n\nHere are the accessible roles:\n\n status:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n region:\n\n Name \"Job email\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n banner:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n heading:\n\n Name \"Job email\":\n \u001b[36m\u001b[39m\n\n Name \"Interview invite\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n paragraph:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n button:\n\n Name \"Linked messages\":\n \u001b[36m\u001b[39m\n\n Name \"Review suggestions\":\n \u001b[36m\u001b[39m\n\n Name \"Compose new email\":\n \u001b[36m\u001b[39m\n\n Name \"Refresh\":\n \u001b[36m\u001b[39m\n\n Name \"View message\":\n \u001b[36m\u001b[39m\n\n Name \"Open job\":\n \u001b[36m\u001b[39m\n\n Name \"Unlink thread\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n group:\n\n Name \"Email provider status\":\n \u001b[36m\u001b[39m\n\n Name \"Job\":\n \u001b[36m\u001b[39m\n\n Name \"Saved email draft\":\n \u001b[36m\u001b[39m\n\n Name \"Linked messages\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n alert:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n textbox:\n\n Name \"Search\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n combobox:\n\n Name \"Direction\":\n \u001b[36m\u001b[39m\n\n Name \"Link state\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n article:\n\n Name \"Interview invite\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n\nIgnored nodes: comments, script, style\n\u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mOutlook: Not connected\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n region:\n\n Name \"Jobb-e-post\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n banner:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n heading:\n\n Name \"Jobb-e-post\":\n \u001b[36m\u001b[39m\n\n Name \"Interview invite\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n paragraph:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n button:\n\n Name \"Tilknyttede meldinger\":\n \u001b[36m\u001b[39m\n\n Name \"Gjennomgå forslag\":\n \u001b[36m\u001b[39m\n\n Name \"Skriv ny e-post\":\n \u001b[36m\u001b[39m\n\n Name \"Oppdater\":\n \u001b[36m\u001b[39m\n\n Name \"Vis melding\":\n \u001b[36m\u001b[39m\n\n Name \"Åpne jobb\":\n \u001b[36m\u001b[39m\n\n Name \"Fjern trådtilknytning\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n group:\n\n Name \"Status for e-postleverandører\":\n \u001b[36m\u001b[39m\n\n Name \"Jobb\":\n \u001b[36m\u001b[39m\n\n Name \"Lagret e-postutkast\":\n \u001b[36m\u001b[39m\n\n Name \"Tilknyttede meldinger\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n alert:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n textbox:\n\n Name \"Søk\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n combobox:\n\n Name \"Retning\":\n \u001b[36m\u001b[39m\n\n Name \"Tilknytningsstatus\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n article:\n\n Name \"Interview invite\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n\nIgnored nodes: comments, script, style\n\u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mGmail: owner@gmail.test · Kun lesing; koble til på nytt for å sende\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mOutlook: Ikke tilkoblet\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n region:\n\n Name \"Job email\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n banner:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n heading:\n\n Name \"Job email\":\n \u001b[36m\u001b[39m\n\n Name \"Interview invite\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n paragraph:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n button:\n\n Name \"Linked messages\":\n \u001b[36m\u001b[39m\n\n Name \"Review suggestions\":\n \u001b[36m\u001b[39m\n\n Name \"Compose new email\":\n \u001b[36m\u001b[39m\n\n Name \"Refresh\":\n \u001b[36m\u001b[39m\n\n Name \"View message\":\n \u001b[36m\u001b[39m\n\n Name \"Open job\":\n \u001b[36m\u001b[39m\n\n Name \"Unlink thread\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n group:\n\n Name \"Email provider status\":\n \u001b[36m\u001b[39m\n\n Name \"Job\":\n \u001b[36m\u001b[39m\n\n Name \"Saved email draft\":\n \u001b[36m\u001b[39m\n\n Name \"Linked messages\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n alert:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n textbox:\n\n Name \"Search\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n combobox:\n\n Name \"Direction\":\n \u001b[36m\u001b[39m\n\n Name \"Link state\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n article:\n\n Name \"Interview invite\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n\n Ignored nodes: comments, script, style\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mOutlook: Not connected\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m 125 | fireEvent.click(screen.getByRole('button', { name: copy('emailInboxJumpMessages', {}, language) }));\n | ^\n 126 | expect(screen.getByRole('region', { name: copy('emailInboxLinkedMessages', {}, language) })).toHaveFocus();\n 127 | fireEvent.click(screen.getByRole('button', { name: copy('emailInboxReturnFilters', {}, language) }));\n 128 | expect(screen.getByRole('textbox', { name: copy('correspondenceSearch', {}, language) })).toHaveFocus();\n\n at Object.getElementError (node_modules/@testing-library/dom/dist/config.js:37:19)\n at node_modules/@testing-library/dom/dist/query-helpers.js:76:38\n at node_modules/@testing-library/dom/dist/query-helpers.js:52:17\n at node_modules/@testing-library/dom/dist/query-helpers.js:95:19\n at getByRole (src/correspondence-inbox-page.test.tsx:125:28)\n\n ● CorrespondenceInboxPage › nb inbox filters and messages support request-free keyboard navigation\n\n TestingLibraryElementError: Unable to find an accessible element with the role \"button\" and name \"emailInboxJumpMessages\"\n\n Here are the accessible roles:\n\n status:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n region:\n\n Name \"Jobb-e-post\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n banner:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n heading:\n\n Name \"Jobb-e-post\":\n \u001b[36m\u001b[39m\n\n Name \"Interview invite\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n paragraph:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n button:\n\n Name \"Tilknyttede meldinger\":\n \u001b[36m\u001b[39m\n\n Name \"Gjennomgå forslag\":\n \u001b[36m\u001b[39m\n\n Name \"Skriv ny e-post\":\n \u001b[36m\u001b[39m\n\n Name \"Oppdater\":\n \u001b[36m\u001b[39m\n\n Name \"Vis melding\":\n \u001b[36m\u001b[39m\n\n Name \"Åpne jobb\":\n \u001b[36m\u001b[39m\n\n Name \"Fjern trådtilknytning\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n group:\n\n Name \"Status for e-postleverandører\":\n \u001b[36m\u001b[39m\n\n Name \"Jobb\":\n \u001b[36m\u001b[39m\n\n Name \"Lagret e-postutkast\":\n \u001b[36m\u001b[39m\n\n Name \"Tilknyttede meldinger\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n alert:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n textbox:\n\n Name \"Søk\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n combobox:\n\n Name \"Retning\":\n \u001b[36m\u001b[39m\n\n Name \"Tilknytningsstatus\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n article:\n\n Name \"Interview invite\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n\n Ignored nodes: comments, script, style\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mGmail: owner@gmail.test · Kun lesing; koble til på nytt for å sende\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mOutlook: Ikke tilkoblet\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m 125 | fireEvent.click(screen.getByRole('button', { name: copy('emailInboxJumpMessages', {}, language) }));\n | ^\n 126 | expect(screen.getByRole('region', { name: copy('emailInboxLinkedMessages', {}, language) })).toHaveFocus();\n 127 | fireEvent.click(screen.getByRole('button', { name: copy('emailInboxReturnFilters', {}, language) }));\n 128 | expect(screen.getByRole('textbox', { name: copy('correspondenceSearch', {}, language) })).toHaveFocus();\n\n at Object.getElementError (node_modules/@testing-library/dom/dist/config.js:37:19)\n at node_modules/@testing-library/dom/dist/query-helpers.js:76:38\n at node_modules/@testing-library/dom/dist/query-helpers.js:52:17\n at node_modules/@testing-library/dom/dist/query-helpers.js:95:19\n at getByRole (src/correspondence-inbox-page.test.tsx:125:28)\n","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\correspondence-inbox-page.test.tsx","startTime":1793714085634,"status":"failed","summary":""},{"assertionResults":[{"ancestorTitles":["en unknown attachment purposes"],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"en unknown attachment purposes uses the localized Other label for constructor","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793714089653,"status":"pending","title":"uses the localized Other label for constructor"},{"ancestorTitles":["en unknown attachment purposes"],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"en unknown attachment purposes uses the localized Other label for toString","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793714089653,"status":"pending","title":"uses the localized Other label for toString"},{"ancestorTitles":["en unknown attachment purposes"],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"en unknown attachment purposes uses the localized Other label for __proto__","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793714089653,"status":"pending","title":"uses the localized Other label for __proto__"},{"ancestorTitles":["nb unknown attachment purposes"],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"nb unknown attachment purposes uses the localized Other label for constructor","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793714089653,"status":"pending","title":"uses the localized Other label for constructor"},{"ancestorTitles":["nb unknown attachment purposes"],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"nb unknown attachment purposes uses the localized Other label for toString","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793714089653,"status":"pending","title":"uses the localized Other label for toString"},{"ancestorTitles":["nb unknown attachment purposes"],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"nb unknown attachment purposes uses the localized Other label for __proto__","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793714089653,"status":"pending","title":"uses the localized Other label for __proto__"},{"ancestorTitles":["en uploaded wall-clock dates"],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"en uploaded wall-clock dates does not invent a timestamp from 2026-02-30T09:15:00","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793714089653,"status":"pending","title":"does not invent a timestamp from 2026-02-30T09:15:00"},{"ancestorTitles":["en uploaded wall-clock dates"],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"en uploaded wall-clock dates does not invent a timestamp from 2026-02-12T24:15:00","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793714089653,"status":"pending","title":"does not invent a timestamp from 2026-02-12T24:15:00"},{"ancestorTitles":["en uploaded wall-clock dates"],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"en uploaded wall-clock dates does not invent a timestamp from 2026-02-12T09:61:00","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793714089653,"status":"pending","title":"does not invent a timestamp from 2026-02-12T09:61:00"},{"ancestorTitles":["en uploaded wall-clock dates"],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"en uploaded wall-clock dates does not invent a timestamp from 2026-02-12T09:15:00junk","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793714089653,"status":"pending","title":"does not invent a timestamp from 2026-02-12T09:15:00junk"},{"ancestorTitles":["en uploaded wall-clock dates"],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"en uploaded wall-clock dates preserves fractional-second wall-clock metadata without timezone conversion","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793714089653,"status":"pending","title":"preserves fractional-second wall-clock metadata without timezone conversion"},{"ancestorTitles":["nb uploaded wall-clock dates"],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"nb uploaded wall-clock dates does not invent a timestamp from 2026-02-30T09:15:00","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793714089653,"status":"pending","title":"does not invent a timestamp from 2026-02-30T09:15:00"},{"ancestorTitles":["nb uploaded wall-clock dates"],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"nb uploaded wall-clock dates does not invent a timestamp from 2026-02-12T24:15:00","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793714089653,"status":"pending","title":"does not invent a timestamp from 2026-02-12T24:15:00"},{"ancestorTitles":["nb uploaded wall-clock dates"],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"nb uploaded wall-clock dates does not invent a timestamp from 2026-02-12T09:61:00","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793714089654,"status":"pending","title":"does not invent a timestamp from 2026-02-12T09:61:00"},{"ancestorTitles":["nb uploaded wall-clock dates"],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"nb uploaded wall-clock dates does not invent a timestamp from 2026-02-12T09:15:00junk","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793714089654,"status":"pending","title":"does not invent a timestamp from 2026-02-12T09:15:00junk"},{"ancestorTitles":["nb uploaded wall-clock dates"],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"nb uploaded wall-clock dates preserves fractional-second wall-clock metadata without timezone conversion","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793714089654,"status":"pending","title":"preserves fractional-second wall-clock metadata without timezone conversion"},{"ancestorTitles":[],"duration":238,"failing":false,"failureDetails":[{"name":"TestingLibraryElementError"}],"failureMessages":["TestingLibraryElementError: Unable to find an accessible element with the role \"button\" and name \"documentsJumpResults\"\n\nHere are the accessible roles:\n\n status:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n button:\n\n Name \"History Back\":\n \u001b[36m\u001b[39m\n\n Name \"Leave documents\":\n \u001b[36m\u001b[39m\n\n Name \"Refresh\":\n \u001b[36m\u001b[39m\n\n Name \"Choose a linked job\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n banner:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n heading:\n\n Name \"Your documents\":\n \u001b[36m\u001b[39m\n\n Name \"Metadata CV ÆØÅ\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n paragraph:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n textbox:\n\n Name \"Search documents\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n combobox:\n\n Name \"Type\":\n \u001b[36m\u001b[39m\n\n Name \"State\":\n \u001b[36m\u001b[39m\n\n Name \"CV visibility\":\n \u001b[36m\u001b[39m\n\n Name \"Linked job\":\n \u001b[36m\u001b[39m\n\n Name \"Sort\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n region:\n\n Name \"Your documents\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n article:\n\n Name \"Metadata CV ÆØÅ\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n time:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n link:\n\n Name \"Open source\":\n \u001b[36m\u001b[39m\n\n Name \"View published CV\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n\nIgnored nodes: comments, script, style\n\u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[0mOpen the original workspace to edit a CV, draft or file. Recorded application snapshots keep their captured contents.\u001b[0m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n button:\n\n Name \"History Back\":\n \u001b[36m\u001b[39m\n\n Name \"Leave documents\":\n \u001b[36m\u001b[39m\n\n Name \"Oppdater\":\n \u001b[36m\u001b[39m\n\n Name \"Velg en tilknyttet stilling\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n banner:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n heading:\n\n Name \"Dine dokumenter\":\n \u001b[36m\u001b[39m\n\n Name \"Metadata CV ÆØÅ\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n paragraph:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n textbox:\n\n Name \"Søk i dokumenter\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n combobox:\n\n Name \"Type\":\n \u001b[36m\u001b[39m\n\n Name \"Tilstand\":\n \u001b[36m\u001b[39m\n\n Name \"CV-synlighet\":\n \u001b[36m\u001b[39m\n\n Name \"Tilknyttet stilling\":\n \u001b[36m\u001b[39m\n\n Name \"Sortering\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n region:\n\n Name \"Dine dokumenter\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n article:\n\n Name \"Metadata CV ÆØÅ\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n time:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n link:\n\n Name \"Åpne opprinnelig arbeidsområde\":\n \u001b[36m\u001b[39m\n\n Name \"Se publisert CV\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n\nIgnored nodes: comments, script, style\n\u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[0mÅpne det opprinnelige arbeidsområdet for å redigere en CV, en kladd eller en fil. Lagrede øyeblikksbilder av søknader beholder innholdet som ble lagret.\u001b[0m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n button:\n\n Name \"History Back\":\n \u001b[36m\u001b[39m\n\n Name \"Leave documents\":\n \u001b[36m\u001b[39m\n\n Name \"Refresh\":\n \u001b[36m\u001b[39m\n\n Name \"Choose a linked job\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n banner:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n heading:\n\n Name \"Your documents\":\n \u001b[36m\u001b[39m\n\n Name \"Metadata CV ÆØÅ\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n paragraph:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n textbox:\n\n Name \"Search documents\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n combobox:\n\n Name \"Type\":\n \u001b[36m\u001b[39m\n\n Name \"State\":\n \u001b[36m\u001b[39m\n\n Name \"CV visibility\":\n \u001b[36m\u001b[39m\n\n Name \"Linked job\":\n \u001b[36m\u001b[39m\n\n Name \"Sort\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n region:\n\n Name \"Your documents\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n article:\n\n Name \"Metadata CV ÆØÅ\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n time:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n link:\n\n Name \"Open source\":\n \u001b[36m\u001b[39m\n\n Name \"View published CV\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n\n Ignored nodes: comments, script, style\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[0mOpen the original workspace to edit a CV, draft or file. Recorded application snapshots keep their captured contents.\u001b[0m\n \u001b[36m
103 | fireEvent.click(screen.getByRole('button', { name: copy('documentsJumpResults', {}, language) }));\n | ^\n 104 | expect(screen.getByRole('region', { name: copy('documentsYourDocuments', {}, language) })).toHaveFocus();\n 105 | fireEvent.click(screen.getByRole('button', { name: copy('documentsReturnFilters', {}, language) }));\n 106 | expect(screen.getByRole('textbox', { name: copy('documentsSearch', {}, language) })).toHaveFocus();\n\n at Object.getElementError (node_modules/@testing-library/dom/dist/config.js:37:19)\n at node_modules/@testing-library/dom/dist/query-helpers.js:76:38\n at node_modules/@testing-library/dom/dist/query-helpers.js:52:17\n at node_modules/@testing-library/dom/dist/query-helpers.js:95:19\n at getByRole (src/documents-page.test.tsx:103:26)\n\n ● nb document filters and results support request-free keyboard navigation\n\n TestingLibraryElementError: Unable to find an accessible element with the role \"button\" and name \"documentsJumpResults\"\n\n Here are the accessible roles:\n\n status:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n button:\n\n Name \"History Back\":\n \u001b[36m\u001b[39m\n\n Name \"Leave documents\":\n \u001b[36m\u001b[39m\n\n Name \"Oppdater\":\n \u001b[36m\u001b[39m\n\n Name \"Velg en tilknyttet stilling\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n banner:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n heading:\n\n Name \"Dine dokumenter\":\n \u001b[36m\u001b[39m\n\n Name \"Metadata CV ÆØÅ\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n paragraph:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n textbox:\n\n Name \"Søk i dokumenter\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n combobox:\n\n Name \"Type\":\n \u001b[36m\u001b[39m\n\n Name \"Tilstand\":\n \u001b[36m\u001b[39m\n\n Name \"CV-synlighet\":\n \u001b[36m\u001b[39m\n\n Name \"Tilknyttet stilling\":\n \u001b[36m\u001b[39m\n\n Name \"Sortering\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n region:\n\n Name \"Dine dokumenter\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n article:\n\n Name \"Metadata CV ÆØÅ\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n time:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n link:\n\n Name \"Åpne opprinnelig arbeidsområde\":\n \u001b[36m\u001b[39m\n\n Name \"Se publisert CV\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n\n Ignored nodes: comments, script, style\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[0mÅpne det opprinnelige arbeidsområdet for å redigere en CV, en kladd eller en fil. Lagrede øyeblikksbilder av søknader beholder innholdet som ble lagret.\u001b[0m\n \u001b[36m