test(touch): 优化挂单测试流程

- 移除了 playwright 测试命令中的 --grep 参数
- 重构了员工选择和挂单操作的代码,提高了可读性和可维护性
- 优化了等待和点击操作,确保测试流程更加稳定
- 删除了冗余的代码,简化了测试逻辑
This commit is contained in:
LingandRX 2025-03-21 23:26:22 +08:00
parent 3f45ac233f
commit 52365501f0
2 changed files with 27 additions and 52 deletions

View File

@ -9,14 +9,13 @@ playwright_tests:
- npm config set registry https://registry.npmmirror.com - npm config set registry https://registry.npmmirror.com
script: script:
- npm install - npm install
- npx playwright test /touch/boss_cashier.spec.ts --grep "挂单" --project '慧来客touch(管理员身份) - Desktop Chrome' - npx playwright test /touch/boss_cashier.spec.ts --project '慧来客touch(管理员身份) - Desktop Chrome'
after_script: after_script:
- | - |
if [ "$CI_JOB_STATUS" == "success" ]; then if [ "$CI_JOB_STATUS" == "success" ]; then
echo "Tests passed! Sending success message..." echo "Tests passed! Sending success message..."
else else
echo "Tests failed! Sending failure message..." echo "Tests failed! Sending failure message..."
node scripts/send-message.js "Some tests failed!"
fi fi
artifacts: artifacts:
paths: paths:

View File

@ -39,11 +39,17 @@ test.describe('挂单', () => {
test('查看员工名下挂单', async ({ page, customerPage }) => { test('查看员工名下挂单', async ({ page, customerPage }) => {
let OrderLQ = 0; let OrderLQ = 0;
let OrderZP = 0; let OrderZP = 0;
const $employeeBottom = page.locator('.userpanel_item');
await test.step('记录员工原挂单数量', async () => { await test.step('记录员工原挂单数量', async () => {
await expect(page.getByRole('button', { name: /^开\s单$/ })).toBeVisible();
// 点击底部员工刘强 // 点击底部员工刘强
const EmployeeLQ = page.locator('.userpanel_item').getByText(Employees.FirstShop.Employee_8.name); const EmployeeLQ = $employeeBottom.getByText(Employees.FirstShop.Employee_8.name);
if (await EmployeeLQ.isVisible()) { if (await EmployeeLQ.isVisible()) {
await page.locator('.userpanel_item').filter({ hasText: Employees.FirstShop.Employee_8.name }).click(); await $employeeBottom.filter({ hasText: Employees.FirstShop.Employee_8.name }).click();
await page.locator('.item_box').first().waitFor(); await page.locator('.item_box').first().waitFor();
OrderLQ = await page.locator('.item_box').count(); OrderLQ = await page.locator('.item_box').count();
} else { } else {
@ -51,9 +57,9 @@ test.describe('挂单', () => {
} }
// 点击底部员工周萍 // 点击底部员工周萍
const EmployeeZP = page.locator('.userpanel_item', { hasText: Employees.FirstShop.Employee_9.name }); const EmployeeZP = $employeeBottom.getByText(Employees.FirstShop.Employee_9.name);
if (await EmployeeZP.isVisible()) { if (await EmployeeZP.isVisible()) {
await page.locator('.userpanel_item').filter({ hasText: Employees.FirstShop.Employee_9.name }).click(); await $employeeBottom.filter({ hasText: Employees.FirstShop.Employee_9.name }).click();
await page.locator('.item_box').first().waitFor(); await page.locator('.item_box').first().waitFor();
OrderZP = await page.locator('.item_box').count(); OrderZP = await page.locator('.item_box').count();
} else { } else {
@ -61,6 +67,8 @@ test.describe('挂单', () => {
} }
}); });
const $employeeLq = page.locator('.counselor:nth-child(2)').locator('.check_item:nth-child(1)').filter({ hasText: Employees.FirstShop.Employee_8.name });
await test.step('刘强挂单1', async () => { await test.step('刘强挂单1', async () => {
//员工1开第1单 //员工1开第1单
await page.getByRole('button', { name: /^开\s单$/ }).click(); await page.getByRole('button', { name: /^开\s单$/ }).click();
@ -71,11 +79,7 @@ test.describe('挂单', () => {
// 选择添加员工 // 选择添加员工
await page.locator('button.staff_btn').click(); await page.locator('button.staff_btn').click();
// 选择员工:刘强 // 选择员工:刘强
await page await $employeeLq.click();
.locator('.counselor:nth-child(2)')
.locator('.check_item:nth-child(1)')
.filter({ hasText: Employees.FirstShop.Employee_8.name })
.click();
// 保存并复制到其他项目 // 保存并复制到其他项目
await page.locator('button.save_and_copy').filter({ hasText: '保存并复制到其他项目/卖品' }).click(); await page.locator('button.save_and_copy').filter({ hasText: '保存并复制到其他项目/卖品' }).click();
// 挂单 // 挂单
@ -93,11 +97,7 @@ test.describe('挂单', () => {
// 选择添加员工 // 选择添加员工
await page.locator('button.staff_btn').click(); await page.locator('button.staff_btn').click();
// 选择员工:刘强 // 选择员工:刘强
await page await $employeeLq.click();
.locator('.counselor:nth-child(2)')
.locator('.check_item:nth-child(1)')
.filter({ hasText: Employees.FirstShop.Employee_8.name })
.click();
// 保存并复制到其他项目 // 保存并复制到其他项目
await page.locator('button.save_and_copy').filter({ hasText: '保存并复制到其他项目/卖品' }).click(); await page.locator('button.save_and_copy').filter({ hasText: '保存并复制到其他项目/卖品' }).click();
// 挂单 // 挂单
@ -114,17 +114,15 @@ test.describe('挂单', () => {
// 选择添加员工 // 选择添加员工
await page.locator('button.staff_btn').click(); await page.locator('button.staff_btn').click();
// 选择员工:刘强 // 选择员工:刘强
await page await $employeeLq.click();
.locator('.counselor:nth-child(2)')
.locator('.check_item:nth-child(1)')
.filter({ hasText: Employees.FirstShop.Employee_8.name })
.click();
// 保存并复制到其他项目 // 保存并复制到其他项目
await page.locator('button.save_and_copy').filter({ hasText: '保存并复制到其他项目/卖品' }).click(); await page.locator('button.save_and_copy').filter({ hasText: '保存并复制到其他项目/卖品' }).click();
// 挂单 // 挂单
await page.locator('#cart_bottom_btn').getByText('挂单').click(); await page.locator('#cart_bottom_btn').getByText('挂单').click();
}); });
const $employeeZp = page.locator('.counselor:nth-child(2)').locator('.check_item:nth-child(1)').filter({ hasText: Employees.FirstShop.Employee_9.name });
await test.step('周萍挂单1', async () => { await test.step('周萍挂单1', async () => {
//员工2开第1单 //员工2开第1单
await page.getByRole('button', { name: /^开\s单$/ }).click(); await page.getByRole('button', { name: /^开\s单$/ }).click();
@ -137,11 +135,7 @@ test.describe('挂单', () => {
// 选择添加员工 // 选择添加员工
await page.locator('button.staff_btn').click(); await page.locator('button.staff_btn').click();
// 选择员工:周萍 // 选择员工:周萍
await page await $employeeZp.click();
.locator('.counselor:nth-child(2)')
.locator('.check_row:nth-child(2) .check_item:nth-child(1)')
.filter({ hasText: Employees.FirstShop.Employee_9.name })
.click();
// 保存并复制到其他项目 // 保存并复制到其他项目
await page.locator('button.save_and_copy').filter({ hasText: '保存并复制到其他项目/卖品' }).click(); await page.locator('button.save_and_copy').filter({ hasText: '保存并复制到其他项目/卖品' }).click();
// 挂单 // 挂单
@ -158,11 +152,7 @@ test.describe('挂单', () => {
// 选择添加员工 // 选择添加员工
await page.locator('button.staff_btn').click(); await page.locator('button.staff_btn').click();
// 选择员工:周萍 // 选择员工:周萍
await page await $employeeZp.click();
.locator('.counselor:nth-child(2)')
.locator('.check_row:nth-child(2) .check_item:nth-child(1)')
.filter({ hasText: Employees.FirstShop.Employee_9.name })
.click();
// 保存并复制到其他项目 // 保存并复制到其他项目
await page.locator('button.save_and_copy').filter({ hasText: '保存并复制到其他项目/卖品' }).click(); await page.locator('button.save_and_copy').filter({ hasText: '保存并复制到其他项目/卖品' }).click();
// 挂单 // 挂单
@ -175,13 +165,13 @@ test.describe('挂单', () => {
await test.step('最后校验挂单数量', async () => { await test.step('最后校验挂单数量', async () => {
// 点击底部员工刘强 // 点击底部员工刘强
await page.locator('.userpanel_item').filter({ hasText: Employees.FirstShop.Employee_8.name }).click(); await $employeeBottom.filter({ hasText: Employees.FirstShop.Employee_8.name }).click();
await page.locator('.item_box').first().waitFor(); await page.locator('.item_box').first().waitFor();
const order = await page.locator('.item_box').all(); const order = await page.locator('.item_box').all();
expect(order.length).toBe(3 + OrderLQ); expect(order.length).toBe(3 + OrderLQ);
// 点击底部员工周萍 // 点击底部员工周萍
await page.locator('.userpanel_item').filter({ hasText: Employees.FirstShop.Employee_9.name }).click(); await $employeeBottom.filter({ hasText: Employees.FirstShop.Employee_9.name }).click();
await page.locator('.item_box').first().waitFor(); await page.locator('.item_box').first().waitFor();
const order1 = await page.locator('.item_box').all(); const order1 = await page.locator('.item_box').all();
expect(order1.length).toBe(2 + OrderZP); expect(order1.length).toBe(2 + OrderZP);
@ -211,32 +201,18 @@ test.describe('挂单', () => {
// // 点击底部员工吴浩 // // 点击底部员工吴浩
// 取单 // 取单
await page.locator('.item_box', { hasText: username }).waitFor(); await page.locator('.item_box', { hasText: username }).waitFor();
await page await page.locator('.item_box').first().getByRole('button', { name: /^取\s单$/ }).click();
.locator('.item_box') await page.locator('#buyList').getByText('雪肌晶纯护理').waitFor();
.first()
.getByRole('button', { name: /^取\s单$/ })
.click();
//结算 //结算
await page await page.locator('.pay_btn').filter({ hasText: /^结\s算$/ }).click();
.locator('.pay_btn')
.filter({ hasText: /^结\s算$/ })
.click();
//点击优惠券折扣 //点击优惠券折扣
await page.getByText('优惠券抵扣').click(); await page.getByText('优惠券抵扣').click();
//点击赠送优惠券 //点击赠送优惠券
await page.getByText('赠送优惠券').click(); await page.getByText('赠送优惠券').click();
//点击定额10元券 //点击定额10元券
await page await page.locator('.popup_content').locator('.alloytouch-target').filter({ hasText: Coupons.coupon.coupon_1.name }).click();
.locator('.popup_content')
.locator('.alloytouch-target')
.filter({ hasText: Coupons.coupon.coupon_1.name })
.click();
//确认 //确认
await page await page.locator('.operation_btn').first().getByRole('button', { name: /^确\s定$/ }).click();
.locator('.operation_btn')
.first()
.getByRole('button', { name: /^确\s定$/ })
.click();
//选择定额10元券 //选择定额10元券
await page.getByLabel(Coupons.coupon.coupon_1.name).first().check(); await page.getByLabel(Coupons.coupon.coupon_1.name).first().check();
//确认选择 //确认选择