-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathglobal-setup.ts
More file actions
44 lines (38 loc) · 1.52 KB
/
global-setup.ts
File metadata and controls
44 lines (38 loc) · 1.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import { request as apiRequest } from '@playwright/test';
import { AuthApi } from './api/auth.api.js';
import { createRegisterPayload } from './factories/auth.factory.js';
import { UserStorage } from './helpers/user.storage.js';
export default async function globalSetup() {
const requestContext = await apiRequest.newContext({
baseURL: 'https://api.freeapi.app'
});
const api = new AuthApi(requestContext);
// 1. Register user
console.log('[globalSetup] Registering user...');
const registerPayload = createRegisterPayload();
const registerResponse = await api.register(registerPayload);
console.log(`[globalSetup] Register status: ${registerResponse.status()}`);
if (registerResponse.status() !== 201) {
throw new Error(`Registration failed: ${await registerResponse.text()}`);
}
UserStorage.saveUser(registerPayload);
// 2. Login user
console.log('[globalSetup] Logging in user...');
const { username, password } = registerPayload;
const loginResponse = await api.login({ username, password });
console.log(`[globalSetup] Login status: ${loginResponse.status()}`);
if (loginResponse.status() !== 200) {
throw new Error(`Login failed: ${await loginResponse.text()}`);
}
const loginData = await loginResponse.json();
const storedUser = {
...loginData.data,
user: {
...loginData.data.user,
password: registerPayload.password
}
};
UserStorage.saveUser(storedUser);
console.log(`[globalSetup] User authenticated, accessToken saved`);
await requestContext.dispose();
}