Skip to content

Commit 409e073

Browse files
committed
🤡(e2e) mock PATCH language switch
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.
1 parent 886dcb7 commit 409e073

File tree

3 files changed

+15
-30
lines changed

3 files changed

+15
-30
lines changed

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -484,8 +484,6 @@ test.describe('Doc Export', () => {
484484
const pdfString = pdfBuffer.toString('latin1');
485485

486486
expect(pdfString).toContain('/Lang (fr)');
487-
488-
await waitForLanguageSwitch(page, TestLanguage.English);
489487
});
490488

491489
test('it exports the doc with interlinking', async ({

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

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,10 @@
1-
import { Page, expect, test } from '@playwright/test';
1+
import { expect, test } from '@playwright/test';
22

33
import { TestLanguage, createDoc, waitForLanguageSwitch } from './utils-common';
44

5-
test.describe.serial('Language', () => {
6-
let page: Page;
7-
8-
test.beforeAll(async ({ browser }) => {
9-
page = await browser.newPage();
10-
});
11-
12-
test.afterAll(async () => {
13-
await page.close();
14-
});
15-
5+
test.describe('Language', () => {
166
test.beforeEach(async ({ page }) => {
177
await page.goto('/');
18-
await waitForLanguageSwitch(page, TestLanguage.English);
19-
});
20-
21-
test.afterEach(async ({ page }) => {
22-
// Switch back to English - important for other tests to run as expected
23-
await waitForLanguageSwitch(page, TestLanguage.English);
248
});
259

2610
test('checks language switching', async ({ page }) => {

src/frontend/apps/e2e/__tests__/app-impress/utils-common.ts

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,18 @@ export async function waitForLanguageSwitch(
296296
page: Page,
297297
lang: TestLanguageValue,
298298
) {
299+
await page.route('**/api/v1.0/users/**', async (route, request) => {
300+
if (request.method().includes('PATCH')) {
301+
await route.fulfill({
302+
json: {
303+
language: lang.expectedLocale[0],
304+
},
305+
});
306+
} else {
307+
await route.continue();
308+
}
309+
});
310+
299311
const header = page.locator('header').first();
300312
const languagePicker = header.locator('.--docs--language-picker-text');
301313
const isAlreadyTargetLanguage = await languagePicker
@@ -307,15 +319,6 @@ export async function waitForLanguageSwitch(
307319
}
308320

309321
await languagePicker.click();
310-
const responsePromise = page.waitForResponse(
311-
(resp) =>
312-
resp.url().includes('/user') && resp.request().method() === 'PATCH',
313-
);
314-
await page.getByLabel(lang.label).click();
315-
const resolvedResponsePromise = await responsePromise;
316-
const responseData = (await resolvedResponsePromise.json()) as {
317-
language: string;
318-
};
319322

320-
expect(lang.expectedLocale).toContain(responseData.language);
323+
await page.getByLabel(lang.label).click();
321324
}

0 commit comments

Comments
 (0)