From 409e073192e81cb76aa93283e0604ed083584d29 Mon Sep 17 00:00:00 2001 From: Anthony LC Date: Tue, 5 Aug 2025 10:59:49 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=A4=A1(e2e)=20mock=20PATCH=20language=20s?= =?UTF-8?q?witch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We add some flaky tests because the aria label selectors were not everytime in english language. It was because the language switch was not mocked in the e2e tests, impacting the consistency of other concurrent tests. We mock the language switch in the e2e tests to ensure that the other tests are not impacted by the language switch. --- .../__tests__/app-impress/doc-export.spec.ts | 2 -- .../__tests__/app-impress/language.spec.ts | 20 ++-------------- .../e2e/__tests__/app-impress/utils-common.ts | 23 +++++++++++-------- 3 files changed, 15 insertions(+), 30 deletions(-) diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-export.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-export.spec.ts index 41ef9dca..1e14c42e 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-export.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-export.spec.ts @@ -484,8 +484,6 @@ test.describe('Doc Export', () => { const pdfString = pdfBuffer.toString('latin1'); expect(pdfString).toContain('/Lang (fr)'); - - await waitForLanguageSwitch(page, TestLanguage.English); }); test('it exports the doc with interlinking', async ({ 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 c3888ac7..c88ade2a 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/language.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/language.spec.ts @@ -1,26 +1,10 @@ -import { Page, expect, test } from '@playwright/test'; +import { expect, test } from '@playwright/test'; import { TestLanguage, createDoc, waitForLanguageSwitch } from './utils-common'; -test.describe.serial('Language', () => { - let page: Page; - - test.beforeAll(async ({ browser }) => { - page = await browser.newPage(); - }); - - test.afterAll(async () => { - await page.close(); - }); - +test.describe('Language', () => { test.beforeEach(async ({ page }) => { await page.goto('/'); - await waitForLanguageSwitch(page, TestLanguage.English); - }); - - test.afterEach(async ({ page }) => { - // Switch back to English - important for other tests to run as expected - await waitForLanguageSwitch(page, TestLanguage.English); }); test('checks language switching', async ({ page }) => { 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 09dac792..4cbf886b 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/utils-common.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/utils-common.ts @@ -296,6 +296,18 @@ export async function waitForLanguageSwitch( page: Page, lang: TestLanguageValue, ) { + 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(); + } + }); + const header = page.locator('header').first(); const languagePicker = header.locator('.--docs--language-picker-text'); const isAlreadyTargetLanguage = await languagePicker @@ -307,15 +319,6 @@ export async function waitForLanguageSwitch( } await languagePicker.click(); - const responsePromise = page.waitForResponse( - (resp) => - resp.url().includes('/user') && resp.request().method() === 'PATCH', - ); - await page.getByLabel(lang.label).click(); - const resolvedResponsePromise = await responsePromise; - const responseData = (await resolvedResponsePromise.json()) as { - language: string; - }; - expect(lang.expectedLocale).toContain(responseData.language); + await page.getByLabel(lang.label).click(); }