-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathglobal-setup.ts
37 lines (30 loc) · 1.13 KB
/
global-setup.ts
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
import { chromium, type FullConfig } from "@playwright/test";
import commons from "./pages/commons.page";
async function globalSetup(config: FullConfig) {
const { storageState } = config.projects[0].use;
const browser = await chromium.launch();
const page = await browser.newPage();
const common = new commons(page);
// Ensure environment variables are defined
const baseURL = process.env.URL;
const username = process.env.username;
const password = process.env.password;
if (!username || !password) {
throw new Error(
"Environment variables 'username' and 'password' must be defined."
);
}
// Navigate to base URL
await page.goto(baseURL!);
// Perform login steps
await common.usernameInputField.click();
await common.usernameInputField.fill(username);
await common.passowrdInputField.click();
await common.passowrdInputField.fill(password);
await common.page.waitForTimeout(2000);
await common.loginButton.click();
// Save the storage state for authenticated sessions
await page.context().storageState({ path: storageState as string });
await browser.close();
}
export default globalSetup;