diff --git a/job-tracker-ui/src/cv-builder-deep-link.test.tsx b/job-tracker-ui/src/cv-builder-deep-link.test.tsx
index 3706de7b..a4cfe016 100644
--- a/job-tracker-ui/src/cv-builder-deep-link.test.tsx
+++ b/job-tracker-ui/src/cv-builder-deep-link.test.tsx
@@ -4,7 +4,7 @@ import { act, fireEvent, render, screen, waitFor, within } from '@testing-librar
import { createMemoryRouter, RouterProvider } from 'react-router-dom';
import CvBuilderEditor from './views/CvBuilderEditor';
-import { I18nProvider } from './i18n/I18nProvider';
+import { I18nProvider, useI18n } from './i18n/I18nProvider';
import { translations } from './i18n/translations';
import { ToastProvider } from './toast';
import { api } from './api';
@@ -41,13 +41,14 @@ const variant = {
updatedAtUtc: '2026-07-19T10:00:00Z',
};
-function renderAt(id: number, strict = false) {
+function renderAt(id: number, strict = false, extra?: React.ReactNode) {
const router = createMemoryRouter([
{ path: '/career/builder/:id', element:
cv
'))); + const document = (frame as HTMLIFrameElement).contentDocument!; + document.documentElement.dataset.cvPreviewReady = 'true'; document.documentElement.dataset.cvPreviewPages = String(pages); fireEvent.load(frame); + const label = (locale: 'en' | 'nb') => locale === 'en' ? `${pages}-page CV` : `CV på ${pages} ${pages === 1 ? 'side' : 'sider'}`; + await screen.findByText(label(language)); fireEvent.click(screen.getByRole('button', { name: 'Switch count language' })); await screen.findByText(label(language === 'en' ? 'nb' : 'en')); + expect(mockedApi.put).not.toHaveBeenCalled(); +}); + async function openContentTab() { await screen.findByDisplayValue('Backend CV'); fireEvent.click(screen.getByRole('tab', { name: 'Content' })); diff --git a/job-tracker-ui/src/i18n/translations.ts b/job-tracker-ui/src/i18n/translations.ts index 1230e169..bde6d07b 100644 --- a/job-tracker-ui/src/i18n/translations.ts +++ b/job-tracker-ui/src/i18n/translations.ts @@ -918,6 +918,7 @@ export const translations = { cvEditorSourceProfile: "Source: Career Profile", cvEditorReordered: "{item}: position {position} of {total}.", cvEditorSectionEntryCount: "{count} entries", + cvEditorSectionSingleEntry: "{count} entry", cvEditorHistoryScope: "These are CV settings revisions. Restoring uses your current Career Profile, including any later changes to inherited content. Recorded application packages preserve separate historical documents.", cvEditorGoToPage: "Go to page", assetsLetterWorkspace: "Letter workspace", @@ -1168,6 +1169,7 @@ export const translations = { cvEditorDocument: "Document", cvEditorPageSize: "Page size", cvEditorPageCount: "{count}-page CV", + cvEditorSinglePageCount: "{count}-page CV", cvEditorUsLetter: "US Letter", cvEditorDateLongExample: "January 2020", cvEditorDateShortExample: "Jan 2020", @@ -4136,6 +4138,7 @@ export const translations = { cvEditorSourceProfile: "Kilde: Karriereprofil", cvEditorReordered: "{item}: plassering {position} av {total}.", cvEditorSectionEntryCount: "{count} oppføringer", + cvEditorSectionSingleEntry: "{count} oppføring", cvEditorHistoryScope: "Dette er versjoner av CV-innstillinger. Gjenoppretting bruker gjeldende karriereprofil, også senere endringer i arvet innhold. Registrerte søknadspakker bevarer egne historiske dokumenter.", cvEditorGoToPage: "Gå til side", assetsLetterWorkspace: "Søknadsbrev", @@ -4386,6 +4389,7 @@ export const translations = { cvEditorDocument: "Dokument", cvEditorPageSize: "Sidestørrelse", cvEditorPageCount: "CV på {count} sider", + cvEditorSinglePageCount: "CV på {count} side", cvEditorUsLetter: "US Letter", cvEditorDateLongExample: "Januar 2020", cvEditorDateShortExample: "Jan. 2020", diff --git a/job-tracker-ui/src/views/CvBuilderEditor.tsx b/job-tracker-ui/src/views/CvBuilderEditor.tsx index df14c1b8..5e9b6ed4 100644 --- a/job-tracker-ui/src/views/CvBuilderEditor.tsx +++ b/job-tracker-ui/src/views/CvBuilderEditor.tsx @@ -711,7 +711,9 @@ export default function CvBuilderEditor() {