diff --git a/src/frontend/apps/e2e/.gitignore b/src/frontend/apps/e2e/.gitignore index 848074ac7..475cf2e2c 100644 --- a/src/frontend/apps/e2e/.gitignore +++ b/src/frontend/apps/e2e/.gitignore @@ -2,4 +2,5 @@ test-results/ report/ blob-report/ +playwright/.auth/ playwright/.cache/ diff --git a/src/frontend/apps/e2e/__tests__/app-impress/404.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/404.spec.ts index f21cf775d..04753fa5b 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/404.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/404.spec.ts @@ -1,10 +1,6 @@ import { expect, test } from '@playwright/test'; -import { signIn } from './common'; - -test.beforeEach(async ({ page, browserName }) => { - await page.goto('/'); - await signIn(page, browserName); +test.beforeEach(async ({ page }) => { await page.goto('unknown-page404'); }); diff --git a/src/frontend/apps/e2e/__tests__/app-impress/auth.setup.ts b/src/frontend/apps/e2e/__tests__/app-impress/auth.setup.ts new file mode 100644 index 000000000..49706f3f0 --- /dev/null +++ b/src/frontend/apps/e2e/__tests__/app-impress/auth.setup.ts @@ -0,0 +1,11 @@ +import { test as setup } from '@playwright/test'; + +import { signIn } from './common'; + +const authFile = 'playwright/.auth/user.json'; + +setup('authenticate', async ({ page, browserName }) => { + await page.goto('/'); + await signIn(page, browserName); + await page.context().storageState({ path: authFile }); +}); diff --git a/src/frontend/apps/e2e/__tests__/app-impress/header.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/header.spec.ts index 400286246..7e9d24b62 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/header.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/header.spec.ts @@ -1,10 +1,7 @@ import { expect, test } from '@playwright/test'; -import { signIn } from './common'; - -test.beforeEach(async ({ page, browserName }) => { +test.beforeEach(async ({ page }) => { await page.goto('/'); - await signIn(page, browserName); }); test.describe('Header', () => { 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 f35a05faf..26f0bc0d2 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/language.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/language.spec.ts @@ -1,10 +1,7 @@ import { expect, test } from '@playwright/test'; -import { signIn } from './common'; - -test.beforeEach(async ({ page, browserName }) => { +test.beforeEach(async ({ page }) => { await page.goto('/'); - await signIn(page, browserName); }); test.describe('Language', () => { diff --git a/src/frontend/apps/e2e/playwright.config.ts b/src/frontend/apps/e2e/playwright.config.ts index 22a12a9cf..510513b37 100644 --- a/src/frontend/apps/e2e/playwright.config.ts +++ b/src/frontend/apps/e2e/playwright.config.ts @@ -43,13 +43,16 @@ export default defineConfig({ /* Configure projects for major browsers */ projects: [ + { name: 'setup', testMatch: /.*\.setup\.ts/ }, { name: 'chromium', use: { ...devices['Desktop Chrome'], locale: 'en-US', ignoreHTTPSErrors: true, + storageState: 'playwright/.auth/user.json', }, + dependencies: ['setup'], }, { name: 'webkit', @@ -57,7 +60,9 @@ export default defineConfig({ ...devices['Desktop Safari'], locale: 'en-US', ignoreHTTPSErrors: true, + storageState: 'playwright/.auth/user.json', }, + dependencies: ['setup'], }, ], });