ii
This commit is contained in:
parent
2134398e49
commit
919325202b
@ -2,7 +2,7 @@ const { test, expect } = require('./fixtures/common');
|
|||||||
const { Customer } = require('./pom/customer');
|
const { Customer } = require('./pom/customer');
|
||||||
const { faker } = require('@faker-js/faker/locale/zh_CN');
|
const { faker } = require('@faker-js/faker/locale/zh_CN');
|
||||||
|
|
||||||
for (let i = 0; i < 10; i++) {
|
for (let i = 0; i < 3; i++) {
|
||||||
test(`登录touch和h5,创建顾客购买会员卡,使用顾客账号到h5商城购买货品${i}`, async ({
|
test(`登录touch和h5,创建顾客购买会员卡,使用顾客账号到h5商城购买货品${i}`, async ({
|
||||||
touchPage,
|
touchPage,
|
||||||
h5Page,
|
h5Page,
|
||||||
|
|||||||
@ -2,107 +2,110 @@ const { faker } = require('@faker-js/faker');
|
|||||||
const { test, expect } = require('./fixture/common');
|
const { test, expect } = require('./fixture/common');
|
||||||
const { Customer } = require('./pom/customerPage');
|
const { Customer } = require('./pom/customerPage');
|
||||||
|
|
||||||
for (let i = 0; i < 50; i++) {
|
test(`demo`, async ({ zhbPage, customerPage }, workerInfo) => {
|
||||||
test(`demo${i}`, async ({ zhbPage, customerPage }, workerInfo) => {
|
const $area = zhbPage
|
||||||
const $area = zhbPage
|
.locator('.area')
|
||||||
.locator('.area')
|
.filter({ has: zhbPage.locator('.area-name', { hasText: '二楼' }) });
|
||||||
.filter({ has: zhbPage.locator('.area-name', { hasText: '二楼' }) });
|
const $$room = $area.locator('.room-list .room');
|
||||||
const $$room = $area.locator('.room-list .room');
|
|
||||||
|
|
||||||
const customer = new Customer();
|
const customer = new Customer();
|
||||||
await test.step('创建顾客', async () => {
|
await test.step('创建顾客', async () => {
|
||||||
await zhbPage.locator('#tab_main li').filter({ hasText: '顾客' }).click();
|
await zhbPage.locator('#tab_main li').filter({ hasText: '顾客' }).click();
|
||||||
await customerPage.createCustomer(customer);
|
await customerPage.createCustomer(customer);
|
||||||
});
|
|
||||||
|
|
||||||
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();
|
|
||||||
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(30)).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();
|
|
||||||
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 expect(zhbPage.locator('#page_footBathPay').getByText('立即返回')).not.toBeVisible();
|
|
||||||
});
|
|
||||||
|
|
||||||
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('空房');
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
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('空房');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
test.skip('h5 demo', async ({
|
test.skip('h5 demo', async ({
|
||||||
zhbAdminPage,
|
zhbAdminPage,
|
||||||
|
|||||||
@ -34,7 +34,7 @@ export class CustomerPage {
|
|||||||
await this.page.getByPlaceholder('请输入手机号码').click();
|
await this.page.getByPlaceholder('请输入手机号码').click();
|
||||||
await expect(this.page.getByText('请输入数字')).toBeVisible();
|
await expect(this.page.getByText('请输入数字')).toBeVisible();
|
||||||
await this.page.getByPlaceholder('在此输入').click();
|
await this.page.getByPlaceholder('在此输入').click();
|
||||||
await this.page.keyboard.type(customer.phone, { delay: 100 });
|
await this.page.keyboard.type(customer.phone, { delay: 50 });
|
||||||
// await this.page.getByPlaceholder('在此输入').type(customer.phone, { delay: 100 });
|
// await this.page.getByPlaceholder('在此输入').type(customer.phone, { delay: 100 });
|
||||||
await this.page.locator('#maskBoard').getByText('确认').click();
|
await this.page.locator('#maskBoard').getByText('确认').click();
|
||||||
await expect(this.page.getByPlaceholder('请输入手机号码')).toHaveValue(customer.phone, {
|
await expect(this.page.getByPlaceholder('请输入手机号码')).toHaveValue(customer.phone, {
|
||||||
|
|||||||
Reference in New Issue
Block a user