55 lines
1.8 KiB
JavaScript
55 lines
1.8 KiB
JavaScript
const { faker } = require('@faker-js/faker/locale/zh_CN');
|
|
const { expect } = require('@playwright/test');
|
|
|
|
export class Customer {
|
|
constructor({
|
|
name = faker.person.fullName(),
|
|
phone = faker.helpers.fromRegExp(/1[3-9][0-9]{6}/),
|
|
} = {}) {
|
|
this.name = name;
|
|
this.phone = phone;
|
|
}
|
|
}
|
|
|
|
export class CustomerPage {
|
|
/**
|
|
* @param {import('@playwright/test').Page} page
|
|
*/
|
|
constructor(page) {
|
|
this.page = page;
|
|
}
|
|
|
|
/**
|
|
* 创建顾客
|
|
* @param {Customer} customer
|
|
*/
|
|
createCustomer = async (customer) => {
|
|
console.log(customer.name);
|
|
console.log(customer.phone);
|
|
|
|
await expect(this.page.locator('#page_member').getByText('新增顾客档案')).toBeVisible();
|
|
await this.page.locator('#page_member').getByText('新增顾客档案').click();
|
|
|
|
await this.page.getByPlaceholder('请输入会员姓名').fill(customer.name);
|
|
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.getByPlaceholder('在此输入').type(customer.phone, { delay: 100 });
|
|
await this.page.locator('#maskBoard').getByText('确认').click();
|
|
await expect(this.page.getByPlaceholder('请输入手机号码')).toHaveValue(customer.phone, {
|
|
timeout: 2000,
|
|
});
|
|
await this.page
|
|
.locator('div')
|
|
.filter({ hasText: /^员工带客$/ })
|
|
.locator('span')
|
|
.first()
|
|
.click();
|
|
await this.page.getByText('创建并选择').click();
|
|
await expect(this.page.getByText('用户资料创建成功!')).toBeVisible();
|
|
await this.page.getByText('以后再说').click();
|
|
await expect(this.page.getByText('以后再说')).not.toBeVisible();
|
|
};
|
|
}
|