From 552525dfcd65d906c5a2cd4b4782cd3b6e2fc6d8 Mon Sep 17 00:00:00 2001 From: cesnimda Date: Wed, 11 Nov 2026 13:14:09 +0100 Subject: [PATCH] test(applications): cover flat edit dialog at tablet width --- .../scripts/verify-job-date-widgets.mjs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/job-tracker-ui/scripts/verify-job-date-widgets.mjs b/job-tracker-ui/scripts/verify-job-date-widgets.mjs index d6ed7739..1f271dbe 100644 --- a/job-tracker-ui/scripts/verify-job-date-widgets.mjs +++ b/job-tracker-ui/scripts/verify-job-date-widgets.mjs @@ -15,16 +15,19 @@ const report = { journeys: [], captures: [], writes: [], errors: [], unavailable const browser = await chromium.launch(); try { const zones = process.env.A3_PILOT ? ['America/Los_Angeles'] : ['America/Los_Angeles', 'Europe/Oslo', 'Pacific/Kiritimati']; - for (const zone of zones) for (const language of ['en', 'nb']) { - const mobile = language === 'nb'; + const screens = [{ language: 'en', width: 1440, touch: false, theme: 'light' }, { language: 'nb', width: 390, touch: true, theme: 'dark' }]; + if (flatEdit) screens.push({ language: 'nb', width: 768, touch: true, theme: 'light' }); + for (const zone of zones) for (const screen of screens) { + const { language, width, theme } = screen; + const mobile = screen.touch; const copy = translations[language]; - const name = `${zone.replaceAll('/', '-')}-${language}`; + const name = `${zone.replaceAll('/', '-')}-${language}${flatEdit ? `-${width}-${theme}` : ''}`; console.log(`Checking ${name}`); - const context = await browser.newContext({ timezoneId: zone, viewport: { width: mobile ? 390 : 1440, height: 1000 }, hasTouch: mobile, isMobile: mobile, reducedMotion: 'reduce' }); + const context = await browser.newContext({ timezoneId: zone, viewport: { width, height: 1000 }, hasTouch: mobile, isMobile: mobile, reducedMotion: 'reduce' }); const page = await context.newPage(); page.on('pageerror', error => report.errors.push(error.message)); await page.clock.setFixedTime(new Date('2026-11-23T00:30:00Z')); - await page.addInitScript(({ language, mobile }) => { localStorage.setItem('uiLanguage', language); localStorage.setItem('jobtracker.themeMode', mobile ? 'dark' : 'light'); }, { language, mobile }); + await page.addInitScript(({ language, theme }) => { localStorage.setItem('uiLanguage', language); localStorage.setItem('jobtracker.themeMode', theme); }, { language, theme }); const job = { id: 42, version: 7, companyId: 1, company: { id: 1, name: 'Synthetic school' }, jobTitle: 'Teacher', status: 'Applied', dateApplied: '2026-11-23', deadline: '2026-11-23', followUpAt: '2026-11-23', responseReceived: true, responseDate: '2026-11-23', isDeleted: false }; const writes = []; let detailReads = 0; @@ -128,10 +131,10 @@ try { await expect(add).toBeHidden(); assert.equal(writes.length, 2); assert.equal(writes[1].body.dateApplied, '2026-11-24'); assert.equal(writes[1].body.deadline, '2026-11-24'); - report.journeys.push({ zone, language, width: mobile ? 390 : 1440, touch: mobile, theme: mobile ? 'dark' : 'light', sevenCalendarSelections: 'PASS', localeDraftRetention: 'PASS', localToday: today, fixtureSaveCreate: 'PASS' }); + report.journeys.push({ zone, language, width, touch: mobile, theme, sevenCalendarSelections: 'PASS', localeDraftRetention: 'PASS', localToday: today, fixtureSaveCreate: 'PASS' }); await context.close(); } - assert.equal(report.journeys.length, zones.length * 2); assert.deepEqual(report.errors, []); + assert.equal(report.journeys.length, zones.length * screens.length); assert.deepEqual(report.errors, []); console.log(`PASS ${report.journeys.length} real-widget journeys, ${report.captures.length} axe captures, ${report.writes.length} intercepted fixture writes`); } finally { fs.writeFileSync(path.join(out, process.env.A3_PILOT ? 'PILOT.json' : 'BROWSER.json'), JSON.stringify(report, null, 2));