diff --git a/docs/i18n/DATE_WIDGET_LOCALISATION.md b/docs/i18n/DATE_WIDGET_LOCALISATION.md new file mode 100644 index 00000000..d018a050 --- /dev/null +++ b/docs/i18n/DATE_WIDGET_LOCALISATION.md @@ -0,0 +1,21 @@ +# Rendered date widgets and UI language + +11 November 2026. Baseline `d027754d15fadd945e0d9d38e6ca85b50d8dc885`; application source `beb5564223f23e900477955dce244fda72f386c9`, expanded calendar verifier `285d3c88c771054b0ac0b3c95f041339c6cc6ed5` on `codex/a3-ui-10`. + +The rendered Bokmål Edit dialog exposed English date sections and calendar controls through the default LocalizationProvider. DateLocalizationProvider now consumes the live inner application I18nProvider and selects installed date-fns English/Bokmål formatting and MUI picker translations. ClientApp retains its existing outer language/error boundary. Router and form identity survive language changes. Generated-content language stays with the document features. + +The two new component cases failed before the locale binding and passed afterward. The final affected run passed 25 tests in six suites, including real MUI sections, live language changes, existing date/payload/revision checks, navigation, theme and locale-fetch stability. Full lint, final scoped lint and export/build with TypeScript passed. The first build exposed unsupported Testing Library matcher options in the new test; those options were removed before the successful build. + +## Actual widget verification + +`scripts/verify-job-date-widgets.mjs` exercised the exported React application with real MUI widgets. Six finite configurations pair English/light/1440 px mouse interaction and Bokmål/dark/390 px touch interaction in each of Los Angeles, Oslo and Kiritimati. They cover all seven Add/Edit controls, live EN↔NB changes with the unsaved title/date retained, stable detail-read count, local today at a fixed UTC boundary, exact version7 Edit payload and exact calendar-day create payload. The desktop calendar closes on selection; the touch calendar uses its explicit OK action. + +All six journeys and 18 axe scans/captures passed, with zero page errors or unavailable reads. Captures include the open calendar as well as Add/Edit forms. Twelve intercepted fixture writes were verified. External Google Fonts requests were blocked. These are the defined six configurations, with widths/themes/input modes paired by language. Native devices and a full combinatorial matrix remain separate. The two-case pilot and earlier 12-capture run overlap the final six-case run. Its earlier failures were stale locale-dependent dialog selectors, corrected by binding each dialog to its stable title ID. Failed logs/JSON remain with final evidence. The dark touch calendar and light desktop popup were visually inspected. + +Calendar selections and save/create requests used synthetic teacher/school data and intercepted API responses. This verifies the widget-to-payload boundary. Earlier native API/SQLite evidence retains its own source identity and scope. No provider or model was used. + +## Remaining localisation work + +Legacy timestamp-loading/display precision remains tracked in DATE_PICKER_CALENDAR_DAY.md. Other MUI controls still expose English internal labels, including the company Autocomplete's Clear/Open controls in the Bokmål probe. Those need their shared localisation owner and regression evidence. Broader European locale, native-language, device, integrated security and release acceptance remain open. + +Rollback restores the prior provider placement and its default English picker configuration, with affected locale/widget verification required before publication. diff --git a/docs/i18n/DATE_WIDGET_SOURCE_MANIFEST.json b/docs/i18n/DATE_WIDGET_SOURCE_MANIFEST.json new file mode 100644 index 00000000..fe060eaf --- /dev/null +++ b/docs/i18n/DATE_WIDGET_SOURCE_MANIFEST.json @@ -0,0 +1,139 @@ +{ + "sourceContentCommit": "285d3c88c771054b0ac0b3c95f041339c6cc6ed5", + "policy": "LF-normalised source; raw evidence and export hashes. Content binding for offline UI verification; release candidate/image identity remains separate.", + "sources": { + "job-tracker-ui/src/App.tsx": "e0c50ec92954b90cf62b9d8b8e0d5b5802c2408e577e5e255a8d78c3dfdf7135", + "job-tracker-ui/src/ClientApp.tsx": "327cf5f9cf213c4d8146bf6fa2c0c0d20462b71e03ed0d73105823c5f26b0424", + "job-tracker-ui/src/DateLocalizationProvider.tsx": "cb03831c5f2e755585a82935614f8e1b778f563329535b0c9c9a38fb600fcf2c", + "job-tracker-ui/src/i18n/I18nProvider.tsx": "dfa8d95510a7dd872e1b9bbddf9bb4ab31da4d4b5e932b0099397d11e08ad108", + "job-tracker-ui/src/i18n/translations.ts": "a0b706a859264773418ec3f1275332e97add913de65c4d6efaef04b23ae8e1c5", + "job-tracker-ui/src/components/AddJobModal.tsx": "e3b846dc276e8d2a8084bf6e7e670a0639a46eea0788e90afa81722e6028f369", + "job-tracker-ui/src/components/EditJobDialog.tsx": "b6aacbb20f7b924b60c9d8162d7129608cf5af113c7bc2b0bfa68bc685d40430", + "job-tracker-ui/src/date-picker-localisation.test.tsx": "75616ddbe8741628c463d0532656310d6cf96ed71be027690cb54c028cf3108b", + "job-tracker-ui/scripts/verify-job-date-widgets.mjs": "578fbfb24df90406f113ee16352b34aa6a15abdcca7eaf473e8c7a0c49372815", + "job-tracker-ui/package.json": "3745394e406cefa40d30a87e840bccb359be147bac6ffba736e2ae90898a8626", + "job-tracker-ui/package-lock.json": "bf31e90d7af03e8af059db2aaf893925b9e8881a30a1688034ed88ef45d4fcab" + }, + "evidence": { + "docs/i18n/evidence/date-widgets/add-America-Los_Angeles-en.png": "438d9c4a58e0d0cd4310deecc0185e29f8df2c81761282f5a5132354d35baa55", + "docs/i18n/evidence/date-widgets/add-America-Los_Angeles-nb.png": "deca21bc4a1bd9267a601e57176d9ae9cd56cf4adac4246d87fba3b8459f10f9", + "docs/i18n/evidence/date-widgets/add-Europe-Oslo-en.png": "1233effc1a3866f05723da0502bce17acbaed73f8bb0e231686c68c281866891", + "docs/i18n/evidence/date-widgets/add-Europe-Oslo-nb.png": "deca21bc4a1bd9267a601e57176d9ae9cd56cf4adac4246d87fba3b8459f10f9", + "docs/i18n/evidence/date-widgets/add-Pacific-Kiritimati-en.png": "523463c6eb3d5c26794d39e840f3fddf2a25bba4787d3bbbb0aef035c12110ef", + "docs/i18n/evidence/date-widgets/add-Pacific-Kiritimati-nb.png": "deca21bc4a1bd9267a601e57176d9ae9cd56cf4adac4246d87fba3b8459f10f9", + "docs/i18n/evidence/date-widgets/BEFORE-CALENDAR-CAPTURE.json": "6b0839f06250b243276d219862b77a0594475ffd2e3825f1b57ad6c3ead661f4", + "docs/i18n/evidence/date-widgets/BEFORE-CALENDAR-CAPTURE.txt": "85c34f555b2940350ac5e8869c4e28e1a65303c1bdd6a5f4fa32ee65550c40db", + "docs/i18n/evidence/date-widgets/BOKMAL-BEFORE.txt": "507514521f3ffca99b26ec270afcf57706d50f8e955cbce12a270a8141f638f6", + "docs/i18n/evidence/date-widgets/BROWSER.json": "7b349923cf25578e97ab41962a4d0142772377ccd1d4e3976caa9f50e815ac07", + "docs/i18n/evidence/date-widgets/BROWSER.txt": "a10c1ac6f591a167bfb82916290f359c074a99de10b9d62955b2633943615c4f", + "docs/i18n/evidence/date-widgets/BUILD.txt": "acb7f8f6ab9fc0f2fac3ca62bdb1b0915e94b3835fb393fede900e326f6b3028", + "docs/i18n/evidence/date-widgets/calendar-America-Los_Angeles-en.png": "fd0b8100a6e1da2c2bbfd0458be457f5e53af02c3ee9b4269b642de27cc889a2", + "docs/i18n/evidence/date-widgets/calendar-America-Los_Angeles-nb.png": "0a8bc71fc1e6594eb63e2bfaf0e16cf7429064ccd60511324882d66448d14bcf", + "docs/i18n/evidence/date-widgets/calendar-Europe-Oslo-en.png": "0c54b91904908cd3529a12a4be06cab6f121d194f7deab4789666b669626e0e1", + "docs/i18n/evidence/date-widgets/calendar-Europe-Oslo-nb.png": "0e14c3fc57b96540ff895ca83c0c076db87abee3983ffc65cafb571ac883981e", + "docs/i18n/evidence/date-widgets/calendar-Pacific-Kiritimati-en.png": "9d9e1c206d383893d96e62f80c67e39445afe33fc4d684b930c926968a26ccf3", + "docs/i18n/evidence/date-widgets/calendar-Pacific-Kiritimati-nb.png": "0e14c3fc57b96540ff895ca83c0c076db87abee3983ffc65cafb571ac883981e", + "docs/i18n/evidence/date-widgets/edit-America-Los_Angeles-en.png": "ed8f083d2561e0d9e7c4e431847e8a606d461e4de130b1b33359b4e9ef6546f4", + "docs/i18n/evidence/date-widgets/edit-America-Los_Angeles-nb.png": "fd84d04daf9fe2788456e2a62f6bf019cbff0358caef7889ad2c42166cfa1d34", + "docs/i18n/evidence/date-widgets/edit-Europe-Oslo-en.png": "fb79eced4ef8aeb6d6599d9d992ae8e4f854b214fa1762e0567210da11c63fde", + "docs/i18n/evidence/date-widgets/edit-Europe-Oslo-nb.png": "fd84d04daf9fe2788456e2a62f6bf019cbff0358caef7889ad2c42166cfa1d34", + "docs/i18n/evidence/date-widgets/edit-Pacific-Kiritimati-en.png": "528881fc9458ba70557dc4f045589fa3ea804be784a94611dbde8752c467ac92", + "docs/i18n/evidence/date-widgets/edit-Pacific-Kiritimati-nb.png": "fd84d04daf9fe2788456e2a62f6bf019cbff0358caef7889ad2c42166cfa1d34", + "docs/i18n/evidence/date-widgets/FINAL-LINT.txt": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "docs/i18n/evidence/date-widgets/FIRST-BUILD.txt": "829fb16a7d18deb094d837d0d4b95278fd14ad72778eec17545d92d532f06028", + "docs/i18n/evidence/date-widgets/FIRST-PILOT.json": "4fc9bae83fc3a97dffb19066b453cdc018a4739a376ef07dbb6bcaffc9603220", + "docs/i18n/evidence/date-widgets/FIRST-PILOT.txt": "d596af9f36544f3abdd1a1b9a62a8e9a19f25747e05e037c54a2f0f56735e69d", + "docs/i18n/evidence/date-widgets/INITIAL-TESTS.txt": "8972df9b3ffd49ae3f528e6e13e0d6f17e31418f3f29e054bdfd2436ad428d9d", + "docs/i18n/evidence/date-widgets/LINT.txt": "d7e723868fa9cf980c12c65ad307491a162311db40d1f63617b0dfa566b4a6d0", + "docs/i18n/evidence/date-widgets/PILOT.json": "12d2eef862eb6e947c3c9b263e5b72900391546bf8550f8a3833d40b4c0cc515", + "docs/i18n/evidence/date-widgets/PILOT.txt": "5154816d00734a5b23c83763666b9ceac7cd206da666e14f8171f9b32a748a9b", + "docs/i18n/evidence/date-widgets/RED.txt": "b0ab01c37b93b12bdd00d44fa7497f0d0fe21c44740939fb61dd311ee78304b0", + "docs/i18n/evidence/date-widgets/SCRIPT-LINT.txt": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "docs/i18n/evidence/date-widgets/SECOND-PILOT.json": "3acf6576fe44a63dbb5e2b5e6e9c2474f454b26325793ae449d70c3b34c99246", + "docs/i18n/evidence/date-widgets/SECOND-PILOT.txt": "8070c86ae57695db75a9bbfba7180c1b399dfbbb094f0eaebea16d8e9e51200e", + "docs/i18n/evidence/date-widgets/TESTS.txt": "9ca24e8aba05821d9b01cd8a01f0c4ef718caf5fbab28aeeded97039ac3a9437", + "docs/i18n/DATE_WIDGET_LOCALISATION.md": "f327cb04165acbe70084d930adc5af86681622c3945f8c7c876a69afaea11184" + }, + "export": { + "job-tracker-ui/out/404.html": "72e30d3b9ee3fd4130a19f867e5955be376cd9e431895bb6379a1779016ed8ab", + "job-tracker-ui/out/__next.__PAGE__.txt": "c8dd0ec833f803c8affdfd7d003a7d515b57f658e4aba36147476915fbb2d96c", + "job-tracker-ui/out/__next._full.txt": "7fe18a67ad3fcce522792c8f37a0384d024857ed2568ae828644804ef7e89cd3", + "job-tracker-ui/out/__next._tree.txt": "590ca89c962671f90b40c9646423d06404ba7d696f65a4ddd5c9c0f9f6804073", + "job-tracker-ui/out/_next/static/BIErlC84p7XkJNYoDBRWD/_buildManifest.js": "9476e0afd3f9da68a64e6ec58631191fd3eaca62c9f5a377e7517fe9a89e59ea", + "job-tracker-ui/out/_next/static/BIErlC84p7XkJNYoDBRWD/_clientMiddlewareManifest.js": "5483e3295dc35dfe29ea932efc85341c916f10ff78ff5b0e965e003710893a4a", + "job-tracker-ui/out/_next/static/BIErlC84p7XkJNYoDBRWD/_ssgManifest.js": "678f6ce2cb80b1fe72fc67e7412be6e2ab6ada083111b64f7c40d35e3cba5e00", + "job-tracker-ui/out/_next/static/chunks/0--vhwu1kmht5.js": "426fae50ff0485fb6af8e28a7d1751dfaefcb6118a24dab39b3a7099d38c18dd", + "job-tracker-ui/out/_next/static/chunks/0-_aq6ipzcshj.js": "39f90c215bf52aef6274ed3dcc0f8af32e21a37fe8845b3bca0d6ea60da6a8c2", + "job-tracker-ui/out/_next/static/chunks/00sdty8f_wo6_.js": "047077072852a0211c228c75d5e29836ba970771382ba0da4bac9fdd0bfac29f", + "job-tracker-ui/out/_next/static/chunks/021jk107jdn29.js": "aedfd5b422819006c59c634e5907edddb176beaea2d899a5cc9984285bb232d3", + "job-tracker-ui/out/_next/static/chunks/02pclekj6sxrn.js": "8de8b7bb4d26955b3f334c338dc6c2cdef52b134b6be2396e9c5cf85c3657448", + "job-tracker-ui/out/_next/static/chunks/05rgc5zsm9p5i.js": "1da7305ab9d8e95795327cce11a16db4c56d90429d7e1dea4c4088c085f20d69", + "job-tracker-ui/out/_next/static/chunks/0afg9bl7a8pj5.js": "bd0cec651950d5007f84273af5be8d8255806da4db54238f5c512442c7449459", + "job-tracker-ui/out/_next/static/chunks/0ah1fzqmie05a.js": "5c65505a7dcbac63ac71d254e619a4c800943bfb4fa16cd40c10cdbe7e9b6e31", + "job-tracker-ui/out/_next/static/chunks/0b3nrgli_w65x.js": "bf23e1a05a97de3a950e76eb206b2fbbe9003460891ecd5ab091155aa385badc", + "job-tracker-ui/out/_next/static/chunks/0bdt7ln111t48.js": "6184b1a61f22e2a640c17941634fdc75678ce93d142848d9f07f163e0d1fd201", + "job-tracker-ui/out/_next/static/chunks/0cz1d0mv5g_q7.js": "0973c1d64c88adc8e3c950410cb58b288f72118d5965b78049438deb8f2f9683", + "job-tracker-ui/out/_next/static/chunks/0og1crk78cn4a.js": "aa5031605cb2f46a612e94d9d71473f48a71aa4a5acfe8fe5f2dfc66d951ab40", + "job-tracker-ui/out/_next/static/chunks/0pvbhqkwp15b6.js": "f210cc1a8c203de6008b6137c0324afabb33f233c1ab56800fe9e6c963c0c34a", + "job-tracker-ui/out/_next/static/chunks/0q20g9o8x-k8z.js": "3d4d9086985419aa8866b032158196c774acb8bf318f3c8245508c8daa9c5148", + "job-tracker-ui/out/_next/static/chunks/0q_pwu9jxv4-d.js": "42a43b3d7245a413c7c29b4cbe87823037a6dbc637e2e282c92405470e0f575d", + "job-tracker-ui/out/_next/static/chunks/0qxm1h9uqfgpa.js": "a5af3192c76f3b8dac5c17afbe90d96a5c7652810ce69b7f39fbcf1f1231fd8c", + "job-tracker-ui/out/_next/static/chunks/0ta69108309yl.js": "07b8069d13ddaf7aaa24daf1070144a2e98b444ca162b628b8bfb8e1068d2967", + "job-tracker-ui/out/_next/static/chunks/0vc71o0a3bvk-.js": "12a1d8489f5ef9f9cdc09d56b91d881f73228a0c4743a72c6320f253bf638402", + "job-tracker-ui/out/_next/static/chunks/0zep-wknuuxm3.js": "cc13d0dc908a4b047a165a50a226b787ee7707135b3f2c5894aab8cbd618a29c", + "job-tracker-ui/out/_next/static/chunks/1-8ykqf0n88k2.js": "eb208124ec838cb9a9ae366745bd81fba1c35eeceac128c567bbb7977ebb6a2e", + "job-tracker-ui/out/_next/static/chunks/10qxrc5f9nore.js": "512bfc44077703fa4e03e15ca48acf3501231c5e2cb9bf7beb2ec30224fe287b", + "job-tracker-ui/out/_next/static/chunks/1435in_k_-dhc.js": "4757476512d5c4dd25f9264a18b304ed4824b23aff1c09e134fcbff21d9c36b6", + "job-tracker-ui/out/_next/static/chunks/145oicobmjvm7.js": "d6bbbdeed1381652dc7412e5ce673a077579ecd5cee8934cb6b533c814098764", + "job-tracker-ui/out/_next/static/chunks/14e7ovj0s3elm.js": "070567dd4d23fb9fa0b9ba132185a697af6578045d43b2b1c7bbb2a1594d935d", + "job-tracker-ui/out/_next/static/chunks/15saa2mllmdp7.js": "6664972f61e1669d2ca1ed9af467df87d316efeadf59496ce8c68d8c84fd7512", + "job-tracker-ui/out/_next/static/chunks/16lfece6cnlln.js": "716363ba044f30b0e70440756b4e5eafa2d25f2e1628e855e3bc4ab9eabee3d3", + "job-tracker-ui/out/_next/static/chunks/188aj_hr_p4eq.js": "f10e4af24bebfb8b9e7306a5688ef45f07f280c920dc01815ac578fbe18e2182", + "job-tracker-ui/out/_next/static/chunks/19ohoqj_a5joe.js": "20a17b75c133c7b3e389c290ec1bf09395700cda12ea3ab1210592a8b4c2d573", + "job-tracker-ui/out/_next/static/chunks/1avt7t-z_q80r.js": "8cbd919d971eaf46e508f9e6b073a9183a29457c3c42c9566ec74b018894c061", + "job-tracker-ui/out/_next/static/chunks/1ke8pzecwofrg.css": "32e9ab963ebadebcbe2c68dffb24cfbfc8cc24255ad91b48b7941fc777bf7439", + "job-tracker-ui/out/_next/static/chunks/1req80b9jj38r.js": "eee4d2e3789e1215195dba99ad0f09d34f8c83da848322b76054722233e9dae3", + "job-tracker-ui/out/_next/static/chunks/1svx1qnrof8xa.js": "111c502a1ca939f7bf971ed1b3e3cda011b130c313a7f7df742ae4b1e14486ae", + "job-tracker-ui/out/_next/static/chunks/1w3q8yrcjn2jk.js": "365200e241ee9290e93d7c2fdba169f2b0a8e774541e3cbf3f6f2781110fa644", + "job-tracker-ui/out/_next/static/chunks/1xn023_28rgzj.js": "4f7f2108d030a48d039930736c92a55710975dddf419fe673f84d92899b1f575", + "job-tracker-ui/out/_next/static/chunks/1xwc-b795syag.css": "f73c002233f931ca14d0ae58815c47ca9f2659f25b1547a6d1fdca12a2a00b3f", + "job-tracker-ui/out/_next/static/chunks/22wx8--1b9tnq.js": "3f7d8e762371262c6a740b4dac21725b424847319afac46055e97074a99ff5f5", + "job-tracker-ui/out/_next/static/chunks/274f8aifi_wup.js": "bc5bc5617b4acbbbb1c7966322c508bb5554024d78e71e523e27f7f5bba5a8ab", + "job-tracker-ui/out/_next/static/chunks/29jdblthf0w7a.js": "e84b4f7c225d58099aa89999544f7318cb23c0c71f2385c31b3c9181a62ab7f0", + "job-tracker-ui/out/_next/static/chunks/2edynwqicn6ym.js": "c694af15bb117955e6f7f0962f47495b2be017dfdea93b6d4ede4d5e4fcd7efd", + "job-tracker-ui/out/_next/static/chunks/2ha8nlh4rv92e.js": "5cb4b4cee708f35ed54ef6289269fa866afbaa64fd47bf9275ff691664d3132e", + "job-tracker-ui/out/_next/static/chunks/2php_9zkhprrb.js": "4f91e63b1181693e7a3b269b1b24004d9abee13413b8396a916799b8c01620e8", + "job-tracker-ui/out/_next/static/chunks/2pllop_q35dkw.js": "21c9a7c53763010317a2d09460066017e1fd192691e6a0bd83ed20ea6e1fe9dd", + "job-tracker-ui/out/_next/static/chunks/2s2gjr6ro25dj.js": "7489e2ac285a05b563c2bcb4eaf9274bf930f2a7385f17d6d5e6850064b88b10", + "job-tracker-ui/out/_next/static/chunks/2vt8x99fh3ag7.js": "99d883591b1bbcd3c49758bd0bdbbc46af66eae5ecf0a75657fa1585d29d8f4c", + "job-tracker-ui/out/_next/static/chunks/30-q9iimktiql.js": "db89d5da1f101216d7f99e9518dc7f5ed84f8b40ac84a6ea55f73c01bf1aca1b", + "job-tracker-ui/out/_next/static/chunks/315n7snxk3fgw.js": "1993429aafa0753d5e9fd1ca63a4f6079ce7f7f37faa44716191f59c972c4d41", + "job-tracker-ui/out/_next/static/chunks/33at73n-mzpir.js": "1605cc3311cc6ca3b2f44b2e0217fe5441a2799fa32b0b0c94d7634f4861ac83", + "job-tracker-ui/out/_next/static/chunks/357yqeklh7414.js": "0192ab7198ebbe299d34a934c504dd4b562d1cccebb6e9d4c5163930c881b14c", + "job-tracker-ui/out/_next/static/chunks/35pq4ixaltkev.js": "f1e9d53e2481de01d7b04aa938397c2545b7d7dc42ce3d0ac5cd3f1141bda182", + "job-tracker-ui/out/_next/static/chunks/3_4dnl1l3809g.js": "50288c2864a9e8c7ef25c93762edb86e4e617778737b5b5a028c53c5b93d3b70", + "job-tracker-ui/out/_next/static/chunks/3bqn9b34na0b9.js": "f1b8ebcc1b22251c33c9f3a5d11c1f893cad2da2e8744a441e790f7347aa9e73", + "job-tracker-ui/out/_next/static/chunks/3gkylew_qn7cw.js": "7e6c74c81be0c41ab433e36d65b914f62c48f332922e27f7cc953476f4dd78cb", + "job-tracker-ui/out/_next/static/chunks/3kwbf09xml2_g.js": "5d31587f866b3d52004ac4cb50a1c70961cb2fb60253e40d6374ba38ad9bdb9d", + "job-tracker-ui/out/_next/static/chunks/3la4obitihzpv.js": "9a5a57b46db389b98f1fd5baa86eba1a360300dae9d1ff3ffeae7bc3378135b9", + "job-tracker-ui/out/_next/static/chunks/3q4v10rrqy40n.js": "d87ff7b7a0f07d0d92eab3876481eb686a12d9c43d8b92cbe406aefa227a11c1", + "job-tracker-ui/out/_next/static/chunks/3xbcgmkebja05.js": "bb1e98db2657a4b067676ead2ea26172478a79c1b384a9f9fe6588e1481d33ee", + "job-tracker-ui/out/_next/static/chunks/turbopack-25fzg9ay_1ss-.js": "c40f39e993a30c96d6247bb3a7b581538bb046efe8ef8ec07bea3ba32291750f", + "job-tracker-ui/out/_not-found/__next._full.txt": "620a8e0060f623db56f9586c08c20827052d8e170217286b215fa74a263c69d1", + "job-tracker-ui/out/_not-found/__next._not-found/__PAGE__.txt": "01c749ccbd567d270280feb8ef04173ce82ac43db9599844101d7b7b12d0a2ef", + "job-tracker-ui/out/_not-found/__next._tree.txt": "bcf0e8ae1b690a70bdfed9f0178f337f86be732f4ed98d56a9d7ec0b92e944ee", + "job-tracker-ui/out/_not-found.html": "72e30d3b9ee3fd4130a19f867e5955be376cd9e431895bb6379a1779016ed8ab", + "job-tracker-ui/out/_not-found.txt": "620a8e0060f623db56f9586c08c20827052d8e170217286b215fa74a263c69d1", + "job-tracker-ui/out/favicon.ico": "8d4923e2c487805ea9f852a685b2cf0fb10512ded8290d2a5c37d1cc8fd0702a", + "job-tracker-ui/out/favicon.svg": "63ecf8f37f8bb146ecfae3917187c6b692d4e801641e8a314486a4007912f3a3", + "job-tracker-ui/out/index.html": "71e631255ccd0b7145f7737107f5c056be15656487194a732574e4c832a178a2", + "job-tracker-ui/out/index.txt": "7fe18a67ad3fcce522792c8f37a0384d024857ed2568ae828644804ef7e89cd3", + "job-tracker-ui/out/logo192.png": "bc652031597fabd19b9f14e22a71f809490d218037521b3b64d013418c1390b4", + "job-tracker-ui/out/logo512.png": "5129e9bc1ba812b711fd9a646d3a38a906d365a26ee685df183b8752458944d4", + "job-tracker-ui/out/manifest.json": "2667ce63c2e0835b7007239816a5597639321d333da396a78638dfa9e8a7c935", + "job-tracker-ui/out/mockups/dashboard.svg": "318be3adb1324c26eb30f05572a29528a3e38331c6a604652eef75b54f8c29dc", + "job-tracker-ui/out/mockups/pipeline.svg": "db2ef41faabeb90e7ce85413e168581686c54535d970fc7d8deda3888a479de4", + "job-tracker-ui/out/mockups/workspace.svg": "9bbab22349147c7b01d6e18c93c622a6f8aed6dedaf23715189ab54d60e1ddbd", + "job-tracker-ui/out/robots.txt": "e5ab0d231eeb01b4a982d1c79a6729cac9797ad15a69247e4f28ba6afc149b4c" + } +} diff --git a/docs/i18n/evidence/date-widgets/BEFORE-CALENDAR-CAPTURE.json b/docs/i18n/evidence/date-widgets/BEFORE-CALENDAR-CAPTURE.json new file mode 100644 index 00000000..90cf8815 --- /dev/null +++ b/docs/i18n/evidence/date-widgets/BEFORE-CALENDAR-CAPTURE.json @@ -0,0 +1,516 @@ +{ + "journeys": [ + { + "zone": "America/Los_Angeles", + "language": "en", + "width": 1440, + "touch": false, + "theme": "light", + "sevenCalendarSelections": "PASS", + "localeDraftRetention": "PASS", + "localToday": 22, + "fixtureSaveCreate": "PASS" + }, + { + "zone": "America/Los_Angeles", + "language": "nb", + "width": 390, + "touch": true, + "theme": "dark", + "sevenCalendarSelections": "PASS", + "localeDraftRetention": "PASS", + "localToday": 22, + "fixtureSaveCreate": "PASS" + }, + { + "zone": "Europe/Oslo", + "language": "en", + "width": 1440, + "touch": false, + "theme": "light", + "sevenCalendarSelections": "PASS", + "localeDraftRetention": "PASS", + "localToday": 23, + "fixtureSaveCreate": "PASS" + }, + { + "zone": "Europe/Oslo", + "language": "nb", + "width": 390, + "touch": true, + "theme": "dark", + "sevenCalendarSelections": "PASS", + "localeDraftRetention": "PASS", + "localToday": 23, + "fixtureSaveCreate": "PASS" + }, + { + "zone": "Pacific/Kiritimati", + "language": "en", + "width": 1440, + "touch": false, + "theme": "light", + "sevenCalendarSelections": "PASS", + "localeDraftRetention": "PASS", + "localToday": 23, + "fixtureSaveCreate": "PASS" + }, + { + "zone": "Pacific/Kiritimati", + "language": "nb", + "width": 390, + "touch": true, + "theme": "dark", + "sevenCalendarSelections": "PASS", + "localeDraftRetention": "PASS", + "localToday": 23, + "fixtureSaveCreate": "PASS" + } + ], + "captures": [ + { + "zone": "America/Los_Angeles", + "language": "en", + "state": "edit", + "violations": [] + }, + { + "zone": "America/Los_Angeles", + "language": "en", + "state": "add", + "violations": [] + }, + { + "zone": "America/Los_Angeles", + "language": "nb", + "state": "edit", + "violations": [] + }, + { + "zone": "America/Los_Angeles", + "language": "nb", + "state": "add", + "violations": [] + }, + { + "zone": "Europe/Oslo", + "language": "en", + "state": "edit", + "violations": [] + }, + { + "zone": "Europe/Oslo", + "language": "en", + "state": "add", + "violations": [] + }, + { + "zone": "Europe/Oslo", + "language": "nb", + "state": "edit", + "violations": [] + }, + { + "zone": "Europe/Oslo", + "language": "nb", + "state": "add", + "violations": [] + }, + { + "zone": "Pacific/Kiritimati", + "language": "en", + "state": "edit", + "violations": [] + }, + { + "zone": "Pacific/Kiritimati", + "language": "en", + "state": "add", + "violations": [] + }, + { + "zone": "Pacific/Kiritimati", + "language": "nb", + "state": "edit", + "violations": [] + }, + { + "zone": "Pacific/Kiritimati", + "language": "nb", + "state": "add", + "violations": [] + } + ], + "writes": [ + { + "zone": "America/Los_Angeles", + "language": "en", + "method": "PUT", + "body": { + "expectedVersion": 7, + "jobTitle": "Retain teacher draft", + "companyId": 1, + "status": "Applied", + "statusChangedAt": null, + "responseReceived": true, + "responseDate": "2026-11-24", + "location": null, + "salary": null, + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": "2026-11-24", + "notes": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "coverLetterText": null, + "dateApplied": "2026-11-24", + "jobUrl": null + } + }, + { + "zone": "America/Los_Angeles", + "language": "en", + "method": "POST", + "body": { + "jobTitle": "Teacher application", + "companyId": 1, + "status": "Saved", + "location": "", + "salary": "", + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": null, + "jobUrl": "", + "source": null, + "countryCode": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "notes": "", + "coverLetterText": null, + "dateApplied": "2026-11-24" + } + }, + { + "zone": "America/Los_Angeles", + "language": "nb", + "method": "PUT", + "body": { + "expectedVersion": 7, + "jobTitle": "Retain teacher draft", + "companyId": 1, + "status": "Applied", + "statusChangedAt": null, + "responseReceived": true, + "responseDate": "2026-11-24", + "location": null, + "salary": null, + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": "2026-11-24", + "notes": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "coverLetterText": null, + "dateApplied": "2026-11-24", + "jobUrl": null + } + }, + { + "zone": "America/Los_Angeles", + "language": "nb", + "method": "POST", + "body": { + "jobTitle": "Teacher application", + "companyId": 1, + "status": "Saved", + "location": "", + "salary": "", + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": null, + "jobUrl": "", + "source": null, + "countryCode": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "notes": "", + "coverLetterText": null, + "dateApplied": "2026-11-24" + } + }, + { + "zone": "Europe/Oslo", + "language": "en", + "method": "PUT", + "body": { + "expectedVersion": 7, + "jobTitle": "Retain teacher draft", + "companyId": 1, + "status": "Applied", + "statusChangedAt": null, + "responseReceived": true, + "responseDate": "2026-11-24", + "location": null, + "salary": null, + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": "2026-11-24", + "notes": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "coverLetterText": null, + "dateApplied": "2026-11-24", + "jobUrl": null + } + }, + { + "zone": "Europe/Oslo", + "language": "en", + "method": "POST", + "body": { + "jobTitle": "Teacher application", + "companyId": 1, + "status": "Saved", + "location": "", + "salary": "", + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": null, + "jobUrl": "", + "source": null, + "countryCode": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "notes": "", + "coverLetterText": null, + "dateApplied": "2026-11-24" + } + }, + { + "zone": "Europe/Oslo", + "language": "nb", + "method": "PUT", + "body": { + "expectedVersion": 7, + "jobTitle": "Retain teacher draft", + "companyId": 1, + "status": "Applied", + "statusChangedAt": null, + "responseReceived": true, + "responseDate": "2026-11-24", + "location": null, + "salary": null, + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": "2026-11-24", + "notes": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "coverLetterText": null, + "dateApplied": "2026-11-24", + "jobUrl": null + } + }, + { + "zone": "Europe/Oslo", + "language": "nb", + "method": "POST", + "body": { + "jobTitle": "Teacher application", + "companyId": 1, + "status": "Saved", + "location": "", + "salary": "", + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": null, + "jobUrl": "", + "source": null, + "countryCode": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "notes": "", + "coverLetterText": null, + "dateApplied": "2026-11-24" + } + }, + { + "zone": "Pacific/Kiritimati", + "language": "en", + "method": "PUT", + "body": { + "expectedVersion": 7, + "jobTitle": "Retain teacher draft", + "companyId": 1, + "status": "Applied", + "statusChangedAt": null, + "responseReceived": true, + "responseDate": "2026-11-24", + "location": null, + "salary": null, + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": "2026-11-24", + "notes": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "coverLetterText": null, + "dateApplied": "2026-11-24", + "jobUrl": null + } + }, + { + "zone": "Pacific/Kiritimati", + "language": "en", + "method": "POST", + "body": { + "jobTitle": "Teacher application", + "companyId": 1, + "status": "Saved", + "location": "", + "salary": "", + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": null, + "jobUrl": "", + "source": null, + "countryCode": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "notes": "", + "coverLetterText": null, + "dateApplied": "2026-11-24" + } + }, + { + "zone": "Pacific/Kiritimati", + "language": "nb", + "method": "PUT", + "body": { + "expectedVersion": 7, + "jobTitle": "Retain teacher draft", + "companyId": 1, + "status": "Applied", + "statusChangedAt": null, + "responseReceived": true, + "responseDate": "2026-11-24", + "location": null, + "salary": null, + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": "2026-11-24", + "notes": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "coverLetterText": null, + "dateApplied": "2026-11-24", + "jobUrl": null + } + }, + { + "zone": "Pacific/Kiritimati", + "language": "nb", + "method": "POST", + "body": { + "jobTitle": "Teacher application", + "companyId": 1, + "status": "Saved", + "location": "", + "salary": "", + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": null, + "jobUrl": "", + "source": null, + "countryCode": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "notes": "", + "coverLetterText": null, + "dateApplied": "2026-11-24" + } + } + ], + "errors": [], + "unavailableReads": [], + "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" + ] +} \ No newline at end of file diff --git a/docs/i18n/evidence/date-widgets/BEFORE-CALENDAR-CAPTURE.txt b/docs/i18n/evidence/date-widgets/BEFORE-CALENDAR-CAPTURE.txt new file mode 100644 index 00000000..231eca33 --- /dev/null +++ b/docs/i18n/evidence/date-widgets/BEFORE-CALENDAR-CAPTURE.txt @@ -0,0 +1,7 @@ +Checking America-Los_Angeles-en +Checking America-Los_Angeles-nb +Checking Europe-Oslo-en +Checking Europe-Oslo-nb +Checking Pacific-Kiritimati-en +Checking Pacific-Kiritimati-nb +PASS 6 real-widget journeys, 12 axe captures, 12 intercepted fixture writes diff --git a/docs/i18n/evidence/date-widgets/BOKMAL-BEFORE.txt b/docs/i18n/evidence/date-widgets/BOKMAL-BEFORE.txt new file mode 100644 index 00000000..6a69e0ba --- /dev/null +++ b/docs/i18n/evidence/date-widgets/BOKMAL-BEFORE.txt @@ -0,0 +1,235 @@ +[ + { + tag: 'INPUT', + role: 'combobox', + label: null, + value: 'Synthetic school', + text: '' + }, + { tag: 'BUTTON', role: null, label: 'Clear', value: '', text: '' }, + { tag: 'BUTTON', role: null, label: 'Open', value: '', text: '' }, + { tag: 'INPUT', role: null, label: null, value: 'Teacher', text: '' }, + { + tag: 'DIV', + role: 'group', + label: null, + value: undefined, + text: '11/23/2026Søkt dato' + }, + { + tag: 'SPAN', + role: 'spinbutton', + label: 'Month', + value: undefined, + text: '11' + }, + { + tag: 'SPAN', + role: 'spinbutton', + label: 'Day', + value: undefined, + text: '23' + }, + { + tag: 'SPAN', + role: 'spinbutton', + label: 'Year', + value: undefined, + text: '2026' + }, + { + tag: 'BUTTON', + role: null, + label: 'Choose date, selected date is Nov 23, 2026', + value: '', + text: '' + }, + { + tag: 'INPUT', + role: null, + label: null, + value: '11/23/2026', + text: '' + }, + { tag: 'INPUT', role: null, label: null, value: '', text: '' }, + { tag: 'INPUT', role: null, label: null, value: 'Applied', text: '' }, + { + tag: 'DIV', + role: 'group', + label: null, + value: undefined, + text: '11/11/2026Status endret' + }, + { + tag: 'SPAN', + role: 'spinbutton', + label: 'Month', + value: undefined, + text: '11' + }, + { + tag: 'SPAN', + role: 'spinbutton', + label: 'Day', + value: undefined, + text: '11' + }, + { + tag: 'SPAN', + role: 'spinbutton', + label: 'Year', + value: undefined, + text: '2026' + }, + { + tag: 'BUTTON', + role: null, + label: 'Choose date, selected date is Nov 11, 2026', + value: '', + text: '' + }, + { + tag: 'INPUT', + role: null, + label: null, + value: '11/11/2026', + text: '' + }, + { tag: 'INPUT', role: null, label: null, value: 'on', text: '' }, + { + tag: 'DIV', + role: 'group', + label: null, + value: undefined, + text: '11/23/2026Svar mottatt dato' + }, + { + tag: 'SPAN', + role: 'spinbutton', + label: 'Month', + value: undefined, + text: '11' + }, + { + tag: 'SPAN', + role: 'spinbutton', + label: 'Day', + value: undefined, + text: '23' + }, + { + tag: 'SPAN', + role: 'spinbutton', + label: 'Year', + value: undefined, + text: '2026' + }, + { + tag: 'BUTTON', + role: null, + label: 'Choose date, selected date is Nov 23, 2026', + value: '', + text: '' + }, + { + tag: 'INPUT', + role: null, + label: null, + value: '11/23/2026', + text: '' + }, + { tag: 'INPUT', role: null, label: null, value: '', text: '' }, + { + tag: 'DIV', + role: 'group', + label: null, + value: undefined, + text: '11/23/2026Følg opp den' + }, + { + tag: 'SPAN', + role: 'spinbutton', + label: 'Month', + value: undefined, + text: '11' + }, + { + tag: 'SPAN', + role: 'spinbutton', + label: 'Day', + value: undefined, + text: '23' + }, + { + tag: 'SPAN', + role: 'spinbutton', + label: 'Year', + value: undefined, + text: '2026' + }, + { + tag: 'BUTTON', + role: null, + label: 'Choose date, selected date is Nov 23, 2026', + value: '', + text: '' + }, + { + tag: 'INPUT', + role: null, + label: null, + value: '11/23/2026', + text: '' + }, + { tag: 'INPUT', role: null, label: null, value: '', text: '' }, + { tag: 'INPUT', role: null, label: null, value: '', text: '' }, + { tag: 'INPUT', role: null, label: null, value: '', text: '' }, + { tag: 'INPUT', role: null, label: null, value: '', text: '' }, + { tag: 'INPUT', role: null, label: null, value: '', text: '' }, + { + tag: 'DIV', + role: 'group', + label: null, + value: undefined, + text: '11/23/2026Frist' + }, + { + tag: 'SPAN', + role: 'spinbutton', + label: 'Month', + value: undefined, + text: '11' + }, + { + tag: 'SPAN', + role: 'spinbutton', + label: 'Day', + value: undefined, + text: '23' + }, + { + tag: 'SPAN', + role: 'spinbutton', + label: 'Year', + value: undefined, + text: '2026' + }, + { + tag: 'BUTTON', + role: null, + label: 'Choose date, selected date is Nov 23, 2026', + value: '', + text: '' + }, + { + tag: 'INPUT', + role: null, + label: null, + value: '11/23/2026', + text: '' + }, + { tag: 'INPUT', role: null, label: null, value: '', text: '' }, + { tag: 'INPUT', role: 'combobox', label: null, value: '', text: '' }, + { tag: 'BUTTON', role: null, label: null, value: '', text: 'Avbryt' }, + { tag: 'BUTTON', role: null, label: null, value: '', text: 'Lagre' } +] diff --git a/docs/i18n/evidence/date-widgets/BROWSER.json b/docs/i18n/evidence/date-widgets/BROWSER.json new file mode 100644 index 00000000..78e2caaa --- /dev/null +++ b/docs/i18n/evidence/date-widgets/BROWSER.json @@ -0,0 +1,552 @@ +{ + "journeys": [ + { + "zone": "America/Los_Angeles", + "language": "en", + "width": 1440, + "touch": false, + "theme": "light", + "sevenCalendarSelections": "PASS", + "localeDraftRetention": "PASS", + "localToday": 22, + "fixtureSaveCreate": "PASS" + }, + { + "zone": "America/Los_Angeles", + "language": "nb", + "width": 390, + "touch": true, + "theme": "dark", + "sevenCalendarSelections": "PASS", + "localeDraftRetention": "PASS", + "localToday": 22, + "fixtureSaveCreate": "PASS" + }, + { + "zone": "Europe/Oslo", + "language": "en", + "width": 1440, + "touch": false, + "theme": "light", + "sevenCalendarSelections": "PASS", + "localeDraftRetention": "PASS", + "localToday": 23, + "fixtureSaveCreate": "PASS" + }, + { + "zone": "Europe/Oslo", + "language": "nb", + "width": 390, + "touch": true, + "theme": "dark", + "sevenCalendarSelections": "PASS", + "localeDraftRetention": "PASS", + "localToday": 23, + "fixtureSaveCreate": "PASS" + }, + { + "zone": "Pacific/Kiritimati", + "language": "en", + "width": 1440, + "touch": false, + "theme": "light", + "sevenCalendarSelections": "PASS", + "localeDraftRetention": "PASS", + "localToday": 23, + "fixtureSaveCreate": "PASS" + }, + { + "zone": "Pacific/Kiritimati", + "language": "nb", + "width": 390, + "touch": true, + "theme": "dark", + "sevenCalendarSelections": "PASS", + "localeDraftRetention": "PASS", + "localToday": 23, + "fixtureSaveCreate": "PASS" + } + ], + "captures": [ + { + "zone": "America/Los_Angeles", + "language": "en", + "state": "calendar", + "violations": [] + }, + { + "zone": "America/Los_Angeles", + "language": "en", + "state": "edit", + "violations": [] + }, + { + "zone": "America/Los_Angeles", + "language": "en", + "state": "add", + "violations": [] + }, + { + "zone": "America/Los_Angeles", + "language": "nb", + "state": "calendar", + "violations": [] + }, + { + "zone": "America/Los_Angeles", + "language": "nb", + "state": "edit", + "violations": [] + }, + { + "zone": "America/Los_Angeles", + "language": "nb", + "state": "add", + "violations": [] + }, + { + "zone": "Europe/Oslo", + "language": "en", + "state": "calendar", + "violations": [] + }, + { + "zone": "Europe/Oslo", + "language": "en", + "state": "edit", + "violations": [] + }, + { + "zone": "Europe/Oslo", + "language": "en", + "state": "add", + "violations": [] + }, + { + "zone": "Europe/Oslo", + "language": "nb", + "state": "calendar", + "violations": [] + }, + { + "zone": "Europe/Oslo", + "language": "nb", + "state": "edit", + "violations": [] + }, + { + "zone": "Europe/Oslo", + "language": "nb", + "state": "add", + "violations": [] + }, + { + "zone": "Pacific/Kiritimati", + "language": "en", + "state": "calendar", + "violations": [] + }, + { + "zone": "Pacific/Kiritimati", + "language": "en", + "state": "edit", + "violations": [] + }, + { + "zone": "Pacific/Kiritimati", + "language": "en", + "state": "add", + "violations": [] + }, + { + "zone": "Pacific/Kiritimati", + "language": "nb", + "state": "calendar", + "violations": [] + }, + { + "zone": "Pacific/Kiritimati", + "language": "nb", + "state": "edit", + "violations": [] + }, + { + "zone": "Pacific/Kiritimati", + "language": "nb", + "state": "add", + "violations": [] + } + ], + "writes": [ + { + "zone": "America/Los_Angeles", + "language": "en", + "method": "PUT", + "body": { + "expectedVersion": 7, + "jobTitle": "Retain teacher draft", + "companyId": 1, + "status": "Applied", + "statusChangedAt": null, + "responseReceived": true, + "responseDate": "2026-11-24", + "location": null, + "salary": null, + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": "2026-11-24", + "notes": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "coverLetterText": null, + "dateApplied": "2026-11-24", + "jobUrl": null + } + }, + { + "zone": "America/Los_Angeles", + "language": "en", + "method": "POST", + "body": { + "jobTitle": "Teacher application", + "companyId": 1, + "status": "Saved", + "location": "", + "salary": "", + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": null, + "jobUrl": "", + "source": null, + "countryCode": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "notes": "", + "coverLetterText": null, + "dateApplied": "2026-11-24" + } + }, + { + "zone": "America/Los_Angeles", + "language": "nb", + "method": "PUT", + "body": { + "expectedVersion": 7, + "jobTitle": "Retain teacher draft", + "companyId": 1, + "status": "Applied", + "statusChangedAt": null, + "responseReceived": true, + "responseDate": "2026-11-24", + "location": null, + "salary": null, + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": "2026-11-24", + "notes": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "coverLetterText": null, + "dateApplied": "2026-11-24", + "jobUrl": null + } + }, + { + "zone": "America/Los_Angeles", + "language": "nb", + "method": "POST", + "body": { + "jobTitle": "Teacher application", + "companyId": 1, + "status": "Saved", + "location": "", + "salary": "", + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": null, + "jobUrl": "", + "source": null, + "countryCode": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "notes": "", + "coverLetterText": null, + "dateApplied": "2026-11-24" + } + }, + { + "zone": "Europe/Oslo", + "language": "en", + "method": "PUT", + "body": { + "expectedVersion": 7, + "jobTitle": "Retain teacher draft", + "companyId": 1, + "status": "Applied", + "statusChangedAt": null, + "responseReceived": true, + "responseDate": "2026-11-24", + "location": null, + "salary": null, + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": "2026-11-24", + "notes": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "coverLetterText": null, + "dateApplied": "2026-11-24", + "jobUrl": null + } + }, + { + "zone": "Europe/Oslo", + "language": "en", + "method": "POST", + "body": { + "jobTitle": "Teacher application", + "companyId": 1, + "status": "Saved", + "location": "", + "salary": "", + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": null, + "jobUrl": "", + "source": null, + "countryCode": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "notes": "", + "coverLetterText": null, + "dateApplied": "2026-11-24" + } + }, + { + "zone": "Europe/Oslo", + "language": "nb", + "method": "PUT", + "body": { + "expectedVersion": 7, + "jobTitle": "Retain teacher draft", + "companyId": 1, + "status": "Applied", + "statusChangedAt": null, + "responseReceived": true, + "responseDate": "2026-11-24", + "location": null, + "salary": null, + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": "2026-11-24", + "notes": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "coverLetterText": null, + "dateApplied": "2026-11-24", + "jobUrl": null + } + }, + { + "zone": "Europe/Oslo", + "language": "nb", + "method": "POST", + "body": { + "jobTitle": "Teacher application", + "companyId": 1, + "status": "Saved", + "location": "", + "salary": "", + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": null, + "jobUrl": "", + "source": null, + "countryCode": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "notes": "", + "coverLetterText": null, + "dateApplied": "2026-11-24" + } + }, + { + "zone": "Pacific/Kiritimati", + "language": "en", + "method": "PUT", + "body": { + "expectedVersion": 7, + "jobTitle": "Retain teacher draft", + "companyId": 1, + "status": "Applied", + "statusChangedAt": null, + "responseReceived": true, + "responseDate": "2026-11-24", + "location": null, + "salary": null, + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": "2026-11-24", + "notes": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "coverLetterText": null, + "dateApplied": "2026-11-24", + "jobUrl": null + } + }, + { + "zone": "Pacific/Kiritimati", + "language": "en", + "method": "POST", + "body": { + "jobTitle": "Teacher application", + "companyId": 1, + "status": "Saved", + "location": "", + "salary": "", + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": null, + "jobUrl": "", + "source": null, + "countryCode": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "notes": "", + "coverLetterText": null, + "dateApplied": "2026-11-24" + } + }, + { + "zone": "Pacific/Kiritimati", + "language": "nb", + "method": "PUT", + "body": { + "expectedVersion": 7, + "jobTitle": "Retain teacher draft", + "companyId": 1, + "status": "Applied", + "statusChangedAt": null, + "responseReceived": true, + "responseDate": "2026-11-24", + "location": null, + "salary": null, + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": "2026-11-24", + "notes": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "coverLetterText": null, + "dateApplied": "2026-11-24", + "jobUrl": null + } + }, + { + "zone": "Pacific/Kiritimati", + "language": "nb", + "method": "POST", + "body": { + "jobTitle": "Teacher application", + "companyId": 1, + "status": "Saved", + "location": "", + "salary": "", + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": null, + "jobUrl": "", + "source": null, + "countryCode": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "notes": "", + "coverLetterText": null, + "dateApplied": "2026-11-24" + } + } + ], + "errors": [], + "unavailableReads": [], + "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" + ] +} \ No newline at end of file diff --git a/docs/i18n/evidence/date-widgets/BROWSER.txt b/docs/i18n/evidence/date-widgets/BROWSER.txt new file mode 100644 index 00000000..e6bf4e7f --- /dev/null +++ b/docs/i18n/evidence/date-widgets/BROWSER.txt @@ -0,0 +1,7 @@ +Checking America-Los_Angeles-en +Checking America-Los_Angeles-nb +Checking Europe-Oslo-en +Checking Europe-Oslo-nb +Checking Pacific-Kiritimati-en +Checking Pacific-Kiritimati-nb +PASS 6 real-widget journeys, 18 axe captures, 12 intercepted fixture writes diff --git a/docs/i18n/evidence/date-widgets/BUILD.txt b/docs/i18n/evidence/date-widgets/BUILD.txt new file mode 100644 index 00000000..a1e3d038 --- /dev/null +++ b/docs/i18n/evidence/date-widgets/BUILD.txt @@ -0,0 +1,23 @@ + +> job-tracker-ui@0.1.0 build +> node --max-old-space-size=4096 ./node_modules/next/dist/bin/next build + +▲ Next.js 16.4.1 (Turbopack) +✓ Running next.config.js took 24ms + + Creating an optimized production build ... +✓ Compiled successfully in 392ms + Running TypeScript ... + Finished TypeScript in 4.6s ... + Collecting page data using 4 workers ... + Generating static pages using 4 workers (0/3) ... +✓ Generating static pages using 4 workers (3/3) in 804ms + Finalizing page optimization ... + +Route (app) +┌ ○ / +└ ○ /_not-found + + +○ (Static) prerendered as static content + diff --git a/docs/i18n/evidence/date-widgets/FINAL-LINT.txt b/docs/i18n/evidence/date-widgets/FINAL-LINT.txt new file mode 100644 index 00000000..e69de29b diff --git a/docs/i18n/evidence/date-widgets/FIRST-BUILD.txt b/docs/i18n/evidence/date-widgets/FIRST-BUILD.txt new file mode 100644 index 00000000..721f4fd6 --- /dev/null +++ b/docs/i18n/evidence/date-widgets/FIRST-BUILD.txt @@ -0,0 +1,52 @@ + +> job-tracker-ui@0.1.0 build +> node --max-old-space-size=4096 ./node_modules/next/dist/bin/next build + +▲ Next.js 16.4.1 (Turbopack) +✓ Running next.config.js took 26ms + + Creating an optimized production build ... +✓ Compiled successfully in 975ms + Running TypeScript ... +src/date-picker-localisation.test.tsx(24,56): error TS2769: No overload matches this call. + Overload 1 of 2, '(role: ByRoleMatcher, options?: ByRoleOptions | undefined): HTMLElement', gave the following error. + Object literal may only specify known properties, and 'exact' does not exist in type 'ByRoleOptions'. + Overload 2 of 2, '(role: ByRoleMatcher, options?: ByRoleOptions | undefined): HTMLElement', gave the following error. + Object literal may only specify known properties, and 'exact' does not exist in type 'ByRoleOptions'. +src/date-picker-localisation.test.tsx(25,58): error TS2769: No overload matches this call. + Overload 1 of 2, '(role: ByRoleMatcher, options?: ByRoleOptions | undefined): HTMLElement', gave the following error. + Object literal may only specify known properties, and 'exact' does not exist in type 'ByRoleOptions'. + Overload 2 of 2, '(role: ByRoleMatcher, options?: ByRoleOptions | undefined): HTMLElement', gave the following error. + Object literal may only specify known properties, and 'exact' does not exist in type 'ByRoleOptions'. +src/date-picker-localisation.test.tsx(26,55): error TS2769: No overload matches this call. + Overload 1 of 2, '(role: ByRoleMatcher, options?: ByRoleOptions | undefined): HTMLElement', gave the following error. + Object literal may only specify known properties, and 'exact' does not exist in type 'ByRoleOptions'. + Overload 2 of 2, '(role: ByRoleMatcher, options?: ByRoleOptions | undefined): HTMLElement', gave the following error. + Object literal may only specify known properties, and 'exact' does not exist in type 'ByRoleOptions'. +src/date-picker-localisation.test.tsx(35,56): error TS2769: No overload matches this call. + Overload 1 of 2, '(role: ByRoleMatcher, options?: ByRoleOptions | undefined): HTMLElement', gave the following error. + Object literal may only specify known properties, and 'exact' does not exist in type 'ByRoleOptions'. + Overload 2 of 2, '(role: ByRoleMatcher, options?: ByRoleOptions | undefined): HTMLElement', gave the following error. + Object literal may only specify known properties, and 'exact' does not exist in type 'ByRoleOptions'. +src/date-picker-localisation.test.tsx(36,64): error TS2769: No overload matches this call. + Overload 1 of 2, '(role: ByRoleMatcher, options?: ByRoleOptions | undefined): HTMLElement', gave the following error. + Object literal may only specify known properties, and 'exact' does not exist in type 'ByRoleOptions'. + Overload 2 of 2, '(role: ByRoleMatcher, options?: ByRoleOptions | undefined): HTMLElement', gave the following error. + Object literal may only specify known properties, and 'exact' does not exist in type 'ByRoleOptions'. +src/date-picker-localisation.test.tsx(37,56): error TS2769: No overload matches this call. + Overload 1 of 2, '(role: ByRoleMatcher, options?: ByRoleOptions | undefined): HTMLElement', gave the following error. + Object literal may only specify known properties, and 'exact' does not exist in type 'ByRoleOptions'. + Overload 2 of 2, '(role: ByRoleMatcher, options?: ByRoleOptions | undefined): HTMLElement', gave the following error. + Object literal may only specify known properties, and 'exact' does not exist in type 'ByRoleOptions'. +src/date-picker-localisation.test.tsx(39,65): error TS2769: No overload matches this call. + Overload 1 of 2, '(role: ByRoleMatcher, options?: ByRoleOptions | undefined): HTMLElement', gave the following error. + Object literal may only specify known properties, and 'exact' does not exist in type 'ByRoleOptions'. + Overload 2 of 2, '(role: ByRoleMatcher, options?: ByRoleOptions | undefined): HTMLElement', gave the following error. + Object literal may only specify known properties, and 'exact' does not exist in type 'ByRoleOptions'. +src/date-picker-localisation.test.tsx(40,56): error TS2769: No overload matches this call. + Overload 1 of 2, '(role: ByRoleMatcher, options?: ByRoleOptions | undefined): HTMLElement', gave the following error. + Object literal may only specify known properties, and 'exact' does not exist in type 'ByRoleOptions'. + Overload 2 of 2, '(role: ByRoleMatcher, options?: ByRoleOptions | undefined): HTMLElement', gave the following error. + Object literal may only specify known properties, and 'exact' does not exist in type 'ByRoleOptions'. +Failed to type check. + diff --git a/docs/i18n/evidence/date-widgets/FIRST-PILOT.json b/docs/i18n/evidence/date-widgets/FIRST-PILOT.json new file mode 100644 index 00000000..5823c157 --- /dev/null +++ b/docs/i18n/evidence/date-widgets/FIRST-PILOT.json @@ -0,0 +1,10 @@ +{ + "journeys": [], + "captures": [], + "writes": [], + "errors": [], + "unavailableReads": [], + "blockedExternal": [ + "https://fonts.googleapis.com" + ] +} \ No newline at end of file diff --git a/docs/i18n/evidence/date-widgets/FIRST-PILOT.txt b/docs/i18n/evidence/date-widgets/FIRST-PILOT.txt new file mode 100644 index 00000000..b6886a76 --- /dev/null +++ b/docs/i18n/evidence/date-widgets/FIRST-PILOT.txt @@ -0,0 +1,136 @@ +Checking America-Los_Angeles-en +node:internal/modules/run_main:107 + triggerUncaughtException( + ^ + +ExpectError: expect(locator).toHaveText(expected) failed + +Locator: getByRole('dialog', { name: 'Edit job', exact: true }).getByRole('group', { name: 'Frist', exact: true }).getByRole('spinbutton', { name: 'Dag', exact: true }) +Expected: "23" +Timeout: 5000ms +Error: element(s) not found + +Call log: + - Expect "to.have.text" with timeout 5000ms + - waiting for getByRole('dialog', { name: 'Edit job', exact: true }).getByRole('group', { name: 'Frist', exact: true }).getByRole('spinbutton', { name: 'Dag', exact: true }) + + at captureRawStack (C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\job-tracker-ui\node_modules\playwright-core\lib\coreBundle.js:9681:17) + at callMatcherAsStep (C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\job-tracker-ui\node_modules\playwright\lib\matchers\expect.js:13310:57) + at Object.toHaveText (C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\job-tracker-ui\node_modules\playwright\lib\matchers\expect.js:13300:23) + at assertDay (C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\job-tracker-ui\scripts\verify-job-date-widgets.mjs:56:105) + at C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\job-tracker-ui\scripts\verify-job-date-widgets.mjs:84:11 { + matcherResult: { + name: 'toHaveText', + expected: '23', + message: 'expect(locator).toHaveText(expected) failed\n' + + '\n' + + "Locator: getByRole('dialog', { name: 'Edit job', exact: true }).getByRole('group', { name: 'Frist', exact: true }).getByRole('spinbutton', { name: 'Dag', exact: true })\n" + + 'Expected: "23"\n' + + 'Timeout: 5000ms\n' + + 'Error: element(s) not found\n' + + '\n' + + 'Call log:\n' + + ' - Expect "to.have.text" with timeout 5000ms\n' + + " - waiting for getByRole('dialog', { name: 'Edit job', exact: true }).getByRole('group', { name: 'Frist', exact: true }).getByRole('spinbutton', { name: 'Dag', exact: true })\n", + pass: false, + actual: undefined, + log: [ + ' - Expect "to.have.text" with timeout 5000ms', + " - waiting for getByRole('dialog', { name: 'Edit job', exact: true }).getByRole('group', { name: 'Frist', exact: true }).getByRole('spinbutton', { name: 'Dag', exact: true })" + ], + timeout: 5000, + ariaSnapshot: '- dialog "Rediger jobb":\n' + + ' - heading "Rediger jobb" [level=2]\n' + + ' - paragraph: Oppdater jobbdetaljer, status i tidslinjen, dokumenter og notater fra ett redigeringsområde.\n' + + ' - text: Søknadsdetaljer Selskap\n' + + ' - combobox "Selskap": Synthetic school\n' + + ' - button "Open"\n' + + ' - text: Stillingstittel\n' + + ' - textbox "Stillingstittel": Retain teacher draft\n' + + ' - text: Søkt dato\n' + + ' - group "Søkt dato":\n' + + ' - spinbutton "Dag": "23"\n' + + ' - text: .\n' + + ' - spinbutton "Måned": "11"\n' + + ' - text: .\n' + + ' - spinbutton "År": "2026"\n' + + ' - button "Velg dato, valgt dato er 23. nov. 2026"\n' + + ' - text: Jobb-URL\n' + + ' - textbox "Jobb-URL"\n' + + ' - text: Statusoppdatering Gjeldende status\n' + + ' - combobox "Gjeldende status Søkt": Søkt\n' + + ' - text: Status endret\n' + + ' - group "Status endret":\n' + + ' - spinbutton "Dag": "23"\n' + + ' - text: .\n' + + ' - spinbutton "Måned": "11"\n' + + ' - text: .\n' + + ' - spinbutton "År": "2026"\n' + + ' - button "Velg dato, valgt dato er 23. nov. 2026"\n' + + ' - paragraph: Brukes bare når du endrer statusen.\n' + + ' - checkbox "Svar mottatt" [checked]\n' + + ' - text: Svar mottatt Svar mottatt dato\n' + + ' - group "Svar mottatt dato":\n' + + ' - spinbutton "Dag": "23"\n' + + ' - text: .\n' + + ' - spinbutton "Måned": "11"\n' + + ' - text: .\n' + + ' - spinbutton "År": "2026"\n' + + ' - button "Velg dato, valgt dato er 23. nov. 2026"\n' + + ' - text: Neste handling\n' + + ' - textbox "Neste handling"\n' + + ' - text: Følg opp den\n' + + ' - group "Følg opp den":\n' + + ' - spinbutton "Dag": "23"\n' + + ' - text: .\n' + + ' - spinbutton "Måned": "11"\n' + + ' - text: .\n' + + ' - spinbutton "År": "2026"\n' + + ' - button "Velg dato, valgt dato er 23. nov. 2026"\n' + + ' - text: Rolledetaljer Sted\n' + + ' - textbox "Sted"\n' + + ' - text: Lønn\n' + + ' - textbox "Lønn"\n' + + ' - text: Lønn fra\n' + + ' - spinbutton "Lønn fra"\n' + + ' - text: Lønn til\n' + + ' - spinbutton "Lønn til"\n' + + ' - text: Valuta\n' + + ' - textbox "Valuta"\n' + + ' - text: Per\n' + + ' - combobox "Per":\n' + + ' - option [selected]\n' + + ' - option "År"\n' + + ' - option "Måned"\n' + + ' - option "Time"\n' + + ' - text: Frist\n' + + ' - group "Frist":\n' + + ' - spinbutton "Dag": "23"\n' + + ' - text: .\n' + + ' - spinbutton "Måned": "11"\n' + + ' - text: .\n' + + ' - spinbutton "År": "2026"\n' + + ' - button "Velg dato, valgt dato er 23. nov. 2026"\n' + + ' - text: Språk i beskrivelse\n' + + ' - textbox "Språk i beskrivelse"\n' + + ' - text: Etiketter\n' + + ' - combobox "Etiketter"\n' + + ' - text: Notater\n' + + ' - textbox "Notater"\n' + + ' - paragraph: 0 tegn\n' + + ' - text: Beskrivelse (original)\n' + + ' - textbox "Beskrivelse (original)"\n' + + ' - paragraph: 0 tegn\n' + + ' - text: Oversatt beskrivelse\n' + + ' - textbox "Oversatt beskrivelse"\n' + + ' - paragraph: 0 tegn\n' + + ' - text: Søknadsbrev\n' + + ' - textbox "Søknadsbrev"\n' + + ' - paragraph: 0 tegn\n' + + ' - text: Vedleggssjekkliste CV mangler Søknadsbrev mangler Portefølje valgfri\n' + + ' - button "Avbryt"\n' + + ' - button "Lagre"' + } +} + +Node.js v24.19.0 diff --git a/docs/i18n/evidence/date-widgets/INITIAL-TESTS.txt b/docs/i18n/evidence/date-widgets/INITIAL-TESTS.txt new file mode 100644 index 00000000..a8bb3d01 --- /dev/null +++ b/docs/i18n/evidence/date-widgets/INITIAL-TESTS.txt @@ -0,0 +1,10 @@ + +> job-tracker-ui@0.1.0 test +> jest --runInBand date-picker-localisation.test.tsx edit-job-revision.test.tsx job-date-picker-calendar.test.tsx theme-state.test.tsx + + +Test Suites: 4 passed, 4 total +Tests: 20 passed, 20 total +Snapshots: 0 total +Time: 12.354 s, estimated 16 s +Ran all test suites matching date-picker-localisation.test.tsx|edit-job-revision.test.tsx|job-date-picker-calendar.test.tsx|theme-state.test.tsx. diff --git a/docs/i18n/evidence/date-widgets/LINT.txt b/docs/i18n/evidence/date-widgets/LINT.txt new file mode 100644 index 00000000..a2e78e69 --- /dev/null +++ b/docs/i18n/evidence/date-widgets/LINT.txt @@ -0,0 +1,4 @@ + +> job-tracker-ui@0.1.0 lint +> eslint . --max-warnings=0 + diff --git a/docs/i18n/evidence/date-widgets/PILOT.json b/docs/i18n/evidence/date-widgets/PILOT.json new file mode 100644 index 00000000..e54d9ec9 --- /dev/null +++ b/docs/i18n/evidence/date-widgets/PILOT.json @@ -0,0 +1,180 @@ +{ + "journeys": [ + { + "zone": "America/Los_Angeles", + "language": "en", + "width": 1440, + "touch": false, + "theme": "light", + "sevenCalendarSelections": "PASS", + "localeDraftRetention": "PASS", + "localToday": 22, + "fixtureSaveCreate": "PASS" + }, + { + "zone": "America/Los_Angeles", + "language": "nb", + "width": 390, + "touch": true, + "theme": "dark", + "sevenCalendarSelections": "PASS", + "localeDraftRetention": "PASS", + "localToday": 22, + "fixtureSaveCreate": "PASS" + } + ], + "captures": [ + { + "zone": "America/Los_Angeles", + "language": "en", + "state": "edit", + "violations": [] + }, + { + "zone": "America/Los_Angeles", + "language": "en", + "state": "add", + "violations": [] + }, + { + "zone": "America/Los_Angeles", + "language": "nb", + "state": "edit", + "violations": [] + }, + { + "zone": "America/Los_Angeles", + "language": "nb", + "state": "add", + "violations": [] + } + ], + "writes": [ + { + "zone": "America/Los_Angeles", + "language": "en", + "method": "PUT", + "body": { + "expectedVersion": 7, + "jobTitle": "Retain teacher draft", + "companyId": 1, + "status": "Applied", + "statusChangedAt": null, + "responseReceived": true, + "responseDate": "2026-11-24", + "location": null, + "salary": null, + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": "2026-11-24", + "notes": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "coverLetterText": null, + "dateApplied": "2026-11-24", + "jobUrl": null + } + }, + { + "zone": "America/Los_Angeles", + "language": "en", + "method": "POST", + "body": { + "jobTitle": "Teacher application", + "companyId": 1, + "status": "Saved", + "location": "", + "salary": "", + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": null, + "jobUrl": "", + "source": null, + "countryCode": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "notes": "", + "coverLetterText": null, + "dateApplied": "2026-11-24" + } + }, + { + "zone": "America/Los_Angeles", + "language": "nb", + "method": "PUT", + "body": { + "expectedVersion": 7, + "jobTitle": "Retain teacher draft", + "companyId": 1, + "status": "Applied", + "statusChangedAt": null, + "responseReceived": true, + "responseDate": "2026-11-24", + "location": null, + "salary": null, + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": "2026-11-24", + "notes": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "coverLetterText": null, + "dateApplied": "2026-11-24", + "jobUrl": null + } + }, + { + "zone": "America/Los_Angeles", + "language": "nb", + "method": "POST", + "body": { + "jobTitle": "Teacher application", + "companyId": 1, + "status": "Saved", + "location": "", + "salary": "", + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": null, + "jobUrl": "", + "source": null, + "countryCode": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "notes": "", + "coverLetterText": null, + "dateApplied": "2026-11-24" + } + } + ], + "errors": [], + "unavailableReads": [], + "blockedExternal": [ + "https://fonts.googleapis.com", + "https://fonts.googleapis.com" + ] +} \ No newline at end of file diff --git a/docs/i18n/evidence/date-widgets/PILOT.txt b/docs/i18n/evidence/date-widgets/PILOT.txt new file mode 100644 index 00000000..e8700872 --- /dev/null +++ b/docs/i18n/evidence/date-widgets/PILOT.txt @@ -0,0 +1,3 @@ +Checking America-Los_Angeles-en +Checking America-Los_Angeles-nb +PASS 2 real-widget journeys, 4 axe captures, 4 intercepted fixture writes diff --git a/docs/i18n/evidence/date-widgets/RED.txt b/docs/i18n/evidence/date-widgets/RED.txt new file mode 100644 index 00000000..907421ed --- /dev/null +++ b/docs/i18n/evidence/date-widgets/RED.txt @@ -0,0 +1,598 @@ + +> job-tracker-ui@0.1.0 test +> jest --runInBand date-picker-localisation.test.tsx + +FAIL src/date-picker-localisation.test.tsx + ● Bokmål localizes date sections, calendar controls and displayed format + + TestingLibraryElementError: Unable to find an accessible element with the role "spinbutton" and name "Dag" + + Here are the accessible roles: + + textbox: + + Name "Unsaved title": + + + -------------------------------------------------- + button: + + Name "Bokmål": + + +
+ +
+
+ + + + 11 + + + / + + + + + + 23 + + + / + + + + + + 2026 + + + +
+
+ +
+ + +
+
+ + + + 22 | localStorage.setItem("uiLanguage", "nb"); + 23 | render(
); + > 24 | expect(screen.getByRole("spinbutton", { name: "Dag", exact: true })).toHaveTextContent("23"); + | ^ + 25 | expect(screen.getByRole("spinbutton", { name: "Måned", exact: true })).toHaveTextContent("11"); + 26 | expect(screen.getByRole("spinbutton", { name: "År", exact: true })).toHaveTextContent("2026"); + 27 | expect(screen.getByRole("button", { name: /^Velg dato, valgt dato er/ })).toBeVisible(); + + 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 Object.getByRole (src/date-picker-localisation.test.tsx:24:17) + + ● live UI language changes retain the selected day and unsaved form draft + + TestingLibraryElementError: Unable to find an accessible element with the role "spinbutton" and name "Dag" + + Here are the accessible roles: + + textbox: + + Name "Unsaved title": + + + -------------------------------------------------- + button: + + Name "Bokmål": + + +
+ +
+
+ + + + 11 + + + / + + + + + + 23 + + + / + + + + + + 2026 + + + +
+
+ +
+ + +
+
+ + + + 35 | expect(screen.getByRole("spinbutton", { name: "Day", exact: true })).toHaveTextContent("23"); + 36 | fireEvent.click(screen.getByRole("button", { name: "Bokmål", exact: true })); + > 37 | expect(screen.getByRole("spinbutton", { name: "Dag", exact: true })).toHaveTextContent("23"); + | ^ + 38 | expect(title).toHaveValue("Retain this draft"); + 39 | fireEvent.click(screen.getByRole("button", { name: "English", exact: true })); + 40 | expect(screen.getByRole("spinbutton", { name: "Day", exact: true })).toHaveTextContent("23"); + + 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 Object.getByRole (src/date-picker-localisation.test.tsx:37:17) + +Test Suites: 1 failed, 1 total +Tests: 2 failed, 2 total +Snapshots: 0 total +Time: 3.687 s +Ran all test suites matching date-picker-localisation.test.tsx. diff --git a/docs/i18n/evidence/date-widgets/SCRIPT-LINT.txt b/docs/i18n/evidence/date-widgets/SCRIPT-LINT.txt new file mode 100644 index 00000000..e69de29b diff --git a/docs/i18n/evidence/date-widgets/SECOND-PILOT.json b/docs/i18n/evidence/date-widgets/SECOND-PILOT.json new file mode 100644 index 00000000..e01c874c --- /dev/null +++ b/docs/i18n/evidence/date-widgets/SECOND-PILOT.json @@ -0,0 +1,49 @@ +{ + "journeys": [], + "captures": [ + { + "zone": "America/Los_Angeles", + "language": "en", + "state": "edit", + "violations": [] + } + ], + "writes": [ + { + "zone": "America/Los_Angeles", + "language": "en", + "method": "PUT", + "body": { + "expectedVersion": 7, + "jobTitle": "Retain teacher draft", + "companyId": 1, + "status": "Applied", + "statusChangedAt": null, + "responseReceived": true, + "responseDate": "2026-11-24", + "location": null, + "salary": null, + "salaryMin": null, + "salaryMax": null, + "salaryCurrency": null, + "salaryPeriod": null, + "nextAction": null, + "followUpAt": "2026-11-24", + "notes": null, + "description": null, + "translatedDescription": null, + "descriptionLanguage": null, + "tags": null, + "deadline": "2026-11-24", + "coverLetterText": null, + "dateApplied": "2026-11-24", + "jobUrl": null + } + } + ], + "errors": [], + "unavailableReads": [], + "blockedExternal": [ + "https://fonts.googleapis.com" + ] +} \ No newline at end of file diff --git a/docs/i18n/evidence/date-widgets/SECOND-PILOT.txt b/docs/i18n/evidence/date-widgets/SECOND-PILOT.txt new file mode 100644 index 00000000..c7aa4b1e --- /dev/null +++ b/docs/i18n/evidence/date-widgets/SECOND-PILOT.txt @@ -0,0 +1,17 @@ +Checking America-Los_Angeles-en +node:internal/modules/run_main:107 + triggerUncaughtException( + ^ + +locator.click: Timeout 30000ms exceeded. +Call log: + - waiting for getByRole('dialog', { name: 'Add Job', exact: true }).getByRole('button', { name: 'Enter details manually', exact: true }) + + at C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\job-tracker-ui\scripts\verify-job-date-widgets.mjs:100:89 { + log: [ + " - waiting for getByRole('dialog', { name: 'Add Job', exact: true }).getByRole('button', { name: 'Enter details manually', exact: true })" + ], + name: 'TimeoutError' +} + +Node.js v24.19.0 diff --git a/docs/i18n/evidence/date-widgets/TESTS.txt b/docs/i18n/evidence/date-widgets/TESTS.txt new file mode 100644 index 00000000..40b7bbd9 --- /dev/null +++ b/docs/i18n/evidence/date-widgets/TESTS.txt @@ -0,0 +1,10 @@ + +> job-tracker-ui@0.1.0 test +> jest --runInBand date-picker-localisation.test.tsx locale-fetch-stability.test.tsx app-shell-navigation.test.tsx edit-job-revision.test.tsx job-date-picker-calendar.test.tsx theme-state.test.tsx + + +Test Suites: 6 passed, 6 total +Tests: 25 passed, 25 total +Snapshots: 0 total +Time: 14.463 s +Ran all test suites matching date-picker-localisation.test.tsx|locale-fetch-stability.test.tsx|app-shell-navigation.test.tsx|edit-job-revision.test.tsx|job-date-picker-calendar.test.tsx|theme-state.test.tsx. diff --git a/docs/i18n/evidence/date-widgets/add-America-Los_Angeles-en.png b/docs/i18n/evidence/date-widgets/add-America-Los_Angeles-en.png new file mode 100644 index 00000000..d54f37c0 Binary files /dev/null and b/docs/i18n/evidence/date-widgets/add-America-Los_Angeles-en.png differ diff --git a/docs/i18n/evidence/date-widgets/add-America-Los_Angeles-nb.png b/docs/i18n/evidence/date-widgets/add-America-Los_Angeles-nb.png new file mode 100644 index 00000000..f5b230ff Binary files /dev/null and b/docs/i18n/evidence/date-widgets/add-America-Los_Angeles-nb.png differ diff --git a/docs/i18n/evidence/date-widgets/add-Europe-Oslo-en.png b/docs/i18n/evidence/date-widgets/add-Europe-Oslo-en.png new file mode 100644 index 00000000..2bab0d2f Binary files /dev/null and b/docs/i18n/evidence/date-widgets/add-Europe-Oslo-en.png differ diff --git a/docs/i18n/evidence/date-widgets/add-Europe-Oslo-nb.png b/docs/i18n/evidence/date-widgets/add-Europe-Oslo-nb.png new file mode 100644 index 00000000..f5b230ff Binary files /dev/null and b/docs/i18n/evidence/date-widgets/add-Europe-Oslo-nb.png differ diff --git a/docs/i18n/evidence/date-widgets/add-Pacific-Kiritimati-en.png b/docs/i18n/evidence/date-widgets/add-Pacific-Kiritimati-en.png new file mode 100644 index 00000000..eee0be90 Binary files /dev/null and b/docs/i18n/evidence/date-widgets/add-Pacific-Kiritimati-en.png differ diff --git a/docs/i18n/evidence/date-widgets/add-Pacific-Kiritimati-nb.png b/docs/i18n/evidence/date-widgets/add-Pacific-Kiritimati-nb.png new file mode 100644 index 00000000..f5b230ff Binary files /dev/null and b/docs/i18n/evidence/date-widgets/add-Pacific-Kiritimati-nb.png differ diff --git a/docs/i18n/evidence/date-widgets/calendar-America-Los_Angeles-en.png b/docs/i18n/evidence/date-widgets/calendar-America-Los_Angeles-en.png new file mode 100644 index 00000000..47b3fb64 Binary files /dev/null and b/docs/i18n/evidence/date-widgets/calendar-America-Los_Angeles-en.png differ diff --git a/docs/i18n/evidence/date-widgets/calendar-America-Los_Angeles-nb.png b/docs/i18n/evidence/date-widgets/calendar-America-Los_Angeles-nb.png new file mode 100644 index 00000000..f0dc47e3 Binary files /dev/null and b/docs/i18n/evidence/date-widgets/calendar-America-Los_Angeles-nb.png differ diff --git a/docs/i18n/evidence/date-widgets/calendar-Europe-Oslo-en.png b/docs/i18n/evidence/date-widgets/calendar-Europe-Oslo-en.png new file mode 100644 index 00000000..bd3b8e5b Binary files /dev/null and b/docs/i18n/evidence/date-widgets/calendar-Europe-Oslo-en.png differ diff --git a/docs/i18n/evidence/date-widgets/calendar-Europe-Oslo-nb.png b/docs/i18n/evidence/date-widgets/calendar-Europe-Oslo-nb.png new file mode 100644 index 00000000..377d04a9 Binary files /dev/null and b/docs/i18n/evidence/date-widgets/calendar-Europe-Oslo-nb.png differ diff --git a/docs/i18n/evidence/date-widgets/calendar-Pacific-Kiritimati-en.png b/docs/i18n/evidence/date-widgets/calendar-Pacific-Kiritimati-en.png new file mode 100644 index 00000000..651223f1 Binary files /dev/null and b/docs/i18n/evidence/date-widgets/calendar-Pacific-Kiritimati-en.png differ diff --git a/docs/i18n/evidence/date-widgets/calendar-Pacific-Kiritimati-nb.png b/docs/i18n/evidence/date-widgets/calendar-Pacific-Kiritimati-nb.png new file mode 100644 index 00000000..377d04a9 Binary files /dev/null and b/docs/i18n/evidence/date-widgets/calendar-Pacific-Kiritimati-nb.png differ diff --git a/docs/i18n/evidence/date-widgets/edit-America-Los_Angeles-en.png b/docs/i18n/evidence/date-widgets/edit-America-Los_Angeles-en.png new file mode 100644 index 00000000..7200f1fe Binary files /dev/null and b/docs/i18n/evidence/date-widgets/edit-America-Los_Angeles-en.png differ diff --git a/docs/i18n/evidence/date-widgets/edit-America-Los_Angeles-nb.png b/docs/i18n/evidence/date-widgets/edit-America-Los_Angeles-nb.png new file mode 100644 index 00000000..c4f03706 Binary files /dev/null and b/docs/i18n/evidence/date-widgets/edit-America-Los_Angeles-nb.png differ diff --git a/docs/i18n/evidence/date-widgets/edit-Europe-Oslo-en.png b/docs/i18n/evidence/date-widgets/edit-Europe-Oslo-en.png new file mode 100644 index 00000000..0226791e Binary files /dev/null and b/docs/i18n/evidence/date-widgets/edit-Europe-Oslo-en.png differ diff --git a/docs/i18n/evidence/date-widgets/edit-Europe-Oslo-nb.png b/docs/i18n/evidence/date-widgets/edit-Europe-Oslo-nb.png new file mode 100644 index 00000000..c4f03706 Binary files /dev/null and b/docs/i18n/evidence/date-widgets/edit-Europe-Oslo-nb.png differ diff --git a/docs/i18n/evidence/date-widgets/edit-Pacific-Kiritimati-en.png b/docs/i18n/evidence/date-widgets/edit-Pacific-Kiritimati-en.png new file mode 100644 index 00000000..9f616059 Binary files /dev/null and b/docs/i18n/evidence/date-widgets/edit-Pacific-Kiritimati-en.png differ diff --git a/docs/i18n/evidence/date-widgets/edit-Pacific-Kiritimati-nb.png b/docs/i18n/evidence/date-widgets/edit-Pacific-Kiritimati-nb.png new file mode 100644 index 00000000..c4f03706 Binary files /dev/null and b/docs/i18n/evidence/date-widgets/edit-Pacific-Kiritimati-nb.png differ