145 lines
4.6 KiB
TypeScript
145 lines
4.6 KiB
TypeScript
import { test as base, Page } from '@playwright/test';
|
|
import { CustomerPage, CustomerDetailsPage, CustomerAnalysisPage } from '@/pages/customer';
|
|
import { Customer } from '@/utils/customer';
|
|
|
|
type MyFixture = {
|
|
customerPage: CustomerPage;
|
|
customerDetailsPage: CustomerDetailsPage;
|
|
customerAnalysisPage: CustomerAnalysisPage;
|
|
createCustomer: Customer;
|
|
createCustomers: (customerNumber: number) => Promise<Customer[]>;
|
|
createCustomCustomer: (customer: Customer) => Promise<void>;
|
|
createCustomCustomers: (customers: Customer[]) => Promise<void>;
|
|
};
|
|
|
|
/**
|
|
* 跳转到顾客管理页面
|
|
*/
|
|
const navigateToCustomerSchema = async (page: Page, baseURL: string) => {
|
|
await page.goto(baseURL);
|
|
await page.getByRole('button', { name: /开\s单/ }).waitFor();
|
|
await page.goto('/#/member/member-schame');
|
|
};
|
|
|
|
/**
|
|
* 设置为无效顾客
|
|
* @param customerPage { CustomerPage } 顾客页面
|
|
* @param customers { Customer | Customer[] } 顾客列表
|
|
*/
|
|
const setInvalidCustomers = async (customerPage: CustomerPage, customers: Customer[] | Customer) => {
|
|
try {
|
|
if (Array.isArray(customers)) {
|
|
await customerPage.setMoreInvalidCustomer(customers);
|
|
} else {
|
|
await customerPage.setInvalidCustomer(customers);
|
|
}
|
|
} catch (error) {
|
|
console.error('Failed to set invalid customers:', error);
|
|
throw error;
|
|
}
|
|
};
|
|
|
|
export const test = base.extend<MyFixture>({
|
|
/**
|
|
* 创建一个顾客
|
|
*/
|
|
createCustomer: async ({ page, baseURL }, use) => {
|
|
const customerPage = new CustomerPage(page);
|
|
const customer = new Customer(1, 1);
|
|
await customerPage.createCustomer(customer);
|
|
await use(customer);
|
|
await navigateToCustomerSchema(page, baseURL!);
|
|
await setInvalidCustomers(customerPage, customer);
|
|
},
|
|
|
|
/**
|
|
* 创建多个顾客
|
|
*/
|
|
createCustomers: async ({ page, baseURL }, use): Promise<void> => {
|
|
const customerPage = new CustomerPage(page);
|
|
let createdCustomers: Customer[] = [];
|
|
|
|
/**
|
|
* 创建多个顾客
|
|
* @param customerNumber { number } 顾客数量
|
|
* @returns { Promise<Customer[]> } 顾客列表
|
|
*/
|
|
const createCustomers = async (customerNumber: number): Promise<Customer[]> => {
|
|
for (let i = 0; i < customerNumber; i++) {
|
|
const customer = new Customer(1, 1);
|
|
await customerPage.createCustomer(customer);
|
|
createdCustomers.push(customer);
|
|
}
|
|
|
|
return createdCustomers;
|
|
};
|
|
|
|
await use(createCustomers);
|
|
|
|
if (createdCustomers.length === 0) return;
|
|
|
|
await navigateToCustomerSchema(page, baseURL!);
|
|
await setInvalidCustomers(customerPage, createdCustomers);
|
|
},
|
|
|
|
/**
|
|
* 创建一个自定义顾客
|
|
*/
|
|
createCustomCustomer: async ({ page, baseURL }, use) => {
|
|
const customerPage = new CustomerPage(page);
|
|
let customizeCustomer: Customer | undefined;
|
|
|
|
const createCustomizeCustomer = async (customer: Customer) => {
|
|
await customerPage.createCustomer(customer);
|
|
customizeCustomer = customer;
|
|
};
|
|
|
|
await use(createCustomizeCustomer);
|
|
|
|
if (!customizeCustomer) return;
|
|
await navigateToCustomerSchema(page, baseURL!);
|
|
await setInvalidCustomers(customerPage, customizeCustomer);
|
|
},
|
|
|
|
/**
|
|
* 创建多个自定义顾客
|
|
*/
|
|
createCustomCustomers: async ({ page, baseURL }, use) => {
|
|
const customerPage = new CustomerPage(page);
|
|
let createCustomizeCustomerArray: Customer[] | undefined;
|
|
const setCustomers = async (customers: Customer[]) => {
|
|
await customerPage.createMoreCustomer(customers);
|
|
createCustomizeCustomerArray = customers;
|
|
};
|
|
await use(setCustomers);
|
|
|
|
if (!createCustomizeCustomerArray) return;
|
|
await navigateToCustomerSchema(page, baseURL!);
|
|
await setInvalidCustomers(customerPage, createCustomizeCustomerArray);
|
|
},
|
|
|
|
/**
|
|
* 顾客页面
|
|
*/
|
|
customerPage: async ({ page }, use) => {
|
|
const customerPage = new CustomerPage(page);
|
|
await use(customerPage);
|
|
},
|
|
|
|
/**
|
|
* 顾客详情
|
|
*/
|
|
customerDetailsPage: async ({ page }, use) => {
|
|
const customerDetailsPage = new CustomerDetailsPage(page);
|
|
await use(customerDetailsPage);
|
|
},
|
|
|
|
/**
|
|
* 顾客分析
|
|
*/
|
|
customerAnalysisPage: async ({ page }, use) => {
|
|
const customerAnalysisPage = new CustomerAnalysisPage(page);
|
|
await use(customerAnalysisPage);
|
|
},
|
|
});
|