diff --git a/tests/hlk/demo.spec.js b/tests/hlk/demo.spec.js index 840599f..a8d632b 100644 --- a/tests/hlk/demo.spec.js +++ b/tests/hlk/demo.spec.js @@ -2,7 +2,7 @@ const { test, expect } = require('./fixtures/common'); const { Customer } = require('./pom/customer'); 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 ({ touchPage, h5Page, diff --git a/tests/zhb/demo.spec.js b/tests/zhb/demo.spec.js index 50e2684..4ce59b8 100644 --- a/tests/zhb/demo.spec.js +++ b/tests/zhb/demo.spec.js @@ -2,107 +2,110 @@ const { faker } = require('@faker-js/faker'); const { test, expect } = require('./fixture/common'); const { Customer } = require('./pom/customerPage'); -for (let i = 0; i < 50; i++) { - test(`demo${i}`, async ({ zhbPage, customerPage }, workerInfo) => { - const $area = zhbPage - .locator('.area') - .filter({ has: zhbPage.locator('.area-name', { hasText: '二楼' }) }); - const $$room = $area.locator('.room-list .room'); +test(`demo`, async ({ zhbPage, customerPage }, workerInfo) => { + const $area = zhbPage + .locator('.area') + .filter({ has: zhbPage.locator('.area-name', { hasText: '二楼' }) }); + const $$room = $area.locator('.room-list .room'); - const customer = new Customer(); - await test.step('创建顾客', async () => { - await zhbPage.locator('#tab_main li').filter({ hasText: '顾客' }).click(); - 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('空房'); - }); + const customer = new Customer(); + await test.step('创建顾客', async () => { + await zhbPage.locator('#tab_main li').filter({ hasText: '顾客' }).click(); + 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({ 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 ({ zhbAdminPage, diff --git a/tests/zhb/pom/customerPage.js b/tests/zhb/pom/customerPage.js index 04ef87a..5c0a8c9 100644 --- a/tests/zhb/pom/customerPage.js +++ b/tests/zhb/pom/customerPage.js @@ -34,7 +34,7 @@ export class CustomerPage { await this.page.getByPlaceholder('请输入手机号码').click(); await expect(this.page.getByText('请输入数字')).toBeVisible(); 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.locator('#maskBoard').getByText('确认').click(); await expect(this.page.getByPlaceholder('请输入手机号码')).toHaveValue(customer.phone, {