@@ -4,7 +4,8 @@ import { expect, test } from '@playwright/test';
44import cs from 'convert-stream' ;
55import 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
910test . 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