Skip to content

Commit ab06646

Browse files
committed
✅(e2e) ensure i18n.language is injected into generated PDF
Adds an end-to-end test to verify language injection in the generated PDF. Signed-off-by: Cyril <[email protected]>
1 parent e40a69c commit ab06646

File tree

1 file changed

+69
-1
lines changed

1 file changed

+69
-1
lines changed

src/frontend/apps/e2e/__tests__/app-impress/doc-export.spec.ts

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import { expect, test } from '@playwright/test';
44
import cs from 'convert-stream';
55
import pdf from 'pdf-parse';
66

7-
import { createDoc, verifyDocName } from './utils-common';
7+
import { TestLanguage, waitForLanguageSwitch } from './language.spec';
8+
import { createDoc, randomName, verifyDocName } from './utils-common';
89

910
test.beforeEach(async ({ page }) => {
1011
await page.goto('/');
@@ -411,4 +412,71 @@ test.describe('Doc Export', () => {
411412
expect(pdfData.text).toContain('Column 2');
412413
expect(pdfData.text).toContain('Column 3');
413414
});
415+
416+
test('it injects the correct language attribute into PDF export', async ({
417+
page,
418+
browserName,
419+
}) => {
420+
await waitForLanguageSwitch(page, TestLanguage.French);
421+
422+
// Wait for the page to be ready after language switch
423+
await page.waitForLoadState('domcontentloaded');
424+
425+
const header = page.locator('header').first();
426+
await header.locator('h2').getByText('Docs').click();
427+
428+
const randomDocFrench = randomName(
429+
'doc-language-export-french',
430+
browserName,
431+
1,
432+
)[0];
433+
434+
await page
435+
.getByRole('button', {
436+
name: 'Nouveau doc',
437+
})
438+
.click();
439+
440+
await page.waitForURL('**/docs/**', {
441+
timeout: 10000,
442+
waitUntil: 'domcontentloaded',
443+
});
444+
445+
const input = page.getByLabel('doc title input');
446+
await expect(input).toBeVisible();
447+
await expect(input).toHaveText('');
448+
await input.click();
449+
await input.fill(randomDocFrench);
450+
await input.blur();
451+
452+
const editor = page.locator('.ProseMirror.bn-editor');
453+
await editor.click();
454+
await editor.fill('Contenu de test pour export en français');
455+
456+
await page
457+
.getByRole('button', {
458+
name: 'download',
459+
exact: true,
460+
})
461+
.click();
462+
463+
const downloadPromise = page.waitForEvent('download', (download) => {
464+
return download.suggestedFilename().includes(`${randomDocFrench}.pdf`);
465+
});
466+
467+
void page
468+
.getByRole('button', {
469+
name: 'Télécharger',
470+
exact: true,
471+
})
472+
.click();
473+
474+
const download = await downloadPromise;
475+
expect(download.suggestedFilename()).toBe(`${randomDocFrench}.pdf`);
476+
477+
const pdfBuffer = await cs.toBuffer(await download.createReadStream());
478+
const pdfString = pdfBuffer.toString('latin1');
479+
480+
expect(pdfString).toContain('/Lang (fr)');
481+
});
414482
});

0 commit comments

Comments
 (0)