diff --git a/job-tracker-ui/e2e/table-density.spec.ts b/job-tracker-ui/e2e/table-density.spec.ts index bee98d33..5ffa3d4e 100644 --- a/job-tracker-ui/e2e/table-density.spec.ts +++ b/job-tracker-ui/e2e/table-density.spec.ts @@ -12,6 +12,9 @@ async function login(api: APIRequestContext, email: string) { } const test = base.extend<{ owner: { headers: Record; ids: number[] } }>({ owner: async ({ playwright, page, context }, provide) => { + await context.route("**/*", route => ["localhost", "127.0.0.1", "[::1]"].includes(new URL(route.request().url()).hostname) + ? route.continue() + : route.abort()); const admin = await playwright.request.newContext(); try { const adminHeaders = await login(admin, "e2e@example.test"); @@ -136,8 +139,8 @@ for (const mode of ["light", "dark"] as const) for (const language of ["en", "nb if (width === 390 && value === "comfortable") { await page.evaluate(() => window.scrollTo(0, 0)); await capture(page, info, `jobs-top-phone-${suffix}`); - await main.getByRole("button", { name: t.jobTableStatus, exact: true }).click(); - await expect(page.getByRole("menuitem", { name: t.statusOffer, exact: true })).toBeVisible(); + await first.getByRole("button", { name: new RegExp(`^${t.jobTableActions}:`) }).click(); + await expect(page.getByRole("menuitem", { name: t.jobTableSetStatus.replace("{status}", t.statusOffer), exact: true })).toBeVisible(); await page.keyboard.press("Escape"); } // Geometric containment alone misses a title squeezed into one-letter lines. diff --git a/job-tracker-ui/src/components/JobTable.tsx b/job-tracker-ui/src/components/JobTable.tsx index 69a04f6c..fecb96c1 100644 --- a/job-tracker-ui/src/components/JobTable.tsx +++ b/job-tracker-ui/src/components/JobTable.tsx @@ -13,6 +13,7 @@ import { IconButton, InputAdornment, InputLabel, + Link, Menu, MenuItem, Paper, @@ -766,7 +767,7 @@ export default function JobTable({ refreshToken, pageSize, onPageSizeChange, col > - + {showSelection ? toggleSelected(job.id, e.target.checked)} sx={{ mt: -0.5, ml: -1 }} /> : null} @@ -825,7 +826,7 @@ export default function JobTable({ refreshToken, pageSize, onPageSizeChange, col {columns.jobUrl && job.jobUrl ? ( {t("settingsColumnJobUrl")} - {t("jobTableOpenListing")} + {t("jobTableOpenListing")} ) : null} @@ -913,7 +914,7 @@ export default function JobTable({ refreshToken, pageSize, onPageSizeChange, col {columns.dateApplied ? {appliedDateLabel} : null} {columns.daysSince ? {job.daysSince ?? "—"} : null} {job.deadline ? new Date(job.deadline).toLocaleDateString(language === "nb" ? "nb-NO" : "en") : "—"} - {columns.jobUrl ? {job.jobUrl ? {t("jobTableLink")} : ""} : null} + {columns.jobUrl ? {job.jobUrl ? {t("jobTableLink")} : ""} : null} {rowActions(job)} );