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);
 | |
|     },
 | |
| });
 |