用途:用于跨浏览器端到端(E2E)测试与浏览器自动化,适合 UI 流程验证、CI/CD 集成和视觉回归;不适用于单元测试(vitest/jest)、纯 API 测试(supertest)或静态分析。
主要能力:语义定位器(getByRole、getByLabel、getByTestId、getByText)替代脆弱 CSS 选择器;定位器自动等待可操作元素,避免手动 sleep;测试夹具(fixture)共享并隔离测试状态;Web 优先断言 expect(locator) 自动重试,覆盖存在与不存在两种契约;page.route() 模拟网络请求以稳定测试;并行执行与测试隔离;storageState 复用登录状态;支持 iframe、文件上传、弹窗、Shadow DOM、动态内容等边界场景。
使用方式:从 @playwright/test 导入 test 与 expect 编写用例;用 page.goto 导航,用 getByLabel 填充、getByRole 点击,用 expect(page).toHaveURL 等断言。CI 中运行 npx playwright test --reporter=html 并上传产物;失败时用 --trace on-first-retry 记录 trace;并行可用 --workers=4 与 --shard=1/4 分片。跨浏览器在 playwright.config.ts 配置 projects;认证用 await context.storageState({ path: 'auth.json' }) 后 test.use({ storageState: 'auth.json' })。
限制与注意:CI 默认无头,本地可用 --headed 观察视觉问题;iframe 需用 frameLocator 且不能使用页面定位器;测试应相互独立、可任意顺序运行;避免 waitForTimeout 与手动 sleep;网络不稳定时用 page.route() 模拟。具体安装命令、版本与收费信息暂未提供。