login.setup.ts
1.35 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
import { test as setup, expect } from '@playwright/test';
import path from 'path';
const authFile = path.join(__dirname, '../auth.json');
// 从环境变量获取配置
const BASE_URL = process.env.BASE_URL;
const TEST_USER_NAME = process.env.TEST_USER_NAME;
if (!BASE_URL) {
throw new Error('BASE_URL 环境变量未设置,请设置 BASE_URL 后再运行');
}
if (!TEST_USER_NAME) {
throw new Error('TEST_USER_NAME 环境变量未设置,请设置 TEST_USER_NAME 后再运行');
}
setup('authenticate', async ({ page }) => {
// 1. 先检查 auth.json 是否存在
// 如果存在,并且你想让它自动跳过,可以加一个判断。这里简单起见,总是执行手动登录。
// 实际项目中可以加一个环境变量来控制是否强制重新登录。
console.log('开始执行认证设置...');
// 2. 访问登录页
await page.goto(`${BASE_URL}/#/`);
// 3. 手动登录(这里可以加一些提示)
//console.log('请手动完成手机验证码登录...');
// 4. 等待登录成功,检测某个登录后才会出现的元素
await expect(page.getByText(TEST_USER_NAME)).toBeVisible();
// await page.waitForSelector('text=个人中心', { timeout: 60000 });
// 5. 登录成功后,保存状态
// await page.context().storageState({ path: authFile });
// console.log('认证状态已保存到', authFile);
});