This repository has been archived on 2025-04-22. You can view files and clone it, but cannot push or open issues or pull requests.
hlk_autotest/tests/fixtures/customerFixture.ts
2024-12-22 21:12:43 +08:00

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