import { Page } from '@playwright/test'; import { waitSpecifyApiLoad } from '@/utils/utils.js'; export class GoalPage { readonly page: Page; subPages: { name: string; url?: string[] }[]; constructor(page: Page) { this.page = page; this.subPages = [{ name: '员工目标' }, { name: '精细化管理', url: ['/user_kpi_detail'] }]; } /** * 跳转到子页面 * @param subPageName - 员工目标 | 精细化管理 */ async gotoSubPage(subPageName: string) { if (!this.subPages.some(({ name }) => name === subPageName)) { throw new Error(`${subPageName} is not a valid sub page name`); } const $topTab = this.page.locator('.top_tab .tab_item').filter({ hasText: subPageName }); if ((await $topTab.getAttribute('class', { timeout: 500 }))?.includes('active')) { return; } await Promise.all([ $topTab.click(), waitSpecifyApiLoad(this.page, this.subPages.find(({ name }) => name === subPageName)?.url), ]); } }