From b4b5f9fc2cd00fa419966dccfc9a9cb3875ab80f Mon Sep 17 00:00:00 2001 From: Anthony LC Date: Fri, 7 Aug 2026 10:47:49 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=85(e2e)=20fix=20flakiness=20with=20langu?= =?UTF-8?q?age=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When tests were run in parallel, the language tests could introduce flakiness due to a switch to the default language not being completed before the next test started. --- .../__tests__/app-impress/language.spec.ts | 25 ++++++------------- .../e2e/__tests__/app-impress/utils-common.ts | 25 +++++++++---------- 2 files changed, 19 insertions(+), 31 deletions(-) diff --git a/src/frontend/apps/e2e/__tests__/app-impress/language.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/language.spec.ts index 51082d147..6dccf90fa 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/language.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/language.spec.ts @@ -68,14 +68,19 @@ test.describe('Language', () => { }); test('can switch language using only keyboard', async ({ page }) => { - await waitForLanguageSwitch(page, TestLanguage.English, 'User menu', false); + // switch to french + await waitForLanguageSwitch(page, TestLanguage.French); - await page.getByLabel('User menu').click(); + await page.getByLabel('Menu utilisateur').click(); await page.keyboard.press('Tab'); await page.keyboard.press('Tab'); await page.keyboard.press('Enter'); + await expect( + page.getByRole('button', { name: 'Déconnexion' }), + ).toBeVisible(); + await expect(page.getByRole('menuitem', { name: 'English' })).toBeVisible(); await expect( page.getByRole('menuitem', { name: 'Français' }), @@ -83,22 +88,6 @@ test.describe('Language', () => { await page.waitForTimeout(300); - await page.keyboard.press('ArrowDown'); - await page.keyboard.press('Enter'); - - await expect(page.locator('html')).toHaveAttribute('lang', 'fr'); - await expect( - page.getByRole('button', { name: 'Déconnexion' }), - ).toBeVisible(); - - await page.keyboard.press('Escape'); - - await page.getByLabel('Menu utilisateur').click(); - - await page.keyboard.press('Tab'); - await page.keyboard.press('Tab'); - await page.keyboard.press('Enter'); - await page.waitForTimeout(300); await page.keyboard.press('ArrowDown'); await page.keyboard.press('ArrowUp'); await page.keyboard.press('Enter'); diff --git a/src/frontend/apps/e2e/__tests__/app-impress/utils-common.ts b/src/frontend/apps/e2e/__tests__/app-impress/utils-common.ts index b42785719..dccb9e746 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/utils-common.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/utils-common.ts @@ -402,20 +402,7 @@ export async function waitForLanguageSwitch( page: Page, lang: TestLanguageValue, labelUserMenu = 'User menu', - withMocking = true, ) { - await page.route(/\**\/api\/v1.0\/users\/\**/, async (route, request) => { - if (request.method().includes('PATCH') && withMocking) { - await route.fulfill({ - json: { - language: lang.expectedLocale[0], - }, - }); - } else { - await route.continue(); - } - }); - await page.getByLabel(labelUserMenu).click(); const languagePicker = page.getByRole('button', { name: /Language/ }); const isAlreadyTargetLanguage = await languagePicker @@ -427,6 +414,18 @@ export async function waitForLanguageSwitch( return; } + await page.route(/\**\/api\/v1.0\/users\/\**/, async (route, request) => { + if (request.method().includes('PATCH')) { + await route.fulfill({ + json: { + language: lang.expectedLocale[0], + }, + }); + } else { + await route.continue(); + } + }); + await languagePicker.click(); await page.getByRole('menuitem', { name: lang.label }).click();