Some checks are pending
Playwright Tests / test (push) Waiting to run
init test test test 划分美管加、慧来客、智荟宝项目 新增美管加demo 新增npm命令 测试智荟宝 test test ii csv test init test test init init
119 lines
4.7 KiB
JavaScript
119 lines
4.7 KiB
JavaScript
const path = require('path');
|
|
const { parse } = require('csv-parse/sync');
|
|
const fs = require('fs');
|
|
const { faker } = require('@faker-js/faker');
|
|
const { test, expect } = require('./fixture/common');
|
|
const { Customer } = require('./pom/customerPage');
|
|
|
|
const records = parse(fs.readFileSync(path.join(__dirname, 'zhb.csv')), {
|
|
columns: true,
|
|
skip_empty_lines: true,
|
|
});
|
|
|
|
test('csv', async ({ zhbPage }, workerInfo) => {
|
|
console.log(records.length);
|
|
const $area = zhbPage
|
|
.locator('.area')
|
|
.filter({ has: zhbPage.locator('.area-name', { hasText: '二楼' }) });
|
|
const $$room = $area.locator('.room-list .room');
|
|
|
|
// 随机csv文件中的任意一个顾客
|
|
const record = records[faker.number.int({ min: 0, max: records.length - 1 })];
|
|
const { name, phone } = record;
|
|
console.log({ name, phone });
|
|
const customer = new Customer({ name: name, phone: name });
|
|
|
|
// 使用房间名称
|
|
let useRoomName;
|
|
await test.step('购买商品', async () => {
|
|
await zhbPage.locator('#tab_main li').filter({ hasText: '营业' }).click();
|
|
const $emptyRoom = $$room
|
|
.filter({ has: zhbPage.getByText('空房') })
|
|
.nth(workerInfo.workerIndex % 3);
|
|
useRoomName = await $emptyRoom.locator('.roomName').innerText();
|
|
expect(useRoomName).not.toBeNull();
|
|
await $emptyRoom.click();
|
|
await expect(async () => {
|
|
if (await zhbPage.locator('.close > .iconfont').first().isVisible()) {
|
|
await zhbPage.locator('.close > .iconfont').first().click();
|
|
}
|
|
await zhbPage.getByRole('button', { name: '选择顾客' }).click({ timeout: 3000 });
|
|
await expect(zhbPage.locator('#page_searchMember').getByText('创建会员')).toBeVisible();
|
|
}).toPass();
|
|
await zhbPage
|
|
.getByRole('textbox', { name: '输入会员手机号或姓名或卡号搜索' })
|
|
.fill(customer.phone, { delay: 100 });
|
|
await zhbPage.locator('#page_searchMember svg').click();
|
|
|
|
const $customerTr = zhbPage
|
|
.locator('.list-warp')
|
|
.filter({ has: zhbPage.locator('.name', { hasText: customer.name }) });
|
|
await $customerTr.locator('.list-body').first().click();
|
|
|
|
await zhbPage.getByText('项目开单').click();
|
|
await expect(zhbPage.locator('#page_roomDetail').getByText('服务项目')).toBeVisible();
|
|
await zhbPage.getByText('选择', { exact: true }).nth(1).click();
|
|
await expect(zhbPage.locator('#serviceSelector').getByText('项目选择')).toBeVisible();
|
|
await zhbPage
|
|
.locator('.goods-content-item')
|
|
.nth(faker.number.int({ min: 0, max: 14 }))
|
|
.click();
|
|
await zhbPage.locator('#serviceSelector').getByText('确认').click();
|
|
await zhbPage
|
|
.locator('div')
|
|
.filter({ hasText: /^明星足浴$/ })
|
|
.locator('span')
|
|
.first()
|
|
.click();
|
|
await zhbPage.getByRole('button', { name: '完成开单' }).click();
|
|
await expect(zhbPage.getByRole('button', { name: '结账' })).toBeVisible({ timeout: 30_000 });
|
|
await zhbPage.getByRole('button', { name: '结账' }).click();
|
|
await zhbPage.locator('#page_footBathPay').getByText('结算签字').click();
|
|
|
|
await expect(async () => {
|
|
await zhbPage.locator('#page_footBathPay li').filter({ hasText: '现金' }).click();
|
|
await expect(zhbPage.locator('#page_footBathPay li').filter({ hasText: '现金' })).toHaveClass(
|
|
/selected/
|
|
);
|
|
await zhbPage
|
|
.locator('#page_footBathPay span')
|
|
.filter({ hasText: /结\s算/ })
|
|
.click();
|
|
await expect(zhbPage.getByText('顾客满意度点评')).toBeVisible({ timeout: 2000 });
|
|
}).toPass();
|
|
|
|
await zhbPage.getByText('不想评价').click();
|
|
await zhbPage.locator('#page_footBathPay').getByText('立即返回').click();
|
|
});
|
|
|
|
await test.step('起钟下钟,清理房间', async () => {
|
|
const $cleanRoom = $$room.filter({
|
|
has: zhbPage.locator('.roomName', { hasText: new RegExp(`^${useRoomName}$`) }),
|
|
});
|
|
await expect($cleanRoom).toContainText('已结清');
|
|
await $cleanRoom.click();
|
|
await zhbPage.getByText('技师操作').click();
|
|
await zhbPage.getByText('起钟', { exact: true }).click();
|
|
await zhbPage.getByText('起钟成功!').click();
|
|
await zhbPage.getByText('技师操作').click();
|
|
await zhbPage.getByText('下钟', { exact: true }).click();
|
|
await zhbPage
|
|
.locator('div')
|
|
.filter({ hasText: /^确认返回$/ })
|
|
.locator('div')
|
|
.first()
|
|
.click();
|
|
await zhbPage.getByRole('button', { name: '不需要' }).click();
|
|
|
|
await expect($cleanRoom).toContainText('打扫');
|
|
await $cleanRoom.click();
|
|
await zhbPage
|
|
.locator('div')
|
|
.filter({ hasText: /^确定取消$/ })
|
|
.locator('div')
|
|
.first()
|
|
.click();
|
|
await expect($cleanRoom).toContainText('空房');
|
|
});
|
|
});
|