From 310154815b67ce4ce5aaccfb3c5830a0b749a542 Mon Sep 17 00:00:00 2001 From: Anthony LC Date: Tue, 13 May 2025 11:24:02 +0200 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F(e2e)=20improve=20config=20te?= =?UTF-8?q?stcases?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Improve config testcases: - let THEME_CUSTOMIZATION_FILE_PATH to be set to check the default value - add helper function overrideConfig --- env.d/development/common.e2e.dist | 3 +- .../apps/e2e/__tests__/app-impress/common.ts | 18 +++++ .../e2e/__tests__/app-impress/config.spec.ts | 65 +++++-------------- .../e2e/__tests__/app-impress/home.spec.ts | 16 +---- 4 files changed, 37 insertions(+), 65 deletions(-) diff --git a/env.d/development/common.e2e.dist b/env.d/development/common.e2e.dist index 94322d0f..6a67a40b 100644 --- a/env.d/development/common.e2e.dist +++ b/env.d/development/common.e2e.dist @@ -1,7 +1,6 @@ # For the CI job test-e2e -SUSTAINED_THROTTLE_RATES="200/hour" BURST_THROTTLE_RATES="200/minute" DJANGO_SERVER_TO_SERVER_API_TOKENS=test-e2e +SUSTAINED_THROTTLE_RATES="200/hour" Y_PROVIDER_API_KEY=yprovider-api-key Y_PROVIDER_API_BASE_URL=http://y-provider:4444/api/ -THEME_CUSTOMIZATION_FILE_PATH="" #force theme_customization to be empty \ No newline at end of file diff --git a/src/frontend/apps/e2e/__tests__/app-impress/common.ts b/src/frontend/apps/e2e/__tests__/app-impress/common.ts index 09e1ce74..eadb609f 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/common.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/common.ts @@ -22,6 +22,24 @@ export const CONFIG = { theme_customization: {}, }; +export const overrideConfig = async ( + page: Page, + newConfig: { [K in keyof typeof CONFIG]?: unknown }, +) => + await page.route('**/api/v1.0/config/', async (route) => { + const request = route.request(); + if (request.method().includes('GET')) { + await route.fulfill({ + json: { + ...CONFIG, + ...newConfig, + }, + }); + } else { + await route.continue(); + } + }); + export const keyCloakSignIn = async ( page: Page, browserName: string, diff --git a/src/frontend/apps/e2e/__tests__/app-impress/config.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/config.spec.ts index 6a47bed4..276e06dc 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/config.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/config.spec.ts @@ -2,7 +2,7 @@ import path from 'path'; import { expect, test } from '@playwright/test'; -import { CONFIG, createDoc } from './common'; +import { CONFIG, createDoc, overrideConfig } from './common'; test.describe('Config', () => { test('it checks the config api is called', async ({ page }) => { @@ -16,24 +16,19 @@ test.describe('Config', () => { const response = await responsePromise; expect(response.ok()).toBeTruthy(); - expect(await response.json()).toStrictEqual(CONFIG); + const json = (await response.json()) as typeof CONFIG; + const { theme_customization, ...configApi } = json; + expect(theme_customization).toBeDefined(); + const { theme_customization: _, ...CONFIG_LEFT } = CONFIG; + + expect(configApi).toStrictEqual(CONFIG_LEFT); }); test('it checks that sentry is trying to init from config endpoint', async ({ page, }) => { - await page.route('**/api/v1.0/config/', async (route) => { - const request = route.request(); - if (request.method().includes('GET')) { - await route.fulfill({ - json: { - ...CONFIG, - SENTRY_DSN: 'https://sentry.io/123', - }, - }); - } else { - await route.continue(); - } + await overrideConfig(page, { + SENTRY_DSN: 'https://sentry.io/123', }); const invalidMsg = 'Invalid Sentry Dsn: https://sentry.io/123'; @@ -98,18 +93,8 @@ test.describe('Config', () => { page, browserName, }) => { - await page.route('**/api/v1.0/config/', async (route) => { - const request = route.request(); - if (request.method().includes('GET')) { - await route.fulfill({ - json: { - ...CONFIG, - AI_FEATURE_ENABLED: false, - }, - }); - } else { - await route.continue(); - } + await overrideConfig(page, { + AI_FEATURE_ENABLED: false, }); await page.goto('/'); @@ -129,18 +114,8 @@ test.describe('Config', () => { test('it checks that Crisp is trying to init from config endpoint', async ({ page, }) => { - await page.route('**/api/v1.0/config/', async (route) => { - const request = route.request(); - if (request.method().includes('GET')) { - await route.fulfill({ - json: { - ...CONFIG, - CRISP_WEBSITE_ID: '1234', - }, - }); - } else { - await route.continue(); - } + await overrideConfig(page, { + CRISP_WEBSITE_ID: '1234', }); await page.goto('/'); @@ -151,18 +126,8 @@ test.describe('Config', () => { }); test('it checks FRONTEND_CSS_URL config', async ({ page }) => { - await page.route('**/api/v1.0/config/', async (route) => { - const request = route.request(); - if (request.method().includes('GET')) { - await route.fulfill({ - json: { - ...CONFIG, - FRONTEND_CSS_URL: 'http://localhost:123465/css/style.css', - }, - }); - } else { - await route.continue(); - } + await overrideConfig(page, { + FRONTEND_CSS_URL: 'http://localhost:123465/css/style.css', }); await page.goto('/'); diff --git a/src/frontend/apps/e2e/__tests__/app-impress/home.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/home.spec.ts index d2587929..b3c7be40 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/home.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/home.spec.ts @@ -1,6 +1,6 @@ import { expect, test } from '@playwright/test'; -import { CONFIG } from './common'; +import { overrideConfig } from './common'; test.beforeEach(async ({ page }) => { await page.goto('/docs/'); @@ -54,18 +54,8 @@ test.describe('Home page', () => { }); test('it checks the homepage feature flag', async ({ page }) => { - await page.route('**/api/v1.0/config/', async (route) => { - const request = route.request(); - if (request.method().includes('GET')) { - await route.fulfill({ - json: { - ...CONFIG, - FRONTEND_HOMEPAGE_FEATURE_ENABLED: false, - }, - }); - } else { - await route.continue(); - } + await overrideConfig(page, { + FRONTEND_HOMEPAGE_FEATURE_ENABLED: false, }); await page.goto('/');