import { test, expect } from '@playwright/test'; import { LoginPage } from '../pages/LoginPage'; import { TEST_USERS, TEST_URLS } from '../utils/test-data'; test.describe('💊 手术计费模块', () => { let loginPage: LoginPage; test.beforeEach(async ({ page }) => { loginPage = new LoginPage(page); await loginPage.goto(); await loginPage.login(TEST_USERS.admin.username, TEST_USERS.admin.password); await loginPage.expectLoginSuccess(); }); test('#437 快速连续点击防重复 @bug437 @smoke', async ({ page }) => { await page.goto(TEST_URLS.surgeryBilling); await page.waitForLoadState('networkidle'); const genBtn = page.locator('button:has-text("生成"), button:has-text("新增")'); if (await genBtn.isVisible()) { for (let i = 0; i < 5; i++) { await genBtn.click().catch(() => {}); } await page.waitForTimeout(3000); const count = await page.locator('.el-dialog, .el-message-box').count(); expect(count).toBeLessThanOrEqual(1); } }); test('#443 签发耗材不报库房错误 @bug443 @smoke', async ({ page }) => { await page.goto(TEST_URLS.surgeryBilling); await page.waitForLoadState('networkidle'); const signBtn = page.locator('button:has-text("签发"), button:has-text("提交")'); if (await signBtn.isVisible()) { await signBtn.click(); await page.waitForTimeout(2000); await expect(page.locator('text=发放库房为空')).toHaveCount(0, { timeout: 5000 }); } }); });