login.setup.ts 1.35 KB
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);
});