diff --git a/docs/i18n/IMPORT_CONVERSION_COUNTS.md b/docs/i18n/IMPORT_CONVERSION_COUNTS.md new file mode 100644 index 00000000..cdfae510 --- /dev/null +++ b/docs/i18n/IMPORT_CONVERSION_COUNTS.md @@ -0,0 +1,11 @@ +# Import and conversion count wording + +Source/verifier44112c7c, baseline50e16ff2. Existing plural keys remain unchanged. New `importedJob` and `convertedRow` keys select the one-item form in EN/NB; zero/multiple values retain existing plural wording. Import payloads, partial-success reporting, Last import count, CSV parser and native download bytes are unchanged. These are two finite literal-key choices, not unbounded runtime translation keys. + +PASSED:50 cases/six suites (import/export lifetime, Settings lifetime, picker activation, catalogue parity/placeholders and language provider). Four new language-table cases cover zero/one/two conversion and one/two import messages; earlier35/39 cases overlap. RED receipts retain the two conversion and two import language failures before the fix. Build/TypeScript and scoped ESLint passed. + +PASSED:two paired actual-UI profiles (390/Bokmål/dark touch and1440/English/light mouse), each converting zero/one/two rows. Six native JSON downloads and six accessibility scans passed, with exact output row counts/Unicode and visible singular/plural messages. No API writes, page exceptions or unavailable fixture reads; fonts blocked. This is a finite copy-focused matrix, not the full export/session matrix. The earlier36-download package retains its original source identity. Mobile Bokmål singular feedback was visually inspected. + +Evidence: `evidence/import-conversion-counts/`; source/evidence/export content bindings: `IMPORT_CONVERSION_COUNT_SOURCE_MANIFEST.json`. Native gzip receipts preserve downloaded bytes. No physical CV/PDF, API, dependency, schema or additional locale changed. + +Rollback reverts44112c7c and reruns affected copy/catalogue checks. Full visible-text, native-language/European, physical-device, integrated security and final release acceptance remain open. Historical188 dynamic reviews remain historical; this report accounts for the two changed finite choices on the current source. diff --git a/docs/i18n/IMPORT_CONVERSION_COUNT_SOURCE_MANIFEST.json b/docs/i18n/IMPORT_CONVERSION_COUNT_SOURCE_MANIFEST.json new file mode 100644 index 00000000..335a1eb4 --- /dev/null +++ b/docs/i18n/IMPORT_CONVERSION_COUNT_SOURCE_MANIFEST.json @@ -0,0 +1,126 @@ +{ + "sourceContentCommit": "44112c7cbb480f96e0c9ca7a5dbed35650aa3a53", + "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/components/SettingsView.tsx": "250b80b2d18f82ab63e7341c0779380345f386acc0d89161064d8e41439636d2", + "job-tracker-ui/src/components/ImportExportJobs.tsx": "1f3a9ed936bccd35e69bf05449f3615af5b7e8f3bf1fb52b99b39a3ae6cb253b", + "job-tracker-ui/src/sessionBoundary.ts": "09edca77c98294818d2ad0c409ce595f1b6ca0c1f60419fc1078b70f96f5b7b9", + "job-tracker-ui/src/api.ts": "f75ac7be07a743396843ddad5fd3371e2d5fd3d9c5d933e09e26fae2159f2378", + "job-tracker-ui/src/i18n/I18nProvider.tsx": "dfa8d95510a7dd872e1b9bbddf9bb4ab31da4d4b5e932b0099397d11e08ad108", + "job-tracker-ui/src/i18n/translations.ts": "1bef579f8bb593ed3a888780e9d3472531f93b5602a6e92d9df8fa062060c1e9", + "job-tracker-ui/src/job-export-lifetime.test.tsx": "c49f392f8fb15ade6f87bd1515f124432a3768c9b9ff0b5a3e4fd71bdeefa06c", + "job-tracker-ui/src/job-import.test.tsx": "2baa932bb464490d12cddfafcbea2d19795725519f380d7db803369a71c0288d", + "job-tracker-ui/src/settings-import-lifetime.test.tsx": "24af2a5954533087ddbff40659ff9f8dcf70805435dca772314c2be7d8bf6133", + "job-tracker-ui/src/file-picker-activation.test.tsx": "accb87f94a7b36373eec6583a391a17ede7e7779cf18d81d4a86b43e0bd6afbe", + "job-tracker-ui/scripts/verify-job-export-lifetime.mjs": "bea2e5a04b7cad4f2af6b1dd2e19c505261ab171dcd686b6662332aa2b838646", + "job-tracker-ui/src/translation-catalogue.test.ts": "f20e8099f2c4dda76574ea3ed1e95b743eef5da82507d7cbc3f9925d52356b98", + "job-tracker-ui/src/i18n-provider.test.tsx": "520b8559ebd0c206649008c98705c24bd8caac7e00a642984a75b11f7d851fbe", + "job-tracker-ui/package.json": "3745394e406cefa40d30a87e840bccb359be147bac6ffba736e2ae90898a8626", + "job-tracker-ui/package-lock.json": "bf31e90d7af03e8af059db2aaf893925b9e8881a30a1688034ed88ef45d4fcab" + }, + "evidence": { + "docs/i18n/evidence/import-conversion-counts/1440-en-light-converted-0.gz": "50c15d921df28492e2d9bf2da5d1cd5c78ee416bdcf478074db63d76d2381cba", + "docs/i18n/evidence/import-conversion-counts/1440-en-light-converted-1.gz": "2117b71f51b07c27587ff99d40acd9ef43b538a62658ce52ea060ab4a3c2cba5", + "docs/i18n/evidence/import-conversion-counts/1440-en-light-converted-2.gz": "7f3553fe748c77febb7f3b312d152002e44c1608e05e99b05b7865dac0154326", + "docs/i18n/evidence/import-conversion-counts/1440-en-light-count-0.png": "06b4cae9dcda200767c296e923ed5e8eac7bdb53721c1f55ffda9bb0b7c06d63", + "docs/i18n/evidence/import-conversion-counts/1440-en-light-count-1.png": "7c764a401d219d2bd5452bea3380067d396ca0ffc052b06bdd2bfa705c346aea", + "docs/i18n/evidence/import-conversion-counts/1440-en-light-count-2.png": "8b901708e2b8c8bea11765970539b0d28383e30a5243dc6ddd4c59ddb8a87135", + "docs/i18n/evidence/import-conversion-counts/390-nb-dark-converted-0.gz": "50c15d921df28492e2d9bf2da5d1cd5c78ee416bdcf478074db63d76d2381cba", + "docs/i18n/evidence/import-conversion-counts/390-nb-dark-converted-1.gz": "2117b71f51b07c27587ff99d40acd9ef43b538a62658ce52ea060ab4a3c2cba5", + "docs/i18n/evidence/import-conversion-counts/390-nb-dark-converted-2.gz": "7f3553fe748c77febb7f3b312d152002e44c1608e05e99b05b7865dac0154326", + "docs/i18n/evidence/import-conversion-counts/390-nb-dark-count-0.png": "05b956b3267ccc9e1c928aaa987241c2d4f9db9f058a5d5de0124d1dc261d10c", + "docs/i18n/evidence/import-conversion-counts/390-nb-dark-count-1.png": "cc3403c35dcb011bde0a68d2b713c65a237abc6bd6fb449b0bbdb7029b32b3fb", + "docs/i18n/evidence/import-conversion-counts/390-nb-dark-count-2.png": "9292a818d04ccd97f709d1b6289b4cafbdf781b09a3e8156ed9cf0304a288154", + "docs/i18n/evidence/import-conversion-counts/BROWSER.json": "b7e83a199c70ff58c93211a1d04da0630470927b3f4c22cf6cc8a4056b10d871", + "docs/i18n/evidence/import-conversion-counts/BROWSER.txt": "be89f2d03cc906ed953e6f6fb4f90a936b67633b7947d8d59a5c091a0ee8a649", + "docs/i18n/evidence/import-conversion-counts/BUILD.txt": "b5633b37143e111a2fd97dc5b7b0fc244c7587fc5c0c11c245f6c4c1f2e98dbc", + "docs/i18n/evidence/import-conversion-counts/LINT.txt": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "docs/i18n/evidence/import-conversion-counts/RED_CONVERSION.txt": "411b9f558921d6f85643511b433c82b9289b94c874ca267a192040a965f70170", + "docs/i18n/evidence/import-conversion-counts/RED_IMPORT.txt": "148548165d5b601ea43c765a07d7f61f2d7b1fb5264377672a0bdd6c8fe9a32b", + "docs/i18n/evidence/import-conversion-counts/TESTS.txt": "a1efa7de41b86d6d48b70c97da55e9ef0e9de9fcce4ca9d5036787bcc198b8d7", + "docs/i18n/IMPORT_CONVERSION_COUNTS.md": "a6fcfb1b918bfd0cd9ba235d27675a8829621265f83d96dc09b93c792bbfdcba" + }, + "export": { + "job-tracker-ui/out/404.html": "1ca05af72181de6df1a2b0c07fe5d151fb058344c07e204a78648db4ec1c6e64", + "job-tracker-ui/out/__next.__PAGE__.txt": "838e2b173fe18664741187b814d92cb9006a97f70f2e61d866e88090dbe531c8", + "job-tracker-ui/out/__next._full.txt": "dae993f53affb686262f8ae8e75718ef05b43cdf4b9b7391376fe8ca4fe41ccf", + "job-tracker-ui/out/__next._tree.txt": "ce646215db5c8507b39e758174f959ab2416b6d8fbe67b5f4d14103db564fc13", + "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/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/0v1q0j141eyli.js": "8180d4c9dae8da28079152624739b603d6d63c62554015b1bf9a82cd5bbdc5fb", + "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/1pcns9f7sl8yk.js": "1a1b889438e68c64984964627315e806548b753c40c6c012c706ca03edc3dfe5", + "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/24_cq-0_-oa1r.js": "f81cb5ffd0dd4a953d0dc48610226123cc99d577371809ed8c73b901a7bb988c", + "job-tracker-ui/out/_next/static/chunks/274f8aifi_wup.js": "bc5bc5617b4acbbbb1c7966322c508bb5554024d78e71e523e27f7f5bba5a8ab", + "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/2vo512u2siee8.js": "30cdfec178acfe49c1e0ae28fb23c67507bcf7f7b17008b48c05198f638c348d", + "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/35_dl1zkx1-zx.js": "69bb75afcbd9ea9c0b7e870eb2b5796bdb24d0db7810573302fa04a497cc2c8c", + "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/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/KgOLT2oshx6dHtAKI5NUs/_buildManifest.js": "9476e0afd3f9da68a64e6ec58631191fd3eaca62c9f5a377e7517fe9a89e59ea", + "job-tracker-ui/out/_next/static/KgOLT2oshx6dHtAKI5NUs/_clientMiddlewareManifest.js": "5483e3295dc35dfe29ea932efc85341c916f10ff78ff5b0e965e003710893a4a", + "job-tracker-ui/out/_next/static/KgOLT2oshx6dHtAKI5NUs/_ssgManifest.js": "678f6ce2cb80b1fe72fc67e7412be6e2ab6ada083111b64f7c40d35e3cba5e00", + "job-tracker-ui/out/_not-found/__next._full.txt": "37dee5851fdf4b1bbaabdc143380d8dffdd07999a2c08756fd68b713ecc4826f", + "job-tracker-ui/out/_not-found/__next._not-found/__PAGE__.txt": "001d6c3334faac5f519229a9ad22a7f8b9999e853165ea57cefdf069bd79b554", + "job-tracker-ui/out/_not-found/__next._tree.txt": "023a4c313d4706642914da119ee1fc32ea6628de40a1e8231c294f1b5c6d02ad", + "job-tracker-ui/out/_not-found.html": "1ca05af72181de6df1a2b0c07fe5d151fb058344c07e204a78648db4ec1c6e64", + "job-tracker-ui/out/_not-found.txt": "37dee5851fdf4b1bbaabdc143380d8dffdd07999a2c08756fd68b713ecc4826f", + "job-tracker-ui/out/favicon.ico": "8d4923e2c487805ea9f852a685b2cf0fb10512ded8290d2a5c37d1cc8fd0702a", + "job-tracker-ui/out/favicon.svg": "63ecf8f37f8bb146ecfae3917187c6b692d4e801641e8a314486a4007912f3a3", + "job-tracker-ui/out/index.html": "85cacbcd2e4209f2fc1af7e22b6e0d7ef23b3d2fd8612b4a8b105b545a9f6586", + "job-tracker-ui/out/index.txt": "dae993f53affb686262f8ae8e75718ef05b43cdf4b9b7391376fe8ca4fe41ccf", + "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/import-conversion-counts/1440-en-light-converted-0.gz b/docs/i18n/evidence/import-conversion-counts/1440-en-light-converted-0.gz new file mode 100644 index 00000000..fedabe56 Binary files /dev/null and b/docs/i18n/evidence/import-conversion-counts/1440-en-light-converted-0.gz differ diff --git a/docs/i18n/evidence/import-conversion-counts/1440-en-light-converted-1.gz b/docs/i18n/evidence/import-conversion-counts/1440-en-light-converted-1.gz new file mode 100644 index 00000000..4b7c8e6f Binary files /dev/null and b/docs/i18n/evidence/import-conversion-counts/1440-en-light-converted-1.gz differ diff --git a/docs/i18n/evidence/import-conversion-counts/1440-en-light-converted-2.gz b/docs/i18n/evidence/import-conversion-counts/1440-en-light-converted-2.gz new file mode 100644 index 00000000..880a0b3d Binary files /dev/null and b/docs/i18n/evidence/import-conversion-counts/1440-en-light-converted-2.gz differ diff --git a/docs/i18n/evidence/import-conversion-counts/1440-en-light-count-0.png b/docs/i18n/evidence/import-conversion-counts/1440-en-light-count-0.png new file mode 100644 index 00000000..8846e0cb Binary files /dev/null and b/docs/i18n/evidence/import-conversion-counts/1440-en-light-count-0.png differ diff --git a/docs/i18n/evidence/import-conversion-counts/1440-en-light-count-1.png b/docs/i18n/evidence/import-conversion-counts/1440-en-light-count-1.png new file mode 100644 index 00000000..0c267582 Binary files /dev/null and b/docs/i18n/evidence/import-conversion-counts/1440-en-light-count-1.png differ diff --git a/docs/i18n/evidence/import-conversion-counts/1440-en-light-count-2.png b/docs/i18n/evidence/import-conversion-counts/1440-en-light-count-2.png new file mode 100644 index 00000000..7d94938e Binary files /dev/null and b/docs/i18n/evidence/import-conversion-counts/1440-en-light-count-2.png differ diff --git a/docs/i18n/evidence/import-conversion-counts/390-nb-dark-converted-0.gz b/docs/i18n/evidence/import-conversion-counts/390-nb-dark-converted-0.gz new file mode 100644 index 00000000..fedabe56 Binary files /dev/null and b/docs/i18n/evidence/import-conversion-counts/390-nb-dark-converted-0.gz differ diff --git a/docs/i18n/evidence/import-conversion-counts/390-nb-dark-converted-1.gz b/docs/i18n/evidence/import-conversion-counts/390-nb-dark-converted-1.gz new file mode 100644 index 00000000..4b7c8e6f Binary files /dev/null and b/docs/i18n/evidence/import-conversion-counts/390-nb-dark-converted-1.gz differ diff --git a/docs/i18n/evidence/import-conversion-counts/390-nb-dark-converted-2.gz b/docs/i18n/evidence/import-conversion-counts/390-nb-dark-converted-2.gz new file mode 100644 index 00000000..880a0b3d Binary files /dev/null and b/docs/i18n/evidence/import-conversion-counts/390-nb-dark-converted-2.gz differ diff --git a/docs/i18n/evidence/import-conversion-counts/390-nb-dark-count-0.png b/docs/i18n/evidence/import-conversion-counts/390-nb-dark-count-0.png new file mode 100644 index 00000000..0d575fe6 Binary files /dev/null and b/docs/i18n/evidence/import-conversion-counts/390-nb-dark-count-0.png differ diff --git a/docs/i18n/evidence/import-conversion-counts/390-nb-dark-count-1.png b/docs/i18n/evidence/import-conversion-counts/390-nb-dark-count-1.png new file mode 100644 index 00000000..465eafae Binary files /dev/null and b/docs/i18n/evidence/import-conversion-counts/390-nb-dark-count-1.png differ diff --git a/docs/i18n/evidence/import-conversion-counts/390-nb-dark-count-2.png b/docs/i18n/evidence/import-conversion-counts/390-nb-dark-count-2.png new file mode 100644 index 00000000..cabd9751 Binary files /dev/null and b/docs/i18n/evidence/import-conversion-counts/390-nb-dark-count-2.png differ diff --git a/docs/i18n/evidence/import-conversion-counts/BROWSER.json b/docs/i18n/evidence/import-conversion-counts/BROWSER.json new file mode 100644 index 00000000..0e316408 --- /dev/null +++ b/docs/i18n/evidence/import-conversion-counts/BROWSER.json @@ -0,0 +1,117 @@ +{ + "journeys": [ + { + "name": "390-nb-dark", + "counts": [ + 0, + 1, + 2 + ], + "downloads": 3 + }, + { + "name": "1440-en-light", + "counts": [ + 0, + 1, + 2 + ], + "downloads": 3 + } + ], + "downloads": [ + { + "name": "390-nb-dark", + "kind": "converted", + "expectedCount": 0, + "filename": "390-nb-dark-converted-0.gz", + "bytes": 2, + "rawSha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945", + "gzipSha256": "50c15d921df28492e2d9bf2da5d1cd5c78ee416bdcf478074db63d76d2381cba" + }, + { + "name": "390-nb-dark", + "kind": "converted", + "expectedCount": 1, + "filename": "390-nb-dark-converted-1.gz", + "bytes": 235, + "rawSha256": "6af2ec936c07ea767b72978f5e31f17bd750fb942628b6765a5befb544a60bf5", + "gzipSha256": "2117b71f51b07c27587ff99d40acd9ef43b538a62658ce52ea060ab4a3c2cba5" + }, + { + "name": "390-nb-dark", + "kind": "converted", + "expectedCount": 2, + "filename": "390-nb-dark-converted-2.gz", + "bytes": 468, + "rawSha256": "18a8f3b661dc979e030446ecb3977e92fa083e81a73e96847811ba26a861409a", + "gzipSha256": "7f3553fe748c77febb7f3b312d152002e44c1608e05e99b05b7865dac0154326" + }, + { + "name": "1440-en-light", + "kind": "converted", + "expectedCount": 0, + "filename": "1440-en-light-converted-0.gz", + "bytes": 2, + "rawSha256": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945", + "gzipSha256": "50c15d921df28492e2d9bf2da5d1cd5c78ee416bdcf478074db63d76d2381cba" + }, + { + "name": "1440-en-light", + "kind": "converted", + "expectedCount": 1, + "filename": "1440-en-light-converted-1.gz", + "bytes": 235, + "rawSha256": "6af2ec936c07ea767b72978f5e31f17bd750fb942628b6765a5befb544a60bf5", + "gzipSha256": "2117b71f51b07c27587ff99d40acd9ef43b538a62658ce52ea060ab4a3c2cba5" + }, + { + "name": "1440-en-light", + "kind": "converted", + "expectedCount": 2, + "filename": "1440-en-light-converted-2.gz", + "bytes": 468, + "rawSha256": "18a8f3b661dc979e030446ecb3977e92fa083e81a73e96847811ba26a861409a", + "gzipSha256": "7f3553fe748c77febb7f3b312d152002e44c1608e05e99b05b7865dac0154326" + } + ], + "captures": [ + { + "name": "390-nb-dark", + "count": 0, + "violations": [] + }, + { + "name": "390-nb-dark", + "count": 1, + "violations": [] + }, + { + "name": "390-nb-dark", + "count": 2, + "violations": [] + }, + { + "name": "1440-en-light", + "count": 0, + "violations": [] + }, + { + "name": "1440-en-light", + "count": 1, + "violations": [] + }, + { + "name": "1440-en-light", + "count": 2, + "violations": [] + } + ], + "errors": [], + "writes": [], + "unavailableReads": [], + "blockedExternal": [ + "https://fonts.googleapis.com", + "https://fonts.googleapis.com" + ] +} \ No newline at end of file diff --git a/docs/i18n/evidence/import-conversion-counts/BROWSER.txt b/docs/i18n/evidence/import-conversion-counts/BROWSER.txt new file mode 100644 index 00000000..13b29069 --- /dev/null +++ b/docs/i18n/evidence/import-conversion-counts/BROWSER.txt @@ -0,0 +1,3 @@ +Checking 390-nb-dark +Checking 1440-en-light +PASS 2 configurations, 6 native downloads, 6 accessibility scans; no API writes diff --git a/docs/i18n/evidence/import-conversion-counts/BUILD.txt b/docs/i18n/evidence/import-conversion-counts/BUILD.txt new file mode 100644 index 00000000..9594692e --- /dev/null +++ b/docs/i18n/evidence/import-conversion-counts/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 31ms + + Creating an optimized production build ... +✓ Compiled successfully in 507ms + Running TypeScript ... + Finished TypeScript in 12.7s ... + Collecting page data using 4 workers ... + Generating static pages using 4 workers (0/3) ... +✓ Generating static pages using 4 workers (3/3) in 797ms + Finalizing page optimization ... + +Route (app) +┌ ○ / +└ ○ /_not-found + + +○ (Static) prerendered as static content + diff --git a/docs/i18n/evidence/import-conversion-counts/LINT.txt b/docs/i18n/evidence/import-conversion-counts/LINT.txt new file mode 100644 index 00000000..e69de29b diff --git a/docs/i18n/evidence/import-conversion-counts/RED_CONVERSION.txt b/docs/i18n/evidence/import-conversion-counts/RED_CONVERSION.txt new file mode 100644 index 00000000..224ff59f --- /dev/null +++ b/docs/i18n/evidence/import-conversion-counts/RED_CONVERSION.txt @@ -0,0 +1,220 @@ + +> job-tracker-ui@0.1.0 test +> jest --runInBand job-export-lifetime.test.tsx + +FAIL src/job-export-lifetime.test.tsx (10.566 s) + ● en conversion distinguishes zero, one and multiple rows + + Unable to find an element with the text: Converted 1 row to import JSON.. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. + + Ignored nodes: comments, script, style + +
+
+
+
+

+ Import / Export +

+

+ Import expects the JSON exported by this app (an array of job objects with embedded company). +

+
+
+
+
+

+ Imports create new jobs from supported fields. IDs, owners, history, attachments and CV associations are not restored. Keep Settings open until the import finishes. If you leave, the import may be incomplete. +

+
+ + + + + + +
+
+
+
+
+ + + 104 | await act(async () => fireEvent.change(document.querySelector('input[accept=".csv,text/csv"]')!, { target: { files: [file] } })); + 105 | const message = language === "en" ? `Converted ${count} ${count === 1 ? "row" : "rows"} to import JSON.` : `Konverterte ${count} ${count === 1 ? "rad" : "rader"} til import-JSON.`; + > 106 | expect(await screen.findByText(message)).toBeVisible(); + | ^ + 107 | } + 108 | expect(download).toHaveBeenCalledTimes(3); expect(client.post).not.toHaveBeenCalled(); + 109 | }); + + at waitForWrapper (node_modules/@testing-library/dom/dist/wait-for.js:163:27) + at node_modules/@testing-library/dom/dist/query-helpers.js:86:33 + at findByText (src/job-export-lifetime.test.tsx:106:25) + + ● nb conversion distinguishes zero, one and multiple rows + + Unable to find an element with the text: Konverterte 1 rad til import-JSON.. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. + + Ignored nodes: comments, script, style + +
+
+
+
+

+ Import / eksport +

+

+ Import forventer JSON eksportert av denne appen (en matrise med jobbobjekter med innebygd selskap). +

+
+
+
+
+

+ Import oppretter nye jobber fra støttede felt. ID-er, eiere, historikk, vedlegg og CV-koblinger gjenopprettes ikke. Hold Innstillinger åpent til importen er ferdig. Hvis du går ut, kan importen bli ufullstendig. +

+
+ + + + + + +
+
+
+
+
+ + + 104 | await act(async () => fireEvent.change(document.querySelector('input[accept=".csv,text/csv"]')!, { target: { files: [file] } })); + 105 | const message = language === "en" ? `Converted ${count} ${count === 1 ? "row" : "rows"} to import JSON.` : `Konverterte ${count} ${count === 1 ? "rad" : "rader"} til import-JSON.`; + > 106 | expect(await screen.findByText(message)).toBeVisible(); + | ^ + 107 | } + 108 | expect(download).toHaveBeenCalledTimes(3); expect(client.post).not.toHaveBeenCalled(); + 109 | }); + + at waitForWrapper (node_modules/@testing-library/dom/dist/wait-for.js:163:27) + at node_modules/@testing-library/dom/dist/query-helpers.js:86:33 + at findByText (src/job-export-lifetime.test.tsx:106:25) + +Test Suites: 1 failed, 1 total +Tests: 2 failed, 14 passed, 16 total +Snapshots: 0 total +Time: 11.391 s +Ran all test suites matching job-export-lifetime.test.tsx. diff --git a/docs/i18n/evidence/import-conversion-counts/RED_IMPORT.txt b/docs/i18n/evidence/import-conversion-counts/RED_IMPORT.txt new file mode 100644 index 00000000..a25bb491 --- /dev/null +++ b/docs/i18n/evidence/import-conversion-counts/RED_IMPORT.txt @@ -0,0 +1,238 @@ + +> job-tracker-ui@0.1.0 test +> jest --runInBand job-import.test.tsx + +FAIL src/job-import.test.tsx (11.145 s) + ● en import feedback distinguishes one job from multiple jobs + + Unable to find an element with the text: Imported 1 job.. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. + + Ignored nodes: comments, script, style + +
+ +
+
+
+

+ Import / Export +

+

+ Import expects the JSON exported by this app (an array of job objects with embedded company). +

+
+
+
+
+

+ Imports create new jobs from supported fields. IDs, owners, history, attachments and CV associations are not restored. Keep Settings open until the import finishes. If you leave, the import may be incomplete. +

+
+ + + + + + +
+

+ Last import: 1 +

+
+
+
+
+ + + 60 | await select(selectedFile(Array.from({ length: count }, (_, i) => row(`Synthetic role ${i + 1}`)))); + 61 | const message = language === "en" ? `Imported ${count} ${count === 1 ? "job" : "jobs"}.` : `Importerte ${count} ${count === 1 ? "jobb" : "jobber"}.`; + > 62 | expect(await screen.findByText(message)).toBeVisible(); + | ^ + 63 | } + 64 | expect(mockedApi.post).toHaveBeenCalledTimes(6); + 65 | }); + + at waitForWrapper (node_modules/@testing-library/dom/dist/wait-for.js:163:27) + at node_modules/@testing-library/dom/dist/query-helpers.js:86:33 + at findByText (src/job-import.test.tsx:62:25) + + ● nb import feedback distinguishes one job from multiple jobs + + Unable to find an element with the text: Importerte 1 jobb.. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. + + Ignored nodes: comments, script, style + +
+ +
+
+
+

+ Import / eksport +

+

+ Import forventer JSON eksportert av denne appen (en matrise med jobbobjekter med innebygd selskap). +

+
+
+
+
+

+ Import oppretter nye jobber fra støttede felt. ID-er, eiere, historikk, vedlegg og CV-koblinger gjenopprettes ikke. Hold Innstillinger åpent til importen er ferdig. Hvis du går ut, kan importen bli ufullstendig. +

+
+ + + + + + +
+

+ Siste import: 1 +

+
+
+
+
+ + + 60 | await select(selectedFile(Array.from({ length: count }, (_, i) => row(`Synthetic role ${i + 1}`)))); + 61 | const message = language === "en" ? `Imported ${count} ${count === 1 ? "job" : "jobs"}.` : `Importerte ${count} ${count === 1 ? "jobb" : "jobber"}.`; + > 62 | expect(await screen.findByText(message)).toBeVisible(); + | ^ + 63 | } + 64 | expect(mockedApi.post).toHaveBeenCalledTimes(6); + 65 | }); + + at waitForWrapper (node_modules/@testing-library/dom/dist/wait-for.js:163:27) + at node_modules/@testing-library/dom/dist/query-helpers.js:86:33 + at findByText (src/job-import.test.tsx:62:25) + +Test Suites: 1 failed, 1 total +Tests: 2 failed, 11 passed, 13 total +Snapshots: 0 total +Time: 11.99 s +Ran all test suites matching job-import.test.tsx. diff --git a/docs/i18n/evidence/import-conversion-counts/TESTS.txt b/docs/i18n/evidence/import-conversion-counts/TESTS.txt new file mode 100644 index 00000000..8598efd1 --- /dev/null +++ b/docs/i18n/evidence/import-conversion-counts/TESTS.txt @@ -0,0 +1,10 @@ + +> job-tracker-ui@0.1.0 test +> jest --runInBand job-export-lifetime.test.tsx job-import.test.tsx settings-import-lifetime.test.tsx file-picker-activation.test.tsx translation-catalogue.test.ts i18n-provider.test.tsx + + +Test Suites: 6 passed, 6 total +Tests: 50 passed, 50 total +Snapshots: 0 total +Time: 10.554 s +Ran all test suites matching job-export-lifetime.test.tsx|job-import.test.tsx|settings-import-lifetime.test.tsx|file-picker-activation.test.tsx|translation-catalogue.test.ts|i18n-provider.test.tsx.