test(applications): qualify unapplied date preservation

This commit is contained in:
cesnimda
2026-11-11 13:27:33 +01:00
parent 138f1ee69c
commit e6240ad309
44 changed files with 1426 additions and 0 deletions
@@ -0,0 +1,21 @@
# Preserve an unapplied job's missing application date
Source/verifier: `138f1ee69c2a1c2f3e039cc1219f53465afb59ef`.
The backend `JobApplication.DateApplied` contract explicitly preserves null before submission, preventing fabricated dates from feeding follow-up, ghosting and application-volume analytics. Edit Job's loading converter instead substituted today's UTC date for missing or invalid values. An unrelated edit could therefore submit an invented application date.
The converter now leaves missing/invalid values empty. The existing save path submits null. Valid legacy timestamp conversion is unchanged and remains a separately tracked precision/timezone question. No data migration, backend API or status transition changed.
## Evidence
- RED: three cases (null, empty, invalid) failed against the original converter; seven existing calendar cases passed.
- PASSED: 14 cases across calendar-day and Edit revision suites, executed with `TZ=America/Los_Angeles`. Three new cases edit a Saved job's title and assert unchanged Saved status, revision7 and null date. Existing seven date cases and four revision cases overlap prior evidence.
- PASSED: build/TypeScript and scoped ESLint.
- PASSED: nine real-widget journeys, 36 accessibility captures and 27 intercepted fixture writes. Three timezone contexts each exercised EN/light/1440 mouse, NB/dark/390 touch and NB/light/768 touch. Each journey additionally loaded a Saved/null fixture, showed an empty Applied on field, edited the title and submitted Saved/null with revision7. Existing live locale, selected company, theme, seven date controls and Add defaults remained covered. Zero page errors/unavailable reads; external fonts blocked.
- The refreshed mobile Bokmål Saved/null screenshot was visually inspected. No invented date appears in the form.
The earlier nine-journey date/shared-control runs overlap this extended matrix. These are finite paired configurations and intercepted API traffic, not real persistence, analytics, native-device or provider qualification.
Evidence: `evidence/unapplied-date/`; source/evidence/export bindings: `UNAPPLIED_DATE_SOURCE_MANIFEST.json`. Final owner A3, human/native, integrated security and release gates remain open. Physical CV/PDF rendering is unaffected.
Rollback: revert the two converter fallback changes; no schema or stored data is modified by the patch itself. Reverting would restore the known fabricated-date defect. Existing null dates remain null in storage until a real authorised write; no historical data repair was attempted.
@@ -0,0 +1,146 @@
{
"sourceContentCommit": "138f1ee69c2a1c2f3e039cc1219f53465afb59ef",
"policy": "LF-normalised source and text evidence; raw PNG/gzip/zip/export. 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": "cd46fdfda8c145d7c634e1ed6a714ffeb898a5ef30d705aa019390c9b8456870",
"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": "796e0e4a5e9f54952e6801acef2618cabd624de190699d76a3fcb4ef4fd82859",
"job-tracker-ui/src/date-picker-localisation.test.tsx": "68b157072455df53b08341f872d3e9651b2650c51b36f94e710631a2e2a8ed51",
"job-tracker-ui/src/job-date-picker-calendar.test.tsx": "760f3fec774fc53088ba4230dc3952959b8365e2919cf5e684a1499c0a9876c0",
"JobTrackerApi/Models/JobApplication.cs": "941b87a649a7a8c2e10853a925d72e4f9ff687df0964c8e569b2f1bde70b9fe7",
"job-tracker-ui/scripts/verify-job-date-widgets.mjs": "d351690eaabaf54d49b900eab70c70b3f9dd9ac26816239e7001fc992a7b0ba8",
"job-tracker-ui/package.json": "3745394e406cefa40d30a87e840bccb359be147bac6ffba736e2ae90898a8626",
"job-tracker-ui/package-lock.json": "bf31e90d7af03e8af059db2aaf893925b9e8881a30a1688034ed88ef45d4fcab"
},
"evidence": {
"docs/ui-modernisation/evidence/unapplied-date/add-America-Los_Angeles-en-1440-light.png": "438d9c4a58e0d0cd4310deecc0185e29f8df2c81761282f5a5132354d35baa55",
"docs/ui-modernisation/evidence/unapplied-date/add-America-Los_Angeles-nb-390-dark.png": "deca21bc4a1bd9267a601e57176d9ae9cd56cf4adac4246d87fba3b8459f10f9",
"docs/ui-modernisation/evidence/unapplied-date/add-America-Los_Angeles-nb-768-light.png": "69d2f6c99585714a57c62e8bdb4b24201251852293569a268ab45799250dec7b",
"docs/ui-modernisation/evidence/unapplied-date/add-Europe-Oslo-en-1440-light.png": "523463c6eb3d5c26794d39e840f3fddf2a25bba4787d3bbbb0aef035c12110ef",
"docs/ui-modernisation/evidence/unapplied-date/add-Europe-Oslo-nb-390-dark.png": "deca21bc4a1bd9267a601e57176d9ae9cd56cf4adac4246d87fba3b8459f10f9",
"docs/ui-modernisation/evidence/unapplied-date/add-Europe-Oslo-nb-768-light.png": "1bd1e0da5b058af007a6036e89491b0a61c0caa2315f09cc57eacd0fa54e2734",
"docs/ui-modernisation/evidence/unapplied-date/add-Pacific-Kiritimati-en-1440-light.png": "523463c6eb3d5c26794d39e840f3fddf2a25bba4787d3bbbb0aef035c12110ef",
"docs/ui-modernisation/evidence/unapplied-date/add-Pacific-Kiritimati-nb-390-dark.png": "deca21bc4a1bd9267a601e57176d9ae9cd56cf4adac4246d87fba3b8459f10f9",
"docs/ui-modernisation/evidence/unapplied-date/add-Pacific-Kiritimati-nb-768-light.png": "69d2f6c99585714a57c62e8bdb4b24201251852293569a268ab45799250dec7b",
"docs/ui-modernisation/evidence/unapplied-date/BROWSER.json": "b9d5c3ff822e7c4c1c490d3426e94f505a7be35305529d0ee055d119ede651e2",
"docs/ui-modernisation/evidence/unapplied-date/BROWSER.txt": "aa59dc4aa75653042b3ec479cc440d8392eea164b7b702bf6ba571e3d29e3aac",
"docs/ui-modernisation/evidence/unapplied-date/BUILD.txt": "5a33a52fc015eb5e9aa97a7c8272cfb01289d0262b7a3bf52277ea10117da83d",
"docs/ui-modernisation/evidence/unapplied-date/calendar-America-Los_Angeles-en-1440-light.png": "e59b40bf2f90285a1f1a03584d1e6165d36dc8813ce19089d350a6ff0f114c68",
"docs/ui-modernisation/evidence/unapplied-date/calendar-America-Los_Angeles-nb-390-dark.png": "738229a9056084a73ace7a611d50573fb8642ea331d4e05045948bd152f4fb7e",
"docs/ui-modernisation/evidence/unapplied-date/calendar-America-Los_Angeles-nb-768-light.png": "bbbc82f449c9a10b24130f45b6dca0d7872abb261ca988e6303b1e0bcabf8769",
"docs/ui-modernisation/evidence/unapplied-date/calendar-Europe-Oslo-en-1440-light.png": "df09fdde0e79da9f2c4c330af99da58be033dcc43eb2ea9801d83dbf9a55cc6f",
"docs/ui-modernisation/evidence/unapplied-date/calendar-Europe-Oslo-nb-390-dark.png": "8b0eb35161b29b232aeab3d8df0ae4a37d2897154282db6a85e0467d33f358e3",
"docs/ui-modernisation/evidence/unapplied-date/calendar-Europe-Oslo-nb-768-light.png": "ca67e1657feb25d0cc082e66219f74397b0df375705e2e36761e62f2f15e943e",
"docs/ui-modernisation/evidence/unapplied-date/calendar-Pacific-Kiritimati-en-1440-light.png": "df09fdde0e79da9f2c4c330af99da58be033dcc43eb2ea9801d83dbf9a55cc6f",
"docs/ui-modernisation/evidence/unapplied-date/calendar-Pacific-Kiritimati-nb-390-dark.png": "8b0eb35161b29b232aeab3d8df0ae4a37d2897154282db6a85e0467d33f358e3",
"docs/ui-modernisation/evidence/unapplied-date/calendar-Pacific-Kiritimati-nb-768-light.png": "ca67e1657feb25d0cc082e66219f74397b0df375705e2e36761e62f2f15e943e",
"docs/ui-modernisation/evidence/unapplied-date/edit-America-Los_Angeles-en-1440-light.png": "817a53672d3af0c38be53e84accba6fda6a75b735ee40e688d190edd7dfa81c1",
"docs/ui-modernisation/evidence/unapplied-date/edit-America-Los_Angeles-nb-390-dark.png": "af756c322d271dd51f45381d814354d51ffd18c6ff71f4ed5cf0ec206e5fd1f2",
"docs/ui-modernisation/evidence/unapplied-date/edit-America-Los_Angeles-nb-768-light.png": "7c100cde0a2387b8a266de98385008661271fb1abf2983e609e12212edfae71e",
"docs/ui-modernisation/evidence/unapplied-date/edit-Europe-Oslo-en-1440-light.png": "dd7da891f399ee529795a46e2ac2d00574e67ed83b89d7f3b5c9fcd610e04b5e",
"docs/ui-modernisation/evidence/unapplied-date/edit-Europe-Oslo-nb-390-dark.png": "af756c322d271dd51f45381d814354d51ffd18c6ff71f4ed5cf0ec206e5fd1f2",
"docs/ui-modernisation/evidence/unapplied-date/edit-Europe-Oslo-nb-768-light.png": "7c100cde0a2387b8a266de98385008661271fb1abf2983e609e12212edfae71e",
"docs/ui-modernisation/evidence/unapplied-date/edit-Pacific-Kiritimati-en-1440-light.png": "dd7da891f399ee529795a46e2ac2d00574e67ed83b89d7f3b5c9fcd610e04b5e",
"docs/ui-modernisation/evidence/unapplied-date/edit-Pacific-Kiritimati-nb-390-dark.png": "af756c322d271dd51f45381d814354d51ffd18c6ff71f4ed5cf0ec206e5fd1f2",
"docs/ui-modernisation/evidence/unapplied-date/edit-Pacific-Kiritimati-nb-768-light.png": "7c100cde0a2387b8a266de98385008661271fb1abf2983e609e12212edfae71e",
"docs/ui-modernisation/evidence/unapplied-date/LINT.txt": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"docs/ui-modernisation/evidence/unapplied-date/RED.txt": "483acca5833844b6cc60ce6ee87dbf5e7345e7cfb4fbdecd1cb378d4b6472c7a",
"docs/ui-modernisation/evidence/unapplied-date/TESTS.txt": "ad90d5a2b62541445fc5487d25f11f9c3f5d65182739607b1ea2c6517c52c04e",
"docs/ui-modernisation/evidence/unapplied-date/unapplied-America-Los_Angeles-en-1440-light.png": "097b64eff60a7153a3fdb5e4cde1d8219bff9f5bdca50924dab5736146d46ea1",
"docs/ui-modernisation/evidence/unapplied-date/unapplied-America-Los_Angeles-nb-390-dark.png": "562b3eff0c3c93b194a3a76a475333e4757a91a7a9ccfd72c102a4517b47d8dd",
"docs/ui-modernisation/evidence/unapplied-date/unapplied-America-Los_Angeles-nb-768-light.png": "ec7f530771dfb6d107af773da47c1fb90de1b3d5463563ee3ddd010327a85518",
"docs/ui-modernisation/evidence/unapplied-date/unapplied-Europe-Oslo-en-1440-light.png": "db85f68fa2cac151825cc2b6f2fd4cf34ad158addc4676323b40959a374073a0",
"docs/ui-modernisation/evidence/unapplied-date/unapplied-Europe-Oslo-nb-390-dark.png": "267a3fa082655163aab5ec391c575e8333467931e7c8bfbff3ce44a9cce60eb3",
"docs/ui-modernisation/evidence/unapplied-date/unapplied-Europe-Oslo-nb-768-light.png": "ba295e1e5b29d01255b93cc1dcb2d13384d3a68679a55a0161d30ca915f11445",
"docs/ui-modernisation/evidence/unapplied-date/unapplied-Pacific-Kiritimati-en-1440-light.png": "db85f68fa2cac151825cc2b6f2fd4cf34ad158addc4676323b40959a374073a0",
"docs/ui-modernisation/evidence/unapplied-date/unapplied-Pacific-Kiritimati-nb-390-dark.png": "562b3eff0c3c93b194a3a76a475333e4757a91a7a9ccfd72c102a4517b47d8dd",
"docs/ui-modernisation/evidence/unapplied-date/unapplied-Pacific-Kiritimati-nb-768-light.png": "ba295e1e5b29d01255b93cc1dcb2d13384d3a68679a55a0161d30ca915f11445",
"docs/ui-modernisation/UNAPPLIED_DATE_PRESERVATION.md": "1aa3cd34175889f2f9b0582419cc2e2d713b3f86e4e337ad0288c99485626476"
},
"export": {
"job-tracker-ui/out/404.html": "ba829bcc2bc317a0b5bb331fc50c56435dd905ccb6302c3877ca1d065999393b",
"job-tracker-ui/out/__next.__PAGE__.txt": "3e52928e0eb14ff2f07fb7b295bdfc04a27e06ee990a8076f78ad233da580269",
"job-tracker-ui/out/__next._full.txt": "e398ab5dbea5983eb808bcac98e6100d024022a299d48e65d6597ef932ebdc1e",
"job-tracker-ui/out/__next._tree.txt": "ced5dda4b7f401f4c978e160bae0f26cfb38628c334f2eb7d36af7a0263c1452",
"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/01mi3dnbdq7s6.js": "4e738a13e0ae5fee13acac1e679f1d226dcf20f6995a8b9dd95cad7c49233e1d",
"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/0vo4_3wcjs1gy.js": "5e4d305fc346f9ecf48328ab0416397d8bd7c100f0de99dea16d2a1463b386a9",
"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/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/2sj7ufu_6n9af.js": "69d7471c01b8001d52abc848910a8c35457dac3aaa4ce66eae2a03ca29ad623b",
"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/3la4obitihzpv.js": "9a5a57b46db389b98f1fd5baa86eba1a360300dae9d1ff3ffeae7bc3378135b9",
"job-tracker-ui/out/_next/static/chunks/3nzgmz1t8r_64.js": "de2688cd6bfc8b411e9445d857cd1d776f9960f9d63e9f06c24cbc2a98040fca",
"job-tracker-ui/out/_next/static/chunks/3owtzqjyid5zf.js": "5f9cbb7c0cddd0c781137b970d5a4fceb386dbb259c8121dd54b33d76160d9ea",
"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/_next/static/uEnpkP1BtDdzC2Ct9V7O8/_buildManifest.js": "9476e0afd3f9da68a64e6ec58631191fd3eaca62c9f5a377e7517fe9a89e59ea",
"job-tracker-ui/out/_next/static/uEnpkP1BtDdzC2Ct9V7O8/_clientMiddlewareManifest.js": "5483e3295dc35dfe29ea932efc85341c916f10ff78ff5b0e965e003710893a4a",
"job-tracker-ui/out/_next/static/uEnpkP1BtDdzC2Ct9V7O8/_ssgManifest.js": "678f6ce2cb80b1fe72fc67e7412be6e2ab6ada083111b64f7c40d35e3cba5e00",
"job-tracker-ui/out/_not-found/__next._full.txt": "6cba691ca78b326714093fd6ba1ef258f5b38f47492d55ab686a44c18b089cc4",
"job-tracker-ui/out/_not-found/__next._not-found/__PAGE__.txt": "a236c30f3c31b8a63658b70880a4af6a2e3afcb9cc7b831f9b19d723d5b3b99f",
"job-tracker-ui/out/_not-found/__next._tree.txt": "fbe0b22338ae78035fe1dec2523b9eb498eb58218311a69d1e6c8375349647e6",
"job-tracker-ui/out/_not-found.html": "ba829bcc2bc317a0b5bb331fc50c56435dd905ccb6302c3877ca1d065999393b",
"job-tracker-ui/out/_not-found.txt": "6cba691ca78b326714093fd6ba1ef258f5b38f47492d55ab686a44c18b089cc4",
"job-tracker-ui/out/favicon.ico": "8d4923e2c487805ea9f852a685b2cf0fb10512ded8290d2a5c37d1cc8fd0702a",
"job-tracker-ui/out/favicon.svg": "63ecf8f37f8bb146ecfae3917187c6b692d4e801641e8a314486a4007912f3a3",
"job-tracker-ui/out/index.html": "8585afe24691084c055513ffc744825a145db20fd11cf1487360d1faa07d646b",
"job-tracker-ui/out/index.txt": "e398ab5dbea5983eb808bcac98e6100d024022a299d48e65d6597ef932ebdc1e",
"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"
}
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,10 @@
Checking America-Los_Angeles-en-1440-light
Checking America-Los_Angeles-nb-390-dark
Checking America-Los_Angeles-nb-768-light
Checking Europe-Oslo-en-1440-light
Checking Europe-Oslo-nb-390-dark
Checking Europe-Oslo-nb-768-light
Checking Pacific-Kiritimati-en-1440-light
Checking Pacific-Kiritimati-nb-390-dark
Checking Pacific-Kiritimati-nb-768-light
PASS 9 real-widget journeys, 36 axe captures, 27 intercepted fixture writes
@@ -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 26ms
Creating an optimized production build ...
✓ Compiled successfully in 443ms
Running TypeScript ...
Finished TypeScript in 5.2s ...
Collecting page data using 4 workers ...
Generating static pages using 4 workers (0/3) ...
✓ Generating static pages using 4 workers (3/3) in 793ms
Finalizing page optimization ...
Route (app)
┌ ○ /
└ ○ /_not-found
○ (Static) prerendered as static content
@@ -0,0 +1,61 @@
> job-tracker-ui@0.1.0 test
> jest --runInBand job-date-picker-calendar.test.tsx
FAIL src/job-date-picker-calendar.test.tsx (6.762 s)
● Edit preserves an absent or invalid application date (null) instead of inventing today
expect(element).toBeEmptyDOMElement()
Received:
"2026-11-11"
39 | render(wrap(<EditJobDialog open jobId={1} onClose={jest.fn()} onSaved={jest.fn()} />));
40 | await screen.findByDisplayValue("Teacher");
> 41 | expect(screen.getByLabelText(translations.en.editJobAppliedOn)).toBeEmptyDOMElement();
| ^
42 | fireEvent.change(screen.getByLabelText(translations.en.editJobJobTitle), { target: { value: "Saved teacher opportunity" } });
43 | fireEvent.click(screen.getByRole("button", { name: translations.en.save }));
44 | await waitFor(() => expect(client.put).toHaveBeenCalledWith("/jobapplications/1", expect.objectContaining({
at toBeEmptyDOMElement (src/job-date-picker-calendar.test.tsx:41:67)
● Edit preserves an absent or invalid application date () instead of inventing today
expect(element).toBeEmptyDOMElement()
Received:
"2026-11-11"
39 | render(wrap(<EditJobDialog open jobId={1} onClose={jest.fn()} onSaved={jest.fn()} />));
40 | await screen.findByDisplayValue("Teacher");
> 41 | expect(screen.getByLabelText(translations.en.editJobAppliedOn)).toBeEmptyDOMElement();
| ^
42 | fireEvent.change(screen.getByLabelText(translations.en.editJobJobTitle), { target: { value: "Saved teacher opportunity" } });
43 | fireEvent.click(screen.getByRole("button", { name: translations.en.save }));
44 | await waitFor(() => expect(client.put).toHaveBeenCalledWith("/jobapplications/1", expect.objectContaining({
at toBeEmptyDOMElement (src/job-date-picker-calendar.test.tsx:41:67)
● Edit preserves an absent or invalid application date (not-a-date) instead of inventing today
expect(element).toBeEmptyDOMElement()
Received:
"2026-11-11"
39 | render(wrap(<EditJobDialog open jobId={1} onClose={jest.fn()} onSaved={jest.fn()} />));
40 | await screen.findByDisplayValue("Teacher");
> 41 | expect(screen.getByLabelText(translations.en.editJobAppliedOn)).toBeEmptyDOMElement();
| ^
42 | fireEvent.change(screen.getByLabelText(translations.en.editJobJobTitle), { target: { value: "Saved teacher opportunity" } });
43 | fireEvent.click(screen.getByRole("button", { name: translations.en.save }));
44 | await waitFor(() => expect(client.put).toHaveBeenCalledWith("/jobapplications/1", expect.objectContaining({
at toBeEmptyDOMElement (src/job-date-picker-calendar.test.tsx:41:67)
Test Suites: 1 failed, 1 total
Tests: 3 failed, 7 passed, 10 total
Snapshots: 0 total
Time: 7.608 s
Ran all test suites matching job-date-picker-calendar.test.tsx.
@@ -0,0 +1,10 @@
> job-tracker-ui@0.1.0 test
> jest --runInBand job-date-picker-calendar.test.tsx edit-job-revision.test.tsx
Test Suites: 2 passed, 2 total
Tests: 14 passed, 14 total
Snapshots: 0 total
Time: 11.163 s
Ran all test suites matching job-date-picker-calendar.test.tsx|edit-job-revision.test.tsx.
Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB