diff --git a/docs/ui-modernisation/CAREER_VALIDATION.md b/docs/ui-modernisation/CAREER_VALIDATION.md new file mode 100644 index 00000000..d6d0997a --- /dev/null +++ b/docs/ui-modernisation/CAREER_VALIDATION.md @@ -0,0 +1,36 @@ +# A3-IM06 Career Profile and document workflows + +3 November 2026. Owner approved **"Approve discovery and A3-IM06"**. Isolated `codex/a3-ui-06` starts at discovery receipt `027907a80666f7ddd51c848411ceaacec6768f20`. No unrelated workstream was merged. Local qualification is complete within the boundaries below; owner Gate F remains pending. Publication identity is recorded separately in CAREER_PUBLICATION.md. + +Career overview now offers immediate edit actions for all fourteen existing canonical sections. Saved completeness indicators come from the server's existing seven-section assessment; unscored sections invite review, and unsaved drafts hide stale indicators. Editing projects and certifications now reaches every supported field through the existing canonical profile draft and versioned Save. Edits preserve opaque IDs, metadata and sibling facts. No new profile, score, API, schema or writer was introduced. + +CV editing remains left and live preview right above 1000px; 768–1000px stacks both panes, and narrower phones retain the existing edit/preview switch. Cover letters use the same boundaries. Library cards reuse existing translated template labels while retaining unknown legacy IDs. A shared disabled-toolbar tooltip wrapper follows the existing MUI pattern. Renderers, physical document CSS, history/coalescing, autosave queues, conflict handling, null-as-inherit settings, frozen packages and RD21 remain unchanged. + +| Evidence | Result and qualification boundary | +|---|---| +| Initial baseline |142 tests / seven suites passed before implementation; historical baseline, not added to final total | +| Test-first regressions |Canonical project/certification controls, fourteen section edit destinations, tablet CV mode, friendly library names and tablet letter preview reproduced missing behavior before fixes | +| Final frontend selection |212 unique selected cases / ten suites passed, zero failed/pending; latest full execution per disjoint suite in `a3-career-final-selection.json` | +| Backend preservation |103 passed, zero failed/skipped: CareerProfileServiceTests, CvRevisionReadinessTests, CoverLetterWriterTests, CvBuilderTests; InMemory/temporary SQLite and mocked exporter/summarizer, not MariaDB/live models or physical PDF acceptance | +| Types / full lint / production build |Passed after final application changes; final browser harness scoped zero-warning lint and diff check also passed | +| Independent review |No actionable source or verifier safety findings.57 cases / three suites independently passed, overlapping212. Separate verifier review independently reconciled browser counts and unavailable fixture reads; browser/backend/build not independently rerun | +| Rendered browser matrix |16 configurations:320/390/768/1440 × EN/NB × light/dark;96 whole-page axe scans, zero violations/overflow/page errors/unexpected writes. Six screens per journey:overview,profile,import review,library,CV editor,letter | +| Boundary/focus checks |Six EN/light configurations:320/390/768/1000/1001/1440;36 scans, zero violations. All14 direct edit targets have visible/unobscured focus; CV/letter stack through1000 and split at1001. Four configurations overlap the main matrix:108 unique screen/config captures overall, not132 unique cases | +| Fixture mutation boundaries |Main matrix48 explicit saves, boundary run18; three per journey:canonical project save preserving IDs/metadata/certifications/raw source, document-only rename preserving settings/version, manual letter save preserving revision precondition. All fulfilled in memory; no real API writes | +| Publication |See CAREER_PUBLICATION.md for exact commit/ref and independent readback | + +The broad intermediate frontend run passed152 of153 cases and failed an existing typing-burst undo test. Production history code was unchanged. The test's simulated synchronous burst crossed its real one-second grouping clock under slow rendering. An unchanged isolated rerun passed. The fixture now pins only that simulated burst's clock and restores it in `finally`; a separate regression advances two seconds and requires two undo steps. The complete59-case studio suite then passed. Earlier failed reports remain FAILED, with that suite superseded by the later complete studio execution; totals never add overlapping runs. + +Two early tablet attempts lacked `matchMedia` in JSDOM and are harness failures, not behavioral red evidence. A corrected viewport fixture reproduced the actual old768px mobile-mode behavior. The first browser pilot assumed desktop tabs on phones; the source already uses a mobile selector. The corrected pilot completed six scans and three fixture mutations. A visibility probe initially sampled the mobile selector's exiting invisible modal backdrop; the verifier now waits for unobscured focus rather than weakening application behavior. No source fix was needed for these harness issues. + +Source imports, review/retention/conflict/history and render contracts are covered by selected existing frontend/backend tests; browser import review exercises the legacy pending comparison, low-confidence selection and no Apply. It does not qualify a parser, model or the separately deferred CV-import overhaul. Controlled CV HTML previews are not real exporter output. Prior accepted physical PDF metrics/visual evidence is reused only for unchanged renderer/fixture sources; no fresh PDF or native-language visual acceptance is claimed. + +No production backend, provider, model or source data is accessed by the browser verifier. Every API request is intercepted; unavailable secondary reads are recorded and appear as honest unavailable states (company list, optional thumbnail preview and linked-CV assistance). Deliberate Career Save, CV rename and letter Save are in-memory fixture mutations. All external requests are blocked. Fixed mobile navigation can appear within a full-page scroll capture; screenshots do not establish native-device behavior. Representative mobile320,tablet768,boundary1001 and desktop1440 captures were visually inspected; this is scoped engineering review, not owner/native-language acceptance. + +Native reports, failed attempts, captures and source/evidence manifest are under [evidence/career](evidence/career). There are108 unique validated screen captures plus one FAILED-focus.png diagnostic,109 PNG files total. Frontend aggregate references reports in its own frontend directory. To repeat rendered checks from job-tracker-ui against the built static export on localhost4338: `rtk proxy node scripts/verify-a3-career.mjs`; set `A3_BOUNDARY=1` for the six additional boundary/focus configurations. The pilot is an overlapping diagnostic, never added to the final total. AST-only graphify update passed; missing optional SQL parser and symbol-less file diagnostics remain tool limitations, with no LLM/provider activation. + +Rollback reverts this presentation/control increment on its feature branch; no data/database rollback is required. Version guards and existing conflict recovery remain required. The independent document-date patch `ca519cac` and root security policy `de3d5031` remain separate. All188 historical dynamic translation-call reviews are accounted for; this increment's paired literal EN/NB keys do not complete European localisation. + +NOT RUN: real backend/browser end-to-end, MariaDB, hosted CI, native screen reader/device/touch/zoom, live models/providers, physical PDF rerender, final integrated security/recovery/release. Phase10, Product Review, Global Jobs, European localisation and release acceptance remain open. No main merge or production deployment. + +Next mandatory Gate F: owner review of this published increment before A3-IM07 Calendar/reminders/correspondence/documents. Preserve deadline date precision, consent, existing ICS/export and confirmed-send boundaries. Other independently eligible roadmap work may continue while that decision is pending. diff --git a/docs/ui-modernisation/UI-06.md b/docs/ui-modernisation/UI-06.md new file mode 100644 index 00000000..64e908d0 --- /dev/null +++ b/docs/ui-modernisation/UI-06.md @@ -0,0 +1,21 @@ +# A3-IM06 — Career Profile and document workflows + +3 November2026. Owner explicitly answered **"Approve discovery and A3-IM06"**. Isolated codex/a3-ui-06 starts at published/independently verified discovery receipt027907a80666f7ddd51c848411ceaacec6768f20. No older design/source tree merged. Root security policy and independent document-date fix remain separate. + +## Scope and work packages + +- [x] Inspect current CareerProfilePage/overview/section owners, CV library/editor/preview and letter presentation. Existing editor already places edit left/preview right and owns queues, conflicts, undo and export; retain these behaviors. +- [x] Establish selected Career/import/library/studio/letter baseline; no full-suite/PDF rerun merely for restart. +- [x] Career overview: useful section indicators and immediate section edit/focus actions, using existing canonical profile/draft state. Preserve unknown/loading/error states and source-backed overall completeness; do not count skipped setup as complete. +- [x] Audit every canonical section against actual editable controls. Initial source shows projects/certifications in StructuredCvProfile but no corresponding CareerProfileSections controls; investigate and close supported UI gaps through the existing revision writer, preserving stable IDs/metadata, or record a precise limitation. +- [x] Align studio responsive presentation with approved1000px split contract and existing mobile edit/preview mode; keep focus, controls, template/gallery/history/import review, library actions and letter workflow connected. Refine quiet chrome where needed, not physical document CSS. +- [x] Qualify existing import/source/proposed/selected/conflict/retention and letter history/revision behavior. No import-engine overhaul, new schema/API/dependency, provider/model activation or changed renderer metrics. +- [x] Fix affected bounded EN/NB display issues without rewriting working terminology. Fixed decimal attachment-size display remains a known candidate, not yet fixed. +- [x] Targeted frontend/backend/types/lint/build plus actual React controlled Career/CV/letter journeys, responsive/theme/locale/accessibility checks and independent review. Reuse unchanged accepted physical PDF metrics/visuals; distinguish controlled previews from physical exports. +- [ ] Commit/publish/remote verify each coherent package; only request next Gate F after this increment is complete and reviewable. A3-IM07 Calendar/reminders/correspondence/documents still needs that gate. + +Affected callers: CareerProfilePage and CareerWorkspaceOverview/section editors; existing CV library/editor/template/preview and ApplicationCoverLetterSection/Document chrome; their tests and EN/NB catalogue. Canonical state, API writers, revisions and renderers stay in existing owners. Rollback presentation/controls commits on this branch; no database/data rollback. Changes must not silently replace source facts or reset null-as-inherit overrides. + +Source comparison identified current studio compact boundary899.95px while the approved A3 handoff uses1000px. Verify field/preview geometry and focus at the boundary before changing it. The overall milestone remains IN PROGRESS; baseline/reused evidence alone cannot accept it. + +Local qualification:212 unique frontend cases/10 suites,103 backend cases,types/full lint/build,16 controlled browser journeys/96 axe scans plus six boundary journeys/36 scans (four configurations overlap;108 unique captures), independent review57 overlapping cases. Exact evidence and limitations:CAREER_VALIDATION.md. Physical renderer and backend sources unchanged. Gate F before IM07 remains pending. diff --git a/docs/ui-modernisation/evidence/career/CHECKS.json b/docs/ui-modernisation/evidence/career/CHECKS.json new file mode 100644 index 00000000..a9f45e78 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/CHECKS.json @@ -0,0 +1,37 @@ +{ + "recordedAtUtc": "2026-11-03T13:28:59.320295+00:00", + "frontend": "212 unique passed/10 suites; see frontend/a3-career-final-selection.json", + "backend": "103 passed; backend/a3-career-documents.trx", + "typecheck": { + "command": "npm run typecheck", + "exitCode": 0 + }, + "lint": { + "command": "npm run lint", + "exitCode": 0 + }, + "build": { + "command": "npm run build", + "exitCode": 0 + }, + "verifierLint": { + "command": "npx eslint scripts/verify-a3-career.mjs --max-warnings=0", + "exitCode": 0 + }, + "diffCheck": { + "command": "git diff --check", + "exitCode": 0 + }, + "graphify": { + "command": "graphify update .", + "exitCode": 0, + "limitations": [ + "SQL parser unavailable", + "144 files yielded no symbols; not semantic completeness" + ] + }, + "limits": [ + "Local targeted checks only; not full Phase10 or integrated security/release acceptance", + "Historical failed test/harness attempts retained separately and not relabelled passed" + ] +} diff --git a/docs/ui-modernisation/evidence/career/SOURCE_MANIFEST.json b/docs/ui-modernisation/evidence/career/SOURCE_MANIFEST.json new file mode 100644 index 00000000..ba0d488a --- /dev/null +++ b/docs/ui-modernisation/evidence/career/SOURCE_MANIFEST.json @@ -0,0 +1,268 @@ +{ + "base": "027907a80666f7ddd51c848411ceaacec6768f20", + "recordedAtUtc": "2026-11-03T13:28:59.320295+00:00", + "policy": "Text LF-normalised SHA256; PNG/export raw bytes", + "sources": { + "JobTrackerApi.Tests/CareerProfileServiceTests.cs": "a0f35e0a244146804bec7989e048276bed295969cf1d9e1f9d0fc7fff36081c2", + "JobTrackerApi.Tests/CoverLetterWriterTests.cs": "d957df1f59d278ff81b05c391d59ad14ba9c91aa4f9c7ee396baea168acf9f3f", + "JobTrackerApi.Tests/CvBuilderTests.cs": "566bdefc1ebc231f18116f97d73c0d37c1aad866dab8c31b513754873b94c8a3", + "JobTrackerApi.Tests/CvRevisionReadinessTests.cs": "22b1f6a2dbfffb88bf11c217c41f3eb84086471da1023023c034a7521a9a21aa", + "docs/ui-modernisation/CAREER_VALIDATION.md": "c5e55b44c01ae8da34449a80054ba1e77dccd0c9693258314cb4dbce35e1425e", + "docs/ui-modernisation/UI-06.md": "a53f66e1b08c21c010efc17f0a5fd653141dcc24aea9e76ce3797e97b594a553", + "job-tracker-ui/package-lock.json": "bf31e90d7af03e8af059db2aaf893925b9e8881a30a1688034ed88ef45d4fcab", + "job-tracker-ui/package.json": "3745394e406cefa40d30a87e840bccb359be147bac6ffba736e2ae90898a8626", + "job-tracker-ui/scripts/verify-a3-career.mjs": "2303b82f4076e17a9502689e0c7320637d02426f4569d84cbad026a1fea73fea", + "job-tracker-ui/src/App.tsx": "608b4bed6c7e2881dfd65b7541ea211d193a636dd3f9cdf9a6d172acd12d137d", + "job-tracker-ui/src/application-assets.test.tsx": "b03fe198041cd7eb814f7a81cd80c877a12fac705e7e2bba40e812a61bf1dd36", + "job-tracker-ui/src/applicationWorkspace.ts": "3b00a4fe16159bdb9603eeb37bfdf5e5eb9a87d7815227fa3aa2f0da6e4f232c", + "job-tracker-ui/src/career-editor.test.tsx": "9c296fbf5d5871184869058e405fbc5a2f7467cbf2302baebef979bb41acef6b", + "job-tracker-ui/src/career-workspace-page.test.tsx": "3d232575525624246cf056d6d357cdb9c27a334ecc198046e2581f09873dbd99", + "job-tracker-ui/src/components/ApplicationAssets.tsx": "e6d5fd37efc10ba4188bc515e91db04405e9c4ba3915aba13ac0862e1c17a223", + "job-tracker-ui/src/components/RichTextField.tsx": "7b732cfbb9b8dc8b19e71415054649e0a2404cc17ec29d036817d63fea58a994", + "job-tracker-ui/src/cv-builder-deep-link.test.tsx": "8d5ae8d6a07991856dd2b21bde332ad91762c46f7534c2154719cf8a41d81dd2", + "job-tracker-ui/src/cv-builder-page.test.tsx": "7c1211e25b85fcc9e979b6c50926e297da6705c899d64d601de4cbc7f4a9a758", + "job-tracker-ui/src/cvBuilder.ts": "c021bafeabbc8ad3526d1b10b90ad8f7f0958ded8ed26eac8c1d28b53098b64d", + "job-tracker-ui/src/i18n/translations.ts": "c5586728bb501551ad37d6e617495520664b4f904da29e4918ff34ab50ff12eb", + "job-tracker-ui/src/profileCv.ts": "80c39b7c7558a96c1b7da4eef0d3580849203bc2da4ecd823aeac387b35cf963", + "job-tracker-ui/src/views/CareerProfilePage.tsx": "d666136aee79eb29be86606823b5fc5457298e5c62078f8a378d91224431f438", + "job-tracker-ui/src/views/CvBuilderEditor.tsx": "49537d71b577df7c564609c2cfcd239afe066fe4b4c550677544886a205e0e0b", + "job-tracker-ui/src/views/CvBuilderPage.tsx": "dc6c1561dde562deb829aff1fed7f595861d2112633572482069ec4c8c05ba2e", + "job-tracker-ui/src/views/career/CareerProfileSections.tsx": "07396e14214ecdb6c5f37f02d0e448453710a596b5ffb68042aa8ce032520e1c", + "job-tracker-ui/src/views/career/CareerWorkspaceOverview.tsx": "0650f72784b2211f703dfefd4d91a604957678369de2e2f365cf162458cc8d25" + }, + "evidence": { + "backend/a3-career-documents.trx": "3be79db7958a751f3400f1e8b460456ea7f13a46792a45af72bcd27acc2ec05b", + "browser/BOUNDARY.json": "5ce8bea717968dda26e8cba9ab386b84970969db229bf083884a9cff67a22318", + "browser/BROWSER.json": "a4c761741203c9be7820f4a8a5aec6edfaa653a11d7377a35a1a487c2045b8af", + "browser/cv-editor-en-dark-1440.png": "a1e4005895e8e3d1bbae955f71a3102267394f19aed21023649297bb8e80d662", + "browser/cv-editor-en-dark-320.png": "b6675fc68ddfff4fdd8c97f4b8e42c85d661c5b8b05b57b6c834cd8b394dcbe6", + "browser/cv-editor-en-dark-390.png": "45fba5981e281e3906558f088a29445d859ae30d8ff7574f9c2f4838d19176ab", + "browser/cv-editor-en-dark-768.png": "30e95be8cd6867f541ea74c7623ddc74725f05c3dadcd6f63c8ad28d6abc383e", + "browser/cv-editor-en-light-1000.png": "7dd9ffd6e28130c15629d5c682b521d9f39dfd8de4ed54844374a1ad2c58462f", + "browser/cv-editor-en-light-1001.png": "fd9e12b13db88ede043f3031effcd081716f2e2a1dfc2f86d03a4eef5553cb47", + "browser/cv-editor-en-light-1440.png": "519af386f103b0a2632d8cdc0d4d4435ea9034ed3f068d7186b415f6dba375d3", + "browser/cv-editor-en-light-320.png": "26aa43d5ae894cc8d1ea10cf99f1a1ef2dece2944559168ab529dbf584cc599b", + "browser/cv-editor-en-light-390.png": "450269a67600cbc633a88db52995537827813688b07dffe6f339d07b641b07ad", + "browser/cv-editor-en-light-768.png": "a254bb39c21a1d0bfbfeef4656f56c352d9be0a056223b277476069b1dc42185", + "browser/cv-editor-nb-dark-1440.png": "d6e9a83ac7e0b2bc4d1b305ce07ebba2de29cfd7bf0e187d32df8e1c9c4e1091", + "browser/cv-editor-nb-dark-320.png": "49c9f5fde66be18d38833e900d70458905ae1ccaf37148585782aae12711c04a", + "browser/cv-editor-nb-dark-390.png": "5be2deae9d88cd1bcf52e40ab39fa8216fce969fe5c54cdccb92bca181a6abbf", + "browser/cv-editor-nb-dark-768.png": "0be35fbbcd21dba5baa9710df52ae446237462d409e3292e497adda5ab5fad00", + "browser/cv-editor-nb-light-1440.png": "8e96c1f951c1b959d48700fd850a5580c20fb076d908150cb8e85a2e3e7f25de", + "browser/cv-editor-nb-light-320.png": "e03ba11c988b0bd60bcb4c1d0a7f73dfe62354e1ea00391285fb95832b152b59", + "browser/cv-editor-nb-light-390.png": "228c6106484557bb1e99dbe94641c70afdcf2336418af0a199fb0d6b9cdcbc90", + "browser/cv-editor-nb-light-768.png": "7f1e6dd7ad5e85ec0da5b1fafd3540e21ca8c7b6fb464ca7d4c3270b6cc2b6bb", + "browser/FAILED-focus.json": "c30e047ce38ec54fd8dd17af38b728cb9da8c365fb1fc36dc922989077eced00", + "browser/FAILED-focus.png": "3048045c699ba9514f223e3ff7ea40a762f4d416f31727b9d735a8fad60b4e7f", + "browser/FAILED-mobile-navigation-harness.json": "c30e047ce38ec54fd8dd17af38b728cb9da8c365fb1fc36dc922989077eced00", + "browser/import-review-en-dark-1440.png": "6c90c6b4bdea8f50b9a9e92298b51a78bc5ebd3db2b134e8e074c001caa6ed80", + "browser/import-review-en-dark-320.png": "155844392d7e13f32e2d84f9b16f5b3f3fdc902115b9c712ecfe072b62446c64", + "browser/import-review-en-dark-390.png": "a68177dbcd85bb7ae75c8c99f1371bbd1da494f25f52d0b1b39a292ebffffb31", + "browser/import-review-en-dark-768.png": "30d4d8a30ac08e3bc846069b9d88893e365f37cebe097a75bc89872697731bc1", + "browser/import-review-en-light-1000.png": "b407f5bdbd3b91f7f2d809ae2aebc33c77c11d157ba45ba37562332bb541cbcd", + "browser/import-review-en-light-1001.png": "f886f70fe2b61c0e42be83684f945840381d4a385c562e17a5151fc432ef7754", + "browser/import-review-en-light-1440.png": "f50bb4c34770213fa91defbe820c937c49ace4aff26c66fa5f35b8204916676b", + "browser/import-review-en-light-320.png": "0da3ee53ca2c9fadea4250fd526b83d311eaaea871b6c2efd33b863e6e3f2c69", + "browser/import-review-en-light-390.png": "36e23510e08704780f93d7521c33cb16c906d89f152b42f950d4ed582eec3459", + "browser/import-review-en-light-768.png": "240fe506c08e18f82290786934f31892b07d5d60808e4c57de845b2f84423892", + "browser/import-review-nb-dark-1440.png": "94923b88fe4755e4e4384b06d06d760991639798d309761619c313a4e4d4e4b8", + "browser/import-review-nb-dark-320.png": "ecbf7dddb649f73cbfd8c37826705bd07a62d1293b891a8e7de91b607d5d1024", + "browser/import-review-nb-dark-390.png": "0518423df1533c88b3ad27f5f8dcf7139a64b2dc4eb0a571f4899cfc7b1750b5", + "browser/import-review-nb-dark-768.png": "33841d9e6b756276a20b2ff636ff75e06e12ce65db4df68a6c1d0009368ace58", + "browser/import-review-nb-light-1440.png": "e6d7b9a1a2b397b3c05cf2751aefe45f7a67462851d7c7f7419a0a60e2f5bf2a", + "browser/import-review-nb-light-320.png": "d083990516b040fc23e0e7c462ae67b809f1ddd7f85efddbcced4bd583edd2a9", + "browser/import-review-nb-light-390.png": "b7af414c11defa7c6105cc89ed371bb8d1083ff568e7525beeb9fcfa9be76766", + "browser/import-review-nb-light-768.png": "adcb6e049db3062692f0c476cdd5e7c111b34ed71faa658210510f60538eb225", + "browser/letter-en-dark-1440.png": "16d418cc7c62b8c0f8596400264383ad806905405b75c75e88060ff169625b74", + "browser/letter-en-dark-320.png": "1fa1669b97a3ab25809886b5980f2e0dd24100e05cac1457947c2018868c2e6f", + "browser/letter-en-dark-390.png": "2d3ece32c74e7255d66bb7497e981e2cffae905130f3e170244c2dc5e7cb3e61", + "browser/letter-en-dark-768.png": "1e45a40d8ff3ad9fb0a94adf8d9dd5d36ead1aaf77e2931d5584b7ee29013494", + "browser/letter-en-light-1000.png": "96c82a1cd6759a0769847b79e2659220eac52e99e37ba66a4a90469d01718a71", + "browser/letter-en-light-1001.png": "953cbaf7f138f8b37696812411dad5ef0889c58cbf34cc568dfbe44cc258fce9", + "browser/letter-en-light-1440.png": "25f57d230b61ab94f0bd8d3084bf663b98edaa8b5059cc8ba42a94d33374097f", + "browser/letter-en-light-320.png": "73efd8b726b0e6245645a54b87d5a41b0cc43727bf63beaec43f07316d6fde98", + "browser/letter-en-light-390.png": "6a1500dcb06d441c057384177f8585008f13666a38661dbc857b6c775bbaf97a", + "browser/letter-en-light-768.png": "6852bccc9a0ce2c072e4a6500e0249a1d9d52d6e37b5fb6808557fb6f0b7b300", + "browser/letter-nb-dark-1440.png": "e122df6916f09f7508c1a42f3f81754a998800d5f1e73a96924cea5c95bd9c4d", + "browser/letter-nb-dark-320.png": "0a454aa8938752ff8c347712f2c8ec2eed6465d7f199d8205fec155d424cdb81", + "browser/letter-nb-dark-390.png": "1ee8b1f418b05ab99e221d530f10fd6e886bd733b779dbf92c100d333d6c6706", + "browser/letter-nb-dark-768.png": "9c95b360e7c00c046697fdfed6016a54176c64230ee47c52f0c8016327817454", + "browser/letter-nb-light-1440.png": "581679c486f4d23d464ce4c6972318421ddc1152e502f11890efc58662dc7fab", + "browser/letter-nb-light-320.png": "5f1f8898c9cb3e5a6d954c65c028fa42bd6347e1ea5b196cd394cc71e52dfa2b", + "browser/letter-nb-light-390.png": "1ea325988f2dfb9191ba02de501084bc795eccd01d3fd39bea89344a40d89e07", + "browser/letter-nb-light-768.png": "e32ee1c1d21727b05e7cfc5ed825837ee4d494a988491a5351745909791ec225", + "browser/library-en-dark-1440.png": "b42aafd8b10ca1432a08973902515820687b1c5aa52cb9843db0daf81a4e78bc", + "browser/library-en-dark-320.png": "ce151fbf6d5050c09819d551556bd7e664a53943ca531c94561f6da5e2837c24", + "browser/library-en-dark-390.png": "7366fb25afeb4d3732413de4b981085573285d95465698cae67da8513e3c91d1", + "browser/library-en-dark-768.png": "e93f6259bfb9c75197642bde263b065ab8c59a2282781477d62cd1874afa1279", + "browser/library-en-light-1000.png": "6101756e53081347cb01b27f2c6e5167d6eac5c81be88333abb73e881de45109", + "browser/library-en-light-1001.png": "7a1a462c27ea373a116a1e3f3436c4261d17637b1b47dbb6526df9f5f99bc40e", + "browser/library-en-light-1440.png": "9eb940ffc4a69506702881c9800795aace43171ac3f437695a90e251cb66add9", + "browser/library-en-light-320.png": "cefb8ff9571bbc254d8e6609c9a44d8309e3f04b3a1e98a573044c69a83ed904", + "browser/library-en-light-390.png": "43cc06038820d91059d9d1a8c3a6186bef23d520ba47ea72b7885f1ef11d84c2", + "browser/library-en-light-768.png": "d7ea18d415ff45b5403eea284614c59a9b1820fbf366953c2342614d598eb24b", + "browser/library-nb-dark-1440.png": "20045a34552686bf697831bfdce1657719d5428b575f3d7f265794661bce1315", + "browser/library-nb-dark-320.png": "5539263b912f7b8c59b01e3971422f0e919d23f256f9bfdc39df1f02c803d9ee", + "browser/library-nb-dark-390.png": "3667353f0e7a69e87fe5286ce9049309cef3fb2dea5744cfa6c8e52fce3974bf", + "browser/library-nb-dark-768.png": "2561833f088b579274f57e74ba4c6f15b498afc61426c94cb87258eb37a4240f", + "browser/library-nb-light-1440.png": "bb87ae0e5fcebdc33663a15c727ccd856e3e36645fef89a41964239e8186f743", + "browser/library-nb-light-320.png": "531f4e76f281e4a6e9c5a9f452f63b9ddceb4b8df09e00d8cd6e616d730662f5", + "browser/library-nb-light-390.png": "050a58b4ee9d9409b1cfda0332483c81446bcb7a95896939d4fe664e34481e9e", + "browser/library-nb-light-768.png": "7add41634511b820402346b2e29ada5d8322cea39ff4722f8179f2d4705ad126", + "browser/overview-en-dark-1440.png": "c85d4c81d50d4e13dc69957a26798f8d8c8ad72e04e1871ab31100c047405835", + "browser/overview-en-dark-320.png": "7d4675787b6658ba78f674a22714e61b931e03a29e2ce3f1e6e94e88d21ee4c7", + "browser/overview-en-dark-390.png": "dc60eccc970f6849ec3861822a65629c7766f439de3e85525c9cca17d97d20f5", + "browser/overview-en-dark-768.png": "1422ad61f749f986749e73d57e10c49bf271b9484885131b4743f7d58958c02a", + "browser/overview-en-light-1000.png": "bd1eb529a901b7cd0ea9f966793d6793b5543cd1e6cefaed0318ce36157e34f6", + "browser/overview-en-light-1001.png": "d8349e20be31daf618d5d762515048a5e16fcd129577a9abfbb575bc34ad6e57", + "browser/overview-en-light-1440.png": "09e5ee2eecd36d3d2fd09a2c3394fc201ea630f3dc1a49225794ffc8b13c38ed", + "browser/overview-en-light-320.png": "581748ebb18edd3546fac44835b1f324db6ea61914a6457dc23d45703701b289", + "browser/overview-en-light-390.png": "90c6a44b83b1aa9aa8b32afc9be5f9f4f0a683105fbc69c32c4aebe96da00c09", + "browser/overview-en-light-768.png": "119ce8d4518bdacf87f875a7f5920953fe15cd5099e3d0adf414863f44c407c5", + "browser/overview-nb-dark-1440.png": "9e2c4321b20abb4d7a34431307799ff2e37479432e89cd22d46f88c5a2f75bf8", + "browser/overview-nb-dark-320.png": "0a169f4cfce872bfc9683699afac6f088e7647a0bebdce9af1abb4b61959ee31", + "browser/overview-nb-dark-390.png": "2c375741fb5ba6aa2cf2a1e56dd773084aafc28e7941b4140372a35e1f9715c8", + "browser/overview-nb-dark-768.png": "eb71e6ac016604def0a96d4fac87dcbd85d4d335cad0e2d1967a865809d3b8fb", + "browser/overview-nb-light-1440.png": "bbf9c63e3b71fe22f62037e35aba13bdde4cb3c0e39b34ff343c0ce10385bca5", + "browser/overview-nb-light-320.png": "7c2705ab8351f9e1dbf9866e7534dabc508d4870aab740cfa3afd91c956755c9", + "browser/overview-nb-light-390.png": "e183063e712f9e5f5f88e54c2e78d9755d9eb19ccc6e381db0f7a9bf60833306", + "browser/overview-nb-light-768.png": "736c09f4467bc07b82b59c6ee42436af8d8c0433227605513b5d142261b182d3", + "browser/PILOT.json": "cfcfb5fb3768d6c546a4c7ee041ed5ea43d50175acc45825f7a25f6daa9e6d09", + "browser/profile-en-dark-1440.png": "5c5c9110df2c376772e79a100ec51205a61289d65b2bbb539888a85f2a9c1db9", + "browser/profile-en-dark-320.png": "ceb536d214e90bd4caff17ec9a74d34bb7d60183a9d09f374041b3e7a0c41aab", + "browser/profile-en-dark-390.png": "5e30e4bfe26d70bfad4d44d89be0001db5777702f1423e4bc2769bb124bceb8c", + "browser/profile-en-dark-768.png": "f3f70b2d1a41f2705c238e3aa76840549ff53e3c4cb93cdd02113cd697e5ef6e", + "browser/profile-en-light-1000.png": "c45282db9f168a5156c2fec4f4b13ab91027eeb990389085872341923df9c4c4", + "browser/profile-en-light-1001.png": "359accae64dc3c1fadbe43e91e4b1b7999313b90d6088f8c23cdf588410188e5", + "browser/profile-en-light-1440.png": "d9c957f33e392f9e7aa78579517733c006a13a8fcef91850df81a3bd51598de0", + "browser/profile-en-light-320.png": "788190baa320b9d1cf6dea352ef45c5ced2dbeca70445888286a9423e7f1a9c7", + "browser/profile-en-light-390.png": "b97b1d3f72257fe0ce29f15f270c9192b2f2305875521c80cb6c95d3a7496a9a", + "browser/profile-en-light-768.png": "6286c32b0de8744b9a57366c1e302e2167f2c9912b634fd812c27d388a522b73", + "browser/profile-nb-dark-1440.png": "51a8a178330a361f79379e06030e6cce75273578e856d6e9c5257c568fc430c2", + "browser/profile-nb-dark-320.png": "303ca1de4aff52daeb79738642a2ff41f6740d706477307d75453d7aededaa4e", + "browser/profile-nb-dark-390.png": "870fec09b318d0fd2a3e2a9e137a22c1badd526cec017eb480ccb32fd8555319", + "browser/profile-nb-dark-768.png": "c75ca8944ca103b3c907223a8f0e4c68ee8b3a46752518925d7ebc5734219aed", + "browser/profile-nb-light-1440.png": "426a17d2cfb6a7f901f76b86c268e7e919b22dd4e3a272fed43c3853e761703f", + "browser/profile-nb-light-320.png": "c80c272bb9efdab8640e825419df8211bef4dc5e487a108bcb73458ca0635aeb", + "browser/profile-nb-light-390.png": "056d781752f8e886ce0456a81b17a87d1dfe734341f25cfaf7d469270de88726", + "browser/profile-nb-light-768.png": "f87feaa0765cae7e4b83a4568f38d9a533d3029a2fe4415faaa08c256c35aa30", + "CHECKS.json": "85f7392ef55ff23e86f30775eb020072b8b2e874f80199e31ccb2ad47ae896ff", + "frontend/a3-career-baseline.json": "750d322c02d300af1850d76be0530e30ec8e7d61f8411799f200fa3e11ad4fb4", + "frontend/a3-career-final-selection.json": "b2eb055e915c06046232fc07ebabeb365071729855170f0a52d030895bb6b860", + "frontend/a3-career-navigation-green.json": "04e3416179069ae61bb1c8b97f56250392968bff2540f0aa5935da7109061a8b", + "frontend/a3-career-navigation-green.log": "078d8ebc809502c49471c3aae526bf23ef737d26ba7463320e1c10eddd1d2c2f", + "frontend/a3-career-navigation-red.json": "351aa51fd91dbde014ecd077f8c3da5dd7d17dd607b765c2141b66ab9c12c827", + "frontend/a3-career-navigation-red.log": "fcc684424abe67052302219ea145aa1e8f098925c0a7ad314ba26482c36541c8", + "frontend/a3-career-overview-tests.json": "197074f604c33acff626d298404645d394b935a7e0d0e8b5c5344193fcc886a0", + "frontend/a3-career-overview-tests.log": "7397185f83913428788303546e1710e17b9e7e1d1cad5f96f1868bea6e71c34e", + "frontend/a3-career-sections-green.json": "173cbb0aedf38b5e3ba210d83f56347aee28127d354592abc3721a139aae9c47", + "frontend/a3-career-sections-green.log": "f711863c1493f1f1577518c137183dc1e03a3ebc251e1c9627a619426b494190", + "frontend/a3-career-sections-red.json": "4e50e29e108c76201b17cac6f39e4c26c2de89cd9257fa5ee8c91c11fb9f4d36", + "frontend/a3-career-sections-tests.json": "ecfd8240ea80acc80e2610d6b6bdd98c0f55f2b5e06bba88bca3ce5cfe0b8a9f", + "frontend/a3-career-sections-tests.log": "c3b55f77e8a4115edcef751e5f28c7507fa969fcb789ee50e998b0fa60d38b39", + "frontend/a3-career-tests.json": "97a8607801c2363944845127d08749bef1ba285d6fd01601a43e279a677ea209", + "frontend/a3-career-tests.log": "463bf1aee4b27493d0952cb5cca0429b3c167a024e8cfc606b6be9a035847555", + "frontend/a3-cv-library-tests.json": "d40e366b227a95bd0b0a21196b9bfc85682ef457286dca8398da236c2642c486", + "frontend/a3-cv-library-tests.log": "6ada270a4a196f292492d79a122c935f4670dc782af99bd1b3bb51f8feadca92", + "frontend/a3-cv-studio-tests.json": "a8435a895f27231e68a06ebcd27a6820872c6be0cb84ef6fd419375281581a6d", + "frontend/a3-cv-studio-tests.log": "9625b8ed93bbc6c164c4684633d5a8b8c27c21abe79640e2f518acae27b3caa6", + "frontend/a3-cv-tablet-behavior-green.json": "fa599621858eb251bb421e151618b29e8a231f76474bf6c2354cb2d30864dff2", + "frontend/a3-cv-tablet-behavior-green.log": "5357cf3cfc394f7bbdb2b788c572c36d2f479099e034a35fb85eefb19729784f", + "frontend/a3-cv-tablet-behavior-red.json": "25109670e37045e379b753fb8bb3df7a90ade2f627c06796aba998eead3a3593", + "frontend/a3-cv-tablet-behavior-red.log": "9054d2854a7886e716fe31a931b4cb4f69384f7630ed70f714d6ce1faae5018e", + "frontend/a3-cv-tablet-green.json": "f85562c49a747573cabe182a18c49e711bc6d3357688221b7ec5cc1b165d13c8", + "frontend/a3-cv-tablet-green.log": "7bb5beeaea3585cd227581573f310a370732ff7ce4eaf51a08ed66c9838dfe0d", + "frontend/a3-cv-tablet-red.json": "f2ca7c64c0647ff0944445a81b310d3cf3dbad23d58bfc6d778a5e04932675be", + "frontend/a3-cv-tablet-red.log": "95afe2b9c47ab0d760eab241471a4a5c9d57d7947843770fa4874e61690e8431", + "frontend/a3-cv-template-label-red.json": "6a47707dcd5dc6c9526cd01043a6c052591304207c395f071dcf7d39d5259648", + "frontend/a3-cv-template-label-red.log": "d3333ce7917a3de05586261582c0764de80eca418bdb65b68f303e21b1a3f2e8", + "frontend/a3-cv-undo-diagnostic.json": "39cb58d6c2f41b1de4b9dee3976bfce3ccbcb0e49b6a4699d3d4a8e4d62ed078", + "frontend/a3-cv-undo-diagnostic.log": "741c0ba350ce28ec3eff6b99edcdab108ee6f4829b99da86dd985bd1488d33c8", + "frontend/a3-letter-tablet-red.json": "4cbbca465e27fe93358e7f89a352fc3fb2e062f98b0510699dde0a699c76c45c", + "frontend/a3-letter-tablet-red.log": "5019aba654aceb547a94e036bbb60d8f8333818077c84142d10f72e692454485", + "frontend/a3-letter-workflow-tests.json": "90a125ee6996922343cfff56e622dbf24ea17b6acef44cd1a1185c42ca411000", + "frontend/a3-letter-workflow-tests.log": "3e13a505a4dc229bb95b1fefbf66ece3aa86e030f63dcfa54df97041b27f71d2" + }, + "export": { + "404.html": "f59bb890be3b783db255859af1790cdd80b87f72201ddc146ed7a8787f102762", + "__next.__PAGE__.txt": "b0c44753a1d7cf9987fe842eb6674a25e645bb65dd6c68255fbb5fb55262b8e4", + "__next._full.txt": "d2de8cf3c88272b7df3fe3bf3a9e20ed77b7cc28e70cca8588cae782539cc210", + "__next._tree.txt": "422349cfa8c261da70b26d82f639d1ff9b16bcf005f4c3afe7db66efbcab617c", + "_next/static/5pWSd0rShbDaTBHoKmZYh/_buildManifest.js": "9476e0afd3f9da68a64e6ec58631191fd3eaca62c9f5a377e7517fe9a89e59ea", + "_next/static/5pWSd0rShbDaTBHoKmZYh/_clientMiddlewareManifest.js": "5483e3295dc35dfe29ea932efc85341c916f10ff78ff5b0e965e003710893a4a", + "_next/static/5pWSd0rShbDaTBHoKmZYh/_ssgManifest.js": "678f6ce2cb80b1fe72fc67e7412be6e2ab6ada083111b64f7c40d35e3cba5e00", + "_next/static/chunks/0-_aq6ipzcshj.js": "39f90c215bf52aef6274ed3dcc0f8af32e21a37fe8845b3bca0d6ea60da6a8c2", + "_next/static/chunks/0ah1fzqmie05a.js": "5c65505a7dcbac63ac71d254e619a4c800943bfb4fa16cd40c10cdbe7e9b6e31", + "_next/static/chunks/0bdt7ln111t48.js": "6184b1a61f22e2a640c17941634fdc75678ce93d142848d9f07f163e0d1fd201", + "_next/static/chunks/0bwvt3mysnclc.js": "7705667a1b75812b7833d9c9dff47fe023015e58e382c40f4507d9948c973af4", + "_next/static/chunks/0cz1d0mv5g_q7.js": "0973c1d64c88adc8e3c950410cb58b288f72118d5965b78049438deb8f2f9683", + "_next/static/chunks/0enhs8x_8oeah.js": "44c76f6178d407e1f147fdf70015fd05c21e58ed220fc922d23dfd1e0f8631bd", + "_next/static/chunks/0jcvc3qm6-lyk.js": "7c27e1fe373b822adc68c63096a5bf38444ad605b9743f0920271652989c56f1", + "_next/static/chunks/0q20g9o8x-k8z.js": "3d4d9086985419aa8866b032158196c774acb8bf318f3c8245508c8daa9c5148", + "_next/static/chunks/0q_pwu9jxv4-d.js": "42a43b3d7245a413c7c29b4cbe87823037a6dbc637e2e282c92405470e0f575d", + "_next/static/chunks/0s7d19phl1gc6.js": "270ac30d2cfd8392d59853086c1cf59e91ade44fc569151f14806f6684643ef0", + "_next/static/chunks/0t2zlhd2mhyc9.js": "a0f7fab089895101ee5f16425651c65ebe77e975c70287388719cafd8c4fbd41", + "_next/static/chunks/11-48p8kygxgp.js": "57eb9059599b5a5a30598d0a334912d58af571c0ffe28448ca76ad77c8ea8df9", + "_next/static/chunks/14-lfugawba2w.js": "6a5780ca3c84d7f130f3c0a14431c85c7a1e799e2645b8c171161dab40a64360", + "_next/static/chunks/1435in_k_-dhc.js": "4757476512d5c4dd25f9264a18b304ed4824b23aff1c09e134fcbff21d9c36b6", + "_next/static/chunks/145oicobmjvm7.js": "d6bbbdeed1381652dc7412e5ce673a077579ecd5cee8934cb6b533c814098764", + "_next/static/chunks/14e7ovj0s3elm.js": "070567dd4d23fb9fa0b9ba132185a697af6578045d43b2b1c7bbb2a1594d935d", + "_next/static/chunks/16lfece6cnlln.js": "716363ba044f30b0e70440756b4e5eafa2d25f2e1628e855e3bc4ab9eabee3d3", + "_next/static/chunks/1d0xrdyyzw7qc.js": "c11668ff1e152008e0d7b4454af12eb36c97df46a5860938e2eb5d8429b374a8", + "_next/static/chunks/1ke8pzecwofrg.css": "32e9ab963ebadebcbe2c68dffb24cfbfc8cc24255ad91b48b7941fc777bf7439", + "_next/static/chunks/1req80b9jj38r.js": "eee4d2e3789e1215195dba99ad0f09d34f8c83da848322b76054722233e9dae3", + "_next/static/chunks/1uppvozaqeqnz.js": "ae223dbe7ea69b064cbaa937a4614d8bc09a31eae363af14bb05f3c153fa7b4e", + "_next/static/chunks/1w3q8yrcjn2jk.js": "365200e241ee9290e93d7c2fdba169f2b0a8e774541e3cbf3f6f2781110fa644", + "_next/static/chunks/1xn023_28rgzj.js": "4f7f2108d030a48d039930736c92a55710975dddf419fe673f84d92899b1f575", + "_next/static/chunks/1xwc-b795syag.css": "f73c002233f931ca14d0ae58815c47ca9f2659f25b1547a6d1fdca12a2a00b3f", + "_next/static/chunks/1zi8i6dnxiac_.js": "8aea28bbe6a138e5d4b619429ca71570883a7aee974b86d5a4a746d90f704dbc", + "_next/static/chunks/2-o9_wag-xnw1.js": "2d5526cb095b6f27580073719533b9448a17869517d9025c08a5b18b5060b1a7", + "_next/static/chunks/22uh2tvaw80j2.js": "dafe6b4e23dc5c1d32f8b4a60c561238d2d5e7545f23ebc5b3f7304b48626dbf", + "_next/static/chunks/22wx8--1b9tnq.js": "3f7d8e762371262c6a740b4dac21725b424847319afac46055e97074a99ff5f5", + "_next/static/chunks/280cq9ekejv1f.js": "01de8c1c3555cdd8d711763065ea9d8aec2968c3053f61254e43e26c999027bf", + "_next/static/chunks/2br3ad_-bc7k9.js": "80fa55f7a32db4d743fda36747c36994fde00a0f53f2eb25b2a6d07c6fb97cd7", + "_next/static/chunks/2gd9s_n-0nl1p.js": "31e2811be51a3c4d0ff2d1e3cea756e7fd8d57ef89141b5de69f638c1301d039", + "_next/static/chunks/2ghgf2s9b2iou.js": "23d8ff31e2128d0541c1887785fb75885323fea7c5d4f35826513b75c12c2ae3", + "_next/static/chunks/2itnratrnd9c5.js": "8be0b191c2d54f7233ebf2f1e169b3bfef680fa93da21c08d8c43b05c3ec174f", + "_next/static/chunks/2knef-od9-j1l.js": "7b6d70f1b995c22c14c0e62d828e99e15039130fad5df259e7d0a312b60f23fa", + "_next/static/chunks/2rz71hs6q-h-c.js": "822e01feeeccf06e5634ebb76a5deeda6ba27c5d9f6575047eb203dd8af18f91", + "_next/static/chunks/2s2gjr6ro25dj.js": "7489e2ac285a05b563c2bcb4eaf9274bf930f2a7385f17d6d5e6850064b88b10", + "_next/static/chunks/2u5qve004opku.js": "be388d9a6aa423082bafb4584c3facc65ddfed71bcfa5c1d06b097b408c5ff97", + "_next/static/chunks/2xlg4_1fj8fxh.js": "8ab4ba521db0167f3dbf684787ebf643cbc66fa7ffff7cdc65a8d8076a926155", + "_next/static/chunks/2z42el0b2mp8_.js": "86ff990ef32c90c4839583e4f1d1bcbddb165dad3141b9fcd2ecec67f4ff24b8", + "_next/static/chunks/32_ah983ce851.js": "0c3cd0d2a5ad789e31226a9ea0506c50016804311a58548c7784b7b45aaecd14", + "_next/static/chunks/334vtqp3-g1j6.js": "c33d42da97f3af7388e29273297e9f42c67f54b7f5ec77a5d0637e2da06d7f7e", + "_next/static/chunks/357yqeklh7414.js": "0192ab7198ebbe299d34a934c504dd4b562d1cccebb6e9d4c5163930c881b14c", + "_next/static/chunks/3720519r84mh6.js": "54358db392a13914e3363046d594e824b1a3ef987913d95002bf48267dded4aa", + "_next/static/chunks/3721l8sfm8icl.js": "06b67611b3a93515a375b803b54fe7063c049824f1ebf5c7f7db8701b5091e7c", + "_next/static/chunks/3bqn9b34na0b9.js": "f1b8ebcc1b22251c33c9f3a5d11c1f893cad2da2e8744a441e790f7347aa9e73", + "_next/static/chunks/3ckk_j5ril9ag.js": "87f631dae7b648d32171e9e05a3e000753ecb54f8d3b86a4401c0e4ab4d73553", + "_next/static/chunks/3f96r6vscobou.js": "d4b452ff3f1433f8fe1df705a8f592326f51b5a8846e6c2790d28df5a977aed3", + "_next/static/chunks/3gkylew_qn7cw.js": "7e6c74c81be0c41ab433e36d65b914f62c48f332922e27f7cc953476f4dd78cb", + "_next/static/chunks/3la4obitihzpv.js": "9a5a57b46db389b98f1fd5baa86eba1a360300dae9d1ff3ffeae7bc3378135b9", + "_next/static/chunks/3os11ovm65tyl.js": "c5a908bd61f53f0d75927efb71e53aef8fdd9b2e4fef412a167990dbc702c166", + "_next/static/chunks/3q4v10rrqy40n.js": "d87ff7b7a0f07d0d92eab3876481eb686a12d9c43d8b92cbe406aefa227a11c1", + "_next/static/chunks/3u61o8t7m_jza.js": "86231c12e0f8cacc8638bed0bc4b34f645fc35e60de342dc154d3cce0c9a5afa", + "_next/static/chunks/40y_aqqilokr2.js": "1f5a5260316134d6bffe949400752ee6b42addf908ae714ef4ae4ebde916dddd", + "_next/static/chunks/43b5x8qjjh3ax.js": "6ee7261cf9a63e0e6ea181bbb09125e09948588b6e10b5c02727c686a6062a3a", + "_next/static/chunks/43kwiy1os1g8d.js": "f642b6db64a7d7c9090568eb331c7133758e9350ecef6884da46715e7aa9457b", + "_next/static/chunks/442d7ylb3po0z.js": "d95cedfbdcd00c674fd718cbbf391ec01c0728018b0db2461a06df7074049132", + "_next/static/chunks/turbopack-25fzg9ay_1ss-.js": "c40f39e993a30c96d6247bb3a7b581538bb046efe8ef8ec07bea3ba32291750f", + "_not-found/__next._full.txt": "a7eca7f4d967bddf2e2891799b160bb4426448d68e67f2a3539d35af4a3519d3", + "_not-found/__next._not-found/__PAGE__.txt": "026df17a5ff9abf0981d07ed018801fb2600bbee9be4c1165e7ede70aef7a823", + "_not-found/__next._tree.txt": "1d8fca22fe1fd4970c9484d20054ede11c8b007280c01b492a3b15a7e84987ab", + "_not-found.html": "f59bb890be3b783db255859af1790cdd80b87f72201ddc146ed7a8787f102762", + "_not-found.txt": "a7eca7f4d967bddf2e2891799b160bb4426448d68e67f2a3539d35af4a3519d3", + "favicon.ico": "8d4923e2c487805ea9f852a685b2cf0fb10512ded8290d2a5c37d1cc8fd0702a", + "favicon.svg": "63ecf8f37f8bb146ecfae3917187c6b692d4e801641e8a314486a4007912f3a3", + "index.html": "9e6d078cbfb99a6be742e2c93b967c27c03667b0a4e4216150ea5cff4bc98ed6", + "index.txt": "d2de8cf3c88272b7df3fe3bf3a9e20ed77b7cc28e70cca8588cae782539cc210", + "logo192.png": "bc652031597fabd19b9f14e22a71f809490d218037521b3b64d013418c1390b4", + "logo512.png": "5129e9bc1ba812b711fd9a646d3a38a906d365a26ee685df183b8752458944d4", + "manifest.json": "2667ce63c2e0835b7007239816a5597639321d333da396a78638dfa9e8a7c935", + "mockups/dashboard.svg": "318be3adb1324c26eb30f05572a29528a3e38331c6a604652eef75b54f8c29dc", + "mockups/pipeline.svg": "db2ef41faabeb90e7ce85413e168581686c54535d970fc7d8deda3888a479de4", + "mockups/workspace.svg": "9bbab22349147c7b01d6e18c93c622a6f8aed6dedaf23715189ab54d60e1ddbd", + "robots.txt": "e5ab0d231eeb01b4a982d1c79a6729cac9797ad15a69247e4f28ba6afc149b4c" + } +} diff --git a/docs/ui-modernisation/evidence/career/backend/a3-career-documents.trx b/docs/ui-modernisation/evidence/career/backend/a3-career-documents.trx new file mode 100644 index 00000000..fe31a221 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/backend/a3-career-documents.trx @@ -0,0 +1,646 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 9.0.19) +[xUnit.net 00:00:00.74] Discovering: JobTrackerApi.Tests +[xUnit.net 00:00:01.02] Discovered: JobTrackerApi.Tests +[xUnit.net 00:00:01.03] Starting: JobTrackerApi.Tests +[xUnit.net 00:00:12.31] Finished: JobTrackerApi.Tests + + + + \ No newline at end of file diff --git a/docs/ui-modernisation/evidence/career/browser/BOUNDARY.json b/docs/ui-modernisation/evidence/career/browser/BOUNDARY.json new file mode 100644 index 00000000..a33084ad --- /dev/null +++ b/docs/ui-modernisation/evidence/career/browser/BOUNDARY.json @@ -0,0 +1,494 @@ +{ + "screens": [ + { + "width": 320, + "language": "en", + "mode": "light", + "state": "overview", + "violations": [] + }, + { + "width": 320, + "language": "en", + "mode": "light", + "state": "profile", + "violations": [] + }, + { + "width": 320, + "language": "en", + "mode": "light", + "state": "import-review", + "violations": [] + }, + { + "width": 320, + "language": "en", + "mode": "light", + "state": "library", + "violations": [] + }, + { + "width": 320, + "language": "en", + "mode": "light", + "state": "cv-editor", + "violations": [] + }, + { + "width": 320, + "language": "en", + "mode": "light", + "state": "letter", + "violations": [] + }, + { + "width": 390, + "language": "en", + "mode": "light", + "state": "overview", + "violations": [] + }, + { + "width": 390, + "language": "en", + "mode": "light", + "state": "profile", + "violations": [] + }, + { + "width": 390, + "language": "en", + "mode": "light", + "state": "import-review", + "violations": [] + }, + { + "width": 390, + "language": "en", + "mode": "light", + "state": "library", + "violations": [] + }, + { + "width": 390, + "language": "en", + "mode": "light", + "state": "cv-editor", + "violations": [] + }, + { + "width": 390, + "language": "en", + "mode": "light", + "state": "letter", + "violations": [] + }, + { + "width": 768, + "language": "en", + "mode": "light", + "state": "overview", + "violations": [] + }, + { + "width": 768, + "language": "en", + "mode": "light", + "state": "profile", + "violations": [] + }, + { + "width": 768, + "language": "en", + "mode": "light", + "state": "import-review", + "violations": [] + }, + { + "width": 768, + "language": "en", + "mode": "light", + "state": "library", + "violations": [] + }, + { + "width": 768, + "language": "en", + "mode": "light", + "state": "cv-editor", + "violations": [] + }, + { + "width": 768, + "language": "en", + "mode": "light", + "state": "letter", + "violations": [] + }, + { + "width": 1000, + "language": "en", + "mode": "light", + "state": "overview", + "violations": [] + }, + { + "width": 1000, + "language": "en", + "mode": "light", + "state": "profile", + "violations": [] + }, + { + "width": 1000, + "language": "en", + "mode": "light", + "state": "import-review", + "violations": [] + }, + { + "width": 1000, + "language": "en", + "mode": "light", + "state": "library", + "violations": [] + }, + { + "width": 1000, + "language": "en", + "mode": "light", + "state": "cv-editor", + "violations": [] + }, + { + "width": 1000, + "language": "en", + "mode": "light", + "state": "letter", + "violations": [] + }, + { + "width": 1001, + "language": "en", + "mode": "light", + "state": "overview", + "violations": [] + }, + { + "width": 1001, + "language": "en", + "mode": "light", + "state": "profile", + "violations": [] + }, + { + "width": 1001, + "language": "en", + "mode": "light", + "state": "import-review", + "violations": [] + }, + { + "width": 1001, + "language": "en", + "mode": "light", + "state": "library", + "violations": [] + }, + { + "width": 1001, + "language": "en", + "mode": "light", + "state": "cv-editor", + "violations": [] + }, + { + "width": 1001, + "language": "en", + "mode": "light", + "state": "letter", + "violations": [] + }, + { + "width": 1440, + "language": "en", + "mode": "light", + "state": "overview", + "violations": [] + }, + { + "width": 1440, + "language": "en", + "mode": "light", + "state": "profile", + "violations": [] + }, + { + "width": 1440, + "language": "en", + "mode": "light", + "state": "import-review", + "violations": [] + }, + { + "width": 1440, + "language": "en", + "mode": "light", + "state": "library", + "violations": [] + }, + { + "width": 1440, + "language": "en", + "mode": "light", + "state": "cv-editor", + "violations": [] + }, + { + "width": 1440, + "language": "en", + "mode": "light", + "state": "letter", + "violations": [] + } + ], + "journeys": [ + { + "width": 320, + "language": "en", + "mode": "light", + "all14KeyboardEditTargets": "PASS", + "canonicalSaveStableIds": "PASS", + "legacyImportComparisonSelectionNoApply": "PASS", + "libraryKeyboardOpen": "PASS", + "cvResponsiveRename": "PASS", + "letterResponsiveManualSave": "PASS" + }, + { + "width": 390, + "language": "en", + "mode": "light", + "all14KeyboardEditTargets": "PASS", + "canonicalSaveStableIds": "PASS", + "legacyImportComparisonSelectionNoApply": "PASS", + "libraryKeyboardOpen": "PASS", + "cvResponsiveRename": "PASS", + "letterResponsiveManualSave": "PASS" + }, + { + "width": 768, + "language": "en", + "mode": "light", + "all14KeyboardEditTargets": "PASS", + "canonicalSaveStableIds": "PASS", + "legacyImportComparisonSelectionNoApply": "PASS", + "libraryKeyboardOpen": "PASS", + "cvResponsiveRename": "PASS", + "letterResponsiveManualSave": "PASS" + }, + { + "width": 1000, + "language": "en", + "mode": "light", + "all14KeyboardEditTargets": "PASS", + "canonicalSaveStableIds": "PASS", + "legacyImportComparisonSelectionNoApply": "PASS", + "libraryKeyboardOpen": "PASS", + "cvResponsiveRename": "PASS", + "letterResponsiveManualSave": "PASS" + }, + { + "width": 1001, + "language": "en", + "mode": "light", + "all14KeyboardEditTargets": "PASS", + "canonicalSaveStableIds": "PASS", + "legacyImportComparisonSelectionNoApply": "PASS", + "libraryKeyboardOpen": "PASS", + "cvResponsiveRename": "PASS", + "letterResponsiveManualSave": "PASS" + }, + { + "width": 1440, + "language": "en", + "mode": "light", + "all14KeyboardEditTargets": "PASS", + "canonicalSaveStableIds": "PASS", + "legacyImportComparisonSelectionNoApply": "PASS", + "libraryKeyboardOpen": "PASS", + "cvResponsiveRename": "PASS", + "letterResponsiveManualSave": "PASS" + } + ], + "errors": [], + "unexpectedWrites": [], + "mockedWrites": [ + { + "width": 320, + "language": "en", + "mode": "light", + "action": "canonicalProjectSave" + }, + { + "width": 320, + "language": "en", + "mode": "light", + "action": "variantRename" + }, + { + "width": 320, + "language": "en", + "mode": "light", + "action": "manualLetterSave" + }, + { + "width": 390, + "language": "en", + "mode": "light", + "action": "canonicalProjectSave" + }, + { + "width": 390, + "language": "en", + "mode": "light", + "action": "variantRename" + }, + { + "width": 390, + "language": "en", + "mode": "light", + "action": "manualLetterSave" + }, + { + "width": 768, + "language": "en", + "mode": "light", + "action": "canonicalProjectSave" + }, + { + "width": 768, + "language": "en", + "mode": "light", + "action": "variantRename" + }, + { + "width": 768, + "language": "en", + "mode": "light", + "action": "manualLetterSave" + }, + { + "width": 1000, + "language": "en", + "mode": "light", + "action": "canonicalProjectSave" + }, + { + "width": 1000, + "language": "en", + "mode": "light", + "action": "variantRename" + }, + { + "width": 1000, + "language": "en", + "mode": "light", + "action": "manualLetterSave" + }, + { + "width": 1001, + "language": "en", + "mode": "light", + "action": "canonicalProjectSave" + }, + { + "width": 1001, + "language": "en", + "mode": "light", + "action": "variantRename" + }, + { + "width": 1001, + "language": "en", + "mode": "light", + "action": "manualLetterSave" + }, + { + "width": 1440, + "language": "en", + "mode": "light", + "action": "canonicalProjectSave" + }, + { + "width": 1440, + "language": "en", + "mode": "light", + "action": "variantRename" + }, + { + "width": 1440, + "language": "en", + "mode": "light", + "action": "manualLetterSave" + } + ], + "renderReads": 6, + "unavailableReads": [ + "/api/companies", + "/api/companies", + "/api/cv/themes/modern/preview", + "/api/jobapplications/42/cv", + "/api/companies", + "/api/companies", + "/api/companies", + "/api/cv/themes/modern/preview", + "/api/jobapplications/42/cv", + "/api/companies", + "/api/companies", + "/api/companies", + "/api/cv/themes/modern/preview", + "/api/jobapplications/42/cv", + "/api/companies", + "/api/companies", + "/api/companies", + "/api/cv/themes/modern/preview", + "/api/jobapplications/42/cv", + "/api/companies", + "/api/companies", + "/api/companies", + "/api/cv/themes/modern/preview", + "/api/jobapplications/42/cv", + "/api/companies", + "/api/companies", + "/api/companies", + "/api/cv/themes/modern/preview", + "/api/jobapplications/42/cv", + "/api/companies" + ], + "blockedExternal": [ + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com" + ], + "limits": [ + "All API and preview responses are controlled fixtures; not backend end-to-end or physical PDF qualification.", + "Legacy import comparison and selection only; no parser, model, import acceptance or source mutation.", + "No native device, screen reader, provider, integrated security, deployment or release acceptance." + ] +} \ No newline at end of file diff --git a/docs/ui-modernisation/evidence/career/browser/BROWSER.json b/docs/ui-modernisation/evidence/career/browser/BROWSER.json new file mode 100644 index 00000000..cd95799c --- /dev/null +++ b/docs/ui-modernisation/evidence/career/browser/BROWSER.json @@ -0,0 +1,1284 @@ +{ + "screens": [ + { + "width": 320, + "language": "en", + "mode": "light", + "state": "overview", + "violations": [] + }, + { + "width": 320, + "language": "en", + "mode": "light", + "state": "profile", + "violations": [] + }, + { + "width": 320, + "language": "en", + "mode": "light", + "state": "import-review", + "violations": [] + }, + { + "width": 320, + "language": "en", + "mode": "light", + "state": "library", + "violations": [] + }, + { + "width": 320, + "language": "en", + "mode": "light", + "state": "cv-editor", + "violations": [] + }, + { + "width": 320, + "language": "en", + "mode": "light", + "state": "letter", + "violations": [] + }, + { + "width": 320, + "language": "en", + "mode": "dark", + "state": "overview", + "violations": [] + }, + { + "width": 320, + "language": "en", + "mode": "dark", + "state": "profile", + "violations": [] + }, + { + "width": 320, + "language": "en", + "mode": "dark", + "state": "import-review", + "violations": [] + }, + { + "width": 320, + "language": "en", + "mode": "dark", + "state": "library", + "violations": [] + }, + { + "width": 320, + "language": "en", + "mode": "dark", + "state": "cv-editor", + "violations": [] + }, + { + "width": 320, + "language": "en", + "mode": "dark", + "state": "letter", + "violations": [] + }, + { + "width": 320, + "language": "nb", + "mode": "light", + "state": "overview", + "violations": [] + }, + { + "width": 320, + "language": "nb", + "mode": "light", + "state": "profile", + "violations": [] + }, + { + "width": 320, + "language": "nb", + "mode": "light", + "state": "import-review", + "violations": [] + }, + { + "width": 320, + "language": "nb", + "mode": "light", + "state": "library", + "violations": [] + }, + { + "width": 320, + "language": "nb", + "mode": "light", + "state": "cv-editor", + "violations": [] + }, + { + "width": 320, + "language": "nb", + "mode": "light", + "state": "letter", + "violations": [] + }, + { + "width": 320, + "language": "nb", + "mode": "dark", + "state": "overview", + "violations": [] + }, + { + "width": 320, + "language": "nb", + "mode": "dark", + "state": "profile", + "violations": [] + }, + { + "width": 320, + "language": "nb", + "mode": "dark", + "state": "import-review", + "violations": [] + }, + { + "width": 320, + "language": "nb", + "mode": "dark", + "state": "library", + "violations": [] + }, + { + "width": 320, + "language": "nb", + "mode": "dark", + "state": "cv-editor", + "violations": [] + }, + { + "width": 320, + "language": "nb", + "mode": "dark", + "state": "letter", + "violations": [] + }, + { + "width": 390, + "language": "en", + "mode": "light", + "state": "overview", + "violations": [] + }, + { + "width": 390, + "language": "en", + "mode": "light", + "state": "profile", + "violations": [] + }, + { + "width": 390, + "language": "en", + "mode": "light", + "state": "import-review", + "violations": [] + }, + { + "width": 390, + "language": "en", + "mode": "light", + "state": "library", + "violations": [] + }, + { + "width": 390, + "language": "en", + "mode": "light", + "state": "cv-editor", + "violations": [] + }, + { + "width": 390, + "language": "en", + "mode": "light", + "state": "letter", + "violations": [] + }, + { + "width": 390, + "language": "en", + "mode": "dark", + "state": "overview", + "violations": [] + }, + { + "width": 390, + "language": "en", + "mode": "dark", + "state": "profile", + "violations": [] + }, + { + "width": 390, + "language": "en", + "mode": "dark", + "state": "import-review", + "violations": [] + }, + { + "width": 390, + "language": "en", + "mode": "dark", + "state": "library", + "violations": [] + }, + { + "width": 390, + "language": "en", + "mode": "dark", + "state": "cv-editor", + "violations": [] + }, + { + "width": 390, + "language": "en", + "mode": "dark", + "state": "letter", + "violations": [] + }, + { + "width": 390, + "language": "nb", + "mode": "light", + "state": "overview", + "violations": [] + }, + { + "width": 390, + "language": "nb", + "mode": "light", + "state": "profile", + "violations": [] + }, + { + "width": 390, + "language": "nb", + "mode": "light", + "state": "import-review", + "violations": [] + }, + { + "width": 390, + "language": "nb", + "mode": "light", + "state": "library", + "violations": [] + }, + { + "width": 390, + "language": "nb", + "mode": "light", + "state": "cv-editor", + "violations": [] + }, + { + "width": 390, + "language": "nb", + "mode": "light", + "state": "letter", + "violations": [] + }, + { + "width": 390, + "language": "nb", + "mode": "dark", + "state": "overview", + "violations": [] + }, + { + "width": 390, + "language": "nb", + "mode": "dark", + "state": "profile", + "violations": [] + }, + { + "width": 390, + "language": "nb", + "mode": "dark", + "state": "import-review", + "violations": [] + }, + { + "width": 390, + "language": "nb", + "mode": "dark", + "state": "library", + "violations": [] + }, + { + "width": 390, + "language": "nb", + "mode": "dark", + "state": "cv-editor", + "violations": [] + }, + { + "width": 390, + "language": "nb", + "mode": "dark", + "state": "letter", + "violations": [] + }, + { + "width": 768, + "language": "en", + "mode": "light", + "state": "overview", + "violations": [] + }, + { + "width": 768, + "language": "en", + "mode": "light", + "state": "profile", + "violations": [] + }, + { + "width": 768, + "language": "en", + "mode": "light", + "state": "import-review", + "violations": [] + }, + { + "width": 768, + "language": "en", + "mode": "light", + "state": "library", + "violations": [] + }, + { + "width": 768, + "language": "en", + "mode": "light", + "state": "cv-editor", + "violations": [] + }, + { + "width": 768, + "language": "en", + "mode": "light", + "state": "letter", + "violations": [] + }, + { + "width": 768, + "language": "en", + "mode": "dark", + "state": "overview", + "violations": [] + }, + { + "width": 768, + "language": "en", + "mode": "dark", + "state": "profile", + "violations": [] + }, + { + "width": 768, + "language": "en", + "mode": "dark", + "state": "import-review", + "violations": [] + }, + { + "width": 768, + "language": "en", + "mode": "dark", + "state": "library", + "violations": [] + }, + { + "width": 768, + "language": "en", + "mode": "dark", + "state": "cv-editor", + "violations": [] + }, + { + "width": 768, + "language": "en", + "mode": "dark", + "state": "letter", + "violations": [] + }, + { + "width": 768, + "language": "nb", + "mode": "light", + "state": "overview", + "violations": [] + }, + { + "width": 768, + "language": "nb", + "mode": "light", + "state": "profile", + "violations": [] + }, + { + "width": 768, + "language": "nb", + "mode": "light", + "state": "import-review", + "violations": [] + }, + { + "width": 768, + "language": "nb", + "mode": "light", + "state": "library", + "violations": [] + }, + { + "width": 768, + "language": "nb", + "mode": "light", + "state": "cv-editor", + "violations": [] + }, + { + "width": 768, + "language": "nb", + "mode": "light", + "state": "letter", + "violations": [] + }, + { + "width": 768, + "language": "nb", + "mode": "dark", + "state": "overview", + "violations": [] + }, + { + "width": 768, + "language": "nb", + "mode": "dark", + "state": "profile", + "violations": [] + }, + { + "width": 768, + "language": "nb", + "mode": "dark", + "state": "import-review", + "violations": [] + }, + { + "width": 768, + "language": "nb", + "mode": "dark", + "state": "library", + "violations": [] + }, + { + "width": 768, + "language": "nb", + "mode": "dark", + "state": "cv-editor", + "violations": [] + }, + { + "width": 768, + "language": "nb", + "mode": "dark", + "state": "letter", + "violations": [] + }, + { + "width": 1440, + "language": "en", + "mode": "light", + "state": "overview", + "violations": [] + }, + { + "width": 1440, + "language": "en", + "mode": "light", + "state": "profile", + "violations": [] + }, + { + "width": 1440, + "language": "en", + "mode": "light", + "state": "import-review", + "violations": [] + }, + { + "width": 1440, + "language": "en", + "mode": "light", + "state": "library", + "violations": [] + }, + { + "width": 1440, + "language": "en", + "mode": "light", + "state": "cv-editor", + "violations": [] + }, + { + "width": 1440, + "language": "en", + "mode": "light", + "state": "letter", + "violations": [] + }, + { + "width": 1440, + "language": "en", + "mode": "dark", + "state": "overview", + "violations": [] + }, + { + "width": 1440, + "language": "en", + "mode": "dark", + "state": "profile", + "violations": [] + }, + { + "width": 1440, + "language": "en", + "mode": "dark", + "state": "import-review", + "violations": [] + }, + { + "width": 1440, + "language": "en", + "mode": "dark", + "state": "library", + "violations": [] + }, + { + "width": 1440, + "language": "en", + "mode": "dark", + "state": "cv-editor", + "violations": [] + }, + { + "width": 1440, + "language": "en", + "mode": "dark", + "state": "letter", + "violations": [] + }, + { + "width": 1440, + "language": "nb", + "mode": "light", + "state": "overview", + "violations": [] + }, + { + "width": 1440, + "language": "nb", + "mode": "light", + "state": "profile", + "violations": [] + }, + { + "width": 1440, + "language": "nb", + "mode": "light", + "state": "import-review", + "violations": [] + }, + { + "width": 1440, + "language": "nb", + "mode": "light", + "state": "library", + "violations": [] + }, + { + "width": 1440, + "language": "nb", + "mode": "light", + "state": "cv-editor", + "violations": [] + }, + { + "width": 1440, + "language": "nb", + "mode": "light", + "state": "letter", + "violations": [] + }, + { + "width": 1440, + "language": "nb", + "mode": "dark", + "state": "overview", + "violations": [] + }, + { + "width": 1440, + "language": "nb", + "mode": "dark", + "state": "profile", + "violations": [] + }, + { + "width": 1440, + "language": "nb", + "mode": "dark", + "state": "import-review", + "violations": [] + }, + { + "width": 1440, + "language": "nb", + "mode": "dark", + "state": "library", + "violations": [] + }, + { + "width": 1440, + "language": "nb", + "mode": "dark", + "state": "cv-editor", + "violations": [] + }, + { + "width": 1440, + "language": "nb", + "mode": "dark", + "state": "letter", + "violations": [] + } + ], + "journeys": [ + { + "width": 320, + "language": "en", + "mode": "light", + "all14KeyboardEditTargets": "PASS", + "canonicalSaveStableIds": "PASS", + "legacyImportComparisonSelectionNoApply": "PASS", + "libraryKeyboardOpen": "PASS", + "cvResponsiveRename": "PASS", + "letterResponsiveManualSave": "PASS" + }, + { + "width": 320, + "language": "en", + "mode": "dark", + "all14KeyboardEditTargets": "PASS", + "canonicalSaveStableIds": "PASS", + "legacyImportComparisonSelectionNoApply": "PASS", + "libraryKeyboardOpen": "PASS", + "cvResponsiveRename": "PASS", + "letterResponsiveManualSave": "PASS" + }, + { + "width": 320, + "language": "nb", + "mode": "light", + "all14KeyboardEditTargets": "PASS", + "canonicalSaveStableIds": "PASS", + "legacyImportComparisonSelectionNoApply": "PASS", + "libraryKeyboardOpen": "PASS", + "cvResponsiveRename": "PASS", + "letterResponsiveManualSave": "PASS" + }, + { + "width": 320, + "language": "nb", + "mode": "dark", + "all14KeyboardEditTargets": "PASS", + "canonicalSaveStableIds": "PASS", + "legacyImportComparisonSelectionNoApply": "PASS", + "libraryKeyboardOpen": "PASS", + "cvResponsiveRename": "PASS", + "letterResponsiveManualSave": "PASS" + }, + { + "width": 390, + "language": "en", + "mode": "light", + "all14KeyboardEditTargets": "PASS", + "canonicalSaveStableIds": "PASS", + "legacyImportComparisonSelectionNoApply": "PASS", + "libraryKeyboardOpen": "PASS", + "cvResponsiveRename": "PASS", + "letterResponsiveManualSave": "PASS" + }, + { + "width": 390, + "language": "en", + "mode": "dark", + "all14KeyboardEditTargets": "PASS", + "canonicalSaveStableIds": "PASS", + "legacyImportComparisonSelectionNoApply": "PASS", + "libraryKeyboardOpen": "PASS", + "cvResponsiveRename": "PASS", + "letterResponsiveManualSave": "PASS" + }, + { + "width": 390, + "language": "nb", + "mode": "light", + "all14KeyboardEditTargets": "PASS", + "canonicalSaveStableIds": "PASS", + "legacyImportComparisonSelectionNoApply": "PASS", + "libraryKeyboardOpen": "PASS", + "cvResponsiveRename": "PASS", + "letterResponsiveManualSave": "PASS" + }, + { + "width": 390, + "language": "nb", + "mode": "dark", + "all14KeyboardEditTargets": "PASS", + "canonicalSaveStableIds": "PASS", + "legacyImportComparisonSelectionNoApply": "PASS", + "libraryKeyboardOpen": "PASS", + "cvResponsiveRename": "PASS", + "letterResponsiveManualSave": "PASS" + }, + { + "width": 768, + "language": "en", + "mode": "light", + "all14KeyboardEditTargets": "PASS", + "canonicalSaveStableIds": "PASS", + "legacyImportComparisonSelectionNoApply": "PASS", + "libraryKeyboardOpen": "PASS", + "cvResponsiveRename": "PASS", + "letterResponsiveManualSave": "PASS" + }, + { + "width": 768, + "language": "en", + "mode": "dark", + "all14KeyboardEditTargets": "PASS", + "canonicalSaveStableIds": "PASS", + "legacyImportComparisonSelectionNoApply": "PASS", + "libraryKeyboardOpen": "PASS", + "cvResponsiveRename": "PASS", + "letterResponsiveManualSave": "PASS" + }, + { + "width": 768, + "language": "nb", + "mode": "light", + "all14KeyboardEditTargets": "PASS", + "canonicalSaveStableIds": "PASS", + "legacyImportComparisonSelectionNoApply": "PASS", + "libraryKeyboardOpen": "PASS", + "cvResponsiveRename": "PASS", + "letterResponsiveManualSave": "PASS" + }, + { + "width": 768, + "language": "nb", + "mode": "dark", + "all14KeyboardEditTargets": "PASS", + "canonicalSaveStableIds": "PASS", + "legacyImportComparisonSelectionNoApply": "PASS", + "libraryKeyboardOpen": "PASS", + "cvResponsiveRename": "PASS", + "letterResponsiveManualSave": "PASS" + }, + { + "width": 1440, + "language": "en", + "mode": "light", + "all14KeyboardEditTargets": "PASS", + "canonicalSaveStableIds": "PASS", + "legacyImportComparisonSelectionNoApply": "PASS", + "libraryKeyboardOpen": "PASS", + "cvResponsiveRename": "PASS", + "letterResponsiveManualSave": "PASS" + }, + { + "width": 1440, + "language": "en", + "mode": "dark", + "all14KeyboardEditTargets": "PASS", + "canonicalSaveStableIds": "PASS", + "legacyImportComparisonSelectionNoApply": "PASS", + "libraryKeyboardOpen": "PASS", + "cvResponsiveRename": "PASS", + "letterResponsiveManualSave": "PASS" + }, + { + "width": 1440, + "language": "nb", + "mode": "light", + "all14KeyboardEditTargets": "PASS", + "canonicalSaveStableIds": "PASS", + "legacyImportComparisonSelectionNoApply": "PASS", + "libraryKeyboardOpen": "PASS", + "cvResponsiveRename": "PASS", + "letterResponsiveManualSave": "PASS" + }, + { + "width": 1440, + "language": "nb", + "mode": "dark", + "all14KeyboardEditTargets": "PASS", + "canonicalSaveStableIds": "PASS", + "legacyImportComparisonSelectionNoApply": "PASS", + "libraryKeyboardOpen": "PASS", + "cvResponsiveRename": "PASS", + "letterResponsiveManualSave": "PASS" + } + ], + "errors": [], + "unexpectedWrites": [], + "mockedWrites": [ + { + "width": 320, + "language": "en", + "mode": "light", + "action": "canonicalProjectSave" + }, + { + "width": 320, + "language": "en", + "mode": "light", + "action": "variantRename" + }, + { + "width": 320, + "language": "en", + "mode": "light", + "action": "manualLetterSave" + }, + { + "width": 320, + "language": "en", + "mode": "dark", + "action": "canonicalProjectSave" + }, + { + "width": 320, + "language": "en", + "mode": "dark", + "action": "variantRename" + }, + { + "width": 320, + "language": "en", + "mode": "dark", + "action": "manualLetterSave" + }, + { + "width": 320, + "language": "nb", + "mode": "light", + "action": "canonicalProjectSave" + }, + { + "width": 320, + "language": "nb", + "mode": "light", + "action": "variantRename" + }, + { + "width": 320, + "language": "nb", + "mode": "light", + "action": "manualLetterSave" + }, + { + "width": 320, + "language": "nb", + "mode": "dark", + "action": "canonicalProjectSave" + }, + { + "width": 320, + "language": "nb", + "mode": "dark", + "action": "variantRename" + }, + { + "width": 320, + "language": "nb", + "mode": "dark", + "action": "manualLetterSave" + }, + { + "width": 390, + "language": "en", + "mode": "light", + "action": "canonicalProjectSave" + }, + { + "width": 390, + "language": "en", + "mode": "light", + "action": "variantRename" + }, + { + "width": 390, + "language": "en", + "mode": "light", + "action": "manualLetterSave" + }, + { + "width": 390, + "language": "en", + "mode": "dark", + "action": "canonicalProjectSave" + }, + { + "width": 390, + "language": "en", + "mode": "dark", + "action": "variantRename" + }, + { + "width": 390, + "language": "en", + "mode": "dark", + "action": "manualLetterSave" + }, + { + "width": 390, + "language": "nb", + "mode": "light", + "action": "canonicalProjectSave" + }, + { + "width": 390, + "language": "nb", + "mode": "light", + "action": "variantRename" + }, + { + "width": 390, + "language": "nb", + "mode": "light", + "action": "manualLetterSave" + }, + { + "width": 390, + "language": "nb", + "mode": "dark", + "action": "canonicalProjectSave" + }, + { + "width": 390, + "language": "nb", + "mode": "dark", + "action": "variantRename" + }, + { + "width": 390, + "language": "nb", + "mode": "dark", + "action": "manualLetterSave" + }, + { + "width": 768, + "language": "en", + "mode": "light", + "action": "canonicalProjectSave" + }, + { + "width": 768, + "language": "en", + "mode": "light", + "action": "variantRename" + }, + { + "width": 768, + "language": "en", + "mode": "light", + "action": "manualLetterSave" + }, + { + "width": 768, + "language": "en", + "mode": "dark", + "action": "canonicalProjectSave" + }, + { + "width": 768, + "language": "en", + "mode": "dark", + "action": "variantRename" + }, + { + "width": 768, + "language": "en", + "mode": "dark", + "action": "manualLetterSave" + }, + { + "width": 768, + "language": "nb", + "mode": "light", + "action": "canonicalProjectSave" + }, + { + "width": 768, + "language": "nb", + "mode": "light", + "action": "variantRename" + }, + { + "width": 768, + "language": "nb", + "mode": "light", + "action": "manualLetterSave" + }, + { + "width": 768, + "language": "nb", + "mode": "dark", + "action": "canonicalProjectSave" + }, + { + "width": 768, + "language": "nb", + "mode": "dark", + "action": "variantRename" + }, + { + "width": 768, + "language": "nb", + "mode": "dark", + "action": "manualLetterSave" + }, + { + "width": 1440, + "language": "en", + "mode": "light", + "action": "canonicalProjectSave" + }, + { + "width": 1440, + "language": "en", + "mode": "light", + "action": "variantRename" + }, + { + "width": 1440, + "language": "en", + "mode": "light", + "action": "manualLetterSave" + }, + { + "width": 1440, + "language": "en", + "mode": "dark", + "action": "canonicalProjectSave" + }, + { + "width": 1440, + "language": "en", + "mode": "dark", + "action": "variantRename" + }, + { + "width": 1440, + "language": "en", + "mode": "dark", + "action": "manualLetterSave" + }, + { + "width": 1440, + "language": "nb", + "mode": "light", + "action": "canonicalProjectSave" + }, + { + "width": 1440, + "language": "nb", + "mode": "light", + "action": "variantRename" + }, + { + "width": 1440, + "language": "nb", + "mode": "light", + "action": "manualLetterSave" + }, + { + "width": 1440, + "language": "nb", + "mode": "dark", + "action": "canonicalProjectSave" + }, + { + "width": 1440, + "language": "nb", + "mode": "dark", + "action": "variantRename" + }, + { + "width": 1440, + "language": "nb", + "mode": "dark", + "action": "manualLetterSave" + } + ], + "renderReads": 16, + "unavailableReads": [ + "/api/companies", + "/api/companies", + "/api/cv/themes/modern/preview", + "/api/jobapplications/42/cv", + "/api/companies", + "/api/companies", + "/api/companies", + "/api/cv/themes/modern/preview", + "/api/jobapplications/42/cv", + "/api/companies", + "/api/companies", + "/api/companies", + "/api/cv/themes/modern/preview", + "/api/jobapplications/42/cv", + "/api/companies", + "/api/companies", + "/api/companies", + "/api/cv/themes/modern/preview", + "/api/jobapplications/42/cv", + "/api/companies", + "/api/companies", + "/api/companies", + "/api/cv/themes/modern/preview", + "/api/jobapplications/42/cv", + "/api/companies", + "/api/companies", + "/api/companies", + "/api/cv/themes/modern/preview", + "/api/jobapplications/42/cv", + "/api/companies", + "/api/companies", + "/api/companies", + "/api/cv/themes/modern/preview", + "/api/jobapplications/42/cv", + "/api/companies", + "/api/companies", + "/api/companies", + "/api/cv/themes/modern/preview", + "/api/jobapplications/42/cv", + "/api/companies", + "/api/companies", + "/api/companies", + "/api/cv/themes/modern/preview", + "/api/jobapplications/42/cv", + "/api/companies", + "/api/companies", + "/api/companies", + "/api/cv/themes/modern/preview", + "/api/jobapplications/42/cv", + "/api/companies", + "/api/companies", + "/api/companies", + "/api/cv/themes/modern/preview", + "/api/jobapplications/42/cv", + "/api/companies", + "/api/companies", + "/api/companies", + "/api/cv/themes/modern/preview", + "/api/jobapplications/42/cv", + "/api/companies", + "/api/companies", + "/api/companies", + "/api/cv/themes/modern/preview", + "/api/jobapplications/42/cv", + "/api/companies", + "/api/companies", + "/api/companies", + "/api/cv/themes/modern/preview", + "/api/jobapplications/42/cv", + "/api/companies", + "/api/companies", + "/api/companies", + "/api/cv/themes/modern/preview", + "/api/jobapplications/42/cv", + "/api/companies", + "/api/companies", + "/api/companies", + "/api/cv/themes/modern/preview", + "/api/jobapplications/42/cv", + "/api/companies" + ], + "blockedExternal": [ + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com" + ], + "limits": [ + "All API and preview responses are controlled fixtures; not backend end-to-end or physical PDF qualification.", + "Legacy import comparison and selection only; no parser, model, import acceptance or source mutation.", + "No native device, screen reader, provider, integrated security, deployment or release acceptance." + ] +} \ No newline at end of file diff --git a/docs/ui-modernisation/evidence/career/browser/FAILED-focus.json b/docs/ui-modernisation/evidence/career/browser/FAILED-focus.json new file mode 100644 index 00000000..5a74f1e6 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/browser/FAILED-focus.json @@ -0,0 +1,27 @@ +{ + "screens": [ + { + "width": 320, + "language": "en", + "mode": "light", + "state": "overview", + "violations": [] + } + ], + "journeys": [], + "errors": [], + "unexpectedWrites": [], + "mockedWrites": [], + "renderReads": 0, + "unavailableReads": [ + "/api/companies" + ], + "blockedExternal": [ + "https://fonts.googleapis.com" + ], + "limits": [ + "All API and preview responses are controlled fixtures; not backend end-to-end or physical PDF qualification.", + "Legacy import comparison and selection only; no parser, model, import acceptance or source mutation.", + "No native device, screen reader, provider, integrated security, deployment or release acceptance." + ] +} \ No newline at end of file diff --git a/docs/ui-modernisation/evidence/career/browser/FAILED-focus.png b/docs/ui-modernisation/evidence/career/browser/FAILED-focus.png new file mode 100644 index 00000000..9f163537 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/FAILED-focus.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/FAILED-mobile-navigation-harness.json b/docs/ui-modernisation/evidence/career/browser/FAILED-mobile-navigation-harness.json new file mode 100644 index 00000000..5a74f1e6 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/browser/FAILED-mobile-navigation-harness.json @@ -0,0 +1,27 @@ +{ + "screens": [ + { + "width": 320, + "language": "en", + "mode": "light", + "state": "overview", + "violations": [] + } + ], + "journeys": [], + "errors": [], + "unexpectedWrites": [], + "mockedWrites": [], + "renderReads": 0, + "unavailableReads": [ + "/api/companies" + ], + "blockedExternal": [ + "https://fonts.googleapis.com" + ], + "limits": [ + "All API and preview responses are controlled fixtures; not backend end-to-end or physical PDF qualification.", + "Legacy import comparison and selection only; no parser, model, import acceptance or source mutation.", + "No native device, screen reader, provider, integrated security, deployment or release acceptance." + ] +} \ No newline at end of file diff --git a/docs/ui-modernisation/evidence/career/browser/PILOT.json b/docs/ui-modernisation/evidence/career/browser/PILOT.json new file mode 100644 index 00000000..bb2f5d91 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/browser/PILOT.json @@ -0,0 +1,99 @@ +{ + "screens": [ + { + "width": 320, + "language": "en", + "mode": "light", + "state": "overview", + "violations": [] + }, + { + "width": 320, + "language": "en", + "mode": "light", + "state": "profile", + "violations": [] + }, + { + "width": 320, + "language": "en", + "mode": "light", + "state": "import-review", + "violations": [] + }, + { + "width": 320, + "language": "en", + "mode": "light", + "state": "library", + "violations": [] + }, + { + "width": 320, + "language": "en", + "mode": "light", + "state": "cv-editor", + "violations": [] + }, + { + "width": 320, + "language": "en", + "mode": "light", + "state": "letter", + "violations": [] + } + ], + "journeys": [ + { + "width": 320, + "language": "en", + "mode": "light", + "all14KeyboardEditTargets": "PASS", + "canonicalSaveStableIds": "PASS", + "legacyImportComparisonSelectionNoApply": "PASS", + "libraryKeyboardOpen": "PASS", + "cvResponsiveRename": "PASS", + "letterResponsiveManualSave": "PASS" + } + ], + "errors": [], + "unexpectedWrites": [], + "mockedWrites": [ + { + "width": 320, + "language": "en", + "mode": "light", + "action": "canonicalProjectSave" + }, + { + "width": 320, + "language": "en", + "mode": "light", + "action": "variantRename" + }, + { + "width": 320, + "language": "en", + "mode": "light", + "action": "manualLetterSave" + } + ], + "renderReads": 1, + "unavailableReads": [ + "/api/companies", + "/api/companies", + "/api/cv/themes/modern/preview", + "/api/jobapplications/42/cv", + "/api/companies" + ], + "blockedExternal": [ + "https://fonts.googleapis.com", + "https://fonts.googleapis.com", + "https://fonts.googleapis.com" + ], + "limits": [ + "All API and preview responses are controlled fixtures; not backend end-to-end or physical PDF qualification.", + "Legacy import comparison and selection only; no parser, model, import acceptance or source mutation.", + "No native device, screen reader, provider, integrated security, deployment or release acceptance." + ] +} \ No newline at end of file diff --git a/docs/ui-modernisation/evidence/career/browser/cv-editor-en-dark-1440.png b/docs/ui-modernisation/evidence/career/browser/cv-editor-en-dark-1440.png new file mode 100644 index 00000000..5ab8dd78 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/cv-editor-en-dark-1440.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/cv-editor-en-dark-320.png b/docs/ui-modernisation/evidence/career/browser/cv-editor-en-dark-320.png new file mode 100644 index 00000000..8f4b640e Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/cv-editor-en-dark-320.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/cv-editor-en-dark-390.png b/docs/ui-modernisation/evidence/career/browser/cv-editor-en-dark-390.png new file mode 100644 index 00000000..734689ae Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/cv-editor-en-dark-390.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/cv-editor-en-dark-768.png b/docs/ui-modernisation/evidence/career/browser/cv-editor-en-dark-768.png new file mode 100644 index 00000000..f96658dc Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/cv-editor-en-dark-768.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/cv-editor-en-light-1000.png b/docs/ui-modernisation/evidence/career/browser/cv-editor-en-light-1000.png new file mode 100644 index 00000000..332c7c5c Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/cv-editor-en-light-1000.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/cv-editor-en-light-1001.png b/docs/ui-modernisation/evidence/career/browser/cv-editor-en-light-1001.png new file mode 100644 index 00000000..7e16ff56 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/cv-editor-en-light-1001.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/cv-editor-en-light-1440.png b/docs/ui-modernisation/evidence/career/browser/cv-editor-en-light-1440.png new file mode 100644 index 00000000..841aac8a Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/cv-editor-en-light-1440.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/cv-editor-en-light-320.png b/docs/ui-modernisation/evidence/career/browser/cv-editor-en-light-320.png new file mode 100644 index 00000000..b375ee27 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/cv-editor-en-light-320.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/cv-editor-en-light-390.png b/docs/ui-modernisation/evidence/career/browser/cv-editor-en-light-390.png new file mode 100644 index 00000000..52466e67 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/cv-editor-en-light-390.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/cv-editor-en-light-768.png b/docs/ui-modernisation/evidence/career/browser/cv-editor-en-light-768.png new file mode 100644 index 00000000..d72cdbe8 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/cv-editor-en-light-768.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/cv-editor-nb-dark-1440.png b/docs/ui-modernisation/evidence/career/browser/cv-editor-nb-dark-1440.png new file mode 100644 index 00000000..730f5d10 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/cv-editor-nb-dark-1440.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/cv-editor-nb-dark-320.png b/docs/ui-modernisation/evidence/career/browser/cv-editor-nb-dark-320.png new file mode 100644 index 00000000..47767b0d Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/cv-editor-nb-dark-320.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/cv-editor-nb-dark-390.png b/docs/ui-modernisation/evidence/career/browser/cv-editor-nb-dark-390.png new file mode 100644 index 00000000..58814410 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/cv-editor-nb-dark-390.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/cv-editor-nb-dark-768.png b/docs/ui-modernisation/evidence/career/browser/cv-editor-nb-dark-768.png new file mode 100644 index 00000000..6386c5fb Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/cv-editor-nb-dark-768.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/cv-editor-nb-light-1440.png b/docs/ui-modernisation/evidence/career/browser/cv-editor-nb-light-1440.png new file mode 100644 index 00000000..0d335a7b Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/cv-editor-nb-light-1440.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/cv-editor-nb-light-320.png b/docs/ui-modernisation/evidence/career/browser/cv-editor-nb-light-320.png new file mode 100644 index 00000000..9bf57517 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/cv-editor-nb-light-320.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/cv-editor-nb-light-390.png b/docs/ui-modernisation/evidence/career/browser/cv-editor-nb-light-390.png new file mode 100644 index 00000000..50a348bc Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/cv-editor-nb-light-390.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/cv-editor-nb-light-768.png b/docs/ui-modernisation/evidence/career/browser/cv-editor-nb-light-768.png new file mode 100644 index 00000000..04ada2ed Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/cv-editor-nb-light-768.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/import-review-en-dark-1440.png b/docs/ui-modernisation/evidence/career/browser/import-review-en-dark-1440.png new file mode 100644 index 00000000..aa372050 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/import-review-en-dark-1440.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/import-review-en-dark-320.png b/docs/ui-modernisation/evidence/career/browser/import-review-en-dark-320.png new file mode 100644 index 00000000..ce0a41c0 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/import-review-en-dark-320.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/import-review-en-dark-390.png b/docs/ui-modernisation/evidence/career/browser/import-review-en-dark-390.png new file mode 100644 index 00000000..e8f13bf3 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/import-review-en-dark-390.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/import-review-en-dark-768.png b/docs/ui-modernisation/evidence/career/browser/import-review-en-dark-768.png new file mode 100644 index 00000000..4f1c32ab Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/import-review-en-dark-768.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/import-review-en-light-1000.png b/docs/ui-modernisation/evidence/career/browser/import-review-en-light-1000.png new file mode 100644 index 00000000..0fface15 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/import-review-en-light-1000.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/import-review-en-light-1001.png b/docs/ui-modernisation/evidence/career/browser/import-review-en-light-1001.png new file mode 100644 index 00000000..ea8d901d Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/import-review-en-light-1001.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/import-review-en-light-1440.png b/docs/ui-modernisation/evidence/career/browser/import-review-en-light-1440.png new file mode 100644 index 00000000..2fcd52f0 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/import-review-en-light-1440.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/import-review-en-light-320.png b/docs/ui-modernisation/evidence/career/browser/import-review-en-light-320.png new file mode 100644 index 00000000..07172780 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/import-review-en-light-320.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/import-review-en-light-390.png b/docs/ui-modernisation/evidence/career/browser/import-review-en-light-390.png new file mode 100644 index 00000000..9d0aa607 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/import-review-en-light-390.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/import-review-en-light-768.png b/docs/ui-modernisation/evidence/career/browser/import-review-en-light-768.png new file mode 100644 index 00000000..b4805d3f Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/import-review-en-light-768.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/import-review-nb-dark-1440.png b/docs/ui-modernisation/evidence/career/browser/import-review-nb-dark-1440.png new file mode 100644 index 00000000..78213d22 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/import-review-nb-dark-1440.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/import-review-nb-dark-320.png b/docs/ui-modernisation/evidence/career/browser/import-review-nb-dark-320.png new file mode 100644 index 00000000..d78578ab Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/import-review-nb-dark-320.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/import-review-nb-dark-390.png b/docs/ui-modernisation/evidence/career/browser/import-review-nb-dark-390.png new file mode 100644 index 00000000..df3b05b9 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/import-review-nb-dark-390.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/import-review-nb-dark-768.png b/docs/ui-modernisation/evidence/career/browser/import-review-nb-dark-768.png new file mode 100644 index 00000000..7d531607 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/import-review-nb-dark-768.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/import-review-nb-light-1440.png b/docs/ui-modernisation/evidence/career/browser/import-review-nb-light-1440.png new file mode 100644 index 00000000..ec483686 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/import-review-nb-light-1440.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/import-review-nb-light-320.png b/docs/ui-modernisation/evidence/career/browser/import-review-nb-light-320.png new file mode 100644 index 00000000..56c0afc9 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/import-review-nb-light-320.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/import-review-nb-light-390.png b/docs/ui-modernisation/evidence/career/browser/import-review-nb-light-390.png new file mode 100644 index 00000000..a52b002d Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/import-review-nb-light-390.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/import-review-nb-light-768.png b/docs/ui-modernisation/evidence/career/browser/import-review-nb-light-768.png new file mode 100644 index 00000000..6e14bf49 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/import-review-nb-light-768.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/letter-en-dark-1440.png b/docs/ui-modernisation/evidence/career/browser/letter-en-dark-1440.png new file mode 100644 index 00000000..6da1d0a9 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/letter-en-dark-1440.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/letter-en-dark-320.png b/docs/ui-modernisation/evidence/career/browser/letter-en-dark-320.png new file mode 100644 index 00000000..29bd7ab8 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/letter-en-dark-320.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/letter-en-dark-390.png b/docs/ui-modernisation/evidence/career/browser/letter-en-dark-390.png new file mode 100644 index 00000000..3cf5418f Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/letter-en-dark-390.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/letter-en-dark-768.png b/docs/ui-modernisation/evidence/career/browser/letter-en-dark-768.png new file mode 100644 index 00000000..c847af79 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/letter-en-dark-768.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/letter-en-light-1000.png b/docs/ui-modernisation/evidence/career/browser/letter-en-light-1000.png new file mode 100644 index 00000000..aea7a1bd Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/letter-en-light-1000.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/letter-en-light-1001.png b/docs/ui-modernisation/evidence/career/browser/letter-en-light-1001.png new file mode 100644 index 00000000..4d11602a Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/letter-en-light-1001.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/letter-en-light-1440.png b/docs/ui-modernisation/evidence/career/browser/letter-en-light-1440.png new file mode 100644 index 00000000..17b0f9ac Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/letter-en-light-1440.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/letter-en-light-320.png b/docs/ui-modernisation/evidence/career/browser/letter-en-light-320.png new file mode 100644 index 00000000..d5aab697 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/letter-en-light-320.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/letter-en-light-390.png b/docs/ui-modernisation/evidence/career/browser/letter-en-light-390.png new file mode 100644 index 00000000..01143b1f Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/letter-en-light-390.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/letter-en-light-768.png b/docs/ui-modernisation/evidence/career/browser/letter-en-light-768.png new file mode 100644 index 00000000..ff1dcbe2 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/letter-en-light-768.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/letter-nb-dark-1440.png b/docs/ui-modernisation/evidence/career/browser/letter-nb-dark-1440.png new file mode 100644 index 00000000..df9e8f7d Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/letter-nb-dark-1440.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/letter-nb-dark-320.png b/docs/ui-modernisation/evidence/career/browser/letter-nb-dark-320.png new file mode 100644 index 00000000..054ccf8c Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/letter-nb-dark-320.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/letter-nb-dark-390.png b/docs/ui-modernisation/evidence/career/browser/letter-nb-dark-390.png new file mode 100644 index 00000000..1243a5dd Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/letter-nb-dark-390.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/letter-nb-dark-768.png b/docs/ui-modernisation/evidence/career/browser/letter-nb-dark-768.png new file mode 100644 index 00000000..74c76404 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/letter-nb-dark-768.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/letter-nb-light-1440.png b/docs/ui-modernisation/evidence/career/browser/letter-nb-light-1440.png new file mode 100644 index 00000000..844f5f21 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/letter-nb-light-1440.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/letter-nb-light-320.png b/docs/ui-modernisation/evidence/career/browser/letter-nb-light-320.png new file mode 100644 index 00000000..a0e81833 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/letter-nb-light-320.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/letter-nb-light-390.png b/docs/ui-modernisation/evidence/career/browser/letter-nb-light-390.png new file mode 100644 index 00000000..3bd38621 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/letter-nb-light-390.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/letter-nb-light-768.png b/docs/ui-modernisation/evidence/career/browser/letter-nb-light-768.png new file mode 100644 index 00000000..a4cafc6b Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/letter-nb-light-768.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/library-en-dark-1440.png b/docs/ui-modernisation/evidence/career/browser/library-en-dark-1440.png new file mode 100644 index 00000000..40ae9ce9 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/library-en-dark-1440.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/library-en-dark-320.png b/docs/ui-modernisation/evidence/career/browser/library-en-dark-320.png new file mode 100644 index 00000000..27988633 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/library-en-dark-320.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/library-en-dark-390.png b/docs/ui-modernisation/evidence/career/browser/library-en-dark-390.png new file mode 100644 index 00000000..e4aa7a6c Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/library-en-dark-390.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/library-en-dark-768.png b/docs/ui-modernisation/evidence/career/browser/library-en-dark-768.png new file mode 100644 index 00000000..656e2c4d Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/library-en-dark-768.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/library-en-light-1000.png b/docs/ui-modernisation/evidence/career/browser/library-en-light-1000.png new file mode 100644 index 00000000..4aab6411 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/library-en-light-1000.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/library-en-light-1001.png b/docs/ui-modernisation/evidence/career/browser/library-en-light-1001.png new file mode 100644 index 00000000..21bb7a35 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/library-en-light-1001.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/library-en-light-1440.png b/docs/ui-modernisation/evidence/career/browser/library-en-light-1440.png new file mode 100644 index 00000000..2fbd8614 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/library-en-light-1440.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/library-en-light-320.png b/docs/ui-modernisation/evidence/career/browser/library-en-light-320.png new file mode 100644 index 00000000..c3eff0ff Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/library-en-light-320.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/library-en-light-390.png b/docs/ui-modernisation/evidence/career/browser/library-en-light-390.png new file mode 100644 index 00000000..86a4f062 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/library-en-light-390.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/library-en-light-768.png b/docs/ui-modernisation/evidence/career/browser/library-en-light-768.png new file mode 100644 index 00000000..a09f7143 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/library-en-light-768.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/library-nb-dark-1440.png b/docs/ui-modernisation/evidence/career/browser/library-nb-dark-1440.png new file mode 100644 index 00000000..a2bd5548 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/library-nb-dark-1440.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/library-nb-dark-320.png b/docs/ui-modernisation/evidence/career/browser/library-nb-dark-320.png new file mode 100644 index 00000000..36d03552 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/library-nb-dark-320.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/library-nb-dark-390.png b/docs/ui-modernisation/evidence/career/browser/library-nb-dark-390.png new file mode 100644 index 00000000..1d68de5f Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/library-nb-dark-390.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/library-nb-dark-768.png b/docs/ui-modernisation/evidence/career/browser/library-nb-dark-768.png new file mode 100644 index 00000000..3efdf1ad Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/library-nb-dark-768.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/library-nb-light-1440.png b/docs/ui-modernisation/evidence/career/browser/library-nb-light-1440.png new file mode 100644 index 00000000..cdd037cc Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/library-nb-light-1440.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/library-nb-light-320.png b/docs/ui-modernisation/evidence/career/browser/library-nb-light-320.png new file mode 100644 index 00000000..6a1d3684 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/library-nb-light-320.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/library-nb-light-390.png b/docs/ui-modernisation/evidence/career/browser/library-nb-light-390.png new file mode 100644 index 00000000..2375777f Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/library-nb-light-390.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/library-nb-light-768.png b/docs/ui-modernisation/evidence/career/browser/library-nb-light-768.png new file mode 100644 index 00000000..67660cfc Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/library-nb-light-768.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/overview-en-dark-1440.png b/docs/ui-modernisation/evidence/career/browser/overview-en-dark-1440.png new file mode 100644 index 00000000..6ad41f8c Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/overview-en-dark-1440.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/overview-en-dark-320.png b/docs/ui-modernisation/evidence/career/browser/overview-en-dark-320.png new file mode 100644 index 00000000..05d0afcf Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/overview-en-dark-320.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/overview-en-dark-390.png b/docs/ui-modernisation/evidence/career/browser/overview-en-dark-390.png new file mode 100644 index 00000000..e5f92e50 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/overview-en-dark-390.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/overview-en-dark-768.png b/docs/ui-modernisation/evidence/career/browser/overview-en-dark-768.png new file mode 100644 index 00000000..1c6ad4ab Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/overview-en-dark-768.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/overview-en-light-1000.png b/docs/ui-modernisation/evidence/career/browser/overview-en-light-1000.png new file mode 100644 index 00000000..9a8ee380 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/overview-en-light-1000.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/overview-en-light-1001.png b/docs/ui-modernisation/evidence/career/browser/overview-en-light-1001.png new file mode 100644 index 00000000..15db2126 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/overview-en-light-1001.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/overview-en-light-1440.png b/docs/ui-modernisation/evidence/career/browser/overview-en-light-1440.png new file mode 100644 index 00000000..01c6e7d9 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/overview-en-light-1440.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/overview-en-light-320.png b/docs/ui-modernisation/evidence/career/browser/overview-en-light-320.png new file mode 100644 index 00000000..4875596c Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/overview-en-light-320.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/overview-en-light-390.png b/docs/ui-modernisation/evidence/career/browser/overview-en-light-390.png new file mode 100644 index 00000000..cfb404bd Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/overview-en-light-390.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/overview-en-light-768.png b/docs/ui-modernisation/evidence/career/browser/overview-en-light-768.png new file mode 100644 index 00000000..8bdd1d8a Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/overview-en-light-768.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/overview-nb-dark-1440.png b/docs/ui-modernisation/evidence/career/browser/overview-nb-dark-1440.png new file mode 100644 index 00000000..6f476457 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/overview-nb-dark-1440.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/overview-nb-dark-320.png b/docs/ui-modernisation/evidence/career/browser/overview-nb-dark-320.png new file mode 100644 index 00000000..2d140a55 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/overview-nb-dark-320.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/overview-nb-dark-390.png b/docs/ui-modernisation/evidence/career/browser/overview-nb-dark-390.png new file mode 100644 index 00000000..3a3edbb0 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/overview-nb-dark-390.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/overview-nb-dark-768.png b/docs/ui-modernisation/evidence/career/browser/overview-nb-dark-768.png new file mode 100644 index 00000000..2dd78960 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/overview-nb-dark-768.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/overview-nb-light-1440.png b/docs/ui-modernisation/evidence/career/browser/overview-nb-light-1440.png new file mode 100644 index 00000000..84955d91 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/overview-nb-light-1440.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/overview-nb-light-320.png b/docs/ui-modernisation/evidence/career/browser/overview-nb-light-320.png new file mode 100644 index 00000000..238311b5 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/overview-nb-light-320.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/overview-nb-light-390.png b/docs/ui-modernisation/evidence/career/browser/overview-nb-light-390.png new file mode 100644 index 00000000..95cc44fb Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/overview-nb-light-390.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/overview-nb-light-768.png b/docs/ui-modernisation/evidence/career/browser/overview-nb-light-768.png new file mode 100644 index 00000000..e2998f8b Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/overview-nb-light-768.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/profile-en-dark-1440.png b/docs/ui-modernisation/evidence/career/browser/profile-en-dark-1440.png new file mode 100644 index 00000000..16cfb85d Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/profile-en-dark-1440.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/profile-en-dark-320.png b/docs/ui-modernisation/evidence/career/browser/profile-en-dark-320.png new file mode 100644 index 00000000..4f7f4de7 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/profile-en-dark-320.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/profile-en-dark-390.png b/docs/ui-modernisation/evidence/career/browser/profile-en-dark-390.png new file mode 100644 index 00000000..dff210ad Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/profile-en-dark-390.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/profile-en-dark-768.png b/docs/ui-modernisation/evidence/career/browser/profile-en-dark-768.png new file mode 100644 index 00000000..d513cef3 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/profile-en-dark-768.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/profile-en-light-1000.png b/docs/ui-modernisation/evidence/career/browser/profile-en-light-1000.png new file mode 100644 index 00000000..3f4eae62 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/profile-en-light-1000.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/profile-en-light-1001.png b/docs/ui-modernisation/evidence/career/browser/profile-en-light-1001.png new file mode 100644 index 00000000..a26f1881 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/profile-en-light-1001.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/profile-en-light-1440.png b/docs/ui-modernisation/evidence/career/browser/profile-en-light-1440.png new file mode 100644 index 00000000..5c3c43c5 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/profile-en-light-1440.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/profile-en-light-320.png b/docs/ui-modernisation/evidence/career/browser/profile-en-light-320.png new file mode 100644 index 00000000..8f8a5e6c Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/profile-en-light-320.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/profile-en-light-390.png b/docs/ui-modernisation/evidence/career/browser/profile-en-light-390.png new file mode 100644 index 00000000..819cb13f Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/profile-en-light-390.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/profile-en-light-768.png b/docs/ui-modernisation/evidence/career/browser/profile-en-light-768.png new file mode 100644 index 00000000..c93fe2fd Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/profile-en-light-768.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/profile-nb-dark-1440.png b/docs/ui-modernisation/evidence/career/browser/profile-nb-dark-1440.png new file mode 100644 index 00000000..a1fab039 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/profile-nb-dark-1440.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/profile-nb-dark-320.png b/docs/ui-modernisation/evidence/career/browser/profile-nb-dark-320.png new file mode 100644 index 00000000..0f8af120 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/profile-nb-dark-320.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/profile-nb-dark-390.png b/docs/ui-modernisation/evidence/career/browser/profile-nb-dark-390.png new file mode 100644 index 00000000..3072baec Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/profile-nb-dark-390.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/profile-nb-dark-768.png b/docs/ui-modernisation/evidence/career/browser/profile-nb-dark-768.png new file mode 100644 index 00000000..8b5c5f7d Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/profile-nb-dark-768.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/profile-nb-light-1440.png b/docs/ui-modernisation/evidence/career/browser/profile-nb-light-1440.png new file mode 100644 index 00000000..ed42de9b Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/profile-nb-light-1440.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/profile-nb-light-320.png b/docs/ui-modernisation/evidence/career/browser/profile-nb-light-320.png new file mode 100644 index 00000000..b06e4734 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/profile-nb-light-320.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/profile-nb-light-390.png b/docs/ui-modernisation/evidence/career/browser/profile-nb-light-390.png new file mode 100644 index 00000000..0866887e Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/profile-nb-light-390.png differ diff --git a/docs/ui-modernisation/evidence/career/browser/profile-nb-light-768.png b/docs/ui-modernisation/evidence/career/browser/profile-nb-light-768.png new file mode 100644 index 00000000..a125f412 Binary files /dev/null and b/docs/ui-modernisation/evidence/career/browser/profile-nb-light-768.png differ diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-career-baseline.json b/docs/ui-modernisation/evidence/career/frontend/a3-career-baseline.json new file mode 100644 index 00000000..bd167d12 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-career-baseline.json @@ -0,0 +1 @@ +{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":7,"numPassedTests":142,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":7,"numTotalTests":142,"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":1793709206526,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":[],"duration":3160,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Strict Mode groups a typing burst into one undo step and preserves redo through autosave","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793709216458,"status":"passed","title":"Strict Mode groups a typing burst into one undo step and preserves redo through autosave"},{"ancestorTitles":[],"duration":2232,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"document shortcuts undo and redo renaming, preserve native input undo and discard branched redo","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793709219618,"status":"passed","title":"document shortcuts undo and redo renaming, preserve native input undo and discard branched redo"},{"ancestorTitles":[],"duration":1261,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a revision conflict disables document history without silently writing an undo","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793709221850,"status":"passed","title":"a revision conflict disables document history without silently writing an undo"},{"ancestorTitles":[],"duration":1663,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"switching documents hides the previous draft while loading and starts fresh history","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709223111,"status":"passed","title":"switching documents hides the previous draft while loading and starts fresh history"},{"ancestorTitles":[],"duration":876,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"explicit blank editing excludes master content and includes a profile section only after an Add action","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709224774,"status":"passed","title":"explicit blank editing excludes master content and includes a profile section only after an Add action"},{"ancestorTitles":[],"duration":821,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a blank CV can deliberately add an additional Career Profile section","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793709225650,"status":"passed","title":"a blank CV can deliberately add an additional Career Profile section"},{"ancestorTitles":[],"duration":2296,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a historical restore response from the previous document cannot change the newly opened CV","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793709226471,"status":"passed","title":"a historical restore response from the previous document cannot change the newly opened CV"},{"ancestorTitles":[],"duration":561,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"content sections follow the editing-region heading without mutating CV settings","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793709228767,"status":"passed","title":"content sections follow the editing-region heading without mutating CV settings"},{"ancestorTitles":[],"duration":753,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"settings history explains current Career Profile resolution without writing data","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793709229328,"status":"passed","title":"settings history explains current Career Profile resolution without writing data"},{"ancestorTitles":[],"duration":2120,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"PDF export locks immediately, rejects a newer unsaved draft, and keeps that draft recoverable","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793709230082,"status":"passed","title":"PDF export locks immediately, rejects a newer unsaved draft, and keeps that draft recoverable"},{"ancestorTitles":[],"duration":1307,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"edits during a held PDF response prevent an older document download","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793709232203,"status":"passed","title":"edits during a held PDF response prevent an older document download"},{"ancestorTitles":[],"duration":1073,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"moving a section to the first position announces its actual order and focuses its row","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793709233511,"status":"passed","title":"moving a section to the first position announces its actual order and focuses its row"},{"ancestorTitles":[],"duration":5175,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"section navigation opens and focuses omitted/custom sections without changing their data","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793709234584,"status":"passed","title":"section navigation opens and focuses omitted/custom sections without changing their data"},{"ancestorTitles":[],"duration":1735,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"keyboard move controls retain focus and persist the same section order shown by navigation","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709239759,"status":"passed","title":"keyboard move controls retain focus and persist the same section order shown by navigation"},{"ancestorTitles":[],"duration":1857,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"secondary duplicate action saves the current draft before creating the copy","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793709241494,"status":"passed","title":"secondary duplicate action saves the current draft before creating the copy"},{"ancestorTitles":[],"duration":972,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"pane navigation focuses the existing preview without changing the pending draft","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709243352,"status":"passed","title":"pane navigation focuses the existing preview without changing the pending draft"},{"ancestorTitles":[],"duration":527,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"deep link loads the exact variant named in the route","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793709244324,"status":"passed","title":"deep link loads the exact variant named in the route"},{"ancestorTitles":[],"duration":28,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a variant that does not exist shows a safe error instead of an empty editor","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793709244851,"status":"passed","title":"a variant that does not exist shows a safe error instead of an empty editor"},{"ancestorTitles":[],"duration":44,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"another user's variant is refused by the server and never rendered","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793709244879,"status":"passed","title":"another user's variant is refused by the server and never rendered"},{"ancestorTitles":[],"duration":50,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a denied CV read has localized permission context without a write or retry","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793709244924,"status":"passed","title":"a denied CV read has localized permission context without a write or retry"},{"ancestorTitles":[],"duration":392,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a temporary CV opening failure retries reads and restores focus to the editor without saving","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709244974,"status":"passed","title":"a temporary CV opening failure retries reads and restores focus to the editor without saving"},{"ancestorTitles":[],"duration":1086,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Bokmål history localizes known sources while preserving unknown metadata and versions","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793709245366,"status":"passed","title":"Bokmål history localizes known sources while preserving unknown metadata and versions"},{"ancestorTitles":[],"duration":1022,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"invalid names are explained and are not silently autosaved","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793709246452,"status":"passed","title":"invalid names are explained and are not silently autosaved"},{"ancestorTitles":[],"duration":1953,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"failed autosave is visible and can be retried with the latest data","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709247474,"status":"passed","title":"failed autosave is visible and can be retried with the latest data"},{"ancestorTitles":[],"duration":2467,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"session undo and redo restore content edits before autosave","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793709249427,"status":"passed","title":"session undo and redo restore content edits before autosave"},{"ancestorTitles":[],"duration":2869,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"queued saves use acknowledged server versions without replacing newer local editing state","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793709251894,"status":"passed","title":"queued saves use acknowledged server versions without replacing newer local editing state"},{"ancestorTitles":[],"duration":4336,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"revision conflict retains the draft and blocks later autosaves until explicit reload","invocations":1,"location":null,"numPassingAsserts":10,"retryReasons":[],"startAt":1793709254763,"status":"passed","title":"revision conflict retains the draft and blocks later autosaves until explicit reload"},{"ancestorTitles":[],"duration":2538,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"edits made while a confirmed reload is in flight remain recoverable","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793709259099,"status":"passed","title":"edits made while a confirmed reload is in flight remain recoverable"},{"ancestorTitles":[],"duration":2816,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"restoring history uses the current version and never replaces edits made during the request","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793709261637,"status":"passed","title":"restoring history uses the current version and never replaces edits made during the request"},{"ancestorTitles":[],"duration":1500,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Content is the primary studio panel and all advanced tabs retain their controls","invocations":1,"location":null,"numPassingAsserts":14,"retryReasons":[],"startAt":1793709264453,"status":"passed","title":"Content is the primary studio panel and all advanced tabs retain their controls"},{"ancestorTitles":[],"duration":2248,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"choosing a template restores its own structure instead of inheriting the previous template layout","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793709265953,"status":"passed","title":"choosing a template restores its own structure instead of inheriting the previous template layout"},{"ancestorTitles":[],"duration":1799,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"editor sections, design controls and document settings render in Bokmål","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793709268201,"status":"passed","title":"editor sections, design controls and document settings render in Bokmål"},{"ancestorTitles":[],"duration":2347,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"internal navigation warns and can be cancelled before discarding a pending edit","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793709270000,"status":"passed","title":"internal navigation warns and can be cancelled before discarding a pending edit"},{"ancestorTitles":[],"duration":11000,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"custom entries can be added, edited, reordered and deleted with confirmation","invocations":1,"location":null,"numPassingAsserts":16,"retryReasons":[],"startAt":1793709272347,"status":"passed","title":"custom entries can be added, edited, reordered and deleted with confirmation"},{"ancestorTitles":[],"duration":4031,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C01 C07] source-backed entry edits identify their scope and save only this CV","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793709283347,"status":"passed","title":"[P5-10 PRES-C01 C07] source-backed entry edits identify their scope and save only this CV"},{"ancestorTitles":[],"duration":5953,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C07 C10] resetting one entry field preserves omission, sibling override and order and supports undo","invocations":1,"location":null,"numPassingAsserts":12,"retryReasons":[],"startAt":1793709287378,"status":"passed","title":"[P5-10 PRES-C07 C10] resetting one entry field preserves omission, sibling override and order and supports undo"},{"ancestorTitles":[],"duration":3732,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C07 C10 E08] omitted entries remain editable and retain their draft after a failed save","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793709293331,"status":"passed","title":"[P5-10 PRES-C07 C10 E08] omitted entries remain editable and retain their draft after a failed save"},{"ancestorTitles":[],"duration":2471,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C01 C07] section content reset inherits source without changing omission or presentation","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793709297063,"status":"passed","title":"[P5-10 PRES-C01 C07] section content reset inherits source without changing omission or presentation"},{"ancestorTitles":[],"duration":6674,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"profile-backed sections expand, reorder, hide and persist variant-only overrides","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793709299534,"status":"passed","title":"profile-backed sections expand, reorder, hide and persist variant-only overrides"},{"ancestorTitles":[],"duration":2156,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"focusing a preview retry control keeps its pointer target stationary","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793709306208,"status":"passed","title":"focusing a preview retry control keeps its pointer target stationary"},{"ancestorTitles":[],"duration":1830,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"preview failure is visible and retryable without leaving the editor","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793709308364,"status":"passed","title":"preview failure is visible and retryable without leaving the editor"},{"ancestorTitles":[],"duration":669,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 E08] automatic fit attaches when the asynchronously loaded preview pane appears","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"startAt":1793709310195,"status":"passed","title":"[P5-11 PRES-C06 E08] automatic fit attaches when the asynchronously loaded preview pane appears"},{"ancestorTitles":[],"duration":1264,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 C12] page count is announced only after the renderer has settled","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793709310864,"status":"passed","title":"[P5-11 PRES-C06 C12] page count is announced only after the renderer has settled"},{"ancestorTitles":[],"duration":3779,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 E09] overlapping preview successes and failures cannot replace the newest document","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"startAt":1793709312128,"status":"passed","title":"[P5-11 PRES-C06 E09] overlapping preview successes and failures cannot replace the newest document"},{"ancestorTitles":[],"duration":1168,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 C10 E08] returning from preview focuses the existing editor without changing the pending draft","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793709315908,"status":"passed","title":"[P5-11 PRES-C06 C10 E08] returning from preview focuses the existing editor without changing the pending draft"},{"ancestorTitles":[],"duration":2694,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11 PRES-C07] whole-document AI Apply changes only an explicitly accepted CV override","invocations":1,"location":null,"numPassingAsserts":12,"retryReasons":[],"startAt":1793709317076,"status":"passed","title":"[PRES-C11 PRES-C07] whole-document AI Apply changes only an explicitly accepted CV override"},{"ancestorTitles":[],"duration":2301,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11 PRES-C07] whole-document AI Reject changes only an explicitly accepted CV override","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"startAt":1793709319770,"status":"passed","title":"[PRES-C11 PRES-C07] whole-document AI Reject changes only an explicitly accepted CV override"},{"ancestorTitles":[],"duration":2212,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11] unsafe whole-document response (invalid JSON) cannot be applied","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793709322071,"status":"passed","title":"[PRES-C11] unsafe whole-document response (invalid JSON) cannot be applied"},{"ancestorTitles":[],"duration":2061,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11] unsafe whole-document response (missing original ID) cannot be applied","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793709324283,"status":"passed","title":"[PRES-C11] unsafe whole-document response (missing original ID) cannot be applied"},{"ancestorTitles":[],"duration":2081,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11] unsafe whole-document response (duplicate original ID) cannot be applied","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793709326344,"status":"passed","title":"[PRES-C11] unsafe whole-document response (duplicate original ID) cannot be applied"},{"ancestorTitles":[],"duration":6591,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound document generation saves the pending draft, reviews server Original, and accepted AI remains undoable","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"startAt":1793709328425,"status":"passed","title":"bound document generation saves the pending draft, reviews server Original, and accepted AI remains undoable"},{"ancestorTitles":[],"duration":3468,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a newer draft is flushed before stale proposal acceptance fails without rebasing or changing content","invocations":1,"location":null,"numPassingAsserts":13,"retryReasons":[],"startAt":1793709335016,"status":"passed","title":"a newer draft is flushed before stale proposal acceptance fails without rebasing or changing content"},{"ancestorTitles":[],"duration":4681,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"late document proposals cannot return after tab unmount or a source undo","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793709338484,"status":"passed","title":"late document proposals cannot return after tab unmount or a source undo"},{"ancestorTitles":[],"duration":3861,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound section:skills assistant sends explicit scope and edited wording to server acceptance","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793709343165,"status":"passed","title":"bound section:skills assistant sends explicit scope and edited wording to server acceptance"},{"ancestorTitles":[],"duration":4189,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound custom:sample assistant sends explicit scope and edited wording to server acceptance","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793709347026,"status":"passed","title":"bound custom:sample assistant sends explicit scope and edited wording to server acceptance"},{"ancestorTitles":[],"duration":4398,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound entry:experience:job-1 assistant sends explicit scope and edited wording to server acceptance","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793709351215,"status":"passed","title":"bound entry:experience:job-1 assistant sends explicit scope and edited wording to server acceptance"},{"ancestorTitles":[],"duration":3495,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"user edits made during server acceptance are retained instead of overwritten by its late saved response","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793709355613,"status":"passed","title":"user edits made during server acceptance are retained instead of overwritten by its late saved response"}],"endTime":1793709359111,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\cv-builder-deep-link.test.tsx","startTime":1793709209351,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":[],"duration":507,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"blank creation explicitly excludes all profile sections and contact even after template selection","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"startAt":1793709360834,"status":"passed","title":"blank creation explicitly excludes all profile sections and contact even after template selection"},{"ancestorTitles":[],"duration":624,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"profile creation includes only deliberately selected available sections and contact","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709361341,"status":"passed","title":"profile creation includes only deliberately selected available sections and contact"},{"ancestorTitles":[],"duration":528,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"unavailable profile sections block profile creation and allow an explicit blank fallback","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793709361965,"status":"passed","title":"unavailable profile sections block profile creation and allow an explicit blank fallback"},{"ancestorTitles":[],"duration":2,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"export validation decodes structured and blob errors without relabelling unknown failures","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709362493,"status":"passed","title":"export validation decodes structured and blob errors without relabelling unknown failures"},{"ancestorTitles":[],"duration":97,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"the CV library has a section heading and announces its held initial read without showing an empty result","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793709362495,"status":"passed","title":"the CV library has a section heading and announces its held initial read without showing an empty result"},{"ancestorTitles":[],"duration":175,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a failed CV list read has an explicit retry that clears the stale failure after recovery","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793709362592,"status":"passed","title":"a failed CV list read has an explicit retry that clears the stale failure after recovery"},{"ancestorTitles":[],"duration":465,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a live language change retains an open CV name and template draft without refetching library data","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793709362768,"status":"passed","title":"a live language change retains an open CV name and template draft without refetching library data"},{"ancestorTitles":[],"duration":694,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"held CV creation locks the draft and gallery, then keeps a failed draft for an explicit retry","invocations":1,"location":null,"numPassingAsserts":17,"retryReasons":[],"startAt":1793709363234,"status":"passed","title":"held CV creation locks the draft and gallery, then keeps a failed draft for an explicit retry"},{"ancestorTitles":[],"duration":262,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a locked CV template remains identifiable and cannot change the creation request","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709363928,"status":"passed","title":"a locked CV template remains identifiable and cannot change the creation request"},{"ancestorTitles":[],"duration":279,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a held duplicate blocks another action for the same CV and shows the persisted refreshed copy","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793709364191,"status":"passed","title":"a held duplicate blocks another action for the same CV and shows the persisted refreshed copy"},{"ancestorTitles":[],"duration":495,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"rename reads the current revision and preserves its settings when saving the new name","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793709364470,"status":"passed","title":"rename reads the current revision and preserves its settings when saving the new name"},{"ancestorTitles":[],"duration":471,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a rename conflict keeps the original library entry and never retries the write automatically","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793709364965,"status":"passed","title":"a rename conflict keeps the original library entry and never retries the write automatically"},{"ancestorTitles":[],"duration":500,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"cancelling deletion returns focus to the surviving CV action control without removing the CV","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709365436,"status":"passed","title":"cancelling deletion returns focus to the surviving CV action control without removing the CV"},{"ancestorTitles":[],"duration":876,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a failed creation keeps its draft and translates its failure after closing and reopening in another language","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793709365936,"status":"passed","title":"a failed creation keeps its draft and translates its failure after closing and reopening in another language"},{"ancestorTitles":[],"duration":401,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"generic PDF failure follows the current language both after failure and when a held request fails","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"startAt":1793709366813,"status":"passed","title":"generic PDF failure follows the current language both after failure and when a held request fails"},{"ancestorTitles":[],"duration":542,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a held deletion preserves focus moved to another surviving control before the response arrives","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793709367215,"status":"passed","title":"a held deletion preserves focus moved to another surviving control before the response arrives"},{"ancestorTitles":[],"duration":156,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"PDF status 503 shows an actionable message without retrying","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793709367757,"status":"passed","title":"PDF status 503 shows an actionable message without retrying"},{"ancestorTitles":[],"duration":184,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"PDF status 504 shows an actionable message without retrying","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793709367913,"status":"passed","title":"PDF status 504 shows an actionable message without retrying"},{"ancestorTitles":[],"duration":58,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"lists existing CVs from the variants API","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793709368097,"status":"passed","title":"lists existing CVs from the variants API"},{"ancestorTitles":[],"duration":269,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"shows the empty state and creates a CV then navigates to the editor","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709368155,"status":"passed","title":"shows the empty state and creates a CV then navigates to the editor"},{"ancestorTitles":[],"duration":113,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CV dashboard and create flow render in Bokmål","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709368424,"status":"passed","title":"CV dashboard and create flow render in Bokmål"},{"ancestorTitles":[],"duration":599,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CV deletion requires confirmation and supports cancellation","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793709368537,"status":"passed","title":"CV deletion requires confirmation and supports cancellation"}],"endTime":1793709369137,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\cv-builder-page.test.tsx","startTime":1793709359133,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":[],"duration":1238,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"contact copy is a reviewed canonical snapshot; cancel is inert and apply preserves recipient and design","invocations":1,"location":null,"numPassingAsserts":17,"retryReasons":[],"startAt":1793709370775,"status":"passed","title":"contact copy is a reviewed canonical snapshot; cancel is inert and apply preserves recipient and design"},{"ancestorTitles":[],"duration":725,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"contact location copies only after selection and unselected contact values preserve destination fields","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709372013,"status":"passed","title":"contact location copies only after selection and unselected contact values preserve destination fields"},{"ancestorTitles":[],"duration":466,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"blank source contacts and choosing no fields never clear destination contacts","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709372738,"status":"passed","title":"blank source contacts and choosing no fields never clear destination contacts"},{"ancestorTitles":[],"duration":1130,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"letter language is an explicit document draft and saves independently of interface and CV language","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709373204,"status":"passed","title":"letter language is an explicit document draft and saves independently of interface and CV language"},{"ancestorTitles":[],"duration":420,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"design copy resolves null overrides through actual theme defaults and effective CV density","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793709374334,"status":"passed","title":"design copy resolves null overrides through actual theme defaults and effective CV density"},{"ancestorTitles":[],"duration":464,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"letter template chooser uses nine actual matching themes and preserves destination letter details","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793709374754,"status":"passed","title":"letter template chooser uses nine actual matching themes and preserves destination letter details"},{"ancestorTitles":[],"duration":377,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"letter template load failures retry and cancel never changes the local letter","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709375218,"status":"passed","title":"letter template load failures retry and cancel never changes the local letter"},{"ancestorTitles":[],"duration":917,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"applying a letter template updates the existing letter preview using the current body without saving","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793709375595,"status":"passed","title":"applying a letter template updates the existing letter preview using the current body without saving"},{"ancestorTitles":[],"duration":74,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"disabled letter drafting cannot open the template chooser","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709376512,"status":"passed","title":"disabled letter drafting cannot open the template chooser"},{"ancestorTitles":[],"duration":394,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"matching a customized CV copies heading density and paper but preserves letter language","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793709376586,"status":"passed","title":"matching a customized CV copies heading density and paper but preserves letter language"},{"ancestorTitles":[],"duration":363,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"closing a copy dialog ignores a late selected CV read","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709376980,"status":"passed","title":"closing a copy dialog ignores a late selected CV read"},{"ancestorTitles":[],"duration":466,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"failed copy reads are retryable and cannot apply or save a partial snapshot","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793709377343,"status":"passed","title":"failed copy reads are retryable and cannot apply or save a partial snapshot"},{"ancestorTitles":[],"duration":1409,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"restoring a historical letter restores saved details with text after explicit dirty confirmation","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793709377809,"status":"passed","title":"restoring a historical letter restores saved details with text after explicit dirty confirmation"},{"ancestorTitles":[],"duration":979,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"successful export waits for the committed local snapshot and uses its returned revision once","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793709379218,"status":"passed","title":"successful export waits for the committed local snapshot and uses its returned revision once"},{"ancestorTitles":[],"duration":1107,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a late letter PDF from a previous keyed job never downloads or replaces the current draft","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709380197,"status":"passed","title":"a late letter PDF from a previous keyed job never downloads or replaces the current draft"}],"endTime":1793709381305,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\cover-letter-document.test.tsx","startTime":1793709369150,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":[],"duration":1752,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"disabled CV worker upload gives actionable en recovery without changing the profile","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793709383484,"status":"passed","title":"disabled CV worker upload gives actionable en recovery without changing the profile"},{"ancestorTitles":[],"duration":1610,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"disabled CV worker upload gives actionable nb recovery without changing the profile","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793709385237,"status":"passed","title":"disabled CV worker upload gives actionable nb recovery without changing the profile"},{"ancestorTitles":[],"duration":2579,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"failed history reads have a scoped Retry that preserves unsaved source fields","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793709386848,"status":"passed","title":"failed history reads have a scoped Retry that preserves unsaved source fields"},{"ancestorTitles":[],"duration":2291,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a dirty canonical profile cannot be replaced through history restore","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793709389427,"status":"passed","title":"a dirty canonical profile cannot be replaced through history restore"},{"ancestorTitles":[],"duration":2106,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"each failed comparison can retry its own run without refetching canonical data or losing another comparison","invocations":1,"location":null,"numPassingAsserts":10,"retryReasons":[],"startAt":1793709391718,"status":"passed","title":"each failed comparison can retry its own run without refetching canonical data or losing another comparison"},{"ancestorTitles":[],"duration":1334,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"review shows actual current and imported values and discloses fields outside the comparison","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793709393824,"status":"passed","title":"review shows actual current and imported values and discloses fields outside the comparison"},{"ancestorTitles":[],"duration":2446,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"selecting then deselecting low-confidence data sends the explicit empty selection","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793709395158,"status":"passed","title":"selecting then deselecting low-confidence data sends the explicit empty selection"},{"ancestorTitles":[],"duration":3488,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"held acceptance locks review choices and all canonical editors and prevents duplicate or overlapping writes","invocations":1,"location":null,"numPassingAsserts":13,"retryReasons":[],"startAt":1793709397604,"status":"passed","title":"held acceptance locks review choices and all canonical editors and prevents duplicate or overlapping writes"},{"ancestorTitles":[],"duration":3275,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"failed acceptance keeps the chosen stable IDs and shows durable translated recovery without automatically resending","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"startAt":1793709401092,"status":"passed","title":"failed acceptance keeps the chosen stable IDs and shows durable translated recovery without automatically resending"},{"ancestorTitles":[],"duration":3745,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"discarding an import preserves unsaved structured and raw drafts and does not reload the canonical profile","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793709404368,"status":"passed","title":"discarding an import preserves unsaved structured and raw drafts and does not reload the canonical profile"},{"ancestorTitles":[],"duration":3651,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"saving canonical changes refreshes history and comparisons and clears choices made against the earlier source","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793709408113,"status":"passed","title":"saving canonical changes refreshes history and comparisons and clears choices made against the earlier source"},{"ancestorTitles":[],"duration":3612,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a failed restore keeps the original source and known history with an explicit retry","invocations":1,"location":null,"numPassingAsserts":10,"retryReasons":[],"startAt":1793709411764,"status":"passed","title":"a failed restore keeps the original source and known history with an explicit retry"},{"ancestorTitles":[],"duration":2489,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"an operation cancellation is guarded while pending and leaves an unsaved source draft intact","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793709415376,"status":"passed","title":"an operation cancellation is guarded while pending and leaves an unsaved source draft intact"},{"ancestorTitles":[],"duration":1732,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a failed operation retry stays scoped and only resends the same operation on explicit user retry","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793709417865,"status":"passed","title":"a failed operation retry stays scoped and only resends the same operation on explicit user retry"},{"ancestorTitles":[],"duration":1677,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Bokmål localizes comparison labels while preserving imported facts named like UI labels or object properties","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793709419598,"status":"passed","title":"Bokmål localizes comparison labels while preserving imported facts named like UI labels or object properties"},{"ancestorTitles":[],"duration":1681,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"the known low-confidence contact placeholder is localized","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793709421275,"status":"passed","title":"the known low-confidence contact placeholder is localized"}],"endTime":1793709422957,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\career-import-review.test.tsx","startTime":1793709381319,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":[],"duration":5094,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a locale update retains dirty structured and raw drafts without reading their source again","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793709424645,"status":"passed","title":"a locale update retains dirty structured and raw drafts without reading their source again"},{"ancestorTitles":[],"duration":1345,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a pending initial read keeps one request and reports its failure in the latest locale without language writes","invocations":1,"location":null,"numPassingAsserts":15,"retryReasons":[],"startAt":1793709429739,"status":"passed","title":"a pending initial read keeps one request and reports its failure in the latest locale without language writes"},{"ancestorTitles":[],"duration":5331,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a held Save locks every editor mutation, raw input and history restore until its snapshot settles","invocations":1,"location":null,"numPassingAsserts":40,"retryReasons":[],"startAt":1793709431085,"status":"passed","title":"a held Save locks every editor mutation, raw input and history restore until its snapshot settles"},{"ancestorTitles":[],"duration":2094,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"two Save activations before React commits pending state send only one canonical PUT","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709436416,"status":"passed","title":"two Save activations before React commits pending state send only one canonical PUT"},{"ancestorTitles":[],"duration":4830,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a failed Save retains a scoped localized error and draft for retry through the same Save button","invocations":1,"location":null,"numPassingAsserts":22,"retryReasons":[],"startAt":1793709438510,"status":"passed","title":"a failed Save retains a scoped localized error and draft for retry through the same Save button"},{"ancestorTitles":[],"duration":1531,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"the editor exposes named H2/H3 groups and contextual repeated-item remove controls","invocations":1,"location":null,"numPassingAsserts":21,"retryReasons":[],"startAt":1793709443341,"status":"passed","title":"the editor exposes named H2/H3 groups and contextual repeated-item remove controls"},{"ancestorTitles":[],"duration":5235,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"manual edits preserve long-tail data, custom links, opaque IDs and modeled fields without editor controls","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793709444872,"status":"passed","title":"manual edits preserve long-tail data, custom links, opaque IDs and modeled fields without editor controls"},{"ancestorTitles":[],"duration":3797,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a rejected save (409) keeps the draft and its original revision for deliberate retry","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793709450107,"status":"passed","title":"a rejected save (409) keeps the draft and its original revision for deliberate retry"},{"ancestorTitles":[],"duration":4108,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a rejected save (0) keeps the draft and its original revision for deliberate retry","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793709453904,"status":"passed","title":"a rejected save (0) keeps the draft and its original revision for deliberate retry"},{"ancestorTitles":[],"duration":4226,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"consecutive acknowledged career saves advance the revision returned with the saved snapshot","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793709458012,"status":"passed","title":"consecutive acknowledged career saves advance the revision returned with the saved snapshot"},{"ancestorTitles":[],"duration":3676,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a delayed prior lifecycle read cannot replace edits in the current career editor","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709462238,"status":"passed","title":"a delayed prior lifecycle read cannot replace edits in the current career editor"},{"ancestorTitles":[],"duration":2754,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a read-only provider cannot edit canonical fields or trigger canonical writes","invocations":1,"location":null,"numPassingAsserts":35,"retryReasons":[],"startAt":1793709465914,"status":"passed","title":"a read-only provider cannot edit canonical fields or trigger canonical writes"}],"endTime":1793709468669,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\career-editor.test.tsx","startTime":1793709422973,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":[],"duration":478,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C08 C09 E08] common controls and advanced disclosure do not mutate document settings","invocations":1,"location":null,"numPassingAsserts":10,"retryReasons":[],"startAt":1793709469879,"status":"passed","title":"[PRES-C08 C09 E08] common controls and advanced disclosure do not mutate document settings"},{"ancestorTitles":[],"duration":791,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C09 C10] numeric edits reject invalid ranges, keep exact valid values and reset only one setting","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793709470357,"status":"passed","title":"[PRES-C09 C10] numeric edits reject invalid ranges, keep exact valid values and reset only one setting"},{"ancestorTitles":[],"duration":1914,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C07 C08 C09] capability filtering preserves dormant saved values and exposes inherited sidebar controls","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"startAt":1793709471148,"status":"passed","title":"[PRES-C07 C08 C09] capability filtering preserves dormant saved values and exposes inherited sidebar controls"},{"ancestorTitles":[],"duration":1237,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C08 C10 E09] locks prevent selection and confirmed template resets preserve content and document metadata","invocations":1,"location":null,"numPassingAsserts":16,"retryReasons":[],"startAt":1793709473063,"status":"passed","title":"[PRES-C08 C10 E09] locks prevent selection and confirmed template resets preserve content and document metadata"},{"ancestorTitles":[],"duration":368,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C08 C09 E08] Bokmål controls expose their scope, values and non-colour selection state","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793709474300,"status":"passed","title":"[PRES-C08 C09 E08] Bokmål controls expose their scope, values and non-colour selection state"},{"ancestorTitles":[],"duration":550,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C08 C09] unsupported and legacy saved values survive unrelated edits without implicit normalization","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793709474668,"status":"passed","title":"[PRES-C08 C09] unsupported and legacy saved values survive unrelated edits without implicit normalization"}],"endTime":1793709475219,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\cv-document-controls.test.tsx","startTime":1793709468682,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":[],"duration":293,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"first-run workspace presents concise profile, import, general CV and job-specific actions","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793709476905,"status":"passed","title":"first-run workspace presents concise profile, import, general CV and job-specific actions"},{"ancestorTitles":[],"duration":126,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"career workspace overview and import state render in Bokmål","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793709477198,"status":"passed","title":"career workspace overview and import state render in Bokmål"},{"ancestorTitles":[],"duration":150,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"returning workspace shows missing profile information and recent general and job-specific CVs","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793709477324,"status":"passed","title":"returning workspace shows missing profile information and recent general and job-specific CVs"},{"ancestorTitles":[],"duration":81,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"workspace exposes the pending_review import state as a resumable action","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793709477474,"status":"passed","title":"workspace exposes the pending_review import state as a resumable action"},{"ancestorTitles":[],"duration":107,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"workspace exposes the queued import state as a resumable action","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793709477555,"status":"passed","title":"workspace exposes the queued import state as a resumable action"},{"ancestorTitles":[],"duration":124,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"workspace exposes the failed import state as a resumable action","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793709477663,"status":"passed","title":"workspace exposes the failed import state as a resumable action"},{"ancestorTitles":[],"duration":111,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"workspace represents loading and profile-load errors without inventing status","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709477788,"status":"passed","title":"workspace represents loading and profile-load errors without inventing status"},{"ancestorTitles":[],"duration":140,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a settled failed profile read hides the completeness score and retries only through its existing owner","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793709477899,"status":"passed","title":"a settled failed profile read hides the completeness score and retries only through its existing owner"},{"ancestorTitles":[],"duration":113,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"an unknown import read cannot claim no imports, completion or first-run guidance","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709478039,"status":"passed","title":"an unknown import read cannot claim no imports, completion or first-run guidance"},{"ancestorTitles":[],"duration":132,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a failed import read stays unknown and keeps its own retry separate from the profile read","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793709478152,"status":"passed","title":"a failed import read stays unknown and keeps its own retry separate from the profile read"},{"ancestorTitles":[],"duration":229,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"failed recent-CV reads do not imply first-run and retry the same list without writes","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793709478285,"status":"passed","title":"failed recent-CV reads do not imply first-run and retry the same list without writes"},{"ancestorTitles":[],"duration":263,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"the parent exposes failed import-read retry without canonical saves or history restores","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793709478515,"status":"passed","title":"the parent exposes failed import-read retry without canonical saves or history restores"},{"ancestorTitles":[],"duration":1438,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"changing language in overview cannot refetch or overwrite a dirty canonical draft","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709478779,"status":"passed","title":"changing language in overview cannot refetch or overwrite a dirty canonical draft"},{"ancestorTitles":[],"duration":1186,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"visited evidence keeps its draft across sections without an unvisited or repeated list request","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793709480217,"status":"passed","title":"visited evidence keeps its draft across sections without an unvisited or repeated list request"}],"endTime":1793709481404,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\career-workspace-page.test.tsx","startTime":1793709475238,"status":"passed","summary":""}],"wasInterrupted":false} diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-career-final-selection.json b/docs/ui-modernisation/evidence/career/frontend/a3-career-final-selection.json new file mode 100644 index 00000000..1f632712 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-career-final-selection.json @@ -0,0 +1,68 @@ +{ + "method": "latest complete execution per disjoint suite; older overlapping outcomes retained, not added", + "suites": { + "career-editor.test.tsx": { + "report": "a3-career-tests.json", + "passed": 15, + "failed": 0, + "pending": 0 + }, + "career-import-review.test.tsx": { + "report": "a3-career-tests.json", + "passed": 16, + "failed": 0, + "pending": 0 + }, + "career-workspace-page.test.tsx": { + "report": "a3-career-tests.json", + "passed": 18, + "failed": 0, + "pending": 0 + }, + "cover-letter-document.test.tsx": { + "report": "a3-career-tests.json", + "passed": 15, + "failed": 0, + "pending": 0 + }, + "cv-builder-page.test.tsx": { + "report": "a3-cv-library-tests.json", + "passed": 24, + "failed": 0, + "pending": 0 + }, + "cv-document-controls.test.tsx": { + "report": "a3-career-tests.json", + "passed": 6, + "failed": 0, + "pending": 0 + }, + "cv-builder-deep-link.test.tsx": { + "report": "a3-cv-studio-tests.json", + "passed": 59, + "failed": 0, + "pending": 0 + }, + "translation-catalogue.test.ts": { + "report": "a3-cv-library-tests.json", + "passed": 3, + "failed": 0, + "pending": 0 + }, + "cv-template-gallery.test.tsx": { + "report": "a3-cv-library-tests.json", + "passed": 1, + "failed": 0, + "pending": 0 + }, + "application-assets.test.tsx": { + "report": "a3-letter-workflow-tests.json", + "passed": 55, + "failed": 0, + "pending": 0 + } + }, + "passed": 212, + "failed": 0, + "pending": 0 +} diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-career-navigation-green.json b/docs/ui-modernisation/evidence/career/frontend/a3-career-navigation-green.json new file mode 100644 index 00000000..d593962e --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-career-navigation-green.json @@ -0,0 +1 @@ +{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":1,"numPassedTests":2,"numPendingTestSuites":0,"numPendingTests":14,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":1,"numTotalTests":16,"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":1793710193370,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"first-run workspace presents concise profile, import, general CV and job-specific actions","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710199826,"status":"pending","title":"first-run workspace presents concise profile, import, general CV and job-specific actions"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"career workspace overview and import state render in Bokmål","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710199826,"status":"pending","title":"career workspace overview and import state render in Bokmål"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"returning workspace shows missing profile information and recent general and job-specific CVs","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710199826,"status":"pending","title":"returning workspace shows missing profile information and recent general and job-specific CVs"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"workspace exposes the pending_review import state as a resumable action","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710199826,"status":"pending","title":"workspace exposes the pending_review import state as a resumable action"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"workspace exposes the queued import state as a resumable action","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710199826,"status":"pending","title":"workspace exposes the queued import state as a resumable action"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"workspace exposes the failed import state as a resumable action","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710199826,"status":"pending","title":"workspace exposes the failed import state as a resumable action"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"workspace represents loading and profile-load errors without inventing status","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710199826,"status":"pending","title":"workspace represents loading and profile-load errors without inventing status"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a settled failed profile read hides the completeness score and retries only through its existing owner","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710199826,"status":"pending","title":"a settled failed profile read hides the completeness score and retries only through its existing owner"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"an unknown import read cannot claim no imports, completion or first-run guidance","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710199826,"status":"pending","title":"an unknown import read cannot claim no imports, completion or first-run guidance"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a failed import read stays unknown and keeps its own retry separate from the profile read","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710199826,"status":"pending","title":"a failed import read stays unknown and keeps its own retry separate from the profile read"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"failed recent-CV reads do not imply first-run and retry the same list without writes","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710199826,"status":"pending","title":"failed recent-CV reads do not imply first-run and retry the same list without writes"},{"ancestorTitles":[],"duration":10519,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"en overview opens every canonical section directly without saving or reloading the profile","invocations":1,"location":null,"numPassingAsserts":59,"retryReasons":[],"startAt":1793710199826,"status":"passed","title":"en overview opens every canonical section directly without saving or reloading the profile"},{"ancestorTitles":[],"duration":10461,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"nb overview opens every canonical section directly without saving or reloading the profile","invocations":1,"location":null,"numPassingAsserts":59,"retryReasons":[],"startAt":1793710210345,"status":"passed","title":"nb overview opens every canonical section directly without saving or reloading the profile"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"the parent exposes failed import-read retry without canonical saves or history restores","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710220806,"status":"pending","title":"the parent exposes failed import-read retry without canonical saves or history restores"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"changing language in overview cannot refetch or overwrite a dirty canonical draft","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710220806,"status":"pending","title":"changing language in overview cannot refetch or overwrite a dirty canonical draft"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"visited evidence keeps its draft across sections without an unvisited or repeated list request","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710220806,"status":"pending","title":"visited evidence keeps its draft across sections without an unvisited or repeated list request"}],"endTime":1793710220808,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\career-workspace-page.test.tsx","startTime":1793710194843,"status":"focused","summary":""}],"wasInterrupted":false} diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-career-navigation-green.log b/docs/ui-modernisation/evidence/career/frontend/a3-career-navigation-green.log new file mode 100644 index 00000000..de5703f0 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-career-navigation-green.log @@ -0,0 +1,178 @@ + +> job-tracker-ui@0.1.0 test +> jest --runInBand --watch=false --runTestsByPath src/career-workspace-page.test.tsx --testNamePattern=overview opens every canonical section --json --outputFile=../docs/ui-modernisation/a3-career-navigation-green.json + + console.error + An update to CareerWorkspaceOverview inside a test was not wrapped in act(...). + + When testing, code that causes React state updates should be wrapped into act(...): + + act(() => { + /* fire events that update state */ + }); + /* assert on the output */ + + This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act + + 90 | .then((items) => { + 91 | if (!cancelled) { + > 92 | setRecentCvs(Array.isArray(items) + | ^ + 93 | ? [...items].sort((left, right) => Date.parse(right.updatedAtUtc) - Date.parse(left.updatedAtUtc)).slice(0, 3) + 94 | : []); + 95 | setRecentError(false); + + at node_modules/react-dom/cjs/react-dom-client.development.js:18758:19 + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at warnIfUpdatesNotWrappedWithActDEV (node_modules/react-dom/cjs/react-dom-client.development.js:18757:9) + at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:16409:11) + at dispatchSetStateInternal (node_modules/react-dom/cjs/react-dom-client.development.js:9170:13) + at dispatchSetState (node_modules/react-dom/cjs/react-dom-client.development.js:9127:7) + at setRecentCvs (src/views/career/CareerWorkspaceOverview.tsx:92:11) + + console.error + An update to CareerWorkspaceOverview inside a test was not wrapped in act(...). + + When testing, code that causes React state updates should be wrapped into act(...): + + act(() => { + /* fire events that update state */ + }); + /* assert on the output */ + + This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act + + 93 | ? [...items].sort((left, right) => Date.parse(right.updatedAtUtc) - Date.parse(left.updatedAtUtc)).slice(0, 3) + 94 | : []); + > 95 | setRecentError(false); + | ^ + 96 | } + 97 | }) + 98 | .catch(() => { + + at node_modules/react-dom/cjs/react-dom-client.development.js:18758:19 + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at warnIfUpdatesNotWrappedWithActDEV (node_modules/react-dom/cjs/react-dom-client.development.js:18757:9) + at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:16409:11) + at dispatchSetStateInternal (node_modules/react-dom/cjs/react-dom-client.development.js:9170:13) + at dispatchSetState (node_modules/react-dom/cjs/react-dom-client.development.js:9127:7) + at setRecentError (src/views/career/CareerWorkspaceOverview.tsx:95:11) + + console.error + An update to CareerWorkspaceOverview inside a test was not wrapped in act(...). + + When testing, code that causes React state updates should be wrapped into act(...): + + act(() => { + /* fire events that update state */ + }); + /* assert on the output */ + + This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act + + 100 | }) + 101 | .finally(() => { + > 102 | if (!cancelled) setRecentLoading(false); + | ^ + 103 | }); + 104 | return () => { cancelled = true; }; + 105 | }, [recentAttempt]); + + at node_modules/react-dom/cjs/react-dom-client.development.js:18758:19 + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at warnIfUpdatesNotWrappedWithActDEV (node_modules/react-dom/cjs/react-dom-client.development.js:18757:9) + at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:16409:11) + at dispatchSetStateInternal (node_modules/react-dom/cjs/react-dom-client.development.js:9170:13) + at dispatchSetState (node_modules/react-dom/cjs/react-dom-client.development.js:9127:7) + at setRecentLoading (src/views/career/CareerWorkspaceOverview.tsx:102:25) + + console.error + An update to CareerWorkspaceOverview inside a test was not wrapped in act(...). + + When testing, code that causes React state updates should be wrapped into act(...): + + act(() => { + /* fire events that update state */ + }); + /* assert on the output */ + + This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act + + 90 | .then((items) => { + 91 | if (!cancelled) { + > 92 | setRecentCvs(Array.isArray(items) + | ^ + 93 | ? [...items].sort((left, right) => Date.parse(right.updatedAtUtc) - Date.parse(left.updatedAtUtc)).slice(0, 3) + 94 | : []); + 95 | setRecentError(false); + + at node_modules/react-dom/cjs/react-dom-client.development.js:18758:19 + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at warnIfUpdatesNotWrappedWithActDEV (node_modules/react-dom/cjs/react-dom-client.development.js:18757:9) + at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:16409:11) + at dispatchSetStateInternal (node_modules/react-dom/cjs/react-dom-client.development.js:9170:13) + at dispatchSetState (node_modules/react-dom/cjs/react-dom-client.development.js:9127:7) + at setRecentCvs (src/views/career/CareerWorkspaceOverview.tsx:92:11) + + console.error + An update to CareerWorkspaceOverview inside a test was not wrapped in act(...). + + When testing, code that causes React state updates should be wrapped into act(...): + + act(() => { + /* fire events that update state */ + }); + /* assert on the output */ + + This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act + + 93 | ? [...items].sort((left, right) => Date.parse(right.updatedAtUtc) - Date.parse(left.updatedAtUtc)).slice(0, 3) + 94 | : []); + > 95 | setRecentError(false); + | ^ + 96 | } + 97 | }) + 98 | .catch(() => { + + at node_modules/react-dom/cjs/react-dom-client.development.js:18758:19 + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at warnIfUpdatesNotWrappedWithActDEV (node_modules/react-dom/cjs/react-dom-client.development.js:18757:9) + at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:16409:11) + at dispatchSetStateInternal (node_modules/react-dom/cjs/react-dom-client.development.js:9170:13) + at dispatchSetState (node_modules/react-dom/cjs/react-dom-client.development.js:9127:7) + at setRecentError (src/views/career/CareerWorkspaceOverview.tsx:95:11) + + console.error + An update to CareerWorkspaceOverview inside a test was not wrapped in act(...). + + When testing, code that causes React state updates should be wrapped into act(...): + + act(() => { + /* fire events that update state */ + }); + /* assert on the output */ + + This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act + + 100 | }) + 101 | .finally(() => { + > 102 | if (!cancelled) setRecentLoading(false); + | ^ + 103 | }); + 104 | return () => { cancelled = true; }; + 105 | }, [recentAttempt]); + + at node_modules/react-dom/cjs/react-dom-client.development.js:18758:19 + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at warnIfUpdatesNotWrappedWithActDEV (node_modules/react-dom/cjs/react-dom-client.development.js:18757:9) + at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:16409:11) + at dispatchSetStateInternal (node_modules/react-dom/cjs/react-dom-client.development.js:9170:13) + at dispatchSetState (node_modules/react-dom/cjs/react-dom-client.development.js:9127:7) + at setRecentLoading (src/views/career/CareerWorkspaceOverview.tsx:102:25) + +Test Suites: 1 passed, 1 total +Tests: 14 skipped, 2 passed, 16 total +Snapshots: 0 total +Time: 27.449 s +Ran all test suites within paths "src/career-workspace-page.test.tsx". +Test results written to: ..\docs\ui-modernisation\a3-career-navigation-green.json diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-career-navigation-red.json b/docs/ui-modernisation/evidence/career/frontend/a3-career-navigation-red.json new file mode 100644 index 00000000..ffbafbb3 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-career-navigation-red.json @@ -0,0 +1 @@ +{"numFailedTestSuites":1,"numFailedTests":2,"numPassedTestSuites":0,"numPassedTests":0,"numPendingTestSuites":0,"numPendingTests":14,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":1,"numTotalTests":16,"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":1793710074962,"success":false,"testResults":[{"assertionResults":[{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"first-run workspace presents concise profile, import, general CV and job-specific actions","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710080194,"status":"pending","title":"first-run workspace presents concise profile, import, general CV and job-specific actions"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"career workspace overview and import state render in Bokmål","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710080194,"status":"pending","title":"career workspace overview and import state render in Bokmål"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"returning workspace shows missing profile information and recent general and job-specific CVs","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710080194,"status":"pending","title":"returning workspace shows missing profile information and recent general and job-specific CVs"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"workspace exposes the pending_review import state as a resumable action","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710080194,"status":"pending","title":"workspace exposes the pending_review import state as a resumable action"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"workspace exposes the queued import state as a resumable action","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710080194,"status":"pending","title":"workspace exposes the queued import state as a resumable action"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"workspace exposes the failed import state as a resumable action","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710080194,"status":"pending","title":"workspace exposes the failed import state as a resumable action"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"workspace represents loading and profile-load errors without inventing status","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710080194,"status":"pending","title":"workspace represents loading and profile-load errors without inventing status"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a settled failed profile read hides the completeness score and retries only through its existing owner","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710080194,"status":"pending","title":"a settled failed profile read hides the completeness score and retries only through its existing owner"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"an unknown import read cannot claim no imports, completion or first-run guidance","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710080194,"status":"pending","title":"an unknown import read cannot claim no imports, completion or first-run guidance"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a failed import read stays unknown and keeps its own retry separate from the profile read","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710080194,"status":"pending","title":"a failed import read stays unknown and keeps its own retry separate from the profile read"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"failed recent-CV reads do not imply first-run and retry the same list without writes","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710080194,"status":"pending","title":"failed recent-CV reads do not imply first-run and retry the same list without writes"},{"ancestorTitles":[],"duration":236,"failing":false,"failureDetails":[{"matcherResult":{"message":"expect(received).not.toBeNull()\n\nReceived: null","pass":true}}],"failureMessages":["Error: expect(received).not.toBeNull()\n\nReceived: null\n at toBeNull (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\career-workspace-page.test.tsx:206:24)"],"fullName":"en overview opens every canonical section directly without saving or reloading the profile","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710080194,"status":"failed","title":"en overview opens every canonical section directly without saving or reloading the profile"},{"ancestorTitles":[],"duration":152,"failing":false,"failureDetails":[{"matcherResult":{"message":"expect(received).not.toBeNull()\n\nReceived: null","pass":true}}],"failureMessages":["Error: expect(received).not.toBeNull()\n\nReceived: null\n at toBeNull (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\career-workspace-page.test.tsx:206:24)"],"fullName":"nb overview opens every canonical section directly without saving or reloading the profile","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710080446,"status":"failed","title":"nb overview opens every canonical section directly without saving or reloading the profile"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"the parent exposes failed import-read retry without canonical saves or history restores","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710080598,"status":"pending","title":"the parent exposes failed import-read retry without canonical saves or history restores"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"changing language in overview cannot refetch or overwrite a dirty canonical draft","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710080599,"status":"pending","title":"changing language in overview cannot refetch or overwrite a dirty canonical draft"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"visited evidence keeps its draft across sections without an unvisited or repeated list request","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710080599,"status":"pending","title":"visited evidence keeps its draft across sections without an unvisited or repeated list request"}],"endTime":1793710080618,"message":" ● en overview opens every canonical section directly without saving or reloading the profile\n\n expect(received).not.toBeNull()\n\n Received: null\n\n 204 | for (const section of sections) {\n 205 | const action = document.querySelector(`button[data-edit-career-section=\"${section}\"]`);\n > 206 | expect(action).not.toBeNull();\n | ^\n 207 | fireEvent.click(action!);\n 208 | await waitFor(() => expect(document.getElementById(`career-section-${section}`)).toContainElement(document.activeElement as HTMLElement));\n 209 | expect(new URLSearchParams(location.search).get('keep')).toBe('1');\n\n at toBeNull (src/career-workspace-page.test.tsx:206:24)\n\n ● nb overview opens every canonical section directly without saving or reloading the profile\n\n expect(received).not.toBeNull()\n\n Received: null\n\n 204 | for (const section of sections) {\n 205 | const action = document.querySelector(`button[data-edit-career-section=\"${section}\"]`);\n > 206 | expect(action).not.toBeNull();\n | ^\n 207 | fireEvent.click(action!);\n 208 | await waitFor(() => expect(document.getElementById(`career-section-${section}`)).toContainElement(document.activeElement as HTMLElement));\n 209 | expect(new URLSearchParams(location.search).get('keep')).toBe('1');\n\n at toBeNull (src/career-workspace-page.test.tsx:206:24)\n","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\career-workspace-page.test.tsx","startTime":1793710076371,"status":"failed","summary":""}],"wasInterrupted":false} diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-career-navigation-red.log b/docs/ui-modernisation/evidence/career/frontend/a3-career-navigation-red.log new file mode 100644 index 00000000..2c8e2eb2 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-career-navigation-red.log @@ -0,0 +1,43 @@ + +> job-tracker-ui@0.1.0 test +> jest --runInBand --watch=false --runTestsByPath src/career-workspace-page.test.tsx --testNamePattern=overview opens every canonical section --json --outputFile=../docs/ui-modernisation/a3-career-navigation-red.json + +FAIL src/career-workspace-page.test.tsx + ● en overview opens every canonical section directly without saving or reloading the profile + + expect(received).not.toBeNull() + + Received: null + + 204 | for (const section of sections) { + 205 | const action = document.querySelector(`button[data-edit-career-section="${section}"]`); + > 206 | expect(action).not.toBeNull(); + | ^ + 207 | fireEvent.click(action!); + 208 | await waitFor(() => expect(document.getElementById(`career-section-${section}`)).toContainElement(document.activeElement as HTMLElement)); + 209 | expect(new URLSearchParams(location.search).get('keep')).toBe('1'); + + at toBeNull (src/career-workspace-page.test.tsx:206:24) + + ● nb overview opens every canonical section directly without saving or reloading the profile + + expect(received).not.toBeNull() + + Received: null + + 204 | for (const section of sections) { + 205 | const action = document.querySelector(`button[data-edit-career-section="${section}"]`); + > 206 | expect(action).not.toBeNull(); + | ^ + 207 | fireEvent.click(action!); + 208 | await waitFor(() => expect(document.getElementById(`career-section-${section}`)).toContainElement(document.activeElement as HTMLElement)); + 209 | expect(new URLSearchParams(location.search).get('keep')).toBe('1'); + + at toBeNull (src/career-workspace-page.test.tsx:206:24) + +Test Suites: 1 failed, 1 total +Tests: 2 failed, 14 skipped, 16 total +Snapshots: 0 total +Time: 5.666 s, estimated 7 s +Ran all test suites within paths "src/career-workspace-page.test.tsx". +Test results written to: ..\docs\ui-modernisation\a3-career-navigation-red.json diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-career-overview-tests.json b/docs/ui-modernisation/evidence/career/frontend/a3-career-overview-tests.json new file mode 100644 index 00000000..6af79a8b --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-career-overview-tests.json @@ -0,0 +1 @@ +{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":3,"numPassedTests":35,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":3,"numTotalTests":35,"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":1793710286634,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":[],"duration":7602,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a locale update retains dirty structured and raw drafts without reading their source again","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793710292473,"status":"passed","title":"a locale update retains dirty structured and raw drafts without reading their source again"},{"ancestorTitles":[],"duration":3661,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"edits en canonical projects and certifications through the existing versioned Save without changing their IDs or sibling facts","invocations":1,"location":null,"numPassingAsserts":12,"retryReasons":[],"startAt":1793710300075,"status":"passed","title":"edits en canonical projects and certifications through the existing versioned Save without changing their IDs or sibling facts"},{"ancestorTitles":[],"duration":3333,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"edits nb canonical projects and certifications through the existing versioned Save without changing their IDs or sibling facts","invocations":1,"location":null,"numPassingAsserts":12,"retryReasons":[],"startAt":1793710303736,"status":"passed","title":"edits nb canonical projects and certifications through the existing versioned Save without changing their IDs or sibling facts"},{"ancestorTitles":[],"duration":1296,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a pending initial read keeps one request and reports its failure in the latest locale without language writes","invocations":1,"location":null,"numPassingAsserts":15,"retryReasons":[],"startAt":1793710307069,"status":"passed","title":"a pending initial read keeps one request and reports its failure in the latest locale without language writes"},{"ancestorTitles":[],"duration":7611,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a held Save locks every editor mutation, raw input and history restore until its snapshot settles","invocations":1,"location":null,"numPassingAsserts":50,"retryReasons":[],"startAt":1793710308365,"status":"passed","title":"a held Save locks every editor mutation, raw input and history restore until its snapshot settles"},{"ancestorTitles":[],"duration":2582,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"two Save activations before React commits pending state send only one canonical PUT","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710315977,"status":"passed","title":"two Save activations before React commits pending state send only one canonical PUT"},{"ancestorTitles":[],"duration":7146,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a failed Save retains a scoped localized error and draft for retry through the same Save button","invocations":1,"location":null,"numPassingAsserts":22,"retryReasons":[],"startAt":1793710318559,"status":"passed","title":"a failed Save retains a scoped localized error and draft for retry through the same Save button"},{"ancestorTitles":[],"duration":2265,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"the editor exposes named H2/H3 groups and contextual repeated-item remove controls","invocations":1,"location":null,"numPassingAsserts":21,"retryReasons":[],"startAt":1793710325705,"status":"passed","title":"the editor exposes named H2/H3 groups and contextual repeated-item remove controls"},{"ancestorTitles":[],"duration":8658,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"manual edits preserve long-tail data, custom links, opaque IDs and modeled fields without editor controls","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793710327971,"status":"passed","title":"manual edits preserve long-tail data, custom links, opaque IDs and modeled fields without editor controls"},{"ancestorTitles":[],"duration":6062,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a rejected save (409) keeps the draft and its original revision for deliberate retry","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793710336629,"status":"passed","title":"a rejected save (409) keeps the draft and its original revision for deliberate retry"},{"ancestorTitles":[],"duration":5828,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a rejected save (0) keeps the draft and its original revision for deliberate retry","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793710342692,"status":"passed","title":"a rejected save (0) keeps the draft and its original revision for deliberate retry"},{"ancestorTitles":[],"duration":6283,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"consecutive acknowledged career saves advance the revision returned with the saved snapshot","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793710348521,"status":"passed","title":"consecutive acknowledged career saves advance the revision returned with the saved snapshot"},{"ancestorTitles":[],"duration":4881,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a delayed prior lifecycle read cannot replace edits in the current career editor","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710354804,"status":"passed","title":"a delayed prior lifecycle read cannot replace edits in the current career editor"},{"ancestorTitles":[],"duration":4670,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a read-only provider cannot edit canonical fields or trigger canonical writes","invocations":1,"location":null,"numPassingAsserts":45,"retryReasons":[],"startAt":1793710359685,"status":"passed","title":"a read-only provider cannot edit canonical fields or trigger canonical writes"}],"endTime":1793710364356,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\career-editor.test.tsx","startTime":1793710288096,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":[],"duration":296,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"first-run workspace presents concise profile, import, general CV and job-specific actions","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793710366327,"status":"passed","title":"first-run workspace presents concise profile, import, general CV and job-specific actions"},{"ancestorTitles":[],"duration":104,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"career workspace overview and import state render in Bokmål","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793710366623,"status":"passed","title":"career workspace overview and import state render in Bokmål"},{"ancestorTitles":[],"duration":118,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"returning workspace shows missing profile information and recent general and job-specific CVs","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793710366727,"status":"passed","title":"returning workspace shows missing profile information and recent general and job-specific CVs"},{"ancestorTitles":[],"duration":83,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"workspace exposes the pending_review import state as a resumable action","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793710366845,"status":"passed","title":"workspace exposes the pending_review import state as a resumable action"},{"ancestorTitles":[],"duration":96,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"workspace exposes the queued import state as a resumable action","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793710366928,"status":"passed","title":"workspace exposes the queued import state as a resumable action"},{"ancestorTitles":[],"duration":89,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"workspace exposes the failed import state as a resumable action","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793710367024,"status":"passed","title":"workspace exposes the failed import state as a resumable action"},{"ancestorTitles":[],"duration":96,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"workspace represents loading and profile-load errors without inventing status","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710367113,"status":"passed","title":"workspace represents loading and profile-load errors without inventing status"},{"ancestorTitles":[],"duration":108,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a settled failed profile read hides the completeness score and retries only through its existing owner","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793710367209,"status":"passed","title":"a settled failed profile read hides the completeness score and retries only through its existing owner"},{"ancestorTitles":[],"duration":111,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"an unknown import read cannot claim no imports, completion or first-run guidance","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710367317,"status":"passed","title":"an unknown import read cannot claim no imports, completion or first-run guidance"},{"ancestorTitles":[],"duration":109,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a failed import read stays unknown and keeps its own retry separate from the profile read","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793710367429,"status":"passed","title":"a failed import read stays unknown and keeps its own retry separate from the profile read"},{"ancestorTitles":[],"duration":221,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"failed recent-CV reads do not imply first-run and retry the same list without writes","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793710367538,"status":"passed","title":"failed recent-CV reads do not imply first-run and retry the same list without writes"},{"ancestorTitles":[],"duration":8447,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"en overview opens every canonical section directly without saving or reloading the profile","invocations":1,"location":null,"numPassingAsserts":59,"retryReasons":[],"startAt":1793710367759,"status":"passed","title":"en overview opens every canonical section directly without saving or reloading the profile"},{"ancestorTitles":[],"duration":8208,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"nb overview opens every canonical section directly without saving or reloading the profile","invocations":1,"location":null,"numPassingAsserts":59,"retryReasons":[],"startAt":1793710376206,"status":"passed","title":"nb overview opens every canonical section directly without saving or reloading the profile"},{"ancestorTitles":[],"duration":991,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"en section indicators retain server scoring and stop claiming saved status for an unsaved draft","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793710384414,"status":"passed","title":"en section indicators retain server scoring and stop claiming saved status for an unsaved draft"},{"ancestorTitles":[],"duration":974,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"nb section indicators retain server scoring and stop claiming saved status for an unsaved draft","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793710385405,"status":"passed","title":"nb section indicators retain server scoring and stop claiming saved status for an unsaved draft"},{"ancestorTitles":[],"duration":342,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"the parent exposes failed import-read retry without canonical saves or history restores","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793710386380,"status":"passed","title":"the parent exposes failed import-read retry without canonical saves or history restores"},{"ancestorTitles":[],"duration":1251,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"changing language in overview cannot refetch or overwrite a dirty canonical draft","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710386723,"status":"passed","title":"changing language in overview cannot refetch or overwrite a dirty canonical draft"},{"ancestorTitles":[],"duration":917,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"visited evidence keeps its draft across sections without an unvisited or repeated list request","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793710387974,"status":"passed","title":"visited evidence keeps its draft across sections without an unvisited or repeated list request"}],"endTime":1793710388893,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\career-workspace-page.test.tsx","startTime":1793710364430,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":[],"duration":11,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"English and Bokmål expose the same UI message keys","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"startAt":1793710389392,"status":"passed","title":"English and Bokmål expose the same UI message keys"},{"ancestorTitles":[],"duration":5,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Bokmål preserves every English substitution variable","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"startAt":1793710389404,"status":"passed","title":"Bokmål preserves every English substitution variable"},{"ancestorTitles":[],"duration":5,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"supported UI catalogues contain no blank messages","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"startAt":1793710389409,"status":"passed","title":"supported UI catalogues contain no blank messages"}],"endTime":1793710389415,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\translation-catalogue.test.ts","startTime":1793710388908,"status":"passed","summary":""}],"wasInterrupted":false} diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-career-overview-tests.log b/docs/ui-modernisation/evidence/career/frontend/a3-career-overview-tests.log new file mode 100644 index 00000000..8ab88e80 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-career-overview-tests.log @@ -0,0 +1,11 @@ + +> job-tracker-ui@0.1.0 test +> jest --runInBand --watch=false --runTestsByPath src/career-workspace-page.test.tsx src/career-editor.test.tsx src/translation-catalogue.test.ts --json --outputFile=../docs/ui-modernisation/a3-career-overview-tests.json + + +Test Suites: 3 passed, 3 total +Tests: 35 passed, 35 total +Snapshots: 0 total +Time: 102.785 s +Ran all test suites within paths "src/career-workspace-page.test.tsx", "src/career-editor.test.tsx", "src/translation-catalogue.test.ts". +Test results written to: ..\docs\ui-modernisation\a3-career-overview-tests.json diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-career-sections-green.json b/docs/ui-modernisation/evidence/career/frontend/a3-career-sections-green.json new file mode 100644 index 00000000..05d8e65b --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-career-sections-green.json @@ -0,0 +1 @@ +{"numFailedTestSuites":1,"numFailedTests":1,"numPassedTestSuites":0,"numPassedTests":1,"numPendingTestSuites":0,"numPendingTests":12,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":1,"numTotalTests":14,"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":1793709737029,"success":false,"testResults":[{"assertionResults":[{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a locale update retains dirty structured and raw drafts without reading their source again","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709743336,"status":"pending","title":"a locale update retains dirty structured and raw drafts without reading their source again"},{"ancestorTitles":[],"duration":904,"failing":false,"failureDetails":[{"name":"TestingLibraryElementError"}],"failureMessages":["TestingLibraryElementError: Unable to find an accessible element with the role \"textbox\" and name \"Project name\"\n\nHere are the accessible roles:\n\n banner:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n heading:\n\n Name \"Projects\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n button:\n\n Name \"Add project\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------paragraph:\n\n Name \"\":\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[36m\u001b[39m\n \u001b[0mProjects\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mAdd project\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mNothing added yet.\u001b[0m\n \u001b[36m

\u001b[39m\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 getByRole (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\career-editor.test.tsx:128:27)\n at runNextTicks (node:internal/process/task_queues:65:5)\n at listOnTimeout (node:internal/timers:597:9)\n at processTimers (node:internal/timers:571:7)"],"fullName":"edits en canonical projects and certifications through the existing versioned Save without changing their IDs or sibling facts","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709743336,"status":"failed","title":"edits en canonical projects and certifications through the existing versioned Save without changing their IDs or sibling facts"},{"ancestorTitles":[],"duration":4128,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"edits nb canonical projects and certifications through the existing versioned Save without changing their IDs or sibling facts","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"startAt":1793709744262,"status":"passed","title":"edits nb canonical projects and certifications through the existing versioned Save without changing their IDs or sibling facts"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a pending initial read keeps one request and reports its failure in the latest locale without language writes","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709748390,"status":"pending","title":"a pending initial read keeps one request and reports its failure in the latest locale without language writes"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a held Save locks every editor mutation, raw input and history restore until its snapshot settles","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709748390,"status":"pending","title":"a held Save locks every editor mutation, raw input and history restore until its snapshot settles"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"two Save activations before React commits pending state send only one canonical PUT","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709748390,"status":"pending","title":"two Save activations before React commits pending state send only one canonical PUT"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a failed Save retains a scoped localized error and draft for retry through the same Save button","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709748390,"status":"pending","title":"a failed Save retains a scoped localized error and draft for retry through the same Save button"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"the editor exposes named H2/H3 groups and contextual repeated-item remove controls","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709748390,"status":"pending","title":"the editor exposes named H2/H3 groups and contextual repeated-item remove controls"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"manual edits preserve long-tail data, custom links, opaque IDs and modeled fields without editor controls","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709748390,"status":"pending","title":"manual edits preserve long-tail data, custom links, opaque IDs and modeled fields without editor controls"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a rejected save (409) keeps the draft and its original revision for deliberate retry","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709748390,"status":"pending","title":"a rejected save (409) keeps the draft and its original revision for deliberate retry"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a rejected save (0) keeps the draft and its original revision for deliberate retry","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709748390,"status":"pending","title":"a rejected save (0) keeps the draft and its original revision for deliberate retry"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"consecutive acknowledged career saves advance the revision returned with the saved snapshot","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709748390,"status":"pending","title":"consecutive acknowledged career saves advance the revision returned with the saved snapshot"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a delayed prior lifecycle read cannot replace edits in the current career editor","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709748390,"status":"pending","title":"a delayed prior lifecycle read cannot replace edits in the current career editor"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a read-only provider cannot edit canonical fields or trigger canonical writes","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709748390,"status":"pending","title":"a read-only provider cannot edit canonical fields or trigger canonical writes"}],"endTime":1793709748403,"message":" ● edits en canonical projects and certifications through the existing versioned Save without changing their IDs or sibling facts\n\n TestingLibraryElementError: Unable to find an accessible element with the role \"textbox\" and name \"Project name\"\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 \"Projects\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n button:\n\n Name \"Add project\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------paragraph:\n\n Name \"\":\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[36m\u001b[39m\n \u001b[0mProjects\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mAdd project\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mNothing added yet.\u001b[0m\n \u001b[36m

\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n\n 126 | const projects = await screen.findByRole('region', { name: projectsName });\n 127 | const certifications = screen.getByRole('region', { name: certificationsName });\n > 128 | expect(within(projects).getByRole('textbox', { name: projectLabel })).toHaveValue('Recorded project');\n | ^\n 129 | fireEvent.change(within(projects).getByRole('textbox', { name: projectLabel }), { target: { value: 'Reviewed community project' } });\n 130 | fireEvent.change(within(certifications).getByRole('textbox', { name: certificationLabel }), { target: { value: 'Reviewed credential' } });\n 131 | fireEvent.click(screen.getByRole('button', { name: language === 'nb' ? nb.profileSaveChanges : en.profileSaveChanges }));\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/career-editor.test.tsx:128:27)\n","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\career-editor.test.tsx","startTime":1793709738441,"status":"failed","summary":""}],"wasInterrupted":false} diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-career-sections-green.log b/docs/ui-modernisation/evidence/career/frontend/a3-career-sections-green.log new file mode 100644 index 00000000..f352dde3 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-career-sections-green.log @@ -0,0 +1,949 @@ + +> job-tracker-ui@0.1.0 test +> jest --runInBand --watch=false --runTestsByPath src/career-editor.test.tsx --testNamePattern=canonical projects and certifications --json --outputFile=../docs/ui-modernisation/a3-career-sections-green.json + + console.warn + MUI: You are providing a disabled `button` child to the Tooltip component. + A disabled element does not fire events. + Tooltip needs to listen to the child element's events to display the title. + + Add a simple wrapper element, such as a `span`. + + at node_modules/@mui/material/Tooltip/Tooltip.js:388:17 + at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) + at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) + at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) + at flushPendingEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18358:14) + at flushSpawnedWork (node_modules/react-dom/cjs/react-dom-client.development.js:18323:44) + at commitRoot (node_modules/react-dom/cjs/react-dom-client.development.js:17955:9) + at performWorkOnRoot (node_modules/react-dom/cjs/react-dom-client.development.js:16667:15) + at performSyncWorkOnRoot (node_modules/react-dom/cjs/react-dom-client.development.js:18972:7) + at flushSyncWorkAcrossRoots_impl (node_modules/react-dom/cjs/react-dom-client.development.js:18814:21) + + console.warn + MUI: You are providing a disabled `button` child to the Tooltip component. + A disabled element does not fire events. + Tooltip needs to listen to the child element's events to display the title. + + Add a simple wrapper element, such as a `span`. + + at node_modules/@mui/material/Tooltip/Tooltip.js:388:17 + at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) + at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) + at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) + at flushPendingEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18358:14) + at flushSpawnedWork (node_modules/react-dom/cjs/react-dom-client.development.js:18323:44) + at commitRoot (node_modules/react-dom/cjs/react-dom-client.development.js:17955:9) + at performWorkOnRoot (node_modules/react-dom/cjs/react-dom-client.development.js:16667:15) + at performSyncWorkOnRoot (node_modules/react-dom/cjs/react-dom-client.development.js:18972:7) + at flushSyncWorkAcrossRoots_impl (node_modules/react-dom/cjs/react-dom-client.development.js:18814:21) + + console.warn + MUI: You are providing a disabled `button` child to the Tooltip component. + A disabled element does not fire events. + Tooltip needs to listen to the child element's events to display the title. + + Add a simple wrapper element, such as a `span`. + + at node_modules/@mui/material/Tooltip/Tooltip.js:388:17 + at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) + at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) + at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) + at flushPendingEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18358:14) + at flushSpawnedWork (node_modules/react-dom/cjs/react-dom-client.development.js:18323:44) + at commitRoot (node_modules/react-dom/cjs/react-dom-client.development.js:17955:9) + at performWorkOnRoot (node_modules/react-dom/cjs/react-dom-client.development.js:16667:15) + at performSyncWorkOnRoot (node_modules/react-dom/cjs/react-dom-client.development.js:18972:7) + at flushSyncWorkAcrossRoots_impl (node_modules/react-dom/cjs/react-dom-client.development.js:18814:21) + + console.warn + MUI: You are providing a disabled `button` child to the Tooltip component. + A disabled element does not fire events. + Tooltip needs to listen to the child element's events to display the title. + + Add a simple wrapper element, such as a `span`. + + at node_modules/@mui/material/Tooltip/Tooltip.js:388:17 + at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) + at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) + at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) + at flushPendingEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18358:14) + at flushSpawnedWork (node_modules/react-dom/cjs/react-dom-client.development.js:18323:44) + at commitRoot (node_modules/react-dom/cjs/react-dom-client.development.js:17955:9) + at performWorkOnRoot (node_modules/react-dom/cjs/react-dom-client.development.js:16667:15) + at performSyncWorkOnRoot (node_modules/react-dom/cjs/react-dom-client.development.js:18972:7) + at flushSyncWorkAcrossRoots_impl (node_modules/react-dom/cjs/react-dom-client.development.js:18814:21) + + console.warn + MUI: You are providing a disabled `button` child to the Tooltip component. + A disabled element does not fire events. + Tooltip needs to listen to the child element's events to display the title. + + Add a simple wrapper element, such as a `span`. + + at node_modules/@mui/material/Tooltip/Tooltip.js:388:17 + at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) + at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) + at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) + at flushPendingEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18358:14) + at flushSpawnedWork (node_modules/react-dom/cjs/react-dom-client.development.js:18323:44) + at commitRoot (node_modules/react-dom/cjs/react-dom-client.development.js:17955:9) + at performWorkOnRoot (node_modules/react-dom/cjs/react-dom-client.development.js:16667:15) + at performSyncWorkOnRoot (node_modules/react-dom/cjs/react-dom-client.development.js:18972:7) + at flushSyncWorkAcrossRoots_impl (node_modules/react-dom/cjs/react-dom-client.development.js:18814:21) + + console.warn + MUI: You are providing a disabled `button` child to the Tooltip component. + A disabled element does not fire events. + Tooltip needs to listen to the child element's events to display the title. + + Add a simple wrapper element, such as a `span`. + + at node_modules/@mui/material/Tooltip/Tooltip.js:388:17 + at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) + at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) + at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) + at flushPendingEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18358:14) + at flushSpawnedWork (node_modules/react-dom/cjs/react-dom-client.development.js:18323:44) + at commitRoot (node_modules/react-dom/cjs/react-dom-client.development.js:17955:9) + at performWorkOnRoot (node_modules/react-dom/cjs/react-dom-client.development.js:16667:15) + at performSyncWorkOnRoot (node_modules/react-dom/cjs/react-dom-client.development.js:18972:7) + at flushSyncWorkAcrossRoots_impl (node_modules/react-dom/cjs/react-dom-client.development.js:18814:21) + + console.warn + MUI: You are providing a disabled `button` child to the Tooltip component. + A disabled element does not fire events. + Tooltip needs to listen to the child element's events to display the title. + + Add a simple wrapper element, such as a `span`. + + at node_modules/@mui/material/Tooltip/Tooltip.js:388:17 + at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) + at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) + at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) + at flushPendingEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18358:14) + at flushSpawnedWork (node_modules/react-dom/cjs/react-dom-client.development.js:18323:44) + at commitRoot (node_modules/react-dom/cjs/react-dom-client.development.js:17955:9) + at performWorkOnRoot (node_modules/react-dom/cjs/react-dom-client.development.js:16667:15) + at performSyncWorkOnRoot (node_modules/react-dom/cjs/react-dom-client.development.js:18972:7) + at flushSyncWorkAcrossRoots_impl (node_modules/react-dom/cjs/react-dom-client.development.js:18814:21) + + console.warn + MUI: You are providing a disabled `button` child to the Tooltip component. + A disabled element does not fire events. + Tooltip needs to listen to the child element's events to display the title. + + Add a simple wrapper element, such as a `span`. + + at node_modules/@mui/material/Tooltip/Tooltip.js:388:17 + at Object.react_stack_bottom_frame (node_modules/react-dom/cjs/react-dom-client.development.js:25989:20) + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at commitHookEffectListMount (node_modules/react-dom/cjs/react-dom-client.development.js:13249:29) + at commitHookPassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:13336:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15484:13) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15718:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15476:11) + at recursivelyTraversePassiveMountEffects (node_modules/react-dom/cjs/react-dom-client.development.js:15439:11) + at commitPassiveMountOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:15519:11) + at flushPassiveEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18432:9) + at flushPendingEffects (node_modules/react-dom/cjs/react-dom-client.development.js:18358:14) + at flushSpawnedWork (node_modules/react-dom/cjs/react-dom-client.development.js:18323:44) + at commitRoot (node_modules/react-dom/cjs/react-dom-client.development.js:17955:9) + at performWorkOnRoot (node_modules/react-dom/cjs/react-dom-client.development.js:16667:15) + at performSyncWorkOnRoot (node_modules/react-dom/cjs/react-dom-client.development.js:18972:7) + at flushSyncWorkAcrossRoots_impl (node_modules/react-dom/cjs/react-dom-client.development.js:18814:21) + +FAIL src/career-editor.test.tsx (9.962 s) + ● edits en canonical projects and certifications through the existing versioned Save without changing their IDs or sibling facts + + TestingLibraryElementError: Unable to find an accessible element with the role "textbox" and name "Project name" + + Here are the accessible roles: + + banner: + + Name "": +
+ + -------------------------------------------------- + heading: + + Name "Projects": +

+ + -------------------------------------------------- + button: + + Name "Add project": + + +

+
+

+ Nothing added yet. +

+
+ + + 126 | const projects = await screen.findByRole('region', { name: projectsName }); + 127 | const certifications = screen.getByRole('region', { name: certificationsName }); + > 128 | expect(within(projects).getByRole('textbox', { name: projectLabel })).toHaveValue('Recorded project'); + | ^ + 129 | fireEvent.change(within(projects).getByRole('textbox', { name: projectLabel }), { target: { value: 'Reviewed community project' } }); + 130 | fireEvent.change(within(certifications).getByRole('textbox', { name: certificationLabel }), { target: { value: 'Reviewed credential' } }); + 131 | fireEvent.click(screen.getByRole('button', { name: language === 'nb' ? nb.profileSaveChanges : en.profileSaveChanges })); + + at Object.getElementError (node_modules/@testing-library/dom/dist/config.js:37:19) + at node_modules/@testing-library/dom/dist/query-helpers.js:76:38 + at node_modules/@testing-library/dom/dist/query-helpers.js:52:17 + at node_modules/@testing-library/dom/dist/query-helpers.js:95:19 + at getByRole (src/career-editor.test.tsx:128:27) + +Test Suites: 1 failed, 1 total +Tests: 1 failed, 12 skipped, 1 passed, 14 total +Snapshots: 0 total +Time: 11.408 s, estimated 14 s +Ran all test suites within paths "src/career-editor.test.tsx". +Test results written to: ..\docs\ui-modernisation\a3-career-sections-green.json diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-career-sections-red.json b/docs/ui-modernisation/evidence/career/frontend/a3-career-sections-red.json new file mode 100644 index 00000000..01c10e99 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-career-sections-red.json @@ -0,0 +1 @@ +{"numFailedTestSuites":1,"numFailedTests":2,"numPassedTestSuites":0,"numPassedTests":0,"numPendingTestSuites":0,"numPendingTests":12,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":1,"numTotalTests":14,"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":1793709642546,"success":false,"testResults":[{"assertionResults":[{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a locale update retains dirty structured and raw drafts without reading their source again","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709648101,"status":"pending","title":"a locale update retains dirty structured and raw drafts without reading their source again"},{"ancestorTitles":[],"duration":4676,"failing":false,"failureDetails":[{"name":"TestingLibraryElementError"}],"failureMessages":["Error: Unable to find role=\"region\" and name \"Projects\"\n\nIgnored nodes: comments, script, style\n\u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mCareer workspace section\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mCareer profile\u001b[0m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mCareer workspace section\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mOverview\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mCareer profile\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mEvidence bank\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mImport review\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-each\\build\\index.js:80:140)\n at Promise.finally.completed (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:1561:28)\n at new Promise ()\n at callAsyncCircusFn (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:1501:10)\n at _callCircusTest (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:1011:40)\n at _runTest (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:951:3)\n at C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:853:7\n at _runTestsForDescribeBlock (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:866:11)\n at run (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:765:3)\n at runAndTransformResultsToJestFormat (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:1993:21)\n at jestAdapter (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\runner.js:111:19)\n at runTestInternal (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-runner\\build\\index.js:276:16)\n at runTest (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-runner\\build\\index.js:344:7)"],"fullName":"edits en canonical projects and certifications through the existing versioned Save without changing their IDs or sibling facts","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709648101,"status":"failed","title":"edits en canonical projects and certifications through the existing versioned Save without changing their IDs or sibling facts"},{"ancestorTitles":[],"duration":4365,"failing":false,"failureDetails":[{"name":"TestingLibraryElementError"}],"failureMessages":["Error: Unable to find role=\"region\" and name \"Prosjekter\"\n\nIgnored nodes: comments, script, style\n\u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mOmråde i karrierearbeidsområdet\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mKarriereprofil\u001b[0m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mOmråde i karrierearbeidsområdet\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mOversikt\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mKarriereprofil\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mKunnskapsbank\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mImportgjennomgang\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-each\\build\\index.js:80:140)\n at Promise.finally.completed (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:1561:28)\n at new Promise ()\n at callAsyncCircusFn (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:1501:10)\n at _callCircusTest (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:1011:40)\n at _runTest (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:951:3)\n at C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:853:7\n at _runTestsForDescribeBlock (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:866:11)\n at run (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:765:3)\n at runAndTransformResultsToJestFormat (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:1993:21)\n at jestAdapter (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\runner.js:111:19)\n at runTestInternal (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-runner\\build\\index.js:276:16)\n at runTest (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-runner\\build\\index.js:344:7)"],"fullName":"edits nb canonical projects and certifications through the existing versioned Save without changing their IDs or sibling facts","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709652778,"status":"failed","title":"edits nb canonical projects and certifications through the existing versioned Save without changing their IDs or sibling facts"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a pending initial read keeps one request and reports its failure in the latest locale without language writes","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709657143,"status":"pending","title":"a pending initial read keeps one request and reports its failure in the latest locale without language writes"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a held Save locks every editor mutation, raw input and history restore until its snapshot settles","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709657143,"status":"pending","title":"a held Save locks every editor mutation, raw input and history restore until its snapshot settles"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"two Save activations before React commits pending state send only one canonical PUT","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709657143,"status":"pending","title":"two Save activations before React commits pending state send only one canonical PUT"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a failed Save retains a scoped localized error and draft for retry through the same Save button","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709657143,"status":"pending","title":"a failed Save retains a scoped localized error and draft for retry through the same Save button"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"the editor exposes named H2/H3 groups and contextual repeated-item remove controls","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709657143,"status":"pending","title":"the editor exposes named H2/H3 groups and contextual repeated-item remove controls"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"manual edits preserve long-tail data, custom links, opaque IDs and modeled fields without editor controls","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709657143,"status":"pending","title":"manual edits preserve long-tail data, custom links, opaque IDs and modeled fields without editor controls"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a rejected save (409) keeps the draft and its original revision for deliberate retry","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709657143,"status":"pending","title":"a rejected save (409) keeps the draft and its original revision for deliberate retry"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a rejected save (0) keeps the draft and its original revision for deliberate retry","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709657143,"status":"pending","title":"a rejected save (0) keeps the draft and its original revision for deliberate retry"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"consecutive acknowledged career saves advance the revision returned with the saved snapshot","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709657143,"status":"pending","title":"consecutive acknowledged career saves advance the revision returned with the saved snapshot"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a delayed prior lifecycle read cannot replace edits in the current career editor","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709657143,"status":"pending","title":"a delayed prior lifecycle read cannot replace edits in the current career editor"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a read-only provider cannot edit canonical fields or trigger canonical writes","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793709657143,"status":"pending","title":"a read-only provider cannot edit canonical fields or trigger canonical writes"}],"endTime":1793709657156,"message":" ● edits en canonical projects and certifications through the existing versioned Save without changing their IDs or sibling facts\n\n Unable to find role=\"region\" and name \"Projects\"\n\n Ignored nodes: comments, script, style\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mCareer workspace section\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mCareer profile\u001b[0m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mCareer workspace section\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mOverview\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mCareer profile\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mEvidence bank\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mImport review\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m 126 | const projects = await screen.findByRole('region', { name: projectsName });\n | ^\n 127 | const certifications = screen.getByRole('region', { name: certificationsName });\n 128 | expect(within(projects).getByRole('textbox', { name: projectLabel })).toHaveValue('Recorded project');\n 129 | fireEvent.change(within(projects).getByRole('textbox', { name: projectLabel }), { target: { value: 'Reviewed community project' } });\n\n at waitForWrapper (node_modules/@testing-library/dom/dist/wait-for.js:163:27)\n at node_modules/@testing-library/dom/dist/query-helpers.js:86:33\n at findByRole (src/career-editor.test.tsx:126:33)\n\n ● edits nb canonical projects and certifications through the existing versioned Save without changing their IDs or sibling facts\n\n Unable to find role=\"region\" and name \"Prosjekter\"\n\n Ignored nodes: comments, script, style\n \u001b[36m\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mOmråde i karrierearbeidsområdet\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mKarriereprofil\u001b[0m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mOmråde i karrierearbeidsområdet\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mOversikt\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mKarriereprofil\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mKunnskapsbank\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mImportgjennomgang\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m 126 | const projects = await screen.findByRole('region', { name: projectsName });\n | ^\n 127 | const certifications = screen.getByRole('region', { name: certificationsName });\n 128 | expect(within(projects).getByRole('textbox', { name: projectLabel })).toHaveValue('Recorded project');\n 129 | fireEvent.change(within(projects).getByRole('textbox', { name: projectLabel }), { target: { value: 'Reviewed community project' } });\n\n at waitForWrapper (node_modules/@testing-library/dom/dist/wait-for.js:163:27)\n at node_modules/@testing-library/dom/dist/query-helpers.js:86:33\n at findByRole (src/career-editor.test.tsx:126:33)\n","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\career-editor.test.tsx","startTime":1793709643985,"status":"failed","summary":""}],"wasInterrupted":false} diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-career-sections-tests.json b/docs/ui-modernisation/evidence/career/frontend/a3-career-sections-tests.json new file mode 100644 index 00000000..df44b6e7 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-career-sections-tests.json @@ -0,0 +1 @@ +{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":2,"numPassedTests":17,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":2,"numTotalTests":17,"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":1793709883882,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":[],"duration":7449,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a locale update retains dirty structured and raw drafts without reading their source again","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793709889780,"status":"passed","title":"a locale update retains dirty structured and raw drafts without reading their source again"},{"ancestorTitles":[],"duration":4006,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"edits en canonical projects and certifications through the existing versioned Save without changing their IDs or sibling facts","invocations":1,"location":null,"numPassingAsserts":12,"retryReasons":[],"startAt":1793709897230,"status":"passed","title":"edits en canonical projects and certifications through the existing versioned Save without changing their IDs or sibling facts"},{"ancestorTitles":[],"duration":3669,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"edits nb canonical projects and certifications through the existing versioned Save without changing their IDs or sibling facts","invocations":1,"location":null,"numPassingAsserts":12,"retryReasons":[],"startAt":1793709901236,"status":"passed","title":"edits nb canonical projects and certifications through the existing versioned Save without changing their IDs or sibling facts"},{"ancestorTitles":[],"duration":1528,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a pending initial read keeps one request and reports its failure in the latest locale without language writes","invocations":1,"location":null,"numPassingAsserts":15,"retryReasons":[],"startAt":1793709904905,"status":"passed","title":"a pending initial read keeps one request and reports its failure in the latest locale without language writes"},{"ancestorTitles":[],"duration":7557,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a held Save locks every editor mutation, raw input and history restore until its snapshot settles","invocations":1,"location":null,"numPassingAsserts":50,"retryReasons":[],"startAt":1793709906433,"status":"passed","title":"a held Save locks every editor mutation, raw input and history restore until its snapshot settles"},{"ancestorTitles":[],"duration":2649,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"two Save activations before React commits pending state send only one canonical PUT","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709913990,"status":"passed","title":"two Save activations before React commits pending state send only one canonical PUT"},{"ancestorTitles":[],"duration":6344,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a failed Save retains a scoped localized error and draft for retry through the same Save button","invocations":1,"location":null,"numPassingAsserts":22,"retryReasons":[],"startAt":1793709916639,"status":"passed","title":"a failed Save retains a scoped localized error and draft for retry through the same Save button"},{"ancestorTitles":[],"duration":2297,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"the editor exposes named H2/H3 groups and contextual repeated-item remove controls","invocations":1,"location":null,"numPassingAsserts":21,"retryReasons":[],"startAt":1793709922984,"status":"passed","title":"the editor exposes named H2/H3 groups and contextual repeated-item remove controls"},{"ancestorTitles":[],"duration":7958,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"manual edits preserve long-tail data, custom links, opaque IDs and modeled fields without editor controls","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793709925281,"status":"passed","title":"manual edits preserve long-tail data, custom links, opaque IDs and modeled fields without editor controls"},{"ancestorTitles":[],"duration":5255,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a rejected save (409) keeps the draft and its original revision for deliberate retry","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793709933239,"status":"passed","title":"a rejected save (409) keeps the draft and its original revision for deliberate retry"},{"ancestorTitles":[],"duration":5233,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a rejected save (0) keeps the draft and its original revision for deliberate retry","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793709938494,"status":"passed","title":"a rejected save (0) keeps the draft and its original revision for deliberate retry"},{"ancestorTitles":[],"duration":5612,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"consecutive acknowledged career saves advance the revision returned with the saved snapshot","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793709943728,"status":"passed","title":"consecutive acknowledged career saves advance the revision returned with the saved snapshot"},{"ancestorTitles":[],"duration":4896,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a delayed prior lifecycle read cannot replace edits in the current career editor","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793709949341,"status":"passed","title":"a delayed prior lifecycle read cannot replace edits in the current career editor"},{"ancestorTitles":[],"duration":4008,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a read-only provider cannot edit canonical fields or trigger canonical writes","invocations":1,"location":null,"numPassingAsserts":45,"retryReasons":[],"startAt":1793709954238,"status":"passed","title":"a read-only provider cannot edit canonical fields or trigger canonical writes"}],"endTime":1793709958248,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\career-editor.test.tsx","startTime":1793709885305,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":[],"duration":12,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"English and Bokmål expose the same UI message keys","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"startAt":1793709958709,"status":"passed","title":"English and Bokmål expose the same UI message keys"},{"ancestorTitles":[],"duration":9,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Bokmål preserves every English substitution variable","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"startAt":1793709958721,"status":"passed","title":"Bokmål preserves every English substitution variable"},{"ancestorTitles":[],"duration":3,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"supported UI catalogues contain no blank messages","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"startAt":1793709958730,"status":"passed","title":"supported UI catalogues contain no blank messages"}],"endTime":1793709958734,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\translation-catalogue.test.ts","startTime":1793709958269,"status":"passed","summary":""}],"wasInterrupted":false} diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-career-sections-tests.log b/docs/ui-modernisation/evidence/career/frontend/a3-career-sections-tests.log new file mode 100644 index 00000000..7581648f --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-career-sections-tests.log @@ -0,0 +1,11 @@ + +> job-tracker-ui@0.1.0 test +> jest --runInBand --watch=false --runTestsByPath src/career-editor.test.tsx src/translation-catalogue.test.ts --json --outputFile=../docs/ui-modernisation/a3-career-sections-tests.json + + +Test Suites: 2 passed, 2 total +Tests: 17 passed, 17 total +Snapshots: 0 total +Time: 74.862 s +Ran all test suites within paths "src/career-editor.test.tsx", "src/translation-catalogue.test.ts". +Test results written to: ..\docs\ui-modernisation\a3-career-sections-tests.json diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-career-tests.json b/docs/ui-modernisation/evidence/career/frontend/a3-career-tests.json new file mode 100644 index 00000000..e2e5e399 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-career-tests.json @@ -0,0 +1 @@ +{"numFailedTestSuites":1,"numFailedTests":1,"numPassedTestSuites":7,"numPassedTests":152,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":8,"numTotalTests":153,"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":1793710704793,"success":false,"testResults":[{"assertionResults":[{"ancestorTitles":[],"duration":6457,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a locale update retains dirty structured and raw drafts without reading their source again","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793710710294,"status":"passed","title":"a locale update retains dirty structured and raw drafts without reading their source again"},{"ancestorTitles":[],"duration":3562,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"edits en canonical projects and certifications through the existing versioned Save without changing their IDs or sibling facts","invocations":1,"location":null,"numPassingAsserts":12,"retryReasons":[],"startAt":1793710716751,"status":"passed","title":"edits en canonical projects and certifications through the existing versioned Save without changing their IDs or sibling facts"},{"ancestorTitles":[],"duration":4234,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"edits nb canonical projects and certifications through the existing versioned Save without changing their IDs or sibling facts","invocations":1,"location":null,"numPassingAsserts":12,"retryReasons":[],"startAt":1793710720313,"status":"passed","title":"edits nb canonical projects and certifications through the existing versioned Save without changing their IDs or sibling facts"},{"ancestorTitles":[],"duration":7235,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"project and certification add/remove controls keep sibling entries and focus before the explicit canonical Save","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793710724547,"status":"passed","title":"project and certification add/remove controls keep sibling entries and focus before the explicit canonical Save"},{"ancestorTitles":[],"duration":1426,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a pending initial read keeps one request and reports its failure in the latest locale without language writes","invocations":1,"location":null,"numPassingAsserts":15,"retryReasons":[],"startAt":1793710731782,"status":"passed","title":"a pending initial read keeps one request and reports its failure in the latest locale without language writes"},{"ancestorTitles":[],"duration":8635,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a held Save locks every editor mutation, raw input and history restore until its snapshot settles","invocations":1,"location":null,"numPassingAsserts":52,"retryReasons":[],"startAt":1793710733208,"status":"passed","title":"a held Save locks every editor mutation, raw input and history restore until its snapshot settles"},{"ancestorTitles":[],"duration":3291,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"two Save activations before React commits pending state send only one canonical PUT","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710741843,"status":"passed","title":"two Save activations before React commits pending state send only one canonical PUT"},{"ancestorTitles":[],"duration":7976,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a failed Save retains a scoped localized error and draft for retry through the same Save button","invocations":1,"location":null,"numPassingAsserts":22,"retryReasons":[],"startAt":1793710745134,"status":"passed","title":"a failed Save retains a scoped localized error and draft for retry through the same Save button"},{"ancestorTitles":[],"duration":3839,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"the editor exposes named H2/H3 groups and contextual repeated-item remove controls","invocations":1,"location":null,"numPassingAsserts":21,"retryReasons":[],"startAt":1793710753111,"status":"passed","title":"the editor exposes named H2/H3 groups and contextual repeated-item remove controls"},{"ancestorTitles":[],"duration":13050,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"manual edits preserve long-tail data, custom links, opaque IDs and modeled fields without editor controls","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793710756951,"status":"passed","title":"manual edits preserve long-tail data, custom links, opaque IDs and modeled fields without editor controls"},{"ancestorTitles":[],"duration":6834,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a rejected save (409) keeps the draft and its original revision for deliberate retry","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793710770001,"status":"passed","title":"a rejected save (409) keeps the draft and its original revision for deliberate retry"},{"ancestorTitles":[],"duration":6531,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a rejected save (0) keeps the draft and its original revision for deliberate retry","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793710776835,"status":"passed","title":"a rejected save (0) keeps the draft and its original revision for deliberate retry"},{"ancestorTitles":[],"duration":6373,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"consecutive acknowledged career saves advance the revision returned with the saved snapshot","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793710783366,"status":"passed","title":"consecutive acknowledged career saves advance the revision returned with the saved snapshot"},{"ancestorTitles":[],"duration":4730,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a delayed prior lifecycle read cannot replace edits in the current career editor","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710789740,"status":"passed","title":"a delayed prior lifecycle read cannot replace edits in the current career editor"},{"ancestorTitles":[],"duration":3509,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a read-only provider cannot edit canonical fields or trigger canonical writes","invocations":1,"location":null,"numPassingAsserts":45,"retryReasons":[],"startAt":1793710794470,"status":"passed","title":"a read-only provider cannot edit canonical fields or trigger canonical writes"}],"endTime":1793710797980,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\career-editor.test.tsx","startTime":1793710706174,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":[],"duration":1779,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"disabled CV worker upload gives actionable en recovery without changing the profile","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793710799609,"status":"passed","title":"disabled CV worker upload gives actionable en recovery without changing the profile"},{"ancestorTitles":[],"duration":1348,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"disabled CV worker upload gives actionable nb recovery without changing the profile","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793710801389,"status":"passed","title":"disabled CV worker upload gives actionable nb recovery without changing the profile"},{"ancestorTitles":[],"duration":2026,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"failed history reads have a scoped Retry that preserves unsaved source fields","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793710802737,"status":"passed","title":"failed history reads have a scoped Retry that preserves unsaved source fields"},{"ancestorTitles":[],"duration":2159,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a dirty canonical profile cannot be replaced through history restore","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793710804763,"status":"passed","title":"a dirty canonical profile cannot be replaced through history restore"},{"ancestorTitles":[],"duration":2051,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"each failed comparison can retry its own run without refetching canonical data or losing another comparison","invocations":1,"location":null,"numPassingAsserts":10,"retryReasons":[],"startAt":1793710806922,"status":"passed","title":"each failed comparison can retry its own run without refetching canonical data or losing another comparison"},{"ancestorTitles":[],"duration":1350,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"review shows actual current and imported values and discloses fields outside the comparison","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793710808973,"status":"passed","title":"review shows actual current and imported values and discloses fields outside the comparison"},{"ancestorTitles":[],"duration":2076,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"selecting then deselecting low-confidence data sends the explicit empty selection","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793710810324,"status":"passed","title":"selecting then deselecting low-confidence data sends the explicit empty selection"},{"ancestorTitles":[],"duration":3443,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"held acceptance locks review choices and all canonical editors and prevents duplicate or overlapping writes","invocations":1,"location":null,"numPassingAsserts":13,"retryReasons":[],"startAt":1793710812400,"status":"passed","title":"held acceptance locks review choices and all canonical editors and prevents duplicate or overlapping writes"},{"ancestorTitles":[],"duration":2820,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"failed acceptance keeps the chosen stable IDs and shows durable translated recovery without automatically resending","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"startAt":1793710815843,"status":"passed","title":"failed acceptance keeps the chosen stable IDs and shows durable translated recovery without automatically resending"},{"ancestorTitles":[],"duration":3286,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"discarding an import preserves unsaved structured and raw drafts and does not reload the canonical profile","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793710818663,"status":"passed","title":"discarding an import preserves unsaved structured and raw drafts and does not reload the canonical profile"},{"ancestorTitles":[],"duration":3319,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"saving canonical changes refreshes history and comparisons and clears choices made against the earlier source","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793710821949,"status":"passed","title":"saving canonical changes refreshes history and comparisons and clears choices made against the earlier source"},{"ancestorTitles":[],"duration":2987,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a failed restore keeps the original source and known history with an explicit retry","invocations":1,"location":null,"numPassingAsserts":10,"retryReasons":[],"startAt":1793710825268,"status":"passed","title":"a failed restore keeps the original source and known history with an explicit retry"},{"ancestorTitles":[],"duration":2314,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"an operation cancellation is guarded while pending and leaves an unsaved source draft intact","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793710828255,"status":"passed","title":"an operation cancellation is guarded while pending and leaves an unsaved source draft intact"},{"ancestorTitles":[],"duration":1888,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a failed operation retry stays scoped and only resends the same operation on explicit user retry","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793710830569,"status":"passed","title":"a failed operation retry stays scoped and only resends the same operation on explicit user retry"},{"ancestorTitles":[],"duration":1417,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Bokmål localizes comparison labels while preserving imported facts named like UI labels or object properties","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793710832458,"status":"passed","title":"Bokmål localizes comparison labels while preserving imported facts named like UI labels or object properties"},{"ancestorTitles":[],"duration":1569,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"the known low-confidence contact placeholder is localized","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793710833875,"status":"passed","title":"the known low-confidence contact placeholder is localized"}],"endTime":1793710835446,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\career-import-review.test.tsx","startTime":1793710798036,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":[],"duration":181,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"first-run workspace presents concise profile, import, general CV and job-specific actions","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793710837025,"status":"passed","title":"first-run workspace presents concise profile, import, general CV and job-specific actions"},{"ancestorTitles":[],"duration":122,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"career workspace overview and import state render in Bokmål","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793710837207,"status":"passed","title":"career workspace overview and import state render in Bokmål"},{"ancestorTitles":[],"duration":166,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"returning workspace shows missing profile information and recent general and job-specific CVs","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793710837330,"status":"passed","title":"returning workspace shows missing profile information and recent general and job-specific CVs"},{"ancestorTitles":[],"duration":66,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"workspace exposes the pending_review import state as a resumable action","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793710837496,"status":"passed","title":"workspace exposes the pending_review import state as a resumable action"},{"ancestorTitles":[],"duration":76,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"workspace exposes the queued import state as a resumable action","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793710837562,"status":"passed","title":"workspace exposes the queued import state as a resumable action"},{"ancestorTitles":[],"duration":80,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"workspace exposes the failed import state as a resumable action","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793710837639,"status":"passed","title":"workspace exposes the failed import state as a resumable action"},{"ancestorTitles":[],"duration":90,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"workspace represents loading and profile-load errors without inventing status","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710837719,"status":"passed","title":"workspace represents loading and profile-load errors without inventing status"},{"ancestorTitles":[],"duration":98,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a settled failed profile read hides the completeness score and retries only through its existing owner","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793710837810,"status":"passed","title":"a settled failed profile read hides the completeness score and retries only through its existing owner"},{"ancestorTitles":[],"duration":88,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"an unknown import read cannot claim no imports, completion or first-run guidance","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710837908,"status":"passed","title":"an unknown import read cannot claim no imports, completion or first-run guidance"},{"ancestorTitles":[],"duration":95,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a failed import read stays unknown and keeps its own retry separate from the profile read","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793710837996,"status":"passed","title":"a failed import read stays unknown and keeps its own retry separate from the profile read"},{"ancestorTitles":[],"duration":239,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"failed recent-CV reads do not imply first-run and retry the same list without writes","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793710838091,"status":"passed","title":"failed recent-CV reads do not imply first-run and retry the same list without writes"},{"ancestorTitles":[],"duration":8517,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"en overview opens every canonical section directly without saving or reloading the profile","invocations":1,"location":null,"numPassingAsserts":59,"retryReasons":[],"startAt":1793710838331,"status":"passed","title":"en overview opens every canonical section directly without saving or reloading the profile"},{"ancestorTitles":[],"duration":7746,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"nb overview opens every canonical section directly without saving or reloading the profile","invocations":1,"location":null,"numPassingAsserts":59,"retryReasons":[],"startAt":1793710846848,"status":"passed","title":"nb overview opens every canonical section directly without saving or reloading the profile"},{"ancestorTitles":[],"duration":931,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"en section indicators retain server scoring and stop claiming saved status for an unsaved draft","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793710854595,"status":"passed","title":"en section indicators retain server scoring and stop claiming saved status for an unsaved draft"},{"ancestorTitles":[],"duration":926,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"nb section indicators retain server scoring and stop claiming saved status for an unsaved draft","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793710855526,"status":"passed","title":"nb section indicators retain server scoring and stop claiming saved status for an unsaved draft"},{"ancestorTitles":[],"duration":280,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"the parent exposes failed import-read retry without canonical saves or history restores","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793710856452,"status":"passed","title":"the parent exposes failed import-read retry without canonical saves or history restores"},{"ancestorTitles":[],"duration":1421,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"changing language in overview cannot refetch or overwrite a dirty canonical draft","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710856733,"status":"passed","title":"changing language in overview cannot refetch or overwrite a dirty canonical draft"},{"ancestorTitles":[],"duration":973,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"visited evidence keeps its draft across sections without an unvisited or repeated list request","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793710858155,"status":"passed","title":"visited evidence keeps its draft across sections without an unvisited or repeated list request"}],"endTime":1793710859130,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\career-workspace-page.test.tsx","startTime":1793710835461,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":[],"duration":1118,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"contact copy is a reviewed canonical snapshot; cancel is inert and apply preserves recipient and design","invocations":1,"location":null,"numPassingAsserts":17,"retryReasons":[],"startAt":1793710860779,"status":"passed","title":"contact copy is a reviewed canonical snapshot; cancel is inert and apply preserves recipient and design"},{"ancestorTitles":[],"duration":564,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"contact location copies only after selection and unselected contact values preserve destination fields","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710861897,"status":"passed","title":"contact location copies only after selection and unselected contact values preserve destination fields"},{"ancestorTitles":[],"duration":368,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"blank source contacts and choosing no fields never clear destination contacts","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710862461,"status":"passed","title":"blank source contacts and choosing no fields never clear destination contacts"},{"ancestorTitles":[],"duration":788,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"letter language is an explicit document draft and saves independently of interface and CV language","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710862829,"status":"passed","title":"letter language is an explicit document draft and saves independently of interface and CV language"},{"ancestorTitles":[],"duration":371,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"design copy resolves null overrides through actual theme defaults and effective CV density","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793710863618,"status":"passed","title":"design copy resolves null overrides through actual theme defaults and effective CV density"},{"ancestorTitles":[],"duration":349,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"letter template chooser uses nine actual matching themes and preserves destination letter details","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793710863990,"status":"passed","title":"letter template chooser uses nine actual matching themes and preserves destination letter details"},{"ancestorTitles":[],"duration":386,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"letter template load failures retry and cancel never changes the local letter","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710864339,"status":"passed","title":"letter template load failures retry and cancel never changes the local letter"},{"ancestorTitles":[],"duration":1021,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"applying a letter template updates the existing letter preview using the current body without saving","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793710864725,"status":"passed","title":"applying a letter template updates the existing letter preview using the current body without saving"},{"ancestorTitles":[],"duration":144,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"disabled letter drafting cannot open the template chooser","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710865746,"status":"passed","title":"disabled letter drafting cannot open the template chooser"},{"ancestorTitles":[],"duration":701,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"matching a customized CV copies heading density and paper but preserves letter language","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793710865890,"status":"passed","title":"matching a customized CV copies heading density and paper but preserves letter language"},{"ancestorTitles":[],"duration":494,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"closing a copy dialog ignores a late selected CV read","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710866592,"status":"passed","title":"closing a copy dialog ignores a late selected CV read"},{"ancestorTitles":[],"duration":507,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"failed copy reads are retryable and cannot apply or save a partial snapshot","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793710867086,"status":"passed","title":"failed copy reads are retryable and cannot apply or save a partial snapshot"},{"ancestorTitles":[],"duration":1654,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"restoring a historical letter restores saved details with text after explicit dirty confirmation","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793710867594,"status":"passed","title":"restoring a historical letter restores saved details with text after explicit dirty confirmation"},{"ancestorTitles":[],"duration":1046,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"successful export waits for the committed local snapshot and uses its returned revision once","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793710869248,"status":"passed","title":"successful export waits for the committed local snapshot and uses its returned revision once"},{"ancestorTitles":[],"duration":1572,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a late letter PDF from a previous keyed job never downloads or replaces the current draft","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710870294,"status":"passed","title":"a late letter PDF from a previous keyed job never downloads or replaces the current draft"}],"endTime":1793710871867,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\cover-letter-document.test.tsx","startTime":1793710859142,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":[],"duration":439,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"blank creation explicitly excludes all profile sections and contact even after template selection","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"startAt":1793710873679,"status":"passed","title":"blank creation explicitly excludes all profile sections and contact even after template selection"},{"ancestorTitles":[],"duration":546,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"profile creation includes only deliberately selected available sections and contact","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710874119,"status":"passed","title":"profile creation includes only deliberately selected available sections and contact"},{"ancestorTitles":[],"duration":431,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"unavailable profile sections block profile creation and allow an explicit blank fallback","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793710874665,"status":"passed","title":"unavailable profile sections block profile creation and allow an explicit blank fallback"},{"ancestorTitles":[],"duration":2,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"export validation decodes structured and blob errors without relabelling unknown failures","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710875097,"status":"passed","title":"export validation decodes structured and blob errors without relabelling unknown failures"},{"ancestorTitles":[],"duration":70,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"the CV library has a section heading and announces its held initial read without showing an empty result","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793710875099,"status":"passed","title":"the CV library has a section heading and announces its held initial read without showing an empty result"},{"ancestorTitles":[],"duration":123,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a failed CV list read has an explicit retry that clears the stale failure after recovery","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793710875169,"status":"passed","title":"a failed CV list read has an explicit retry that clears the stale failure after recovery"},{"ancestorTitles":[],"duration":484,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a live language change retains an open CV name and template draft without refetching library data","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793710875292,"status":"passed","title":"a live language change retains an open CV name and template draft without refetching library data"},{"ancestorTitles":[],"duration":1029,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"held CV creation locks the draft and gallery, then keeps a failed draft for an explicit retry","invocations":1,"location":null,"numPassingAsserts":17,"retryReasons":[],"startAt":1793710875776,"status":"passed","title":"held CV creation locks the draft and gallery, then keeps a failed draft for an explicit retry"},{"ancestorTitles":[],"duration":460,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a locked CV template remains identifiable and cannot change the creation request","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710876805,"status":"passed","title":"a locked CV template remains identifiable and cannot change the creation request"},{"ancestorTitles":[],"duration":688,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a held duplicate blocks another action for the same CV and shows the persisted refreshed copy","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793710877265,"status":"passed","title":"a held duplicate blocks another action for the same CV and shows the persisted refreshed copy"},{"ancestorTitles":[],"duration":900,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"rename reads the current revision and preserves its settings when saving the new name","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793710877953,"status":"passed","title":"rename reads the current revision and preserves its settings when saving the new name"},{"ancestorTitles":[],"duration":862,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a rename conflict keeps the original library entry and never retries the write automatically","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793710878853,"status":"passed","title":"a rename conflict keeps the original library entry and never retries the write automatically"},{"ancestorTitles":[],"duration":681,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"cancelling deletion returns focus to the surviving CV action control without removing the CV","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710879715,"status":"passed","title":"cancelling deletion returns focus to the surviving CV action control without removing the CV"},{"ancestorTitles":[],"duration":1173,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a failed creation keeps its draft and translates its failure after closing and reopening in another language","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793710880396,"status":"passed","title":"a failed creation keeps its draft and translates its failure after closing and reopening in another language"},{"ancestorTitles":[],"duration":382,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"generic PDF failure follows the current language both after failure and when a held request fails","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"startAt":1793710881569,"status":"passed","title":"generic PDF failure follows the current language both after failure and when a held request fails"},{"ancestorTitles":[],"duration":545,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a held deletion preserves focus moved to another surviving control before the response arrives","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793710881951,"status":"passed","title":"a held deletion preserves focus moved to another surviving control before the response arrives"},{"ancestorTitles":[],"duration":273,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"PDF status 503 shows an actionable message without retrying","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793710882496,"status":"passed","title":"PDF status 503 shows an actionable message without retrying"},{"ancestorTitles":[],"duration":211,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"PDF status 504 shows an actionable message without retrying","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793710882769,"status":"passed","title":"PDF status 504 shows an actionable message without retrying"},{"ancestorTitles":[],"duration":52,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"lists existing CVs from the variants API","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793710882980,"status":"passed","title":"lists existing CVs from the variants API"},{"ancestorTitles":[],"duration":304,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"shows the empty state and creates a CV then navigates to the editor","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710883033,"status":"passed","title":"shows the empty state and creates a CV then navigates to the editor"},{"ancestorTitles":[],"duration":176,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CV dashboard and create flow render in Bokmål","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710883337,"status":"passed","title":"CV dashboard and create flow render in Bokmål"},{"ancestorTitles":[],"duration":662,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CV deletion requires confirmation and supports cancellation","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793710883513,"status":"passed","title":"CV deletion requires confirmation and supports cancellation"}],"endTime":1793710884176,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\cv-builder-page.test.tsx","startTime":1793710871883,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":[],"duration":1488,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C08 C09 E08] common controls and advanced disclosure do not mutate document settings","invocations":1,"location":null,"numPassingAsserts":10,"retryReasons":[],"startAt":1793710886772,"status":"passed","title":"[PRES-C08 C09 E08] common controls and advanced disclosure do not mutate document settings"},{"ancestorTitles":[],"duration":1412,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C09 C10] numeric edits reject invalid ranges, keep exact valid values and reset only one setting","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793710888263,"status":"passed","title":"[PRES-C09 C10] numeric edits reject invalid ranges, keep exact valid values and reset only one setting"},{"ancestorTitles":[],"duration":4352,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C07 C08 C09] capability filtering preserves dormant saved values and exposes inherited sidebar controls","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"startAt":1793710889675,"status":"passed","title":"[PRES-C07 C08 C09] capability filtering preserves dormant saved values and exposes inherited sidebar controls"},{"ancestorTitles":[],"duration":1330,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C08 C10 E09] locks prevent selection and confirmed template resets preserve content and document metadata","invocations":1,"location":null,"numPassingAsserts":16,"retryReasons":[],"startAt":1793710894028,"status":"passed","title":"[PRES-C08 C10 E09] locks prevent selection and confirmed template resets preserve content and document metadata"},{"ancestorTitles":[],"duration":356,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C08 C09 E08] Bokmål controls expose their scope, values and non-colour selection state","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793710895359,"status":"passed","title":"[PRES-C08 C09 E08] Bokmål controls expose their scope, values and non-colour selection state"},{"ancestorTitles":[],"duration":771,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C08 C09] unsupported and legacy saved values survive unrelated edits without implicit normalization","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793710895715,"status":"passed","title":"[PRES-C08 C09] unsupported and legacy saved values survive unrelated edits without implicit normalization"}],"endTime":1793710896488,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\cv-document-controls.test.tsx","startTime":1793710884187,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":[],"duration":5608,"failing":false,"failureDetails":[{"matcherResult":{"pass":false,"message":"expect(element).toHaveValue()\n\nExpected the element to have value:\n\nReceived:\n D"}}],"failureMessages":["Error: expect(element).toHaveValue()\n\nExpected the element to have value:\n\nReceived:\n D\n at Object.toHaveValue (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\cv-builder-deep-link.test.tsx:104:20)"],"fullName":"Strict Mode groups a typing burst into one undo step and preserves redo through autosave","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710898744,"status":"failed","title":"Strict Mode groups a typing burst into one undo step and preserves redo through autosave"},{"ancestorTitles":[],"duration":688,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"tablet width keeps both editing and preview available in the stacked document flow","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710904384,"status":"passed","title":"tablet width keeps both editing and preview available in the stacked document flow"},{"ancestorTitles":[],"duration":2846,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"document shortcuts undo and redo renaming, preserve native input undo and discard branched redo","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793710905073,"status":"passed","title":"document shortcuts undo and redo renaming, preserve native input undo and discard branched redo"},{"ancestorTitles":[],"duration":1738,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a revision conflict disables document history without silently writing an undo","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793710907919,"status":"passed","title":"a revision conflict disables document history without silently writing an undo"},{"ancestorTitles":[],"duration":1997,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"switching documents hides the previous draft while loading and starts fresh history","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710909657,"status":"passed","title":"switching documents hides the previous draft while loading and starts fresh history"},{"ancestorTitles":[],"duration":935,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"explicit blank editing excludes master content and includes a profile section only after an Add action","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710911654,"status":"passed","title":"explicit blank editing excludes master content and includes a profile section only after an Add action"},{"ancestorTitles":[],"duration":840,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a blank CV can deliberately add an additional Career Profile section","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793710912589,"status":"passed","title":"a blank CV can deliberately add an additional Career Profile section"},{"ancestorTitles":[],"duration":1875,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a historical restore response from the previous document cannot change the newly opened CV","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793710913429,"status":"passed","title":"a historical restore response from the previous document cannot change the newly opened CV"},{"ancestorTitles":[],"duration":502,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"content sections follow the editing-region heading without mutating CV settings","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793710915304,"status":"passed","title":"content sections follow the editing-region heading without mutating CV settings"},{"ancestorTitles":[],"duration":679,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"settings history explains current Career Profile resolution without writing data","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793710915806,"status":"passed","title":"settings history explains current Career Profile resolution without writing data"},{"ancestorTitles":[],"duration":2322,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"PDF export locks immediately, rejects a newer unsaved draft, and keeps that draft recoverable","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793710916485,"status":"passed","title":"PDF export locks immediately, rejects a newer unsaved draft, and keeps that draft recoverable"},{"ancestorTitles":[],"duration":1599,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"edits during a held PDF response prevent an older document download","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793710918807,"status":"passed","title":"edits during a held PDF response prevent an older document download"},{"ancestorTitles":[],"duration":1006,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"moving a section to the first position announces its actual order and focuses its row","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793710920407,"status":"passed","title":"moving a section to the first position announces its actual order and focuses its row"},{"ancestorTitles":[],"duration":4512,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"section navigation opens and focuses omitted/custom sections without changing their data","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793710921413,"status":"passed","title":"section navigation opens and focuses omitted/custom sections without changing their data"},{"ancestorTitles":[],"duration":1451,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"keyboard move controls retain focus and persist the same section order shown by navigation","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710925926,"status":"passed","title":"keyboard move controls retain focus and persist the same section order shown by navigation"},{"ancestorTitles":[],"duration":1603,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"secondary duplicate action saves the current draft before creating the copy","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793710927377,"status":"passed","title":"secondary duplicate action saves the current draft before creating the copy"},{"ancestorTitles":[],"duration":647,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"pane navigation focuses the existing preview without changing the pending draft","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710928981,"status":"passed","title":"pane navigation focuses the existing preview without changing the pending draft"},{"ancestorTitles":[],"duration":456,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"deep link loads the exact variant named in the route","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793710929628,"status":"passed","title":"deep link loads the exact variant named in the route"},{"ancestorTitles":[],"duration":40,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a variant that does not exist shows a safe error instead of an empty editor","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793710930084,"status":"passed","title":"a variant that does not exist shows a safe error instead of an empty editor"},{"ancestorTitles":[],"duration":42,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"another user's variant is refused by the server and never rendered","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793710930124,"status":"passed","title":"another user's variant is refused by the server and never rendered"},{"ancestorTitles":[],"duration":35,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a denied CV read has localized permission context without a write or retry","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793710930166,"status":"passed","title":"a denied CV read has localized permission context without a write or retry"},{"ancestorTitles":[],"duration":236,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a temporary CV opening failure retries reads and restores focus to the editor without saving","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710930201,"status":"passed","title":"a temporary CV opening failure retries reads and restores focus to the editor without saving"},{"ancestorTitles":[],"duration":1149,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Bokmål history localizes known sources while preserving unknown metadata and versions","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793710930437,"status":"passed","title":"Bokmål history localizes known sources while preserving unknown metadata and versions"},{"ancestorTitles":[],"duration":924,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"invalid names are explained and are not silently autosaved","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793710931587,"status":"passed","title":"invalid names are explained and are not silently autosaved"},{"ancestorTitles":[],"duration":1653,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"failed autosave is visible and can be retried with the latest data","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710932511,"status":"passed","title":"failed autosave is visible and can be retried with the latest data"},{"ancestorTitles":[],"duration":1672,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"session undo and redo restore content edits before autosave","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793710934164,"status":"passed","title":"session undo and redo restore content edits before autosave"},{"ancestorTitles":[],"duration":1900,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"queued saves use acknowledged server versions without replacing newer local editing state","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793710935836,"status":"passed","title":"queued saves use acknowledged server versions without replacing newer local editing state"},{"ancestorTitles":[],"duration":3315,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"revision conflict retains the draft and blocks later autosaves until explicit reload","invocations":1,"location":null,"numPassingAsserts":10,"retryReasons":[],"startAt":1793710937736,"status":"passed","title":"revision conflict retains the draft and blocks later autosaves until explicit reload"},{"ancestorTitles":[],"duration":2182,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"edits made while a confirmed reload is in flight remain recoverable","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793710941051,"status":"passed","title":"edits made while a confirmed reload is in flight remain recoverable"},{"ancestorTitles":[],"duration":2593,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"restoring history uses the current version and never replaces edits made during the request","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793710943233,"status":"passed","title":"restoring history uses the current version and never replaces edits made during the request"},{"ancestorTitles":[],"duration":1487,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Content is the primary studio panel and all advanced tabs retain their controls","invocations":1,"location":null,"numPassingAsserts":14,"retryReasons":[],"startAt":1793710945826,"status":"passed","title":"Content is the primary studio panel and all advanced tabs retain their controls"},{"ancestorTitles":[],"duration":2237,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"choosing a template restores its own structure instead of inheriting the previous template layout","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793710947314,"status":"passed","title":"choosing a template restores its own structure instead of inheriting the previous template layout"},{"ancestorTitles":[],"duration":1438,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"editor sections, design controls and document settings render in Bokmål","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793710949551,"status":"passed","title":"editor sections, design controls and document settings render in Bokmål"},{"ancestorTitles":[],"duration":1878,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"internal navigation warns and can be cancelled before discarding a pending edit","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793710950989,"status":"passed","title":"internal navigation warns and can be cancelled before discarding a pending edit"},{"ancestorTitles":[],"duration":11467,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"custom entries can be added, edited, reordered and deleted with confirmation","invocations":1,"location":null,"numPassingAsserts":16,"retryReasons":[],"startAt":1793710952867,"status":"passed","title":"custom entries can be added, edited, reordered and deleted with confirmation"},{"ancestorTitles":[],"duration":3674,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C01 C07] source-backed entry edits identify their scope and save only this CV","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793710964334,"status":"passed","title":"[P5-10 PRES-C01 C07] source-backed entry edits identify their scope and save only this CV"},{"ancestorTitles":[],"duration":5296,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C07 C10] resetting one entry field preserves omission, sibling override and order and supports undo","invocations":1,"location":null,"numPassingAsserts":12,"retryReasons":[],"startAt":1793710968008,"status":"passed","title":"[P5-10 PRES-C07 C10] resetting one entry field preserves omission, sibling override and order and supports undo"},{"ancestorTitles":[],"duration":3665,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C07 C10 E08] omitted entries remain editable and retain their draft after a failed save","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793710973304,"status":"passed","title":"[P5-10 PRES-C07 C10 E08] omitted entries remain editable and retain their draft after a failed save"},{"ancestorTitles":[],"duration":2484,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C01 C07] section content reset inherits source without changing omission or presentation","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793710976969,"status":"passed","title":"[P5-10 PRES-C01 C07] section content reset inherits source without changing omission or presentation"},{"ancestorTitles":[],"duration":7145,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"profile-backed sections expand, reorder, hide and persist variant-only overrides","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793710979454,"status":"passed","title":"profile-backed sections expand, reorder, hide and persist variant-only overrides"},{"ancestorTitles":[],"duration":2174,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"focusing a preview retry control keeps its pointer target stationary","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793710986599,"status":"passed","title":"focusing a preview retry control keeps its pointer target stationary"},{"ancestorTitles":[],"duration":1862,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"preview failure is visible and retryable without leaving the editor","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793710988773,"status":"passed","title":"preview failure is visible and retryable without leaving the editor"},{"ancestorTitles":[],"duration":827,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 E08] automatic fit attaches when the asynchronously loaded preview pane appears","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"startAt":1793710990635,"status":"passed","title":"[P5-11 PRES-C06 E08] automatic fit attaches when the asynchronously loaded preview pane appears"},{"ancestorTitles":[],"duration":1010,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 C12] page count is announced only after the renderer has settled","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793710991462,"status":"passed","title":"[P5-11 PRES-C06 C12] page count is announced only after the renderer has settled"},{"ancestorTitles":[],"duration":3692,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 E09] overlapping preview successes and failures cannot replace the newest document","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"startAt":1793710992472,"status":"passed","title":"[P5-11 PRES-C06 E09] overlapping preview successes and failures cannot replace the newest document"},{"ancestorTitles":[],"duration":1120,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 C10 E08] returning from preview focuses the existing editor without changing the pending draft","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793710996164,"status":"passed","title":"[P5-11 PRES-C06 C10 E08] returning from preview focuses the existing editor without changing the pending draft"},{"ancestorTitles":[],"duration":2241,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11 PRES-C07] whole-document AI Apply changes only an explicitly accepted CV override","invocations":1,"location":null,"numPassingAsserts":12,"retryReasons":[],"startAt":1793710997284,"status":"passed","title":"[PRES-C11 PRES-C07] whole-document AI Apply changes only an explicitly accepted CV override"},{"ancestorTitles":[],"duration":1479,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11 PRES-C07] whole-document AI Reject changes only an explicitly accepted CV override","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"startAt":1793710999526,"status":"passed","title":"[PRES-C11 PRES-C07] whole-document AI Reject changes only an explicitly accepted CV override"},{"ancestorTitles":[],"duration":1930,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11] unsafe whole-document response (invalid JSON) cannot be applied","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793711001006,"status":"passed","title":"[PRES-C11] unsafe whole-document response (invalid JSON) cannot be applied"},{"ancestorTitles":[],"duration":1831,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11] unsafe whole-document response (missing original ID) cannot be applied","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793711002936,"status":"passed","title":"[PRES-C11] unsafe whole-document response (missing original ID) cannot be applied"},{"ancestorTitles":[],"duration":1830,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11] unsafe whole-document response (duplicate original ID) cannot be applied","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793711004768,"status":"passed","title":"[PRES-C11] unsafe whole-document response (duplicate original ID) cannot be applied"},{"ancestorTitles":[],"duration":6839,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound document generation saves the pending draft, reviews server Original, and accepted AI remains undoable","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"startAt":1793711006598,"status":"passed","title":"bound document generation saves the pending draft, reviews server Original, and accepted AI remains undoable"},{"ancestorTitles":[],"duration":3547,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a newer draft is flushed before stale proposal acceptance fails without rebasing or changing content","invocations":1,"location":null,"numPassingAsserts":13,"retryReasons":[],"startAt":1793711013437,"status":"passed","title":"a newer draft is flushed before stale proposal acceptance fails without rebasing or changing content"},{"ancestorTitles":[],"duration":4659,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"late document proposals cannot return after tab unmount or a source undo","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793711016984,"status":"passed","title":"late document proposals cannot return after tab unmount or a source undo"},{"ancestorTitles":[],"duration":4166,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound section:skills assistant sends explicit scope and edited wording to server acceptance","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793711021644,"status":"passed","title":"bound section:skills assistant sends explicit scope and edited wording to server acceptance"},{"ancestorTitles":[],"duration":4534,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound custom:sample assistant sends explicit scope and edited wording to server acceptance","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793711025810,"status":"passed","title":"bound custom:sample assistant sends explicit scope and edited wording to server acceptance"},{"ancestorTitles":[],"duration":4281,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound entry:experience:job-1 assistant sends explicit scope and edited wording to server acceptance","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793711030345,"status":"passed","title":"bound entry:experience:job-1 assistant sends explicit scope and edited wording to server acceptance"},{"ancestorTitles":[],"duration":3107,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"user edits made during server acceptance are retained instead of overwritten by its late saved response","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793711034626,"status":"passed","title":"user edits made during server acceptance are retained instead of overwritten by its late saved response"}],"endTime":1793711037750,"message":" ● Strict Mode groups a typing burst into one undo step and preserves redo through autosave\n\n expect(element).toHaveValue()\n\n Expected the element to have value:\n\n Received:\n D\n\n 102 | await screen.findByText('Saved');\n 103 | fireEvent.click(screen.getByRole('button', { name: 'Undo' }));\n > 104 | expect(headline).toHaveValue('');\n | ^\n 105 | expect(screen.getByRole('button', { name: 'Undo' })).toBeDisabled();\n 106 | fireEvent.click(screen.getByRole('button', { name: 'Redo' }));\n 107 | expect(headline).toHaveValue('Developer');\n\n at Object.toHaveValue (src/cv-builder-deep-link.test.tsx:104:20)\n","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\cv-builder-deep-link.test.tsx","startTime":1793710896501,"status":"failed","summary":""},{"assertionResults":[{"ancestorTitles":[],"duration":12,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"English and Bokmål expose the same UI message keys","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"startAt":1793711038368,"status":"passed","title":"English and Bokmål expose the same UI message keys"},{"ancestorTitles":[],"duration":7,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Bokmål preserves every English substitution variable","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"startAt":1793711038380,"status":"passed","title":"Bokmål preserves every English substitution variable"},{"ancestorTitles":[],"duration":4,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"supported UI catalogues contain no blank messages","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"startAt":1793711038387,"status":"passed","title":"supported UI catalogues contain no blank messages"}],"endTime":1793711038392,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\translation-catalogue.test.ts","startTime":1793711037822,"status":"passed","summary":""}],"wasInterrupted":false} diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-career-tests.log b/docs/ui-modernisation/evidence/career/frontend/a3-career-tests.log new file mode 100644 index 00000000..32460eca --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-career-tests.log @@ -0,0 +1,300 @@ + +> job-tracker-ui@0.1.0 test +> jest --runInBand --watch=false --runTestsByPath src/career-workspace-page.test.tsx src/career-editor.test.tsx src/career-import-review.test.tsx src/cv-builder-page.test.tsx src/cv-builder-deep-link.test.tsx src/cv-document-controls.test.tsx src/cover-letter-document.test.tsx src/translation-catalogue.test.ts --json --outputFile=../docs/ui-modernisation/a3-career-tests.json + +FAIL src/cv-builder-deep-link.test.tsx (141.249 s) + ● Console + + console.error + An update to CvBuilderEditor inside a test was not wrapped in act(...). + + When testing, code that causes React state updates should be wrapped into act(...): + + act(() => { + /* fire events that update state */ + }); + /* assert on the output */ + + This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act + + 657 | + 658 | + > 659 | setMobilePane("edit")} sx={{ display: compactEditor && mobilePane !== "edit" ? "none" : "block", top: "var(--cv-pane-top)", minWidth: 0, "@media (min-width:1001px)": { position: "sticky", maxHeight: "calc(100dvh - var(--cv-pane-top) - 12px)", overflowY: "auto" }, scrollbarWidth: "thin" }}> + | ^ + 660 | + 661 | {t("cvEditorEditingRegion")} + 662 | + + at node_modules/react-dom/cjs/react-dom-client.development.js:18758:19 + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at warnIfUpdatesNotWrappedWithActDEV (node_modules/react-dom/cjs/react-dom-client.development.js:18757:9) + at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:16409:11) + at dispatchSetStateInternal (node_modules/react-dom/cjs/react-dom-client.development.js:9170:13) + at dispatchSetState (node_modules/react-dom/cjs/react-dom-client.development.js:9127:7) + at setMobilePane (src/views/CvBuilderEditor.tsx:659:139) + at executeDispatch (node_modules/react-dom/cjs/react-dom-client.development.js:19116:9) + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at processDispatchQueue (node_modules/react-dom/cjs/react-dom-client.development.js:19143:19) + at node_modules/react-dom/cjs/react-dom-client.development.js:19767:9 + at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom-client.development.js:3255:40) + at dispatchEventForPluginEventSystem (node_modules/react-dom/cjs/react-dom-client.development.js:19320:7) + at dispatchEvent (node_modules/react-dom/cjs/react-dom-client.development.js:23585:11) + at dispatchDiscreteEvent (node_modules/react-dom/cjs/react-dom-client.development.js:23553:11) + at HTMLDivElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) + at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) + at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) + at HTMLButtonElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:217:9) + at Object.exports.fireFocusEventWithTargetAdjustment (node_modules/jsdom/lib/jsdom/living/helpers/focusing.js:103:10) + at HTMLButtonElementImpl.focus (node_modules/jsdom/lib/jsdom/living/nodes/HTMLOrSVGElement-impl.js:72:14) + at HTMLButtonElement.focus (node_modules/jsdom/lib/jsdom/living/generated/HTMLElement.js:128:34) + at Object.focus (src/cv-builder-deep-link.test.tsx:354:8) + + console.error + An update to ContentTab inside a test was not wrapped in act(...). + + When testing, code that causes React state updates should be wrapped into act(...): + + act(() => { + /* fire events that update state */ + }); + /* assert on the output */ + + This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act + + 1178 | expanded={expandedSections.has(row.key)} + 1179 | onToggle={() => toggleSection(row.key)} + > 1180 | onSectionFocus={() => setActiveSection(row.key)} + | ^ + 1181 | toggleRef={(button) => { sectionButtons.current[row.key] = button; }} + 1182 | onMove={(d) => reorderSections(i, i + d, true)} + 1183 | onPatch={(p) => patchSection(row.key, p)} + + at node_modules/react-dom/cjs/react-dom-client.development.js:18758:19 + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at warnIfUpdatesNotWrappedWithActDEV (node_modules/react-dom/cjs/react-dom-client.development.js:18757:9) + at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:16409:11) + at dispatchSetStateInternal (node_modules/react-dom/cjs/react-dom-client.development.js:9170:13) + at dispatchSetState (node_modules/react-dom/cjs/react-dom-client.development.js:9127:7) + at setActiveSection (src/views/CvBuilderEditor.tsx:1180:37) + at executeDispatch (node_modules/react-dom/cjs/react-dom-client.development.js:19116:9) + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at processDispatchQueue (node_modules/react-dom/cjs/react-dom-client.development.js:19143:19) + at node_modules/react-dom/cjs/react-dom-client.development.js:19767:9 + at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom-client.development.js:3255:40) + at dispatchEventForPluginEventSystem (node_modules/react-dom/cjs/react-dom-client.development.js:19320:7) + at dispatchEvent (node_modules/react-dom/cjs/react-dom-client.development.js:23585:11) + at dispatchDiscreteEvent (node_modules/react-dom/cjs/react-dom-client.development.js:23553:11) + at HTMLDivElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) + at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) + at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) + at HTMLButtonElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:217:9) + at Object.exports.fireFocusEventWithTargetAdjustment (node_modules/jsdom/lib/jsdom/living/helpers/focusing.js:103:10) + at HTMLButtonElementImpl.focus (node_modules/jsdom/lib/jsdom/living/nodes/HTMLOrSVGElement-impl.js:72:14) + at HTMLButtonElement.focus (node_modules/jsdom/lib/jsdom/living/generated/HTMLElement.js:128:34) + at Object.focus (src/cv-builder-deep-link.test.tsx:354:8) + + console.error + An update to ForwardRef(ButtonBase) inside a test was not wrapped in act(...). + + When testing, code that causes React state updates should be wrapped into act(...): + + act(() => { + /* fire events that update state */ + }); + /* assert on the output */ + + This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act + + 352 | await openContentTab(); + 353 | const move = screen.getByRole('button', { name: 'Move Experience section down' }); + > 354 | move.focus(); + | ^ + 355 | fireEvent.click(move); + 356 | expect(move).toHaveFocus(); + 357 | fireEvent.mouseDown(screen.getByRole('combobox', { name: 'Go to section' })); + + at node_modules/react-dom/cjs/react-dom-client.development.js:18758:19 + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at warnIfUpdatesNotWrappedWithActDEV (node_modules/react-dom/cjs/react-dom-client.development.js:18757:9) + at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:16409:11) + at dispatchSetStateInternal (node_modules/react-dom/cjs/react-dom-client.development.js:9170:13) + at dispatchSetState (node_modules/react-dom/cjs/react-dom-client.development.js:9127:7) + at node_modules/@mui/material/ButtonBase/ButtonBase.js:174:7 + at node_modules/@mui/utils/useEventCallback/useEventCallback.js:24:19 + at executeDispatch (node_modules/react-dom/cjs/react-dom-client.development.js:19116:9) + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at processDispatchQueue (node_modules/react-dom/cjs/react-dom-client.development.js:19166:19) + at node_modules/react-dom/cjs/react-dom-client.development.js:19767:9 + at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom-client.development.js:3255:40) + at dispatchEventForPluginEventSystem (node_modules/react-dom/cjs/react-dom-client.development.js:19320:7) + at dispatchEvent (node_modules/react-dom/cjs/react-dom-client.development.js:23585:11) + at dispatchDiscreteEvent (node_modules/react-dom/cjs/react-dom-client.development.js:23553:11) + at HTMLDivElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) + at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) + at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) + at HTMLButtonElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:233:9) + at Object.exports.fireFocusEventWithTargetAdjustment (node_modules/jsdom/lib/jsdom/living/helpers/focusing.js:103:10) + at HTMLButtonElementImpl.focus (node_modules/jsdom/lib/jsdom/living/nodes/HTMLOrSVGElement-impl.js:72:14) + at HTMLButtonElement.focus (node_modules/jsdom/lib/jsdom/living/generated/HTMLElement.js:128:34) + at Object.focus (src/cv-builder-deep-link.test.tsx:354:8) + + console.error + An update to ForwardRef(ButtonBase) inside a test was not wrapped in act(...). + + When testing, code that causes React state updates should be wrapped into act(...): + + act(() => { + /* fire events that update state */ + }); + /* assert on the output */ + + This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act + + 448 | renderAt(3); + 449 | const retry = await screen.findByRole('button', { name: 'Retry' }); + > 450 | retry.focus(); fireEvent.click(retry); + | ^ + 451 | await screen.findByDisplayValue('Backend CV'); + 452 | await waitFor(() => expect(screen.getByRole('region', { name: 'CV editing controls' })).toHaveFocus()); + 453 | expect(attempt).toBe(2); + + at node_modules/react-dom/cjs/react-dom-client.development.js:18758:19 + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at warnIfUpdatesNotWrappedWithActDEV (node_modules/react-dom/cjs/react-dom-client.development.js:18757:9) + at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:16409:11) + at dispatchSetStateInternal (node_modules/react-dom/cjs/react-dom-client.development.js:9170:13) + at dispatchSetState (node_modules/react-dom/cjs/react-dom-client.development.js:9127:7) + at node_modules/@mui/material/ButtonBase/ButtonBase.js:174:7 + at node_modules/@mui/utils/useEventCallback/useEventCallback.js:24:19 + at executeDispatch (node_modules/react-dom/cjs/react-dom-client.development.js:19116:9) + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at processDispatchQueue (node_modules/react-dom/cjs/react-dom-client.development.js:19166:19) + at node_modules/react-dom/cjs/react-dom-client.development.js:19767:9 + at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom-client.development.js:3255:40) + at dispatchEventForPluginEventSystem (node_modules/react-dom/cjs/react-dom-client.development.js:19320:7) + at dispatchEvent (node_modules/react-dom/cjs/react-dom-client.development.js:23585:11) + at dispatchDiscreteEvent (node_modules/react-dom/cjs/react-dom-client.development.js:23553:11) + at HTMLDivElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) + at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) + at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) + at HTMLButtonElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:233:9) + at Object.exports.fireFocusEventWithTargetAdjustment (node_modules/jsdom/lib/jsdom/living/helpers/focusing.js:103:10) + at HTMLButtonElementImpl.focus (node_modules/jsdom/lib/jsdom/living/nodes/HTMLOrSVGElement-impl.js:72:14) + at HTMLButtonElement.focus (node_modules/jsdom/lib/jsdom/living/generated/HTMLElement.js:128:34) + at Object.focus (src/cv-builder-deep-link.test.tsx:450:9) + + console.error + An update to ContentTab inside a test was not wrapped in act(...). + + When testing, code that causes React state updates should be wrapped into act(...): + + act(() => { + /* fire events that update state */ + }); + /* assert on the output */ + + This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act + + 1178 | expanded={expandedSections.has(row.key)} + 1179 | onToggle={() => toggleSection(row.key)} + > 1180 | onSectionFocus={() => setActiveSection(row.key)} + | ^ + 1181 | toggleRef={(button) => { sectionButtons.current[row.key] = button; }} + 1182 | onMove={(d) => reorderSections(i, i + d, true)} + 1183 | onPatch={(p) => patchSection(row.key, p)} + + at node_modules/react-dom/cjs/react-dom-client.development.js:18758:19 + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at warnIfUpdatesNotWrappedWithActDEV (node_modules/react-dom/cjs/react-dom-client.development.js:18757:9) + at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:16409:11) + at dispatchSetStateInternal (node_modules/react-dom/cjs/react-dom-client.development.js:9170:13) + at dispatchSetState (node_modules/react-dom/cjs/react-dom-client.development.js:9127:7) + at setActiveSection (src/views/CvBuilderEditor.tsx:1180:37) + at executeDispatch (node_modules/react-dom/cjs/react-dom-client.development.js:19116:9) + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at processDispatchQueue (node_modules/react-dom/cjs/react-dom-client.development.js:19143:19) + at node_modules/react-dom/cjs/react-dom-client.development.js:19767:9 + at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom-client.development.js:3255:40) + at dispatchEventForPluginEventSystem (node_modules/react-dom/cjs/react-dom-client.development.js:19320:7) + at dispatchEvent (node_modules/react-dom/cjs/react-dom-client.development.js:23585:11) + at dispatchDiscreteEvent (node_modules/react-dom/cjs/react-dom-client.development.js:23553:11) + at HTMLDivElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) + at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) + at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) + at HTMLButtonElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:217:9) + at Object.exports.fireFocusEventWithTargetAdjustment (node_modules/jsdom/lib/jsdom/living/helpers/focusing.js:103:10) + at HTMLButtonElementImpl.focus (node_modules/jsdom/lib/jsdom/living/nodes/HTMLOrSVGElement-impl.js:72:14) + at HTMLButtonElement.focus (node_modules/jsdom/lib/jsdom/living/generated/HTMLElement.js:128:34) + at Object.focus (src/cv-builder-deep-link.test.tsx:757:15) + + console.error + An update to ForwardRef(ButtonBase) inside a test was not wrapped in act(...). + + When testing, code that causes React state updates should be wrapped into act(...): + + act(() => { + /* fire events that update state */ + }); + /* assert on the output */ + + This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act + + 755 | + 756 | const deleteEntry = screen.getByRole('button', { name: 'Delete custom entry 1' }); + > 757 | deleteEntry.focus(); + | ^ + 758 | fireEvent.click(deleteEntry); + 759 | let dialog = await screen.findByRole('dialog', { name: 'Delete custom entry' }); + 760 | fireEvent.click(within(dialog).getByRole('button', { name: 'Cancel' })); + + at node_modules/react-dom/cjs/react-dom-client.development.js:18758:19 + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at warnIfUpdatesNotWrappedWithActDEV (node_modules/react-dom/cjs/react-dom-client.development.js:18757:9) + at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:16409:11) + at dispatchSetStateInternal (node_modules/react-dom/cjs/react-dom-client.development.js:9170:13) + at dispatchSetState (node_modules/react-dom/cjs/react-dom-client.development.js:9127:7) + at node_modules/@mui/material/ButtonBase/ButtonBase.js:174:7 + at node_modules/@mui/utils/useEventCallback/useEventCallback.js:24:19 + at executeDispatch (node_modules/react-dom/cjs/react-dom-client.development.js:19116:9) + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at processDispatchQueue (node_modules/react-dom/cjs/react-dom-client.development.js:19166:19) + at node_modules/react-dom/cjs/react-dom-client.development.js:19767:9 + at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom-client.development.js:3255:40) + at dispatchEventForPluginEventSystem (node_modules/react-dom/cjs/react-dom-client.development.js:19320:7) + at dispatchEvent (node_modules/react-dom/cjs/react-dom-client.development.js:23585:11) + at dispatchDiscreteEvent (node_modules/react-dom/cjs/react-dom-client.development.js:23553:11) + at HTMLDivElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) + at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) + at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) + at HTMLButtonElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:233:9) + at Object.exports.fireFocusEventWithTargetAdjustment (node_modules/jsdom/lib/jsdom/living/helpers/focusing.js:103:10) + at HTMLButtonElementImpl.focus (node_modules/jsdom/lib/jsdom/living/nodes/HTMLOrSVGElement-impl.js:72:14) + at HTMLButtonElement.focus (node_modules/jsdom/lib/jsdom/living/generated/HTMLElement.js:128:34) + at Object.focus (src/cv-builder-deep-link.test.tsx:757:15) + + ● Strict Mode groups a typing burst into one undo step and preserves redo through autosave + + expect(element).toHaveValue() + + Expected the element to have value: + + Received: + D + + 102 | await screen.findByText('Saved'); + 103 | fireEvent.click(screen.getByRole('button', { name: 'Undo' })); + > 104 | expect(headline).toHaveValue(''); + | ^ + 105 | expect(screen.getByRole('button', { name: 'Undo' })).toBeDisabled(); + 106 | fireEvent.click(screen.getByRole('button', { name: 'Redo' })); + 107 | expect(headline).toHaveValue('Developer'); + + at Object.toHaveValue (src/cv-builder-deep-link.test.tsx:104:20) + + +Test Suites: 1 failed, 7 passed, 8 total +Tests: 1 failed, 152 passed, 153 total +Snapshots: 0 total +Time: 333.607 s +Ran all test suites within paths "src/career-workspace-page.test.tsx", "src/career-editor.test.tsx", "src/career-import-review.test.tsx", "src/cv-builder-page.test.tsx", "src/cv-builder-deep-link.test.tsx", "src/cv-document-controls.test.tsx", "src/cover-letter-document.test.tsx", "src/translation-catalogue.test.ts". +Test results written to: ..\docs\ui-modernisation\a3-career-tests.json diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-cv-library-tests.json b/docs/ui-modernisation/evidence/career/frontend/a3-cv-library-tests.json new file mode 100644 index 00000000..67d96b30 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-cv-library-tests.json @@ -0,0 +1 @@ +{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":3,"numPassedTests":28,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":3,"numTotalTests":28,"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":1793711280466,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":[],"duration":292,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"en library identifies templates by their human label and retains an unknown legacy identifier","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793711286939,"status":"passed","title":"en library identifies templates by their human label and retains an unknown legacy identifier"},{"ancestorTitles":[],"duration":100,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"nb library identifies templates by their human label and retains an unknown legacy identifier","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793711287232,"status":"passed","title":"nb library identifies templates by their human label and retains an unknown legacy identifier"},{"ancestorTitles":[],"duration":469,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"blank creation explicitly excludes all profile sections and contact even after template selection","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"startAt":1793711287332,"status":"passed","title":"blank creation explicitly excludes all profile sections and contact even after template selection"},{"ancestorTitles":[],"duration":573,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"profile creation includes only deliberately selected available sections and contact","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793711287801,"status":"passed","title":"profile creation includes only deliberately selected available sections and contact"},{"ancestorTitles":[],"duration":486,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"unavailable profile sections block profile creation and allow an explicit blank fallback","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793711288374,"status":"passed","title":"unavailable profile sections block profile creation and allow an explicit blank fallback"},{"ancestorTitles":[],"duration":2,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"export validation decodes structured and blob errors without relabelling unknown failures","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793711288861,"status":"passed","title":"export validation decodes structured and blob errors without relabelling unknown failures"},{"ancestorTitles":[],"duration":80,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"the CV library has a section heading and announces its held initial read without showing an empty result","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793711288863,"status":"passed","title":"the CV library has a section heading and announces its held initial read without showing an empty result"},{"ancestorTitles":[],"duration":159,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a failed CV list read has an explicit retry that clears the stale failure after recovery","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793711288943,"status":"passed","title":"a failed CV list read has an explicit retry that clears the stale failure after recovery"},{"ancestorTitles":[],"duration":379,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a live language change retains an open CV name and template draft without refetching library data","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793711289102,"status":"passed","title":"a live language change retains an open CV name and template draft without refetching library data"},{"ancestorTitles":[],"duration":638,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"held CV creation locks the draft and gallery, then keeps a failed draft for an explicit retry","invocations":1,"location":null,"numPassingAsserts":17,"retryReasons":[],"startAt":1793711289483,"status":"passed","title":"held CV creation locks the draft and gallery, then keeps a failed draft for an explicit retry"},{"ancestorTitles":[],"duration":264,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a locked CV template remains identifiable and cannot change the creation request","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793711290121,"status":"passed","title":"a locked CV template remains identifiable and cannot change the creation request"},{"ancestorTitles":[],"duration":326,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a held duplicate blocks another action for the same CV and shows the persisted refreshed copy","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793711290385,"status":"passed","title":"a held duplicate blocks another action for the same CV and shows the persisted refreshed copy"},{"ancestorTitles":[],"duration":530,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"rename reads the current revision and preserves its settings when saving the new name","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793711290712,"status":"passed","title":"rename reads the current revision and preserves its settings when saving the new name"},{"ancestorTitles":[],"duration":501,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a rename conflict keeps the original library entry and never retries the write automatically","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793711291242,"status":"passed","title":"a rename conflict keeps the original library entry and never retries the write automatically"},{"ancestorTitles":[],"duration":544,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"cancelling deletion returns focus to the surviving CV action control without removing the CV","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793711291743,"status":"passed","title":"cancelling deletion returns focus to the surviving CV action control without removing the CV"},{"ancestorTitles":[],"duration":904,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a failed creation keeps its draft and translates its failure after closing and reopening in another language","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793711292288,"status":"passed","title":"a failed creation keeps its draft and translates its failure after closing and reopening in another language"},{"ancestorTitles":[],"duration":411,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"generic PDF failure follows the current language both after failure and when a held request fails","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"startAt":1793711293192,"status":"passed","title":"generic PDF failure follows the current language both after failure and when a held request fails"},{"ancestorTitles":[],"duration":573,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a held deletion preserves focus moved to another surviving control before the response arrives","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793711293603,"status":"passed","title":"a held deletion preserves focus moved to another surviving control before the response arrives"},{"ancestorTitles":[],"duration":218,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"PDF status 503 shows an actionable message without retrying","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793711294176,"status":"passed","title":"PDF status 503 shows an actionable message without retrying"},{"ancestorTitles":[],"duration":184,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"PDF status 504 shows an actionable message without retrying","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793711294394,"status":"passed","title":"PDF status 504 shows an actionable message without retrying"},{"ancestorTitles":[],"duration":59,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"lists existing CVs from the variants API","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793711294578,"status":"passed","title":"lists existing CVs from the variants API"},{"ancestorTitles":[],"duration":300,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"shows the empty state and creates a CV then navigates to the editor","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793711294637,"status":"passed","title":"shows the empty state and creates a CV then navigates to the editor"},{"ancestorTitles":[],"duration":163,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CV dashboard and create flow render in Bokmål","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793711294938,"status":"passed","title":"CV dashboard and create flow render in Bokmål"},{"ancestorTitles":[],"duration":745,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CV deletion requires confirmation and supports cancellation","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793711295101,"status":"passed","title":"CV deletion requires confirmation and supports cancellation"}],"endTime":1793711295848,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\cv-builder-page.test.tsx","startTime":1793711282102,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":[],"duration":147,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P7-11 templates] known metadata follows locale while custom metadata and selection objects stay verbatim","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793711297437,"status":"passed","title":"[P7-11 templates] known metadata follows locale while custom metadata and selection objects stay verbatim"}],"endTime":1793711297585,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\cv-template-gallery.test.tsx","startTime":1793711295872,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":[],"duration":12,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"English and Bokmål expose the same UI message keys","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"startAt":1793711298078,"status":"passed","title":"English and Bokmål expose the same UI message keys"},{"ancestorTitles":[],"duration":7,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Bokmål preserves every English substitution variable","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"startAt":1793711298091,"status":"passed","title":"Bokmål preserves every English substitution variable"},{"ancestorTitles":[],"duration":3,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"supported UI catalogues contain no blank messages","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"startAt":1793711298098,"status":"passed","title":"supported UI catalogues contain no blank messages"}],"endTime":1793711298102,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\translation-catalogue.test.ts","startTime":1793711297602,"status":"passed","summary":""}],"wasInterrupted":false} diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-cv-library-tests.log b/docs/ui-modernisation/evidence/career/frontend/a3-cv-library-tests.log new file mode 100644 index 00000000..0585ecc7 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-cv-library-tests.log @@ -0,0 +1,11 @@ + +> job-tracker-ui@0.1.0 test +> jest --runInBand --watch=false --runTestsByPath src/cv-builder-page.test.tsx src/cv-template-gallery.test.tsx src/translation-catalogue.test.ts --json --outputFile=../docs/ui-modernisation/a3-cv-library-tests.json + + +Test Suites: 3 passed, 3 total +Tests: 28 passed, 28 total +Snapshots: 0 total +Time: 17.642 s +Ran all test suites within paths "src/cv-builder-page.test.tsx", "src/cv-template-gallery.test.tsx", "src/translation-catalogue.test.ts". +Test results written to: ..\docs\ui-modernisation\a3-cv-library-tests.json diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-cv-studio-tests.json b/docs/ui-modernisation/evidence/career/frontend/a3-cv-studio-tests.json new file mode 100644 index 00000000..d7a4e827 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-cv-studio-tests.json @@ -0,0 +1 @@ +{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":1,"numPassedTests":59,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":1,"numTotalTests":59,"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":1793711227422,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":[],"duration":3065,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Strict Mode groups a typing burst into one undo step and preserves redo through autosave","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793711233559,"status":"passed","title":"Strict Mode groups a typing burst into one undo step and preserves redo through autosave"},{"ancestorTitles":[],"duration":1581,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a pause between typing bursts leaves a separate undo step","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793711236625,"status":"passed","title":"a pause between typing bursts leaves a separate undo step"},{"ancestorTitles":[],"duration":547,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"tablet width keeps both editing and preview available in the stacked document flow","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793711238206,"status":"passed","title":"tablet width keeps both editing and preview available in the stacked document flow"},{"ancestorTitles":[],"duration":1713,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"document shortcuts undo and redo renaming, preserve native input undo and discard branched redo","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793711238753,"status":"passed","title":"document shortcuts undo and redo renaming, preserve native input undo and discard branched redo"},{"ancestorTitles":[],"duration":984,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a revision conflict disables document history without silently writing an undo","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793711240466,"status":"passed","title":"a revision conflict disables document history without silently writing an undo"},{"ancestorTitles":[],"duration":1387,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"switching documents hides the previous draft while loading and starts fresh history","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793711241450,"status":"passed","title":"switching documents hides the previous draft while loading and starts fresh history"},{"ancestorTitles":[],"duration":833,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"explicit blank editing excludes master content and includes a profile section only after an Add action","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793711242837,"status":"passed","title":"explicit blank editing excludes master content and includes a profile section only after an Add action"},{"ancestorTitles":[],"duration":666,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a blank CV can deliberately add an additional Career Profile section","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793711243670,"status":"passed","title":"a blank CV can deliberately add an additional Career Profile section"},{"ancestorTitles":[],"duration":1969,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a historical restore response from the previous document cannot change the newly opened CV","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793711244337,"status":"passed","title":"a historical restore response from the previous document cannot change the newly opened CV"},{"ancestorTitles":[],"duration":293,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"content sections follow the editing-region heading without mutating CV settings","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793711246306,"status":"passed","title":"content sections follow the editing-region heading without mutating CV settings"},{"ancestorTitles":[],"duration":750,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"settings history explains current Career Profile resolution without writing data","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793711246599,"status":"passed","title":"settings history explains current Career Profile resolution without writing data"},{"ancestorTitles":[],"duration":1683,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"PDF export locks immediately, rejects a newer unsaved draft, and keeps that draft recoverable","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793711247349,"status":"passed","title":"PDF export locks immediately, rejects a newer unsaved draft, and keeps that draft recoverable"},{"ancestorTitles":[],"duration":1469,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"edits during a held PDF response prevent an older document download","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793711249032,"status":"passed","title":"edits during a held PDF response prevent an older document download"},{"ancestorTitles":[],"duration":967,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"moving a section to the first position announces its actual order and focuses its row","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793711250501,"status":"passed","title":"moving a section to the first position announces its actual order and focuses its row"},{"ancestorTitles":[],"duration":5764,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"section navigation opens and focuses omitted/custom sections without changing their data","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793711251469,"status":"passed","title":"section navigation opens and focuses omitted/custom sections without changing their data"},{"ancestorTitles":[],"duration":1944,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"keyboard move controls retain focus and persist the same section order shown by navigation","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793711257233,"status":"passed","title":"keyboard move controls retain focus and persist the same section order shown by navigation"},{"ancestorTitles":[],"duration":2002,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"secondary duplicate action saves the current draft before creating the copy","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793711259177,"status":"passed","title":"secondary duplicate action saves the current draft before creating the copy"},{"ancestorTitles":[],"duration":1535,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"pane navigation focuses the existing preview without changing the pending draft","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793711261179,"status":"passed","title":"pane navigation focuses the existing preview without changing the pending draft"},{"ancestorTitles":[],"duration":631,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"deep link loads the exact variant named in the route","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793711262714,"status":"passed","title":"deep link loads the exact variant named in the route"},{"ancestorTitles":[],"duration":28,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a variant that does not exist shows a safe error instead of an empty editor","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793711263345,"status":"passed","title":"a variant that does not exist shows a safe error instead of an empty editor"},{"ancestorTitles":[],"duration":58,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"another user's variant is refused by the server and never rendered","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793711263374,"status":"passed","title":"another user's variant is refused by the server and never rendered"},{"ancestorTitles":[],"duration":62,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a denied CV read has localized permission context without a write or retry","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793711263432,"status":"passed","title":"a denied CV read has localized permission context without a write or retry"},{"ancestorTitles":[],"duration":739,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a temporary CV opening failure retries reads and restores focus to the editor without saving","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793711263494,"status":"passed","title":"a temporary CV opening failure retries reads and restores focus to the editor without saving"},{"ancestorTitles":[],"duration":1246,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Bokmål history localizes known sources while preserving unknown metadata and versions","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793711264233,"status":"passed","title":"Bokmål history localizes known sources while preserving unknown metadata and versions"},{"ancestorTitles":[],"duration":952,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"invalid names are explained and are not silently autosaved","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793711265479,"status":"passed","title":"invalid names are explained and are not silently autosaved"},{"ancestorTitles":[],"duration":2201,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"failed autosave is visible and can be retried with the latest data","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793711266431,"status":"passed","title":"failed autosave is visible and can be retried with the latest data"},{"ancestorTitles":[],"duration":2433,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"session undo and redo restore content edits before autosave","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793711268633,"status":"passed","title":"session undo and redo restore content edits before autosave"},{"ancestorTitles":[],"duration":2108,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"queued saves use acknowledged server versions without replacing newer local editing state","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793711271066,"status":"passed","title":"queued saves use acknowledged server versions without replacing newer local editing state"},{"ancestorTitles":[],"duration":4109,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"revision conflict retains the draft and blocks later autosaves until explicit reload","invocations":1,"location":null,"numPassingAsserts":10,"retryReasons":[],"startAt":1793711273174,"status":"passed","title":"revision conflict retains the draft and blocks later autosaves until explicit reload"},{"ancestorTitles":[],"duration":3007,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"edits made while a confirmed reload is in flight remain recoverable","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793711277283,"status":"passed","title":"edits made while a confirmed reload is in flight remain recoverable"},{"ancestorTitles":[],"duration":3154,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"restoring history uses the current version and never replaces edits made during the request","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793711280291,"status":"passed","title":"restoring history uses the current version and never replaces edits made during the request"},{"ancestorTitles":[],"duration":2191,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Content is the primary studio panel and all advanced tabs retain their controls","invocations":1,"location":null,"numPassingAsserts":14,"retryReasons":[],"startAt":1793711283445,"status":"passed","title":"Content is the primary studio panel and all advanced tabs retain their controls"},{"ancestorTitles":[],"duration":3092,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"choosing a template restores its own structure instead of inheriting the previous template layout","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793711285636,"status":"passed","title":"choosing a template restores its own structure instead of inheriting the previous template layout"},{"ancestorTitles":[],"duration":2127,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"editor sections, design controls and document settings render in Bokmål","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793711288728,"status":"passed","title":"editor sections, design controls and document settings render in Bokmål"},{"ancestorTitles":[],"duration":2473,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"internal navigation warns and can be cancelled before discarding a pending edit","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793711290855,"status":"passed","title":"internal navigation warns and can be cancelled before discarding a pending edit"},{"ancestorTitles":[],"duration":12159,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"custom entries can be added, edited, reordered and deleted with confirmation","invocations":1,"location":null,"numPassingAsserts":16,"retryReasons":[],"startAt":1793711293328,"status":"passed","title":"custom entries can be added, edited, reordered and deleted with confirmation"},{"ancestorTitles":[],"duration":3975,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C01 C07] source-backed entry edits identify their scope and save only this CV","invocations":1,"location":null,"numPassingAsserts":8,"retryReasons":[],"startAt":1793711305487,"status":"passed","title":"[P5-10 PRES-C01 C07] source-backed entry edits identify their scope and save only this CV"},{"ancestorTitles":[],"duration":5165,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C07 C10] resetting one entry field preserves omission, sibling override and order and supports undo","invocations":1,"location":null,"numPassingAsserts":12,"retryReasons":[],"startAt":1793711309462,"status":"passed","title":"[P5-10 PRES-C07 C10] resetting one entry field preserves omission, sibling override and order and supports undo"},{"ancestorTitles":[],"duration":3677,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C07 C10 E08] omitted entries remain editable and retain their draft after a failed save","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793711314627,"status":"passed","title":"[P5-10 PRES-C07 C10 E08] omitted entries remain editable and retain their draft after a failed save"},{"ancestorTitles":[],"duration":2387,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C01 C07] section content reset inherits source without changing omission or presentation","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793711318304,"status":"passed","title":"[P5-10 PRES-C01 C07] section content reset inherits source without changing omission or presentation"},{"ancestorTitles":[],"duration":6666,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"profile-backed sections expand, reorder, hide and persist variant-only overrides","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793711320691,"status":"passed","title":"profile-backed sections expand, reorder, hide and persist variant-only overrides"},{"ancestorTitles":[],"duration":1991,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"focusing a preview retry control keeps its pointer target stationary","invocations":1,"location":null,"numPassingAsserts":2,"retryReasons":[],"startAt":1793711327357,"status":"passed","title":"focusing a preview retry control keeps its pointer target stationary"},{"ancestorTitles":[],"duration":1952,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"preview failure is visible and retryable without leaving the editor","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793711329348,"status":"passed","title":"preview failure is visible and retryable without leaving the editor"},{"ancestorTitles":[],"duration":860,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 E08] automatic fit attaches when the asynchronously loaded preview pane appears","invocations":1,"location":null,"numPassingAsserts":1,"retryReasons":[],"startAt":1793711331300,"status":"passed","title":"[P5-11 PRES-C06 E08] automatic fit attaches when the asynchronously loaded preview pane appears"},{"ancestorTitles":[],"duration":1107,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 C12] page count is announced only after the renderer has settled","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793711332160,"status":"passed","title":"[P5-11 PRES-C06 C12] page count is announced only after the renderer has settled"},{"ancestorTitles":[],"duration":3692,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 E09] overlapping preview successes and failures cannot replace the newest document","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"startAt":1793711333267,"status":"passed","title":"[P5-11 PRES-C06 E09] overlapping preview successes and failures cannot replace the newest document"},{"ancestorTitles":[],"duration":1174,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 C10 E08] returning from preview focuses the existing editor without changing the pending draft","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793711336959,"status":"passed","title":"[P5-11 PRES-C06 C10 E08] returning from preview focuses the existing editor without changing the pending draft"},{"ancestorTitles":[],"duration":2334,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11 PRES-C07] whole-document AI Apply changes only an explicitly accepted CV override","invocations":1,"location":null,"numPassingAsserts":12,"retryReasons":[],"startAt":1793711338133,"status":"passed","title":"[PRES-C11 PRES-C07] whole-document AI Apply changes only an explicitly accepted CV override"},{"ancestorTitles":[],"duration":2052,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11 PRES-C07] whole-document AI Reject changes only an explicitly accepted CV override","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"startAt":1793711340467,"status":"passed","title":"[PRES-C11 PRES-C07] whole-document AI Reject changes only an explicitly accepted CV override"},{"ancestorTitles":[],"duration":1978,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11] unsafe whole-document response (invalid JSON) cannot be applied","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793711342519,"status":"passed","title":"[PRES-C11] unsafe whole-document response (invalid JSON) cannot be applied"},{"ancestorTitles":[],"duration":2082,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11] unsafe whole-document response (missing original ID) cannot be applied","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793711344497,"status":"passed","title":"[PRES-C11] unsafe whole-document response (missing original ID) cannot be applied"},{"ancestorTitles":[],"duration":2340,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11] unsafe whole-document response (duplicate original ID) cannot be applied","invocations":1,"location":null,"numPassingAsserts":7,"retryReasons":[],"startAt":1793711346579,"status":"passed","title":"[PRES-C11] unsafe whole-document response (duplicate original ID) cannot be applied"},{"ancestorTitles":[],"duration":7007,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound document generation saves the pending draft, reviews server Original, and accepted AI remains undoable","invocations":1,"location":null,"numPassingAsserts":11,"retryReasons":[],"startAt":1793711348919,"status":"passed","title":"bound document generation saves the pending draft, reviews server Original, and accepted AI remains undoable"},{"ancestorTitles":[],"duration":3942,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a newer draft is flushed before stale proposal acceptance fails without rebasing or changing content","invocations":1,"location":null,"numPassingAsserts":13,"retryReasons":[],"startAt":1793711355926,"status":"passed","title":"a newer draft is flushed before stale proposal acceptance fails without rebasing or changing content"},{"ancestorTitles":[],"duration":5125,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"late document proposals cannot return after tab unmount or a source undo","invocations":1,"location":null,"numPassingAsserts":6,"retryReasons":[],"startAt":1793711359868,"status":"passed","title":"late document proposals cannot return after tab unmount or a source undo"},{"ancestorTitles":[],"duration":4729,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound section:skills assistant sends explicit scope and edited wording to server acceptance","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793711364993,"status":"passed","title":"bound section:skills assistant sends explicit scope and edited wording to server acceptance"},{"ancestorTitles":[],"duration":4844,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound custom:sample assistant sends explicit scope and edited wording to server acceptance","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793711369722,"status":"passed","title":"bound custom:sample assistant sends explicit scope and edited wording to server acceptance"},{"ancestorTitles":[],"duration":4203,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound entry:experience:job-1 assistant sends explicit scope and edited wording to server acceptance","invocations":1,"location":null,"numPassingAsserts":5,"retryReasons":[],"startAt":1793711374566,"status":"passed","title":"bound entry:experience:job-1 assistant sends explicit scope and edited wording to server acceptance"},{"ancestorTitles":[],"duration":3063,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"user edits made during server acceptance are retained instead of overwritten by its late saved response","invocations":1,"location":null,"numPassingAsserts":9,"retryReasons":[],"startAt":1793711378769,"status":"passed","title":"user edits made during server acceptance are retained instead of overwritten by its late saved response"}],"endTime":1793711381835,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\cv-builder-deep-link.test.tsx","startTime":1793711228891,"status":"passed","summary":""}],"wasInterrupted":false} diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-cv-studio-tests.log b/docs/ui-modernisation/evidence/career/frontend/a3-cv-studio-tests.log new file mode 100644 index 00000000..9243f4ad --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-cv-studio-tests.log @@ -0,0 +1,277 @@ + +> job-tracker-ui@0.1.0 test +> jest --runInBand --watch=false --runTestsByPath src/cv-builder-deep-link.test.tsx --json --outputFile=../docs/ui-modernisation/a3-cv-studio-tests.json + + console.error + An update to CvBuilderEditor inside a test was not wrapped in act(...). + + When testing, code that causes React state updates should be wrapped into act(...): + + act(() => { + /* fire events that update state */ + }); + /* assert on the output */ + + This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act + + 657 | + 658 | + > 659 | setMobilePane("edit")} sx={{ display: compactEditor && mobilePane !== "edit" ? "none" : "block", top: "var(--cv-pane-top)", minWidth: 0, "@media (min-width:1001px)": { position: "sticky", maxHeight: "calc(100dvh - var(--cv-pane-top) - 12px)", overflowY: "auto" }, scrollbarWidth: "thin" }}> + | ^ + 660 | + 661 | {t("cvEditorEditingRegion")} + 662 | + + at node_modules/react-dom/cjs/react-dom-client.development.js:18758:19 + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at warnIfUpdatesNotWrappedWithActDEV (node_modules/react-dom/cjs/react-dom-client.development.js:18757:9) + at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:16409:11) + at dispatchSetStateInternal (node_modules/react-dom/cjs/react-dom-client.development.js:9170:13) + at dispatchSetState (node_modules/react-dom/cjs/react-dom-client.development.js:9127:7) + at setMobilePane (src/views/CvBuilderEditor.tsx:659:139) + at executeDispatch (node_modules/react-dom/cjs/react-dom-client.development.js:19116:9) + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at processDispatchQueue (node_modules/react-dom/cjs/react-dom-client.development.js:19143:19) + at node_modules/react-dom/cjs/react-dom-client.development.js:19767:9 + at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom-client.development.js:3255:40) + at dispatchEventForPluginEventSystem (node_modules/react-dom/cjs/react-dom-client.development.js:19320:7) + at dispatchEvent (node_modules/react-dom/cjs/react-dom-client.development.js:23585:11) + at dispatchDiscreteEvent (node_modules/react-dom/cjs/react-dom-client.development.js:23553:11) + at HTMLDivElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) + at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) + at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) + at HTMLButtonElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:217:9) + at Object.exports.fireFocusEventWithTargetAdjustment (node_modules/jsdom/lib/jsdom/living/helpers/focusing.js:103:10) + at HTMLButtonElementImpl.focus (node_modules/jsdom/lib/jsdom/living/nodes/HTMLOrSVGElement-impl.js:72:14) + at HTMLButtonElement.focus (node_modules/jsdom/lib/jsdom/living/generated/HTMLElement.js:128:34) + at Object.focus (src/cv-builder-deep-link.test.tsx:379:8) + + console.error + An update to ContentTab inside a test was not wrapped in act(...). + + When testing, code that causes React state updates should be wrapped into act(...): + + act(() => { + /* fire events that update state */ + }); + /* assert on the output */ + + This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act + + 1178 | expanded={expandedSections.has(row.key)} + 1179 | onToggle={() => toggleSection(row.key)} + > 1180 | onSectionFocus={() => setActiveSection(row.key)} + | ^ + 1181 | toggleRef={(button) => { sectionButtons.current[row.key] = button; }} + 1182 | onMove={(d) => reorderSections(i, i + d, true)} + 1183 | onPatch={(p) => patchSection(row.key, p)} + + at node_modules/react-dom/cjs/react-dom-client.development.js:18758:19 + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at warnIfUpdatesNotWrappedWithActDEV (node_modules/react-dom/cjs/react-dom-client.development.js:18757:9) + at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:16409:11) + at dispatchSetStateInternal (node_modules/react-dom/cjs/react-dom-client.development.js:9170:13) + at dispatchSetState (node_modules/react-dom/cjs/react-dom-client.development.js:9127:7) + at setActiveSection (src/views/CvBuilderEditor.tsx:1180:37) + at executeDispatch (node_modules/react-dom/cjs/react-dom-client.development.js:19116:9) + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at processDispatchQueue (node_modules/react-dom/cjs/react-dom-client.development.js:19143:19) + at node_modules/react-dom/cjs/react-dom-client.development.js:19767:9 + at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom-client.development.js:3255:40) + at dispatchEventForPluginEventSystem (node_modules/react-dom/cjs/react-dom-client.development.js:19320:7) + at dispatchEvent (node_modules/react-dom/cjs/react-dom-client.development.js:23585:11) + at dispatchDiscreteEvent (node_modules/react-dom/cjs/react-dom-client.development.js:23553:11) + at HTMLDivElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) + at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) + at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) + at HTMLButtonElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:217:9) + at Object.exports.fireFocusEventWithTargetAdjustment (node_modules/jsdom/lib/jsdom/living/helpers/focusing.js:103:10) + at HTMLButtonElementImpl.focus (node_modules/jsdom/lib/jsdom/living/nodes/HTMLOrSVGElement-impl.js:72:14) + at HTMLButtonElement.focus (node_modules/jsdom/lib/jsdom/living/generated/HTMLElement.js:128:34) + at Object.focus (src/cv-builder-deep-link.test.tsx:379:8) + + console.error + An update to ForwardRef(ButtonBase) inside a test was not wrapped in act(...). + + When testing, code that causes React state updates should be wrapped into act(...): + + act(() => { + /* fire events that update state */ + }); + /* assert on the output */ + + This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act + + 377 | await openContentTab(); + 378 | const move = screen.getByRole('button', { name: 'Move Experience section down' }); + > 379 | move.focus(); + | ^ + 380 | fireEvent.click(move); + 381 | expect(move).toHaveFocus(); + 382 | fireEvent.mouseDown(screen.getByRole('combobox', { name: 'Go to section' })); + + at node_modules/react-dom/cjs/react-dom-client.development.js:18758:19 + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at warnIfUpdatesNotWrappedWithActDEV (node_modules/react-dom/cjs/react-dom-client.development.js:18757:9) + at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:16409:11) + at dispatchSetStateInternal (node_modules/react-dom/cjs/react-dom-client.development.js:9170:13) + at dispatchSetState (node_modules/react-dom/cjs/react-dom-client.development.js:9127:7) + at node_modules/@mui/material/ButtonBase/ButtonBase.js:174:7 + at node_modules/@mui/utils/useEventCallback/useEventCallback.js:24:19 + at executeDispatch (node_modules/react-dom/cjs/react-dom-client.development.js:19116:9) + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at processDispatchQueue (node_modules/react-dom/cjs/react-dom-client.development.js:19166:19) + at node_modules/react-dom/cjs/react-dom-client.development.js:19767:9 + at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom-client.development.js:3255:40) + at dispatchEventForPluginEventSystem (node_modules/react-dom/cjs/react-dom-client.development.js:19320:7) + at dispatchEvent (node_modules/react-dom/cjs/react-dom-client.development.js:23585:11) + at dispatchDiscreteEvent (node_modules/react-dom/cjs/react-dom-client.development.js:23553:11) + at HTMLDivElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) + at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) + at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) + at HTMLButtonElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:233:9) + at Object.exports.fireFocusEventWithTargetAdjustment (node_modules/jsdom/lib/jsdom/living/helpers/focusing.js:103:10) + at HTMLButtonElementImpl.focus (node_modules/jsdom/lib/jsdom/living/nodes/HTMLOrSVGElement-impl.js:72:14) + at HTMLButtonElement.focus (node_modules/jsdom/lib/jsdom/living/generated/HTMLElement.js:128:34) + at Object.focus (src/cv-builder-deep-link.test.tsx:379:8) + + console.error + An update to ForwardRef(ButtonBase) inside a test was not wrapped in act(...). + + When testing, code that causes React state updates should be wrapped into act(...): + + act(() => { + /* fire events that update state */ + }); + /* assert on the output */ + + This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act + + 473 | renderAt(3); + 474 | const retry = await screen.findByRole('button', { name: 'Retry' }); + > 475 | retry.focus(); fireEvent.click(retry); + | ^ + 476 | await screen.findByDisplayValue('Backend CV'); + 477 | await waitFor(() => expect(screen.getByRole('region', { name: 'CV editing controls' })).toHaveFocus()); + 478 | expect(attempt).toBe(2); + + at node_modules/react-dom/cjs/react-dom-client.development.js:18758:19 + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at warnIfUpdatesNotWrappedWithActDEV (node_modules/react-dom/cjs/react-dom-client.development.js:18757:9) + at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:16409:11) + at dispatchSetStateInternal (node_modules/react-dom/cjs/react-dom-client.development.js:9170:13) + at dispatchSetState (node_modules/react-dom/cjs/react-dom-client.development.js:9127:7) + at node_modules/@mui/material/ButtonBase/ButtonBase.js:174:7 + at node_modules/@mui/utils/useEventCallback/useEventCallback.js:24:19 + at executeDispatch (node_modules/react-dom/cjs/react-dom-client.development.js:19116:9) + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at processDispatchQueue (node_modules/react-dom/cjs/react-dom-client.development.js:19166:19) + at node_modules/react-dom/cjs/react-dom-client.development.js:19767:9 + at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom-client.development.js:3255:40) + at dispatchEventForPluginEventSystem (node_modules/react-dom/cjs/react-dom-client.development.js:19320:7) + at dispatchEvent (node_modules/react-dom/cjs/react-dom-client.development.js:23585:11) + at dispatchDiscreteEvent (node_modules/react-dom/cjs/react-dom-client.development.js:23553:11) + at HTMLDivElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) + at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) + at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) + at HTMLButtonElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:233:9) + at Object.exports.fireFocusEventWithTargetAdjustment (node_modules/jsdom/lib/jsdom/living/helpers/focusing.js:103:10) + at HTMLButtonElementImpl.focus (node_modules/jsdom/lib/jsdom/living/nodes/HTMLOrSVGElement-impl.js:72:14) + at HTMLButtonElement.focus (node_modules/jsdom/lib/jsdom/living/generated/HTMLElement.js:128:34) + at Object.focus (src/cv-builder-deep-link.test.tsx:475:9) + + console.error + An update to ContentTab inside a test was not wrapped in act(...). + + When testing, code that causes React state updates should be wrapped into act(...): + + act(() => { + /* fire events that update state */ + }); + /* assert on the output */ + + This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act + + 1178 | expanded={expandedSections.has(row.key)} + 1179 | onToggle={() => toggleSection(row.key)} + > 1180 | onSectionFocus={() => setActiveSection(row.key)} + | ^ + 1181 | toggleRef={(button) => { sectionButtons.current[row.key] = button; }} + 1182 | onMove={(d) => reorderSections(i, i + d, true)} + 1183 | onPatch={(p) => patchSection(row.key, p)} + + at node_modules/react-dom/cjs/react-dom-client.development.js:18758:19 + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at warnIfUpdatesNotWrappedWithActDEV (node_modules/react-dom/cjs/react-dom-client.development.js:18757:9) + at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:16409:11) + at dispatchSetStateInternal (node_modules/react-dom/cjs/react-dom-client.development.js:9170:13) + at dispatchSetState (node_modules/react-dom/cjs/react-dom-client.development.js:9127:7) + at setActiveSection (src/views/CvBuilderEditor.tsx:1180:37) + at executeDispatch (node_modules/react-dom/cjs/react-dom-client.development.js:19116:9) + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at processDispatchQueue (node_modules/react-dom/cjs/react-dom-client.development.js:19143:19) + at node_modules/react-dom/cjs/react-dom-client.development.js:19767:9 + at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom-client.development.js:3255:40) + at dispatchEventForPluginEventSystem (node_modules/react-dom/cjs/react-dom-client.development.js:19320:7) + at dispatchEvent (node_modules/react-dom/cjs/react-dom-client.development.js:23585:11) + at dispatchDiscreteEvent (node_modules/react-dom/cjs/react-dom-client.development.js:23553:11) + at HTMLDivElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) + at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) + at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) + at HTMLButtonElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:217:9) + at Object.exports.fireFocusEventWithTargetAdjustment (node_modules/jsdom/lib/jsdom/living/helpers/focusing.js:103:10) + at HTMLButtonElementImpl.focus (node_modules/jsdom/lib/jsdom/living/nodes/HTMLOrSVGElement-impl.js:72:14) + at HTMLButtonElement.focus (node_modules/jsdom/lib/jsdom/living/generated/HTMLElement.js:128:34) + at Object.focus (src/cv-builder-deep-link.test.tsx:782:15) + + console.error + An update to ForwardRef(ButtonBase) inside a test was not wrapped in act(...). + + When testing, code that causes React state updates should be wrapped into act(...): + + act(() => { + /* fire events that update state */ + }); + /* assert on the output */ + + This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act + + 780 | + 781 | const deleteEntry = screen.getByRole('button', { name: 'Delete custom entry 1' }); + > 782 | deleteEntry.focus(); + | ^ + 783 | fireEvent.click(deleteEntry); + 784 | let dialog = await screen.findByRole('dialog', { name: 'Delete custom entry' }); + 785 | fireEvent.click(within(dialog).getByRole('button', { name: 'Cancel' })); + + at node_modules/react-dom/cjs/react-dom-client.development.js:18758:19 + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at warnIfUpdatesNotWrappedWithActDEV (node_modules/react-dom/cjs/react-dom-client.development.js:18757:9) + at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom-client.development.js:16409:11) + at dispatchSetStateInternal (node_modules/react-dom/cjs/react-dom-client.development.js:9170:13) + at dispatchSetState (node_modules/react-dom/cjs/react-dom-client.development.js:9127:7) + at node_modules/@mui/material/ButtonBase/ButtonBase.js:174:7 + at node_modules/@mui/utils/useEventCallback/useEventCallback.js:24:19 + at executeDispatch (node_modules/react-dom/cjs/react-dom-client.development.js:19116:9) + at runWithFiberInDEV (node_modules/react-dom/cjs/react-dom-client.development.js:874:13) + at processDispatchQueue (node_modules/react-dom/cjs/react-dom-client.development.js:19166:19) + at node_modules/react-dom/cjs/react-dom-client.development.js:19767:9 + at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom-client.development.js:3255:40) + at dispatchEventForPluginEventSystem (node_modules/react-dom/cjs/react-dom-client.development.js:19320:7) + at dispatchEvent (node_modules/react-dom/cjs/react-dom-client.development.js:23585:11) + at dispatchDiscreteEvent (node_modules/react-dom/cjs/react-dom-client.development.js:23553:11) + at HTMLDivElement.callTheUserObjectsOperation (node_modules/jsdom/lib/jsdom/living/generated/EventListener.js:26:30) + at innerInvokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:350:25) + at invokeEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:286:3) + at HTMLButtonElementImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:233:9) + at Object.exports.fireFocusEventWithTargetAdjustment (node_modules/jsdom/lib/jsdom/living/helpers/focusing.js:103:10) + at HTMLButtonElementImpl.focus (node_modules/jsdom/lib/jsdom/living/nodes/HTMLOrSVGElement-impl.js:72:14) + at HTMLButtonElement.focus (node_modules/jsdom/lib/jsdom/living/generated/HTMLElement.js:128:34) + at Object.focus (src/cv-builder-deep-link.test.tsx:782:15) + +Test Suites: 1 passed, 1 total +Tests: 59 passed, 59 total +Snapshots: 0 total +Time: 154.42 s +Ran all test suites within paths "src/cv-builder-deep-link.test.tsx". +Test results written to: ..\docs\ui-modernisation\a3-cv-studio-tests.json diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-cv-tablet-behavior-green.json b/docs/ui-modernisation/evidence/career/frontend/a3-cv-tablet-behavior-green.json new file mode 100644 index 00000000..b48a3456 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-cv-tablet-behavior-green.json @@ -0,0 +1 @@ +{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":1,"numPassedTests":1,"numPendingTestSuites":0,"numPendingTests":57,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":1,"numTotalTests":58,"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":1793710584375,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Strict Mode groups a typing burst into one undo step and preserves redo through autosave","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710589575,"status":"pending","title":"Strict Mode groups a typing burst into one undo step and preserves redo through autosave"},{"ancestorTitles":[],"duration":1050,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"tablet width keeps both editing and preview available in the stacked document flow","invocations":1,"location":null,"numPassingAsserts":4,"retryReasons":[],"startAt":1793710589575,"status":"passed","title":"tablet width keeps both editing and preview available in the stacked document flow"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"document shortcuts undo and redo renaming, preserve native input undo and discard branched redo","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"document shortcuts undo and redo renaming, preserve native input undo and discard branched redo"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a revision conflict disables document history without silently writing an undo","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"a revision conflict disables document history without silently writing an undo"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"switching documents hides the previous draft while loading and starts fresh history","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"switching documents hides the previous draft while loading and starts fresh history"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"explicit blank editing excludes master content and includes a profile section only after an Add action","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"explicit blank editing excludes master content and includes a profile section only after an Add action"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a blank CV can deliberately add an additional Career Profile section","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"a blank CV can deliberately add an additional Career Profile section"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a historical restore response from the previous document cannot change the newly opened CV","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"a historical restore response from the previous document cannot change the newly opened CV"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"content sections follow the editing-region heading without mutating CV settings","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"content sections follow the editing-region heading without mutating CV settings"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"settings history explains current Career Profile resolution without writing data","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"settings history explains current Career Profile resolution without writing data"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"PDF export locks immediately, rejects a newer unsaved draft, and keeps that draft recoverable","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"PDF export locks immediately, rejects a newer unsaved draft, and keeps that draft recoverable"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"edits during a held PDF response prevent an older document download","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"edits during a held PDF response prevent an older document download"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"moving a section to the first position announces its actual order and focuses its row","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"moving a section to the first position announces its actual order and focuses its row"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"section navigation opens and focuses omitted/custom sections without changing their data","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"section navigation opens and focuses omitted/custom sections without changing their data"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"keyboard move controls retain focus and persist the same section order shown by navigation","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"keyboard move controls retain focus and persist the same section order shown by navigation"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"secondary duplicate action saves the current draft before creating the copy","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"secondary duplicate action saves the current draft before creating the copy"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"pane navigation focuses the existing preview without changing the pending draft","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"pane navigation focuses the existing preview without changing the pending draft"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"deep link loads the exact variant named in the route","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"deep link loads the exact variant named in the route"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a variant that does not exist shows a safe error instead of an empty editor","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"a variant that does not exist shows a safe error instead of an empty editor"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"another user's variant is refused by the server and never rendered","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"another user's variant is refused by the server and never rendered"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a denied CV read has localized permission context without a write or retry","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"a denied CV read has localized permission context without a write or retry"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a temporary CV opening failure retries reads and restores focus to the editor without saving","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"a temporary CV opening failure retries reads and restores focus to the editor without saving"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Bokmål history localizes known sources while preserving unknown metadata and versions","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"Bokmål history localizes known sources while preserving unknown metadata and versions"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"invalid names are explained and are not silently autosaved","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"invalid names are explained and are not silently autosaved"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"failed autosave is visible and can be retried with the latest data","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"failed autosave is visible and can be retried with the latest data"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"session undo and redo restore content edits before autosave","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"session undo and redo restore content edits before autosave"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"queued saves use acknowledged server versions without replacing newer local editing state","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"queued saves use acknowledged server versions without replacing newer local editing state"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"revision conflict retains the draft and blocks later autosaves until explicit reload","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590626,"status":"pending","title":"revision conflict retains the draft and blocks later autosaves until explicit reload"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"edits made while a confirmed reload is in flight remain recoverable","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"edits made while a confirmed reload is in flight remain recoverable"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"restoring history uses the current version and never replaces edits made during the request","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"restoring history uses the current version and never replaces edits made during the request"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Content is the primary studio panel and all advanced tabs retain their controls","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"Content is the primary studio panel and all advanced tabs retain their controls"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"choosing a template restores its own structure instead of inheriting the previous template layout","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"choosing a template restores its own structure instead of inheriting the previous template layout"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"editor sections, design controls and document settings render in Bokmål","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"editor sections, design controls and document settings render in Bokmål"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"internal navigation warns and can be cancelled before discarding a pending edit","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"internal navigation warns and can be cancelled before discarding a pending edit"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"custom entries can be added, edited, reordered and deleted with confirmation","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"custom entries can be added, edited, reordered and deleted with confirmation"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C01 C07] source-backed entry edits identify their scope and save only this CV","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"[P5-10 PRES-C01 C07] source-backed entry edits identify their scope and save only this CV"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C07 C10] resetting one entry field preserves omission, sibling override and order and supports undo","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"[P5-10 PRES-C07 C10] resetting one entry field preserves omission, sibling override and order and supports undo"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C07 C10 E08] omitted entries remain editable and retain their draft after a failed save","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"[P5-10 PRES-C07 C10 E08] omitted entries remain editable and retain their draft after a failed save"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C01 C07] section content reset inherits source without changing omission or presentation","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"[P5-10 PRES-C01 C07] section content reset inherits source without changing omission or presentation"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"profile-backed sections expand, reorder, hide and persist variant-only overrides","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"profile-backed sections expand, reorder, hide and persist variant-only overrides"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"focusing a preview retry control keeps its pointer target stationary","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"focusing a preview retry control keeps its pointer target stationary"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"preview failure is visible and retryable without leaving the editor","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"preview failure is visible and retryable without leaving the editor"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 E08] automatic fit attaches when the asynchronously loaded preview pane appears","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"[P5-11 PRES-C06 E08] automatic fit attaches when the asynchronously loaded preview pane appears"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 C12] page count is announced only after the renderer has settled","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"[P5-11 PRES-C06 C12] page count is announced only after the renderer has settled"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 E09] overlapping preview successes and failures cannot replace the newest document","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"[P5-11 PRES-C06 E09] overlapping preview successes and failures cannot replace the newest document"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 C10 E08] returning from preview focuses the existing editor without changing the pending draft","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"[P5-11 PRES-C06 C10 E08] returning from preview focuses the existing editor without changing the pending draft"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11 PRES-C07] whole-document AI Apply changes only an explicitly accepted CV override","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"[PRES-C11 PRES-C07] whole-document AI Apply changes only an explicitly accepted CV override"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11 PRES-C07] whole-document AI Reject changes only an explicitly accepted CV override","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"[PRES-C11 PRES-C07] whole-document AI Reject changes only an explicitly accepted CV override"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11] unsafe whole-document response (invalid JSON) cannot be applied","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"[PRES-C11] unsafe whole-document response (invalid JSON) cannot be applied"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11] unsafe whole-document response (missing original ID) cannot be applied","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"[PRES-C11] unsafe whole-document response (missing original ID) cannot be applied"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11] unsafe whole-document response (duplicate original ID) cannot be applied","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"[PRES-C11] unsafe whole-document response (duplicate original ID) cannot be applied"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound document generation saves the pending draft, reviews server Original, and accepted AI remains undoable","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"bound document generation saves the pending draft, reviews server Original, and accepted AI remains undoable"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a newer draft is flushed before stale proposal acceptance fails without rebasing or changing content","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"a newer draft is flushed before stale proposal acceptance fails without rebasing or changing content"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"late document proposals cannot return after tab unmount or a source undo","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"late document proposals cannot return after tab unmount or a source undo"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound section:skills assistant sends explicit scope and edited wording to server acceptance","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"bound section:skills assistant sends explicit scope and edited wording to server acceptance"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound custom:sample assistant sends explicit scope and edited wording to server acceptance","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"bound custom:sample assistant sends explicit scope and edited wording to server acceptance"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound entry:experience:job-1 assistant sends explicit scope and edited wording to server acceptance","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"bound entry:experience:job-1 assistant sends explicit scope and edited wording to server acceptance"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"user edits made during server acceptance are retained instead of overwritten by its late saved response","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710590627,"status":"pending","title":"user edits made during server acceptance are retained instead of overwritten by its late saved response"}],"endTime":1793710590629,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\cv-builder-deep-link.test.tsx","startTime":1793710585784,"status":"focused","summary":""}],"wasInterrupted":false} diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-cv-tablet-behavior-green.log b/docs/ui-modernisation/evidence/career/frontend/a3-cv-tablet-behavior-green.log new file mode 100644 index 00000000..b8a43851 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-cv-tablet-behavior-green.log @@ -0,0 +1,10 @@ + +> job-tracker-ui@0.1.0 test +> jest --runInBand --watch=false --runTestsByPath src/cv-builder-deep-link.test.tsx --testNamePattern=tablet width keeps both --json --outputFile=../docs/ui-modernisation/a3-cv-tablet-behavior-green.json + +Test Suites: 1 passed, 1 total +Tests: 57 skipped, 1 passed, 58 total +Snapshots: 0 total +Time: 6.26 s, estimated 7 s +Ran all test suites within paths "src/cv-builder-deep-link.test.tsx". +Test results written to: ..\docs\ui-modernisation\a3-cv-tablet-behavior-green.json diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-cv-tablet-behavior-red.json b/docs/ui-modernisation/evidence/career/frontend/a3-cv-tablet-behavior-red.json new file mode 100644 index 00000000..6153033f --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-cv-tablet-behavior-red.json @@ -0,0 +1 @@ +{"numFailedTestSuites":1,"numFailedTests":1,"numPassedTestSuites":0,"numPassedTests":0,"numPendingTestSuites":0,"numPendingTests":57,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":1,"numTotalTests":58,"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":1793710502355,"success":false,"testResults":[{"assertionResults":[{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Strict Mode groups a typing burst into one undo step and preserves redo through autosave","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710508748,"status":"pending","title":"Strict Mode groups a typing burst into one undo step and preserves redo through autosave"},{"ancestorTitles":[],"duration":1247,"failing":false,"failureDetails":[{"matcherResult":{"pass":true,"message":"expect(element).not.toBeInTheDocument()\n\nexpected document not to contain element, found instead"}}],"failureMessages":["Error: expect(element).not.toBeInTheDocument()\n\nexpected document not to contain element, found instead\n at Object.toBeInTheDocument (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\cv-builder-deep-link.test.tsx:120:64)"],"fullName":"tablet width keeps both editing and preview available in the stacked document flow","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710508748,"status":"failed","title":"tablet width keeps both editing and preview available in the stacked document flow"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"document shortcuts undo and redo renaming, preserve native input undo and discard branched redo","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510030,"status":"pending","title":"document shortcuts undo and redo renaming, preserve native input undo and discard branched redo"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a revision conflict disables document history without silently writing an undo","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510030,"status":"pending","title":"a revision conflict disables document history without silently writing an undo"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"switching documents hides the previous draft while loading and starts fresh history","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510030,"status":"pending","title":"switching documents hides the previous draft while loading and starts fresh history"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"explicit blank editing excludes master content and includes a profile section only after an Add action","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510030,"status":"pending","title":"explicit blank editing excludes master content and includes a profile section only after an Add action"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a blank CV can deliberately add an additional Career Profile section","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510030,"status":"pending","title":"a blank CV can deliberately add an additional Career Profile section"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a historical restore response from the previous document cannot change the newly opened CV","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510030,"status":"pending","title":"a historical restore response from the previous document cannot change the newly opened CV"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"content sections follow the editing-region heading without mutating CV settings","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510030,"status":"pending","title":"content sections follow the editing-region heading without mutating CV settings"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"settings history explains current Career Profile resolution without writing data","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510030,"status":"pending","title":"settings history explains current Career Profile resolution without writing data"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"PDF export locks immediately, rejects a newer unsaved draft, and keeps that draft recoverable","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510030,"status":"pending","title":"PDF export locks immediately, rejects a newer unsaved draft, and keeps that draft recoverable"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"edits during a held PDF response prevent an older document download","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510030,"status":"pending","title":"edits during a held PDF response prevent an older document download"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"moving a section to the first position announces its actual order and focuses its row","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510030,"status":"pending","title":"moving a section to the first position announces its actual order and focuses its row"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"section navigation opens and focuses omitted/custom sections without changing their data","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510030,"status":"pending","title":"section navigation opens and focuses omitted/custom sections without changing their data"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"keyboard move controls retain focus and persist the same section order shown by navigation","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510030,"status":"pending","title":"keyboard move controls retain focus and persist the same section order shown by navigation"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"secondary duplicate action saves the current draft before creating the copy","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510030,"status":"pending","title":"secondary duplicate action saves the current draft before creating the copy"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"pane navigation focuses the existing preview without changing the pending draft","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510030,"status":"pending","title":"pane navigation focuses the existing preview without changing the pending draft"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"deep link loads the exact variant named in the route","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510030,"status":"pending","title":"deep link loads the exact variant named in the route"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a variant that does not exist shows a safe error instead of an empty editor","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510030,"status":"pending","title":"a variant that does not exist shows a safe error instead of an empty editor"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"another user's variant is refused by the server and never rendered","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510030,"status":"pending","title":"another user's variant is refused by the server and never rendered"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a denied CV read has localized permission context without a write or retry","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510030,"status":"pending","title":"a denied CV read has localized permission context without a write or retry"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a temporary CV opening failure retries reads and restores focus to the editor without saving","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510030,"status":"pending","title":"a temporary CV opening failure retries reads and restores focus to the editor without saving"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Bokmål history localizes known sources while preserving unknown metadata and versions","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510030,"status":"pending","title":"Bokmål history localizes known sources while preserving unknown metadata and versions"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"invalid names are explained and are not silently autosaved","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510030,"status":"pending","title":"invalid names are explained and are not silently autosaved"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"failed autosave is visible and can be retried with the latest data","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510030,"status":"pending","title":"failed autosave is visible and can be retried with the latest data"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"session undo and redo restore content edits before autosave","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"session undo and redo restore content edits before autosave"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"queued saves use acknowledged server versions without replacing newer local editing state","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"queued saves use acknowledged server versions without replacing newer local editing state"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"revision conflict retains the draft and blocks later autosaves until explicit reload","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"revision conflict retains the draft and blocks later autosaves until explicit reload"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"edits made while a confirmed reload is in flight remain recoverable","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"edits made while a confirmed reload is in flight remain recoverable"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"restoring history uses the current version and never replaces edits made during the request","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"restoring history uses the current version and never replaces edits made during the request"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Content is the primary studio panel and all advanced tabs retain their controls","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"Content is the primary studio panel and all advanced tabs retain their controls"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"choosing a template restores its own structure instead of inheriting the previous template layout","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"choosing a template restores its own structure instead of inheriting the previous template layout"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"editor sections, design controls and document settings render in Bokmål","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"editor sections, design controls and document settings render in Bokmål"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"internal navigation warns and can be cancelled before discarding a pending edit","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"internal navigation warns and can be cancelled before discarding a pending edit"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"custom entries can be added, edited, reordered and deleted with confirmation","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"custom entries can be added, edited, reordered and deleted with confirmation"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C01 C07] source-backed entry edits identify their scope and save only this CV","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"[P5-10 PRES-C01 C07] source-backed entry edits identify their scope and save only this CV"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C07 C10] resetting one entry field preserves omission, sibling override and order and supports undo","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"[P5-10 PRES-C07 C10] resetting one entry field preserves omission, sibling override and order and supports undo"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C07 C10 E08] omitted entries remain editable and retain their draft after a failed save","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"[P5-10 PRES-C07 C10 E08] omitted entries remain editable and retain their draft after a failed save"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C01 C07] section content reset inherits source without changing omission or presentation","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"[P5-10 PRES-C01 C07] section content reset inherits source without changing omission or presentation"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"profile-backed sections expand, reorder, hide and persist variant-only overrides","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"profile-backed sections expand, reorder, hide and persist variant-only overrides"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"focusing a preview retry control keeps its pointer target stationary","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"focusing a preview retry control keeps its pointer target stationary"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"preview failure is visible and retryable without leaving the editor","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"preview failure is visible and retryable without leaving the editor"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 E08] automatic fit attaches when the asynchronously loaded preview pane appears","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"[P5-11 PRES-C06 E08] automatic fit attaches when the asynchronously loaded preview pane appears"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 C12] page count is announced only after the renderer has settled","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"[P5-11 PRES-C06 C12] page count is announced only after the renderer has settled"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 E09] overlapping preview successes and failures cannot replace the newest document","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"[P5-11 PRES-C06 E09] overlapping preview successes and failures cannot replace the newest document"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 C10 E08] returning from preview focuses the existing editor without changing the pending draft","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"[P5-11 PRES-C06 C10 E08] returning from preview focuses the existing editor without changing the pending draft"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11 PRES-C07] whole-document AI Apply changes only an explicitly accepted CV override","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"[PRES-C11 PRES-C07] whole-document AI Apply changes only an explicitly accepted CV override"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11 PRES-C07] whole-document AI Reject changes only an explicitly accepted CV override","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"[PRES-C11 PRES-C07] whole-document AI Reject changes only an explicitly accepted CV override"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11] unsafe whole-document response (invalid JSON) cannot be applied","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"[PRES-C11] unsafe whole-document response (invalid JSON) cannot be applied"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11] unsafe whole-document response (missing original ID) cannot be applied","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"[PRES-C11] unsafe whole-document response (missing original ID) cannot be applied"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11] unsafe whole-document response (duplicate original ID) cannot be applied","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"[PRES-C11] unsafe whole-document response (duplicate original ID) cannot be applied"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound document generation saves the pending draft, reviews server Original, and accepted AI remains undoable","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"bound document generation saves the pending draft, reviews server Original, and accepted AI remains undoable"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a newer draft is flushed before stale proposal acceptance fails without rebasing or changing content","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"a newer draft is flushed before stale proposal acceptance fails without rebasing or changing content"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"late document proposals cannot return after tab unmount or a source undo","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"late document proposals cannot return after tab unmount or a source undo"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound section:skills assistant sends explicit scope and edited wording to server acceptance","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"bound section:skills assistant sends explicit scope and edited wording to server acceptance"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound custom:sample assistant sends explicit scope and edited wording to server acceptance","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"bound custom:sample assistant sends explicit scope and edited wording to server acceptance"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound entry:experience:job-1 assistant sends explicit scope and edited wording to server acceptance","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"bound entry:experience:job-1 assistant sends explicit scope and edited wording to server acceptance"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"user edits made during server acceptance are retained instead of overwritten by its late saved response","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710510031,"status":"pending","title":"user edits made during server acceptance are retained instead of overwritten by its late saved response"}],"endTime":1793710510047,"message":" ● tablet width keeps both editing and preview available in the stacked document flow\n\n expect(element).not.toBeInTheDocument()\n\n expected document not to contain element, found instead\n\n 118 | renderAt(3);\n 119 | await openContentTab();\n > 120 | expect(screen.queryByRole('button', { name: 'Edit' })).not.toBeInTheDocument();\n | ^\n 121 | expect(screen.getByRole('region', { name: 'CV editing controls' })).toBeVisible();\n 122 | expect(screen.getByRole('region', { name: 'Live preview' })).toBeVisible();\n 123 | expect(mockedApi.put).not.toHaveBeenCalled();\n\n at Object.toBeInTheDocument (src/cv-builder-deep-link.test.tsx:120:64)\n","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\cv-builder-deep-link.test.tsx","startTime":1793710503783,"status":"failed","summary":""}],"wasInterrupted":false} diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-cv-tablet-behavior-red.log b/docs/ui-modernisation/evidence/career/frontend/a3-cv-tablet-behavior-red.log new file mode 100644 index 00000000..761a7949 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-cv-tablet-behavior-red.log @@ -0,0 +1,27 @@ + +> job-tracker-ui@0.1.0 test +> jest --runInBand --watch=false --runTestsByPath src/cv-builder-deep-link.test.tsx --testNamePattern=tablet width keeps both --json --outputFile=../docs/ui-modernisation/a3-cv-tablet-behavior-red.json + +FAIL src/cv-builder-deep-link.test.tsx (6.264 s) + ● tablet width keeps both editing and preview available in the stacked document flow + + expect(element).not.toBeInTheDocument() + + expected document not to contain element, found instead + + 118 | renderAt(3); + 119 | await openContentTab(); + > 120 | expect(screen.queryByRole('button', { name: 'Edit' })).not.toBeInTheDocument(); + | ^ + 121 | expect(screen.getByRole('region', { name: 'CV editing controls' })).toBeVisible(); + 122 | expect(screen.getByRole('region', { name: 'Live preview' })).toBeVisible(); + 123 | expect(mockedApi.put).not.toHaveBeenCalled(); + + at Object.toBeInTheDocument (src/cv-builder-deep-link.test.tsx:120:64) + +Test Suites: 1 failed, 1 total +Tests: 1 failed, 57 skipped, 58 total +Snapshots: 0 total +Time: 7.703 s +Ran all test suites within paths "src/cv-builder-deep-link.test.tsx". +Test results written to: ..\docs\ui-modernisation\a3-cv-tablet-behavior-red.json diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-cv-tablet-green.json b/docs/ui-modernisation/evidence/career/frontend/a3-cv-tablet-green.json new file mode 100644 index 00000000..25940fb2 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-cv-tablet-green.json @@ -0,0 +1 @@ +{"numFailedTestSuites":1,"numFailedTests":1,"numPassedTestSuites":0,"numPassedTests":0,"numPendingTestSuites":0,"numPendingTests":57,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":1,"numTotalTests":58,"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":1793710463869,"success":false,"testResults":[{"assertionResults":[{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Strict Mode groups a typing burst into one undo step and preserves redo through autosave","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471206,"status":"pending","title":"Strict Mode groups a typing burst into one undo step and preserves redo through autosave"},{"ancestorTitles":[],"duration":2,"failing":false,"failureDetails":[{}],"failureMessages":["Error: Property `matchMedia` does not exist in the provided object\n at ModuleMocker.spyOn (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-mock\\build\\index.js:593:13)\n at Object.spyOn (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\cv-builder-deep-link.test.tsx:111:22)\n at Promise.finally.completed (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:1561:28)\n at new Promise ()\n at callAsyncCircusFn (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:1501:10)\n at _callCircusTest (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:1011:40)\n at _runTest (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:951:3)\n at C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:853:7\n at _runTestsForDescribeBlock (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:866:11)\n at run (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:765:3)\n at runAndTransformResultsToJestFormat (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:1993:21)\n at jestAdapter (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\runner.js:111:19)\n at runTestInternal (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-runner\\build\\index.js:276:16)\n at runTest (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-runner\\build\\index.js:344:7)"],"fullName":"tablet width keeps both editing and preview available in the stacked document flow","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471206,"status":"failed","title":"tablet width keeps both editing and preview available in the stacked document flow"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"document shortcuts undo and redo renaming, preserve native input undo and discard branched redo","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"document shortcuts undo and redo renaming, preserve native input undo and discard branched redo"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a revision conflict disables document history without silently writing an undo","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"a revision conflict disables document history without silently writing an undo"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"switching documents hides the previous draft while loading and starts fresh history","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"switching documents hides the previous draft while loading and starts fresh history"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"explicit blank editing excludes master content and includes a profile section only after an Add action","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"explicit blank editing excludes master content and includes a profile section only after an Add action"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a blank CV can deliberately add an additional Career Profile section","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"a blank CV can deliberately add an additional Career Profile section"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a historical restore response from the previous document cannot change the newly opened CV","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"a historical restore response from the previous document cannot change the newly opened CV"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"content sections follow the editing-region heading without mutating CV settings","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"content sections follow the editing-region heading without mutating CV settings"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"settings history explains current Career Profile resolution without writing data","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"settings history explains current Career Profile resolution without writing data"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"PDF export locks immediately, rejects a newer unsaved draft, and keeps that draft recoverable","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"PDF export locks immediately, rejects a newer unsaved draft, and keeps that draft recoverable"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"edits during a held PDF response prevent an older document download","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"edits during a held PDF response prevent an older document download"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"moving a section to the first position announces its actual order and focuses its row","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"moving a section to the first position announces its actual order and focuses its row"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"section navigation opens and focuses omitted/custom sections without changing their data","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"section navigation opens and focuses omitted/custom sections without changing their data"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"keyboard move controls retain focus and persist the same section order shown by navigation","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"keyboard move controls retain focus and persist the same section order shown by navigation"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"secondary duplicate action saves the current draft before creating the copy","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"secondary duplicate action saves the current draft before creating the copy"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"pane navigation focuses the existing preview without changing the pending draft","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"pane navigation focuses the existing preview without changing the pending draft"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"deep link loads the exact variant named in the route","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"deep link loads the exact variant named in the route"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a variant that does not exist shows a safe error instead of an empty editor","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"a variant that does not exist shows a safe error instead of an empty editor"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"another user's variant is refused by the server and never rendered","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"another user's variant is refused by the server and never rendered"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a denied CV read has localized permission context without a write or retry","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"a denied CV read has localized permission context without a write or retry"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a temporary CV opening failure retries reads and restores focus to the editor without saving","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"a temporary CV opening failure retries reads and restores focus to the editor without saving"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Bokmål history localizes known sources while preserving unknown metadata and versions","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"Bokmål history localizes known sources while preserving unknown metadata and versions"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"invalid names are explained and are not silently autosaved","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"invalid names are explained and are not silently autosaved"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"failed autosave is visible and can be retried with the latest data","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"failed autosave is visible and can be retried with the latest data"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"session undo and redo restore content edits before autosave","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"session undo and redo restore content edits before autosave"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"queued saves use acknowledged server versions without replacing newer local editing state","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"queued saves use acknowledged server versions without replacing newer local editing state"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"revision conflict retains the draft and blocks later autosaves until explicit reload","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"revision conflict retains the draft and blocks later autosaves until explicit reload"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"edits made while a confirmed reload is in flight remain recoverable","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471211,"status":"pending","title":"edits made while a confirmed reload is in flight remain recoverable"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"restoring history uses the current version and never replaces edits made during the request","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"restoring history uses the current version and never replaces edits made during the request"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Content is the primary studio panel and all advanced tabs retain their controls","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"Content is the primary studio panel and all advanced tabs retain their controls"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"choosing a template restores its own structure instead of inheriting the previous template layout","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"choosing a template restores its own structure instead of inheriting the previous template layout"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"editor sections, design controls and document settings render in Bokmål","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"editor sections, design controls and document settings render in Bokmål"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"internal navigation warns and can be cancelled before discarding a pending edit","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"internal navigation warns and can be cancelled before discarding a pending edit"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"custom entries can be added, edited, reordered and deleted with confirmation","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"custom entries can be added, edited, reordered and deleted with confirmation"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C01 C07] source-backed entry edits identify their scope and save only this CV","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"[P5-10 PRES-C01 C07] source-backed entry edits identify their scope and save only this CV"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C07 C10] resetting one entry field preserves omission, sibling override and order and supports undo","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"[P5-10 PRES-C07 C10] resetting one entry field preserves omission, sibling override and order and supports undo"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C07 C10 E08] omitted entries remain editable and retain their draft after a failed save","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"[P5-10 PRES-C07 C10 E08] omitted entries remain editable and retain their draft after a failed save"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C01 C07] section content reset inherits source without changing omission or presentation","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"[P5-10 PRES-C01 C07] section content reset inherits source without changing omission or presentation"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"profile-backed sections expand, reorder, hide and persist variant-only overrides","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"profile-backed sections expand, reorder, hide and persist variant-only overrides"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"focusing a preview retry control keeps its pointer target stationary","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"focusing a preview retry control keeps its pointer target stationary"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"preview failure is visible and retryable without leaving the editor","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"preview failure is visible and retryable without leaving the editor"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 E08] automatic fit attaches when the asynchronously loaded preview pane appears","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"[P5-11 PRES-C06 E08] automatic fit attaches when the asynchronously loaded preview pane appears"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 C12] page count is announced only after the renderer has settled","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"[P5-11 PRES-C06 C12] page count is announced only after the renderer has settled"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 E09] overlapping preview successes and failures cannot replace the newest document","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"[P5-11 PRES-C06 E09] overlapping preview successes and failures cannot replace the newest document"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 C10 E08] returning from preview focuses the existing editor without changing the pending draft","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"[P5-11 PRES-C06 C10 E08] returning from preview focuses the existing editor without changing the pending draft"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11 PRES-C07] whole-document AI Apply changes only an explicitly accepted CV override","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"[PRES-C11 PRES-C07] whole-document AI Apply changes only an explicitly accepted CV override"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11 PRES-C07] whole-document AI Reject changes only an explicitly accepted CV override","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"[PRES-C11 PRES-C07] whole-document AI Reject changes only an explicitly accepted CV override"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11] unsafe whole-document response (invalid JSON) cannot be applied","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"[PRES-C11] unsafe whole-document response (invalid JSON) cannot be applied"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11] unsafe whole-document response (missing original ID) cannot be applied","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"[PRES-C11] unsafe whole-document response (missing original ID) cannot be applied"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11] unsafe whole-document response (duplicate original ID) cannot be applied","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"[PRES-C11] unsafe whole-document response (duplicate original ID) cannot be applied"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound document generation saves the pending draft, reviews server Original, and accepted AI remains undoable","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"bound document generation saves the pending draft, reviews server Original, and accepted AI remains undoable"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a newer draft is flushed before stale proposal acceptance fails without rebasing or changing content","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"a newer draft is flushed before stale proposal acceptance fails without rebasing or changing content"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"late document proposals cannot return after tab unmount or a source undo","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"late document proposals cannot return after tab unmount or a source undo"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound section:skills assistant sends explicit scope and edited wording to server acceptance","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"bound section:skills assistant sends explicit scope and edited wording to server acceptance"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound custom:sample assistant sends explicit scope and edited wording to server acceptance","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"bound custom:sample assistant sends explicit scope and edited wording to server acceptance"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound entry:experience:job-1 assistant sends explicit scope and edited wording to server acceptance","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"bound entry:experience:job-1 assistant sends explicit scope and edited wording to server acceptance"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"user edits made during server acceptance are retained instead of overwritten by its late saved response","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710471212,"status":"pending","title":"user edits made during server acceptance are retained instead of overwritten by its late saved response"}],"endTime":1793710471229,"message":" ● tablet width keeps both editing and preview available in the stacked document flow\n\n Property `matchMedia` does not exist in the provided object\n\n 109 |\n 110 | test('tablet width keeps both editing and preview available in the stacked document flow', async () => {\n > 111 | const media = jest.spyOn(window, 'matchMedia').mockImplementation(query => ({\n | ^\n 112 | matches: /max-width:\\s*([\\d.]+)px/.test(query) && 768 <= Number(/max-width:\\s*([\\d.]+)px/.exec(query)![1]),\n 113 | media: query, onchange: null, addListener: jest.fn(), removeListener: jest.fn(), addEventListener: jest.fn(), removeEventListener: jest.fn(), dispatchEvent: () => true,\n 114 | }));\n\n at ModuleMocker.spyOn (node_modules/jest-mock/build/index.js:593:13)\n at Object.spyOn (src/cv-builder-deep-link.test.tsx:111:22)\n","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\cv-builder-deep-link.test.tsx","startTime":1793710465604,"status":"failed","summary":""}],"wasInterrupted":false} diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-cv-tablet-green.log b/docs/ui-modernisation/evidence/career/frontend/a3-cv-tablet-green.log new file mode 100644 index 00000000..56858ec7 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-cv-tablet-green.log @@ -0,0 +1,26 @@ + +> job-tracker-ui@0.1.0 test +> jest --runInBand --watch=false --runTestsByPath src/cv-builder-deep-link.test.tsx --testNamePattern=tablet width keeps both --json --outputFile=../docs/ui-modernisation/a3-cv-tablet-green.json + +FAIL src/cv-builder-deep-link.test.tsx (5.625 s) + ● tablet width keeps both editing and preview available in the stacked document flow + + Property `matchMedia` does not exist in the provided object + + 109 | + 110 | test('tablet width keeps both editing and preview available in the stacked document flow', async () => { + > 111 | const media = jest.spyOn(window, 'matchMedia').mockImplementation(query => ({ + | ^ + 112 | matches: /max-width:\s*([\d.]+)px/.test(query) && 768 <= Number(/max-width:\s*([\d.]+)px/.exec(query)![1]), + 113 | media: query, onchange: null, addListener: jest.fn(), removeListener: jest.fn(), addEventListener: jest.fn(), removeEventListener: jest.fn(), dispatchEvent: () => true, + 114 | })); + + at ModuleMocker.spyOn (node_modules/jest-mock/build/index.js:593:13) + at Object.spyOn (src/cv-builder-deep-link.test.tsx:111:22) + +Test Suites: 1 failed, 1 total +Tests: 1 failed, 57 skipped, 58 total +Snapshots: 0 total +Time: 7.376 s +Ran all test suites within paths "src/cv-builder-deep-link.test.tsx". +Test results written to: ..\docs\ui-modernisation\a3-cv-tablet-green.json diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-cv-tablet-red.json b/docs/ui-modernisation/evidence/career/frontend/a3-cv-tablet-red.json new file mode 100644 index 00000000..ad964b98 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-cv-tablet-red.json @@ -0,0 +1 @@ +{"numFailedTestSuites":1,"numFailedTests":1,"numPassedTestSuites":0,"numPassedTests":0,"numPendingTestSuites":0,"numPendingTests":57,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":1,"numTotalTests":58,"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":1793710427804,"success":false,"testResults":[{"assertionResults":[{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Strict Mode groups a typing burst into one undo step and preserves redo through autosave","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433623,"status":"pending","title":"Strict Mode groups a typing burst into one undo step and preserves redo through autosave"},{"ancestorTitles":[],"duration":2,"failing":false,"failureDetails":[{}],"failureMessages":["Error: Property `matchMedia` does not exist in the provided object\n at ModuleMocker.spyOn (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-mock\\build\\index.js:593:13)\n at Object.spyOn (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\cv-builder-deep-link.test.tsx:111:22)\n at Promise.finally.completed (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:1561:28)\n at new Promise ()\n at callAsyncCircusFn (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:1501:10)\n at _callCircusTest (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:1011:40)\n at _runTest (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:951:3)\n at C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:853:7\n at _runTestsForDescribeBlock (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:866:11)\n at run (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:765:3)\n at runAndTransformResultsToJestFormat (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\jestAdapterInit.js:1993:21)\n at jestAdapter (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-circus\\build\\runner.js:111:19)\n at runTestInternal (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-runner\\build\\index.js:276:16)\n at runTest (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\node_modules\\jest-runner\\build\\index.js:344:7)"],"fullName":"tablet width keeps both editing and preview available in the stacked document flow","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433623,"status":"failed","title":"tablet width keeps both editing and preview available in the stacked document flow"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"document shortcuts undo and redo renaming, preserve native input undo and discard branched redo","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"document shortcuts undo and redo renaming, preserve native input undo and discard branched redo"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a revision conflict disables document history without silently writing an undo","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"a revision conflict disables document history without silently writing an undo"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"switching documents hides the previous draft while loading and starts fresh history","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"switching documents hides the previous draft while loading and starts fresh history"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"explicit blank editing excludes master content and includes a profile section only after an Add action","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"explicit blank editing excludes master content and includes a profile section only after an Add action"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a blank CV can deliberately add an additional Career Profile section","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"a blank CV can deliberately add an additional Career Profile section"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a historical restore response from the previous document cannot change the newly opened CV","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"a historical restore response from the previous document cannot change the newly opened CV"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"content sections follow the editing-region heading without mutating CV settings","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"content sections follow the editing-region heading without mutating CV settings"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"settings history explains current Career Profile resolution without writing data","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"settings history explains current Career Profile resolution without writing data"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"PDF export locks immediately, rejects a newer unsaved draft, and keeps that draft recoverable","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"PDF export locks immediately, rejects a newer unsaved draft, and keeps that draft recoverable"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"edits during a held PDF response prevent an older document download","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"edits during a held PDF response prevent an older document download"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"moving a section to the first position announces its actual order and focuses its row","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"moving a section to the first position announces its actual order and focuses its row"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"section navigation opens and focuses omitted/custom sections without changing their data","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"section navigation opens and focuses omitted/custom sections without changing their data"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"keyboard move controls retain focus and persist the same section order shown by navigation","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"keyboard move controls retain focus and persist the same section order shown by navigation"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"secondary duplicate action saves the current draft before creating the copy","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"secondary duplicate action saves the current draft before creating the copy"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"pane navigation focuses the existing preview without changing the pending draft","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"pane navigation focuses the existing preview without changing the pending draft"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"deep link loads the exact variant named in the route","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"deep link loads the exact variant named in the route"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a variant that does not exist shows a safe error instead of an empty editor","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"a variant that does not exist shows a safe error instead of an empty editor"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"another user's variant is refused by the server and never rendered","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"another user's variant is refused by the server and never rendered"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a denied CV read has localized permission context without a write or retry","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"a denied CV read has localized permission context without a write or retry"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a temporary CV opening failure retries reads and restores focus to the editor without saving","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"a temporary CV opening failure retries reads and restores focus to the editor without saving"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Bokmål history localizes known sources while preserving unknown metadata and versions","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"Bokmål history localizes known sources while preserving unknown metadata and versions"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"invalid names are explained and are not silently autosaved","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"invalid names are explained and are not silently autosaved"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"failed autosave is visible and can be retried with the latest data","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"failed autosave is visible and can be retried with the latest data"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"session undo and redo restore content edits before autosave","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"session undo and redo restore content edits before autosave"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"queued saves use acknowledged server versions without replacing newer local editing state","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"queued saves use acknowledged server versions without replacing newer local editing state"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"revision conflict retains the draft and blocks later autosaves until explicit reload","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"revision conflict retains the draft and blocks later autosaves until explicit reload"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"edits made while a confirmed reload is in flight remain recoverable","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"edits made while a confirmed reload is in flight remain recoverable"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"restoring history uses the current version and never replaces edits made during the request","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"restoring history uses the current version and never replaces edits made during the request"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Content is the primary studio panel and all advanced tabs retain their controls","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"Content is the primary studio panel and all advanced tabs retain their controls"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"choosing a template restores its own structure instead of inheriting the previous template layout","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"choosing a template restores its own structure instead of inheriting the previous template layout"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"editor sections, design controls and document settings render in Bokmål","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"editor sections, design controls and document settings render in Bokmål"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"internal navigation warns and can be cancelled before discarding a pending edit","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"internal navigation warns and can be cancelled before discarding a pending edit"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"custom entries can be added, edited, reordered and deleted with confirmation","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"custom entries can be added, edited, reordered and deleted with confirmation"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C01 C07] source-backed entry edits identify their scope and save only this CV","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"[P5-10 PRES-C01 C07] source-backed entry edits identify their scope and save only this CV"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C07 C10] resetting one entry field preserves omission, sibling override and order and supports undo","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"[P5-10 PRES-C07 C10] resetting one entry field preserves omission, sibling override and order and supports undo"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C07 C10 E08] omitted entries remain editable and retain their draft after a failed save","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"[P5-10 PRES-C07 C10 E08] omitted entries remain editable and retain their draft after a failed save"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C01 C07] section content reset inherits source without changing omission or presentation","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"[P5-10 PRES-C01 C07] section content reset inherits source without changing omission or presentation"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"profile-backed sections expand, reorder, hide and persist variant-only overrides","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"profile-backed sections expand, reorder, hide and persist variant-only overrides"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"focusing a preview retry control keeps its pointer target stationary","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"focusing a preview retry control keeps its pointer target stationary"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"preview failure is visible and retryable without leaving the editor","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"preview failure is visible and retryable without leaving the editor"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 E08] automatic fit attaches when the asynchronously loaded preview pane appears","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"[P5-11 PRES-C06 E08] automatic fit attaches when the asynchronously loaded preview pane appears"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 C12] page count is announced only after the renderer has settled","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433643,"status":"pending","title":"[P5-11 PRES-C06 C12] page count is announced only after the renderer has settled"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 E09] overlapping preview successes and failures cannot replace the newest document","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433644,"status":"pending","title":"[P5-11 PRES-C06 E09] overlapping preview successes and failures cannot replace the newest document"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 C10 E08] returning from preview focuses the existing editor without changing the pending draft","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433644,"status":"pending","title":"[P5-11 PRES-C06 C10 E08] returning from preview focuses the existing editor without changing the pending draft"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11 PRES-C07] whole-document AI Apply changes only an explicitly accepted CV override","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433644,"status":"pending","title":"[PRES-C11 PRES-C07] whole-document AI Apply changes only an explicitly accepted CV override"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11 PRES-C07] whole-document AI Reject changes only an explicitly accepted CV override","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433644,"status":"pending","title":"[PRES-C11 PRES-C07] whole-document AI Reject changes only an explicitly accepted CV override"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11] unsafe whole-document response (invalid JSON) cannot be applied","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433644,"status":"pending","title":"[PRES-C11] unsafe whole-document response (invalid JSON) cannot be applied"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11] unsafe whole-document response (missing original ID) cannot be applied","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433644,"status":"pending","title":"[PRES-C11] unsafe whole-document response (missing original ID) cannot be applied"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11] unsafe whole-document response (duplicate original ID) cannot be applied","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433644,"status":"pending","title":"[PRES-C11] unsafe whole-document response (duplicate original ID) cannot be applied"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound document generation saves the pending draft, reviews server Original, and accepted AI remains undoable","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433644,"status":"pending","title":"bound document generation saves the pending draft, reviews server Original, and accepted AI remains undoable"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a newer draft is flushed before stale proposal acceptance fails without rebasing or changing content","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433644,"status":"pending","title":"a newer draft is flushed before stale proposal acceptance fails without rebasing or changing content"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"late document proposals cannot return after tab unmount or a source undo","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433644,"status":"pending","title":"late document proposals cannot return after tab unmount or a source undo"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound section:skills assistant sends explicit scope and edited wording to server acceptance","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433644,"status":"pending","title":"bound section:skills assistant sends explicit scope and edited wording to server acceptance"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound custom:sample assistant sends explicit scope and edited wording to server acceptance","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433644,"status":"pending","title":"bound custom:sample assistant sends explicit scope and edited wording to server acceptance"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound entry:experience:job-1 assistant sends explicit scope and edited wording to server acceptance","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433644,"status":"pending","title":"bound entry:experience:job-1 assistant sends explicit scope and edited wording to server acceptance"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"user edits made during server acceptance are retained instead of overwritten by its late saved response","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793710433644,"status":"pending","title":"user edits made during server acceptance are retained instead of overwritten by its late saved response"}],"endTime":1793710433661,"message":" ● tablet width keeps both editing and preview available in the stacked document flow\n\n Property `matchMedia` does not exist in the provided object\n\n 109 |\n 110 | test('tablet width keeps both editing and preview available in the stacked document flow', async () => {\n > 111 | const media = jest.spyOn(window, 'matchMedia').mockImplementation(query => ({\n | ^\n 112 | matches: /max-width:\\s*([\\d.]+)px/.test(query) && 768 <= Number(/max-width:\\s*([\\d.]+)px/.exec(query)![1]),\n 113 | media: query, onchange: null, addListener: jest.fn(), removeListener: jest.fn(), addEventListener: jest.fn(), removeEventListener: jest.fn(), dispatchEvent: () => true,\n 114 | }));\n\n at ModuleMocker.spyOn (node_modules/jest-mock/build/index.js:593:13)\n at Object.spyOn (src/cv-builder-deep-link.test.tsx:111:22)\n","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\cv-builder-deep-link.test.tsx","startTime":1793710429231,"status":"failed","summary":""}],"wasInterrupted":false} diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-cv-tablet-red.log b/docs/ui-modernisation/evidence/career/frontend/a3-cv-tablet-red.log new file mode 100644 index 00000000..b76a967a --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-cv-tablet-red.log @@ -0,0 +1,26 @@ + +> job-tracker-ui@0.1.0 test +> jest --runInBand --watch=false --runTestsByPath src/cv-builder-deep-link.test.tsx --testNamePattern=tablet width keeps both --json --outputFile=../docs/ui-modernisation/a3-cv-tablet-red.json + +FAIL src/cv-builder-deep-link.test.tsx + ● tablet width keeps both editing and preview available in the stacked document flow + + Property `matchMedia` does not exist in the provided object + + 109 | + 110 | test('tablet width keeps both editing and preview available in the stacked document flow', async () => { + > 111 | const media = jest.spyOn(window, 'matchMedia').mockImplementation(query => ({ + | ^ + 112 | matches: /max-width:\s*([\d.]+)px/.test(query) && 768 <= Number(/max-width:\s*([\d.]+)px/.exec(query)![1]), + 113 | media: query, onchange: null, addListener: jest.fn(), removeListener: jest.fn(), addEventListener: jest.fn(), removeEventListener: jest.fn(), dispatchEvent: () => true, + 114 | })); + + at ModuleMocker.spyOn (node_modules/jest-mock/build/index.js:593:13) + at Object.spyOn (src/cv-builder-deep-link.test.tsx:111:22) + +Test Suites: 1 failed, 1 total +Tests: 1 failed, 57 skipped, 58 total +Snapshots: 0 total +Time: 5.869 s, estimated 150 s +Ran all test suites within paths "src/cv-builder-deep-link.test.tsx". +Test results written to: ..\docs\ui-modernisation\a3-cv-tablet-red.json diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-cv-template-label-red.json b/docs/ui-modernisation/evidence/career/frontend/a3-cv-template-label-red.json new file mode 100644 index 00000000..ff9325b9 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-cv-template-label-red.json @@ -0,0 +1 @@ +{"numFailedTestSuites":1,"numFailedTests":2,"numPassedTestSuites":0,"numPassedTests":0,"numPendingTestSuites":0,"numPendingTests":22,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":1,"numTotalTests":24,"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":1793711255511,"success":false,"testResults":[{"assertionResults":[{"ancestorTitles":[],"duration":185,"failing":false,"failureDetails":[{"name":"TestingLibraryElementError"}],"failureMessages":["TestingLibraryElementError: Unable to find an element with the text: Modern. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.\n\nIgnored nodes: comments, script, style\n\u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mFrontend CV\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mmodern\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mEN\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mPublic\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mUpdated 12/10/2026 · version 2\u001b[0m\n \u001b[0m · Frontend Engineer at Northstar\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 getByText (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\cv-builder-page.test.tsx:77:23)"],"fullName":"en library identifies templates by their human label and retains an unknown legacy identifier","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711262371,"status":"failed","title":"en library identifies templates by their human label and retains an unknown legacy identifier"},{"ancestorTitles":[],"duration":61,"failing":false,"failureDetails":[{"name":"TestingLibraryElementError"}],"failureMessages":["TestingLibraryElementError: Unable to find an element with the text: Moderne. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.\n\nIgnored nodes: comments, script, style\n\u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mFrontend CV\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mmodern\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mEN\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mOffentlig\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mOppdatert 12.10.2026 · versjon 2\u001b[0m\n \u001b[0m · Frontend Engineer hos Northstar\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 getByText (C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\cv-builder-page.test.tsx:77:23)"],"fullName":"nb library identifies templates by their human label and retains an unknown legacy identifier","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711262609,"status":"failed","title":"nb library identifies templates by their human label and retains an unknown legacy identifier"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"blank creation explicitly excludes all profile sections and contact even after template selection","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711262671,"status":"pending","title":"blank creation explicitly excludes all profile sections and contact even after template selection"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"profile creation includes only deliberately selected available sections and contact","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711262671,"status":"pending","title":"profile creation includes only deliberately selected available sections and contact"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"unavailable profile sections block profile creation and allow an explicit blank fallback","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711262671,"status":"pending","title":"unavailable profile sections block profile creation and allow an explicit blank fallback"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"export validation decodes structured and blob errors without relabelling unknown failures","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711262671,"status":"pending","title":"export validation decodes structured and blob errors without relabelling unknown failures"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"the CV library has a section heading and announces its held initial read without showing an empty result","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711262671,"status":"pending","title":"the CV library has a section heading and announces its held initial read without showing an empty result"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a failed CV list read has an explicit retry that clears the stale failure after recovery","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711262671,"status":"pending","title":"a failed CV list read has an explicit retry that clears the stale failure after recovery"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a live language change retains an open CV name and template draft without refetching library data","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711262671,"status":"pending","title":"a live language change retains an open CV name and template draft without refetching library data"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"held CV creation locks the draft and gallery, then keeps a failed draft for an explicit retry","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711262671,"status":"pending","title":"held CV creation locks the draft and gallery, then keeps a failed draft for an explicit retry"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a locked CV template remains identifiable and cannot change the creation request","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711262671,"status":"pending","title":"a locked CV template remains identifiable and cannot change the creation request"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a held duplicate blocks another action for the same CV and shows the persisted refreshed copy","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711262671,"status":"pending","title":"a held duplicate blocks another action for the same CV and shows the persisted refreshed copy"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"rename reads the current revision and preserves its settings when saving the new name","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711262671,"status":"pending","title":"rename reads the current revision and preserves its settings when saving the new name"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a rename conflict keeps the original library entry and never retries the write automatically","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711262671,"status":"pending","title":"a rename conflict keeps the original library entry and never retries the write automatically"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"cancelling deletion returns focus to the surviving CV action control without removing the CV","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711262671,"status":"pending","title":"cancelling deletion returns focus to the surviving CV action control without removing the CV"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a failed creation keeps its draft and translates its failure after closing and reopening in another language","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711262671,"status":"pending","title":"a failed creation keeps its draft and translates its failure after closing and reopening in another language"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"generic PDF failure follows the current language both after failure and when a held request fails","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711262671,"status":"pending","title":"generic PDF failure follows the current language both after failure and when a held request fails"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a held deletion preserves focus moved to another surviving control before the response arrives","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711262671,"status":"pending","title":"a held deletion preserves focus moved to another surviving control before the response arrives"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"PDF status 503 shows an actionable message without retrying","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711262671,"status":"pending","title":"PDF status 503 shows an actionable message without retrying"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"PDF status 504 shows an actionable message without retrying","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711262671,"status":"pending","title":"PDF status 504 shows an actionable message without retrying"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"lists existing CVs from the variants API","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711262671,"status":"pending","title":"lists existing CVs from the variants API"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"shows the empty state and creates a CV then navigates to the editor","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711262671,"status":"pending","title":"shows the empty state and creates a CV then navigates to the editor"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CV dashboard and create flow render in Bokmål","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711262671,"status":"pending","title":"CV dashboard and create flow render in Bokmål"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"CV deletion requires confirmation and supports cancellation","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711262671,"status":"pending","title":"CV deletion requires confirmation and supports cancellation"}],"endTime":1793711262694,"message":" ● en library identifies templates by their human label and retains an unknown legacy identifier\n\n TestingLibraryElementError: Unable to find an element with the text: Modern. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.\n\n Ignored nodes: comments, script, style\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mFrontend CV\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mmodern\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mEN\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mPublic\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mUpdated 12/10/2026 · version 2\u001b[0m\n \u001b[0m · Frontend Engineer at Northstar\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n\n 75 | renderPage();\n 76 | const card = (await screen.findByText(existingCv.name)).closest('[role=\"link\"]') as HTMLElement;\n > 77 | expect(within(card).getByText(language === 'nb' ? translations.nb.cvTemplateModernName : 'Modern')).toBeVisible();\n | ^\n 78 | const legacy = screen.getByText('Legacy CV').closest('[role=\"link\"]') as HTMLElement;\n 79 | expect(within(legacy).getByText('legacy-template')).toBeVisible();\n 80 | expect(mockedApi.put).not.toHaveBeenCalled();\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 getByText (src/cv-builder-page.test.tsx:77:23)\n\n ● nb library identifies templates by their human label and retains an unknown legacy identifier\n\n TestingLibraryElementError: Unable to find an element with the text: Moderne. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.\n\n Ignored nodes: comments, script, style\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mFrontend CV\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mmodern\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mEN\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mOffentlig\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mOppdatert 12.10.2026 · versjon 2\u001b[0m\n \u001b[0m · Frontend Engineer hos Northstar\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n\n 75 | renderPage();\n 76 | const card = (await screen.findByText(existingCv.name)).closest('[role=\"link\"]') as HTMLElement;\n > 77 | expect(within(card).getByText(language === 'nb' ? translations.nb.cvTemplateModernName : 'Modern')).toBeVisible();\n | ^\n 78 | const legacy = screen.getByText('Legacy CV').closest('[role=\"link\"]') as HTMLElement;\n 79 | expect(within(legacy).getByText('legacy-template')).toBeVisible();\n 80 | expect(mockedApi.put).not.toHaveBeenCalled();\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 getByText (src/cv-builder-page.test.tsx:77:23)\n","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\cv-builder-page.test.tsx","startTime":1793711257327,"status":"failed","summary":""}],"wasInterrupted":false} diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-cv-template-label-red.log b/docs/ui-modernisation/evidence/career/frontend/a3-cv-template-label-red.log new file mode 100644 index 00000000..637b3583 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-cv-template-label-red.log @@ -0,0 +1,239 @@ + +> job-tracker-ui@0.1.0 test +> jest --runInBand --watch=false --runTestsByPath src/cv-builder-page.test.tsx --testNamePattern=library identifies templates --json --outputFile=../docs/ui-modernisation/a3-cv-template-label-red.json + +FAIL src/cv-builder-page.test.tsx (5.367 s) + ● en library identifies templates by their human label and retains an unknown legacy identifier + + TestingLibraryElementError: Unable to find an element with the text: Modern. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. + + Ignored nodes: comments, script, style +
+ +
+

+ Frontend CV +

+ +
+
+
+ + modern + +
+
+ + EN + +
+
+ + + Public + +
+
+ + Updated 12/10/2026 · version 2 + · Frontend Engineer at Northstar + +
+ + 75 | renderPage(); + 76 | const card = (await screen.findByText(existingCv.name)).closest('[role="link"]') as HTMLElement; + > 77 | expect(within(card).getByText(language === 'nb' ? translations.nb.cvTemplateModernName : 'Modern')).toBeVisible(); + | ^ + 78 | const legacy = screen.getByText('Legacy CV').closest('[role="link"]') as HTMLElement; + 79 | expect(within(legacy).getByText('legacy-template')).toBeVisible(); + 80 | expect(mockedApi.put).not.toHaveBeenCalled(); + + at Object.getElementError (node_modules/@testing-library/dom/dist/config.js:37:19) + at node_modules/@testing-library/dom/dist/query-helpers.js:76:38 + at node_modules/@testing-library/dom/dist/query-helpers.js:52:17 + at node_modules/@testing-library/dom/dist/query-helpers.js:95:19 + at getByText (src/cv-builder-page.test.tsx:77:23) + + ● nb library identifies templates by their human label and retains an unknown legacy identifier + + TestingLibraryElementError: Unable to find an element with the text: Moderne. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. + + Ignored nodes: comments, script, style +
+ +
+

+ Frontend CV +

+ +
+
+
+ + modern + +
+
+ + EN + +
+
+ + + Offentlig + +
+
+ + Oppdatert 12.10.2026 · versjon 2 + · Frontend Engineer hos Northstar + +
+ + 75 | renderPage(); + 76 | const card = (await screen.findByText(existingCv.name)).closest('[role="link"]') as HTMLElement; + > 77 | expect(within(card).getByText(language === 'nb' ? translations.nb.cvTemplateModernName : 'Modern')).toBeVisible(); + | ^ + 78 | const legacy = screen.getByText('Legacy CV').closest('[role="link"]') as HTMLElement; + 79 | expect(within(legacy).getByText('legacy-template')).toBeVisible(); + 80 | expect(mockedApi.put).not.toHaveBeenCalled(); + + at Object.getElementError (node_modules/@testing-library/dom/dist/config.js:37:19) + at node_modules/@testing-library/dom/dist/query-helpers.js:76:38 + at node_modules/@testing-library/dom/dist/query-helpers.js:52:17 + at node_modules/@testing-library/dom/dist/query-helpers.js:95:19 + at getByText (src/cv-builder-page.test.tsx:77:23) + +Test Suites: 1 failed, 1 total +Tests: 2 failed, 22 skipped, 24 total +Snapshots: 0 total +Time: 7.193 s, estimated 13 s +Ran all test suites within paths "src/cv-builder-page.test.tsx". +Test results written to: ..\docs\ui-modernisation\a3-cv-template-label-red.json diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-cv-undo-diagnostic.json b/docs/ui-modernisation/evidence/career/frontend/a3-cv-undo-diagnostic.json new file mode 100644 index 00000000..40651cc6 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-cv-undo-diagnostic.json @@ -0,0 +1 @@ +{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":1,"numPassedTests":1,"numPendingTestSuites":0,"numPendingTests":57,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":1,"numTotalTests":58,"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":1793711149607,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":[],"duration":3023,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Strict Mode groups a typing burst into one undo step and preserves redo through autosave","invocations":1,"location":null,"numPassingAsserts":3,"retryReasons":[],"startAt":1793711155130,"status":"passed","title":"Strict Mode groups a typing burst into one undo step and preserves redo through autosave"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"tablet width keeps both editing and preview available in the stacked document flow","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158154,"status":"pending","title":"tablet width keeps both editing and preview available in the stacked document flow"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"document shortcuts undo and redo renaming, preserve native input undo and discard branched redo","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158154,"status":"pending","title":"document shortcuts undo and redo renaming, preserve native input undo and discard branched redo"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a revision conflict disables document history without silently writing an undo","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158154,"status":"pending","title":"a revision conflict disables document history without silently writing an undo"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"switching documents hides the previous draft while loading and starts fresh history","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158154,"status":"pending","title":"switching documents hides the previous draft while loading and starts fresh history"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"explicit blank editing excludes master content and includes a profile section only after an Add action","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158154,"status":"pending","title":"explicit blank editing excludes master content and includes a profile section only after an Add action"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a blank CV can deliberately add an additional Career Profile section","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158154,"status":"pending","title":"a blank CV can deliberately add an additional Career Profile section"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a historical restore response from the previous document cannot change the newly opened CV","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158154,"status":"pending","title":"a historical restore response from the previous document cannot change the newly opened CV"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"content sections follow the editing-region heading without mutating CV settings","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158154,"status":"pending","title":"content sections follow the editing-region heading without mutating CV settings"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"settings history explains current Career Profile resolution without writing data","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"settings history explains current Career Profile resolution without writing data"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"PDF export locks immediately, rejects a newer unsaved draft, and keeps that draft recoverable","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"PDF export locks immediately, rejects a newer unsaved draft, and keeps that draft recoverable"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"edits during a held PDF response prevent an older document download","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"edits during a held PDF response prevent an older document download"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"moving a section to the first position announces its actual order and focuses its row","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"moving a section to the first position announces its actual order and focuses its row"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"section navigation opens and focuses omitted/custom sections without changing their data","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"section navigation opens and focuses omitted/custom sections without changing their data"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"keyboard move controls retain focus and persist the same section order shown by navigation","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"keyboard move controls retain focus and persist the same section order shown by navigation"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"secondary duplicate action saves the current draft before creating the copy","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"secondary duplicate action saves the current draft before creating the copy"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"pane navigation focuses the existing preview without changing the pending draft","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"pane navigation focuses the existing preview without changing the pending draft"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"deep link loads the exact variant named in the route","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"deep link loads the exact variant named in the route"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a variant that does not exist shows a safe error instead of an empty editor","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"a variant that does not exist shows a safe error instead of an empty editor"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"another user's variant is refused by the server and never rendered","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"another user's variant is refused by the server and never rendered"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a denied CV read has localized permission context without a write or retry","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"a denied CV read has localized permission context without a write or retry"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a temporary CV opening failure retries reads and restores focus to the editor without saving","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"a temporary CV opening failure retries reads and restores focus to the editor without saving"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Bokmål history localizes known sources while preserving unknown metadata and versions","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"Bokmål history localizes known sources while preserving unknown metadata and versions"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"invalid names are explained and are not silently autosaved","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"invalid names are explained and are not silently autosaved"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"failed autosave is visible and can be retried with the latest data","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"failed autosave is visible and can be retried with the latest data"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"session undo and redo restore content edits before autosave","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"session undo and redo restore content edits before autosave"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"queued saves use acknowledged server versions without replacing newer local editing state","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"queued saves use acknowledged server versions without replacing newer local editing state"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"revision conflict retains the draft and blocks later autosaves until explicit reload","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"revision conflict retains the draft and blocks later autosaves until explicit reload"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"edits made while a confirmed reload is in flight remain recoverable","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"edits made while a confirmed reload is in flight remain recoverable"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"restoring history uses the current version and never replaces edits made during the request","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"restoring history uses the current version and never replaces edits made during the request"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"Content is the primary studio panel and all advanced tabs retain their controls","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"Content is the primary studio panel and all advanced tabs retain their controls"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"choosing a template restores its own structure instead of inheriting the previous template layout","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"choosing a template restores its own structure instead of inheriting the previous template layout"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"editor sections, design controls and document settings render in Bokmål","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"editor sections, design controls and document settings render in Bokmål"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"internal navigation warns and can be cancelled before discarding a pending edit","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"internal navigation warns and can be cancelled before discarding a pending edit"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"custom entries can be added, edited, reordered and deleted with confirmation","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"custom entries can be added, edited, reordered and deleted with confirmation"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C01 C07] source-backed entry edits identify their scope and save only this CV","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"[P5-10 PRES-C01 C07] source-backed entry edits identify their scope and save only this CV"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C07 C10] resetting one entry field preserves omission, sibling override and order and supports undo","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"[P5-10 PRES-C07 C10] resetting one entry field preserves omission, sibling override and order and supports undo"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C07 C10 E08] omitted entries remain editable and retain their draft after a failed save","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"[P5-10 PRES-C07 C10 E08] omitted entries remain editable and retain their draft after a failed save"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-10 PRES-C01 C07] section content reset inherits source without changing omission or presentation","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"[P5-10 PRES-C01 C07] section content reset inherits source without changing omission or presentation"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"profile-backed sections expand, reorder, hide and persist variant-only overrides","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"profile-backed sections expand, reorder, hide and persist variant-only overrides"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"focusing a preview retry control keeps its pointer target stationary","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"focusing a preview retry control keeps its pointer target stationary"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"preview failure is visible and retryable without leaving the editor","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"preview failure is visible and retryable without leaving the editor"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 E08] automatic fit attaches when the asynchronously loaded preview pane appears","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"[P5-11 PRES-C06 E08] automatic fit attaches when the asynchronously loaded preview pane appears"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 C12] page count is announced only after the renderer has settled","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"[P5-11 PRES-C06 C12] page count is announced only after the renderer has settled"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 E09] overlapping preview successes and failures cannot replace the newest document","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"[P5-11 PRES-C06 E09] overlapping preview successes and failures cannot replace the newest document"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P5-11 PRES-C06 C10 E08] returning from preview focuses the existing editor without changing the pending draft","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"[P5-11 PRES-C06 C10 E08] returning from preview focuses the existing editor without changing the pending draft"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11 PRES-C07] whole-document AI Apply changes only an explicitly accepted CV override","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"[PRES-C11 PRES-C07] whole-document AI Apply changes only an explicitly accepted CV override"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11 PRES-C07] whole-document AI Reject changes only an explicitly accepted CV override","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"[PRES-C11 PRES-C07] whole-document AI Reject changes only an explicitly accepted CV override"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11] unsafe whole-document response (invalid JSON) cannot be applied","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158155,"status":"pending","title":"[PRES-C11] unsafe whole-document response (invalid JSON) cannot be applied"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11] unsafe whole-document response (missing original ID) cannot be applied","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158156,"status":"pending","title":"[PRES-C11] unsafe whole-document response (missing original ID) cannot be applied"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-C11] unsafe whole-document response (duplicate original ID) cannot be applied","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158156,"status":"pending","title":"[PRES-C11] unsafe whole-document response (duplicate original ID) cannot be applied"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound document generation saves the pending draft, reviews server Original, and accepted AI remains undoable","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158156,"status":"pending","title":"bound document generation saves the pending draft, reviews server Original, and accepted AI remains undoable"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a newer draft is flushed before stale proposal acceptance fails without rebasing or changing content","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158156,"status":"pending","title":"a newer draft is flushed before stale proposal acceptance fails without rebasing or changing content"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"late document proposals cannot return after tab unmount or a source undo","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158156,"status":"pending","title":"late document proposals cannot return after tab unmount or a source undo"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound section:skills assistant sends explicit scope and edited wording to server acceptance","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158156,"status":"pending","title":"bound section:skills assistant sends explicit scope and edited wording to server acceptance"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound custom:sample assistant sends explicit scope and edited wording to server acceptance","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158156,"status":"pending","title":"bound custom:sample assistant sends explicit scope and edited wording to server acceptance"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"bound entry:experience:job-1 assistant sends explicit scope and edited wording to server acceptance","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158156,"status":"pending","title":"bound entry:experience:job-1 assistant sends explicit scope and edited wording to server acceptance"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"user edits made during server acceptance are retained instead of overwritten by its late saved response","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711158156,"status":"pending","title":"user edits made during server acceptance are retained instead of overwritten by its late saved response"}],"endTime":1793711158159,"message":"","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\cv-builder-deep-link.test.tsx","startTime":1793711151038,"status":"focused","summary":""}],"wasInterrupted":false} diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-cv-undo-diagnostic.log b/docs/ui-modernisation/evidence/career/frontend/a3-cv-undo-diagnostic.log new file mode 100644 index 00000000..0a4bf5bd --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-cv-undo-diagnostic.log @@ -0,0 +1,10 @@ + +> job-tracker-ui@0.1.0 test +> jest --runInBand --watch=false --runTestsByPath src/cv-builder-deep-link.test.tsx --testNamePattern=Strict Mode groups a typing burst --json --outputFile=../docs/ui-modernisation/a3-cv-undo-diagnostic.json + +Test Suites: 1 passed, 1 total +Tests: 57 skipped, 1 passed, 58 total +Snapshots: 0 total +Time: 8.562 s, estimated 142 s +Ran all test suites within paths "src/cv-builder-deep-link.test.tsx". +Test results written to: ..\docs\ui-modernisation\a3-cv-undo-diagnostic.json diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-letter-tablet-red.json b/docs/ui-modernisation/evidence/career/frontend/a3-letter-tablet-red.json new file mode 100644 index 00000000..191de56e --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-letter-tablet-red.json @@ -0,0 +1 @@ +{"numFailedTestSuites":1,"numFailedTests":1,"numPassedTestSuites":0,"numPassedTests":2,"numPendingTestSuites":0,"numPendingTests":52,"numRuntimeErrorTestSuites":0,"numTodoTests":0,"numTotalTestSuites":1,"numTotalTests":55,"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":1793711359388,"success":false,"testResults":[{"assertionResults":[{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[P7-11 tailoring] generated metadata and known history enums follow locale while evidence, unknown metadata and dirty prose stay verbatim","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366036,"status":"pending","title":"[P7-11 tailoring] generated metadata and known history enums follow locale while evidence, unknown metadata and dirty prose stay verbatim"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"document package history is read-only and separates captured notes from answers","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"document package history is read-only and separates captured notes from answers"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"cv section shows the attached variant and the ones available to attach","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"cv section shows the attached variant and the ones available to attach"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"attaching a different variant only re-points the application","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"attaching a different variant only re-points the application"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"cv section points at the builder when there are no variants","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"cv section points at the builder when there are no variants"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"tailoring renders suggestions grouped by kind","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"tailoring renders suggestions grouped by kind"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"tailoring asks for a career profile when there is none","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"tailoring asks for a career profile when there is none"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"submitted package capture appends an immutable history entry","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"submitted package capture appends an immutable history entry"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"cover letter loads the current text and its history","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"cover letter loads the current text and its history"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"editing marks the draft dirty and saving sends the new text","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"editing marks the draft dirty and saving sends the new text"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"discarding returns to the saved text","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"discarding returns to the saved text"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"restoring an old version calls the restore endpoint","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"restoring an old version calls the restore endpoint"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"an empty cover letter offers the template and an empty history","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"an empty cover letter offers the template and an empty history"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"the empty cover-letter template and rich-text controls follow Bokmål UI language","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"the empty cover-letter template and rich-text controls follow Bokmål UI language"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"AI letter results are discarded when the source changes during generation","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"AI letter results are discarded when the source changes during generation"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"letter Improve writing uses the existing reviewed action","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"letter Improve writing uses the existing reviewed action"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"letter Suggest content uses the existing reviewed action","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"letter Suggest content uses the existing reviewed action"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"letter Grammar check uses the existing reviewed action","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"letter Grammar check uses the existing reviewed action"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"letter Shorter uses the existing reviewed action","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"letter Shorter uses the existing reviewed action"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"cancelling letter generation ignores its late response","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"cancelling letter generation ignores its late response"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"AI cover letter suggestions use the linked CV and require explicit apply","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"AI cover letter suggestions use the linked CV and require explicit apply"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"letter AI revalidates its recorded source before applying and refuses a cross-tab source conflict","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"letter AI revalidates its recorded source before applying and refuses a cross-tab source conflict"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"letter AI language follows the saved document and updates the same local language draft","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"letter AI language follows the saved document and updates the same local language draft"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"letter AI ignores a late source validation after local edit","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"letter AI ignores a late source validation after local edit"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"letter AI ignores a late source validation after local cancel","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"letter AI ignores a late source validation after local cancel"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"letter AI ignores a late source validation after local job change","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"letter AI ignores a late source validation after local job change"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a held letter Save prevents an in-flight AI validation from replacing the submitted snapshot","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"a held letter Save prevents an in-flight AI validation from replacing the submitted snapshot"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"[PRES-W06] rejecting an AI cover letter preserves the saved draft without a write","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"[PRES-W06] rejecting an AI cover letter preserves the saved draft without a write"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a failed load surfaces an error","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"a failed load surfaces an error"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"application answer and recruiter drafts save from the dedicated workspace","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"application answer and recruiter drafts save from the dedicated workspace"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"application package drafts can be cleared without deleting ordinary notes","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"application package drafts can be cleared without deleting ordinary notes"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"failed cover-letter saving retains editable dirty text and original Save recovery across a live locale change","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"failed cover-letter saving retains editable dirty text and original Save recovery across a live locale change"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"failed application-answer saving keeps both dirty drafts editable and retries only the original save payload","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"failed application-answer saving keeps both dirty drafts editable and retries only the original save payload"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"failed CV attachment leaves the current association and selector available for the original explicit action","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"failed CV attachment leaves the current association and selector available for the original explicit action"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"dirty version restore cancels without a write and confirmed held restore appends history exactly once","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"dirty version restore cancels without a write and confirmed held restore appends history exactly once"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"held letter Save submits one snapshot and prevents an AI Apply from replacing its pending draft","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"held letter Save submits one snapshot and prevents an AI Apply from replacing its pending draft"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"held AI generation locks its controls and preserves captured action attribution after a later action selection","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"held AI generation locks its controls and preserves captured action attribution after a later action selection"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"capture, detail and download failures keep owned frozen history and recover only through their original explicit actions","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"capture, detail and download failures keep owned frozen history and recover only through their original explicit actions"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"all five asset read owners expose GET-only recovery without false empty history or locale refetch","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"all five asset read owners expose GET-only recovery without false empty history or locale refetch"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"keyed job changes stop a late CV copy from attaching and never reuse another job's saved-copy recovery","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"keyed job changes stop a late CV copy from attaching and never reuse another job's saved-copy recovery"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"keyed job changes keep job B's answer drafts and callbacks independent of job A's late save","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"keyed job changes keep job B's answer drafts and callbacks independent of job A's late save"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"a parent refresh cannot attach a newer revision to dirty application drafts","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"a parent refresh cannot attach a newer revision to dirty application drafts"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"cover-letter rejection (409) retains draft and source revision without a fresh read","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"cover-letter rejection (409) retains draft and source revision without a fresh read"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"cover-letter rejection (0) retains draft and source revision without a fresh read","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366037,"status":"pending","title":"cover-letter rejection (0) retains draft and source revision without a fresh read"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"letter text preview shows unsaved formatting, hides the inactive narrow pane and never saves on switching","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366038,"status":"pending","title":"letter text preview shows unsaved formatting, hides the inactive narrow pane and never saves on switching"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"letter text preview renders unsafe Markdown as inert text","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366038,"status":"pending","title":"letter text preview renders unsafe Markdown as inert text"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"letter preview retains the draft after cancelled restore and failed save","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366038,"status":"pending","title":"letter preview retains the draft after cancelled restore and failed save"},{"ancestorTitles":[],"duration":null,"failing":false,"failureDetails":[],"failureMessages":[],"fullName":"keyed letter job changes discard the old preview and ignore its late save","invocations":1,"location":null,"numPassingAsserts":0,"retryReasons":[],"startAt":1793711366038,"status":"pending","title":"keyed letter job changes discard the old preview and ignore its late save"},{"ancestorTitles":[],"duration":1052,"failing":false,"failureDetails":[{"name":"TestingLibraryElementError"}],"failureMessages":["TestingLibraryElementError: Unable to find an accessible element with the role \"region\" and name \"Letter text preview\"\n\nHere are the accessible roles:\n\n region:\n\n Name \"Cover Letter\":\n \u001b[36m\u001b[39m\n\n Name \"AI writing assistant\":\n \u001b[36m\u001b[39m\n\n Name \"Version history\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n banner:\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 heading:\n\n Name \"Cover Letter\":\n \u001b[36m\u001b[39m\n\n Name \"AI writing assistant\":\n \u001b[36m\u001b[39m\n\n Name \"Version history\":\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 Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n group:\n\n Name \"Cover Letter\":\n \u001b[36m\u001b[39m\n\n Name \"AI writing assistant\":\n \u001b[36m\u001b[39m\n\n Name \"Version history\":\n \u001b[36m\u001b[39m\n\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 tablist:\n\n Name \"Letter workspace\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n tab:\n\n Name \"Write\":\n \u001b[36m\u001b[39m\n\n Name \"Preview\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n tabpanel:\n\n Name \"Write\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n button:\n\n Name \"Bold\":\n \u001b[36m\u001b[39m\n\n Name \"Italic\":\n \u001b[36m\u001b[39m\n\n Name \"Underline\":\n \u001b[36m\u001b[39m\n\n Name \"Link\":\n \u001b[36m\u001b[39m\n\n Name \"Improve writing\":\n \u001b[36m\u001b[39m\n\n Name \"Suggest content\":\n \u001b[36m\u001b[39m\n\n Name \"Grammar check\":\n \u001b[36m\u001b[39m\n\n Name \"Shorter\":\n \u001b[36m\u001b[39m\n\n Name \"Save\":\n \u001b[36m\u001b[39m\n\n Name \"Discard changes\":\n \u001b[36m\u001b[39m\n\n Name \"Start from template\":\n \u001b[36m\u001b[39m\n\n Name \"Generate\":\n \u001b[36m\u001b[39m\n\n Name \"Restore version 1\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n textbox:\n\n Name \"Cover letter\":\n \u001b[36m\u001b[39m\n\n Name \"Additional instructions\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n alert:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n combobox:\n\n Name \"Action\":\n \u001b[36m\u001b[39m\n\n Name \"Tone\":\n \u001b[36m\u001b[39m\n\n Name \"Document language\":\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[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mCover Letter\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mEvery save creates a version, so manually edited text is never overwritten without review.\u001b[0m\n \u001b[36m

\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mContent loaded.\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mWrite\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mPreview\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n\n Name \"AI writing assistant\":\n \u001b[36m\u001b[39m\n\n Name \"Version history\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n banner:\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 heading:\n\n Name \"Cover Letter\":\n \u001b[36m\u001b[39m\n\n Name \"AI writing assistant\":\n \u001b[36m\u001b[39m\n\n Name \"Version history\":\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 Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n group:\n\n Name \"Cover Letter\":\n \u001b[36m\u001b[39m\n\n Name \"AI writing assistant\":\n \u001b[36m\u001b[39m\n\n Name \"Version history\":\n \u001b[36m\u001b[39m\n\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 tablist:\n\n Name \"Letter workspace\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n tab:\n\n Name \"Write\":\n \u001b[36m\u001b[39m\n\n Name \"Preview\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n tabpanel:\n\n Name \"Write\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n button:\n\n Name \"Bold\":\n \u001b[36m\u001b[39m\n\n Name \"Italic\":\n \u001b[36m\u001b[39m\n\n Name \"Underline\":\n \u001b[36m\u001b[39m\n\n Name \"Link\":\n \u001b[36m\u001b[39m\n\n Name \"Improve writing\":\n \u001b[36m\u001b[39m\n\n Name \"Suggest content\":\n \u001b[36m\u001b[39m\n\n Name \"Grammar check\":\n \u001b[36m\u001b[39m\n\n Name \"Shorter\":\n \u001b[36m\u001b[39m\n\n Name \"Save\":\n \u001b[36m\u001b[39m\n\n Name \"Discard changes\":\n \u001b[36m\u001b[39m\n\n Name \"Start from template\":\n \u001b[36m\u001b[39m\n\n Name \"Generate\":\n \u001b[36m\u001b[39m\n\n Name \"Restore version 1\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n textbox:\n\n Name \"Cover letter\":\n \u001b[36m\u001b[39m\n\n Name \"Additional instructions\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n alert:\n\n Name \"\":\n \u001b[36m\u001b[39m\n\n --------------------------------------------------\n combobox:\n\n Name \"Action\":\n \u001b[36m\u001b[39m\n\n Name \"Tone\":\n \u001b[36m\u001b[39m\n\n Name \"Document language\":\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[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mCover Letter\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mEvery save creates a version, so manually edited text is never overwritten without review.\u001b[0m\n \u001b[36m

\u001b[39m\n \u001b[36m
\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mContent loaded.\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mWrite\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[0mPreview\u001b[0m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m\u001b[39m\n \u001b[36m 979 | expect(screen.getByRole(\"region\", { name: copy(\"assetsLetterTextPreview\") })).toHaveTextContent(\"Live desktop draft\");\n | ^\n 980 | expect(editor).toBeVisible();\n 981 | expect(screen.getAllByRole(\"textbox\", { name: copy(\"jobDetailsCoverLetter\") })).toHaveLength(1);\n 982 | expect(screen.queryByRole(\"tablist\", { name: copy(\"assetsLetterWorkspace\") })).not.toBeInTheDocument();\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/application-assets.test.tsx:979:19)\n","name":"C:\\Users\\Connor\\.codex\\worktrees\\direct-roadmap-integration\\Job tracker\\job-tracker-ui\\src\\application-assets.test.tsx","startTime":1793711361049,"status":"failed","summary":""}],"wasInterrupted":false} diff --git a/docs/ui-modernisation/evidence/career/frontend/a3-letter-tablet-red.log b/docs/ui-modernisation/evidence/career/frontend/a3-letter-tablet-red.log new file mode 100644 index 00000000..4b0ca795 --- /dev/null +++ b/docs/ui-modernisation/evidence/career/frontend/a3-letter-tablet-red.log @@ -0,0 +1,515 @@ + +> job-tracker-ui@0.1.0 test +> jest --runInBand --watch=false --runTestsByPath src/application-assets.test.tsx --testNamePattern=letter workspace at --json --outputFile=../docs/ui-modernisation/a3-letter-tablet-red.json + +FAIL src/application-assets.test.tsx (6.949 s) + ● letter workspace at 768px keeps one editor and its preview available without writing + + TestingLibraryElementError: Unable to find an accessible element with the role "region" and name "Letter text preview" + + Here are the accessible roles: + + region: + + Name "Cover Letter": +
+ + Name "AI writing assistant": +
+ + Name "Version history": +
+ + -------------------------------------------------- + banner: + + Name "": +
+ + Name "": +
+ + Name "": +
+ + -------------------------------------------------- + heading: + + Name "Cover Letter": +

+ + Name "AI writing assistant": +

+ + Name "Version history": +

+ + -------------------------------------------------- + paragraph: + + Name "": +

+ + Name "": +

+ + Name "": +

+ + Name "": +

+ + -------------------------------------------------- + group: + + Name "Cover Letter": +

+ + Name "AI writing assistant": +
+ + Name "Version history": +
+ + -------------------------------------------------- + status: + + Name "": + + + Name "": + + + Name "": + + + -------------------------------------------------- + tablist: + + Name "Letter workspace": +
+ + -------------------------------------------------- + tab: + + Name "Write": +