- 添加项目配置文件和环境变量设置 - 创建测试用例目录结构和命名规范 - 实现基础测试 fixture 和页面对象模型 - 添加示例测试用例和数据生成器 - 配置 playwright 和 gitignore 文件
53 lines
1.5 KiB
TypeScript
53 lines
1.5 KiB
TypeScript
import { test as base } from '@/fixtures/boss_common';
|
|
import { BrowserContext, Page, TestInfo } from '@playwright/test';
|
|
import path from 'path';
|
|
import fs from 'fs';
|
|
|
|
// 定义商户数据类型
|
|
type Merchant = {
|
|
id: string;
|
|
name: string;
|
|
storageState: string;
|
|
};
|
|
|
|
// 二维码能够解析出url
|
|
const authDirPath = path.resolve(__dirname, '../../.auth');
|
|
if (!fs.existsSync(authDirPath)) {
|
|
fs.mkdirSync(authDirPath, { recursive: true });
|
|
}
|
|
|
|
const merchants: Merchant[] = [
|
|
{
|
|
id: '14920',
|
|
name: '商户 1',
|
|
storageState: path.resolve(authDirPath, 'admin_first.json'),
|
|
},
|
|
{
|
|
id: '14983',
|
|
name: '商户 2',
|
|
storageState: path.resolve(authDirPath, 'admin_second.json'),
|
|
},
|
|
];
|
|
|
|
export const test = base.extend<{
|
|
page: Page;
|
|
}>({
|
|
page: async ({ browser, baseURL }, use, workerInfo: TestInfo) => {
|
|
// 根据 workerIndex 从商户池中获取对应商户
|
|
const selectedMerchant = merchants[workerInfo.workerIndex % merchants.length];
|
|
// const selectedMerchant = merchants[1];
|
|
const context: BrowserContext = await browser.newContext({
|
|
storageState: selectedMerchant.storageState,
|
|
});
|
|
const page: Page = await context.newPage();
|
|
console.log(`使用的商户: ${selectedMerchant.name}`);
|
|
await page.goto(baseURL || '');
|
|
// 使用商户信息进行测试
|
|
await use(page);
|
|
await page.close();
|
|
await context.close();
|
|
},
|
|
});
|
|
|
|
export { expect } from './boss_common';
|