- 添加项目配置文件和环境变量设置 - 创建测试用例目录结构和命名规范 - 实现基础测试 fixture 和页面对象模型 - 添加示例测试用例和数据生成器 - 配置 playwright 和 gitignore 文件
111 lines
4.8 KiB
Markdown
111 lines
4.8 KiB
Markdown
这是慧来客的自动化测试系统规范,此项目支持图像化界面管理测试case,自动化测试,流水线发布且支持报告发送和错误现场回溯。如有不懂请联系WQ||Co!
|
||
### 支持的能力
|
||
- ✅图形化测试用例管理
|
||
- ✅多环境支持测试
|
||
- ✅多线程测试
|
||
- ✅多角色测试
|
||
- ✅测试报告生成
|
||
- ✅错误现场还原跟踪
|
||
- ✅测试过程录像
|
||
- ✅测试报告推送到企业微信
|
||
- ✅API接口测试
|
||
- ❌API压力测试
|
||
|
||
### 目录结构
|
||
```md
|
||
playwright_project/
|
||
│
|
||
├── .auth/ # 认证信息存放位置
|
||
├── node_modules/ # 存放 npm 包
|
||
├── playwright-report/ #测试报告存放目录
|
||
├── package.json # 项目配置文件
|
||
├── test-results/ #测试解过
|
||
├── playwright.config.ts # Playwright 配置文件
|
||
├── tests/ # 测试case文件存放目录
|
||
│ ├── touch/ # 慧来客touch端case的存放
|
||
│ │ ├── cashier_registration.spec.js # 挂单
|
||
│ │ ├── cashier_collection.spec.js #收款
|
||
│ │ └── ...
|
||
│ ├── mallh5/ # 慧来客客户端h5
|
||
│ │ ├── Mine_card.spec.js # 会员卡查看
|
||
│ │ └── ...
|
||
│ ├── business/ # 测试套件目录
|
||
│ │ ├── Member_search.spec.js # 搜索会员
|
||
│ │ └── ...
|
||
│ ├── fixtures/ # 测试公用套件
|
||
│ │ ├── user.json # 用户数据
|
||
│ │ └── cashier_set.json #收银数据设置
|
||
│ └── utils/ # 工具函数目录
|
||
│ ├── screenshotHelper.ts # 截图辅助函数
|
||
│ └── ...
|
||
└── tests-examples/ # 测试例子参考目录
|
||
│ └── ...
|
||
└── .env* # 环境变量存放位置,根据 process.env.NODE_ENV 读取不同的配置文件
|
||
└── my-awesome-reporter.ts # 自定义报告生成器用于推送
|
||
└── playwright.config* # 测试项目基础配置文件
|
||
```
|
||
[测试框架技术文档](https://playwright.nodejs.cn/docs/intro)
|
||
### 项目规范
|
||
1. case的存放地址:/tests,所有的文件名应该让人看见名称知道case文件具体的含义,使用 当前测试的角色_case一级菜单菜单命名,如管理员身份的收银用例的文件命名应该为:cashier.spec.js。
|
||
- 总部管理员 boss
|
||
- 门店员工 staff
|
||
|
||
2. case的编写规范:二级菜单下使用test.describe用二级菜单名字做分组然后二级菜单下的具体功能点则放在使用每一个test做声明。每一个功能点以具体的测试用例命名,如:收银-挂单的例子如下。
|
||
```javascript
|
||
//收银挂单测试
|
||
test.describe('收银-挂单', () => {
|
||
//挂单
|
||
test('挂单', async ({ page }) => {
|
||
await page.getByRole('button', { name: '开 单' }).click();
|
||
await page.getByRole('button', { name: '1' }).click();
|
||
await page.getByText('搜索').click();
|
||
await page.getByLabel('icon: close').locator('svg').click();
|
||
await page.locator('.top > .anticon').first().click();
|
||
});
|
||
|
||
|
||
//取单
|
||
test('取单', async ({ page }) => {
|
||
await page.getByRole('button', { name: '开 单' }).click();
|
||
await page.getByRole('button', { name: '1' }).click();
|
||
await page.getByText('搜索').click();
|
||
await page.getByLabel('icon: close').locator('svg').click();
|
||
await page.locator('.top > .anticon').first().click();
|
||
});
|
||
})
|
||
```
|
||
3. 测试参数设置,项目启动会根据名 process.env.NODE_ENV 读取不同文件的配置.env.${环境变量}设置到当前启动线程中,启动命令中使用cross-env设置环境变量。
|
||
4. 预设的npm命令和后期添加规则,命令命名为 作用-环境名
|
||
```shell
|
||
npm run prepared #安装必要的测试框架依赖
|
||
|
||
|
||
npm run codegen
|
||
npm run codegen-staging #启动staging录制
|
||
|
||
npm run ui #启动图形化管理界面
|
||
npm run ui-staging
|
||
|
||
npm run report #获取测试报告
|
||
|
||
npm run test #启动测试 全量测试
|
||
npm run test-staging #启动staging环境测试 全量测试
|
||
|
||
npm run ui-server #启动服务器图形化管理界面服务
|
||
npm run ui-server-staging #启动服务器图形化管理界面服务
|
||
```
|
||
5. 写case的过程中请尽量避免使用waitfor利用平台自身的等待机制
|
||
### 测试case索引
|
||
|cese名称|case地址|case名称|状态|最后时间|编写人|
|
||
|-|-|-|-|-|-|
|
||
|收银-挂单|touch/boo_cashier_registration.spec.js|cosavebill|✅|2024-08-16|co|
|
||
|收银-挂单|touch/boo_cashier_registration.spec.js|cosavebill|✅|2024-08-16|co|
|
||
|收银-挂单|touch/boss_cashier.spec.js|cosavebill|✅|2024-08-19|chenjihuang|
|
||
| | | | | | |
|
||
### 图形化管理工具
|
||
点击 测试管理工具.bat 启动
|
||
|
||
|
||
|
||
### case地址
|
||
[Mat用例点我打开](https://doc.weixin.qq.com/sheet/e3_AX8AngY-AOkP8BOfjAJQqCgCwFQQZ?scode=AKsAggcJABAAF0r0lLALgA3QZpAMU&tab=000001) |