用途
本技能用于在 Playwright 测试中测量并强制校验网页性能标准,结合 Lighthouse 审计与 Core Web Vitals。适用于测量页面加载时间、Core Web Vitals、Lighthouse 审计等场景。
主要能力
- Lighthouse 集成:通过
playwright-lighthouse的playAudit在 Playwright 测试中运行 Lighthouse 审计,可读取 performance、accessibility、best-practices、seo 等类别的评分,并通过 thresholds 设置性能预算,未达标时测试失败。 - 移动端与桌面端配置:支持通过
config指定formFactor为 mobile 或 desktop,并自定义 throttling(rttMs、throughputKbps、cpuSlowdownMultiplier)与 screenEmulation(mobile、width、height、deviceScaleFactor)。 - Core Web Vitals 测量:可通过原生 PerformanceObserver 采集 LCP、CLS 等指标并断言阈值(如 LCP < 2500ms、CLS < 0.1);也可注入 web-vitals 库采集 LCP、FID、CLS、FCP、TTFB。
- Performance Timing API:读取 Navigation Timing(dns、tcp、ttfb、download、domInteractive、domComplete、loadComplete)并断言;读取 Resource Timing,筛选慢资源(duration > 1000)与大资源(size > 100000)。
- 性能预算:可定义 TTFB、FCP、LCP、TTI、FID、CLS、总大小、JS/CSS/图片大小、请求数等预算,并在测试中校验资源总量、JS、CSS、图片与请求数。
- 网络与 CPU 限流:通过 CDP 模拟慢 3G(downloadThroughput、uploadThroughput、latency)与 CPU 降速(
Emulation.setCPUThrottlingRate)。 - 报告与历史:生成 Lighthouse HTML 报告与 JSON,并可将指标追加写入
performance-history.json追踪变化。 - CI 集成:提供 GitHub Actions 工作流示例,安装依赖、安装 Playwright、启动应用、运行
--grep @performance测试并上传 Lighthouse 报告。
使用方式
- 安装依赖:
npm install -D playwright-lighthouse lighthouse - 在 Playwright 测试中导入
playAudit,访问页面后调用playAudit({ page, thresholds: { performance: 90, accessibility: 90, 'best-practices': 90, seo: 90 } })。 - 可通过
config.settings切换移动端/桌面端并调整限流参数。 - 使用
page.evaluate结合 PerformanceObserver、web-vitals 库或 Navigation/Resource Timing API 获取指标并断言。 - 将报告写入文件,或追加到历史指标文件。
适用场景
- 需要在 Playwright 测试套件中持续校验页面性能预算。
- 需要测量并断言 Core Web Vitals(LCP、CLS、FID、FCP、TTFB)。
- 需要模拟移动端、慢速网络或低性能 CPU 下的表现。
- 需要在 CI 中运行性能测试并归档 Lighthouse 报告。
限制
- 需在支持 Chrome 调试端口(如
port: 9222)的环境中运行 Lighthouse 审计。 - 代码示例中使用固定等待(如
waitForTimeout(3000)),实际稳定性依赖运行环境。 - 部分指标(如 FID)需页面交互触发,示例通过点击 body 实现。
- 平台兼容性、收费情况、价格等资料暂未提供。