Skip to content

Commit 640550a

Browse files
committed
set access token
1 parent 7011f92 commit 640550a

3 files changed

Lines changed: 30 additions & 3 deletions

File tree

testing/e2e/src/1.1-auth.spec.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { users } from './helpers/data';
22
import { expect, test } from './helpers/fixtures';
33

4+
import type { ProjectAuth } from './helpers/types';
5+
46
test.describe('redirects', () => {
57
test('should redirect to login page from the index page', async ({ page }) => {
68
await page.goto('/');
@@ -9,10 +11,19 @@ test.describe('redirects', () => {
911
});
1012

1113
test.describe('login page', () => {
12-
test('should allow logging in', async ({ getPageModel, getProjectMetadata }) => {
13-
const loginPage = await getPageModel('/auth/login');
14+
test('should allow logging in', async ({ getPageModel, getProjectMetadata, setProjectAuth }) => {
1415
const credentials = users[getProjectMetadata('browserTarget')];
16+
const loginPage = await getPageModel('/auth/login');
17+
const loginResponsePromise = loginPage.$ref.waitForResponse((response) => {
18+
return response.url().endsWith('/v1/auth/login') && response.status() === 200;
19+
});
20+
1521
await loginPage.fillLoginForm(credentials);
1622
await loginPage.expect.toHaveURL('/dashboard');
23+
24+
const response = await loginResponsePromise;
25+
const body = await response.json();
26+
expect(typeof body.accessToken).toBe('string');
27+
setProjectAuth({ accessToken: body.accessToken as string } satisfies ProjectAuth);
1728
});
1829
});

testing/e2e/src/helpers/fixtures.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
/* eslint-disable no-empty-pattern */
22

3+
import * as fs from 'node:fs';
4+
35
import { test as base, expect } from '@playwright/test';
46

57
import { LoginPage } from '../pages/auth/login.page';
68
import { DashboardPage } from '../pages/dashboard.page';
79
import { SubjectDataTablePage } from '../pages/datahub/subject-data-table.page';
810
import { SetupPage } from '../pages/setup.page';
911

10-
import type { NavigateVariadicArgs, ProjectMetadata, RouteTo } from './types';
12+
import type { NavigateVariadicArgs, ProjectAuth, ProjectMetadata, RouteTo } from './types';
1113

1214
type PageModels = typeof pageModels;
1315

@@ -20,6 +22,7 @@ type TestArgs = {
2022

2123
type WorkerArgs = {
2224
getProjectMetadata: <TKey extends Extract<keyof ProjectMetadata, string>>(key: TKey) => ProjectMetadata[TKey];
25+
setProjectAuth: (auth: ProjectAuth) => void;
2326
};
2427

2528
const pageModels = {
@@ -46,6 +49,15 @@ export const test = base.extend<TestArgs, WorkerArgs>({
4649
});
4750
},
4851
{ scope: 'worker' }
52+
],
53+
setProjectAuth: [
54+
async ({ getProjectMetadata }, use) => {
55+
return use((auth) => {
56+
const authStorageFile = getProjectMetadata('authStorageFile');
57+
fs.writeFileSync(authStorageFile, JSON.stringify(auth, null, 2), 'utf-8');
58+
});
59+
},
60+
{ scope: 'worker' }
4961
]
5062
});
5163

testing/e2e/src/helpers/types.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ export type NavigateVariadicArgs<TPath extends RouteTo> = IfNever<
3232

3333
export type NavigateArgs<TPath extends RouteTo> = [to: TPath, ...NavigateVariadicArgs<TPath>];
3434

35+
export type ProjectAuth = {
36+
accessToken: string;
37+
};
38+
3539
export type ProjectMetadata = {
3640
authStorageFile: string;
3741
browserId: string;

0 commit comments

Comments
 (0)