Percy 是一个视觉测试和审查平台,旨在帮助开发者和团队在应用程序开发和迭代过程中捕获、比较和审查视觉变化。通过自动化截图和视觉差异检测,Percy 能够在代码变化时有效地检测和防止视觉回归,从而确保应用程序的外观和用户体验的一致性。
使用 npm 安装 Percy CLI:
npm install --save-dev @percy/cli
基本设置
npx percy init
npx percy exec -- your-test-command
与测试框架集成
以 Selenium WebDriver 为例:
npm install --save-dev @percy/cli @percy/selenium-webdriver
const { Builder } = require('selenium-webdriver');
const percySnapshot = require('@percy/selenium-webdriver');
(async function example() {
let driver = await new Builder().forBrowser('chrome').build();
try {
await driver.get('https://example.com');
await percySnapshot(driver, 'Example Page');
} finally {
await driver.quit();
}
})();
npx percy exec -- node your-test-file.js
percySnapshot(driver, name, options):捕获当前页面的截图。
driver
:WebDriver 实例。name
:截图的名称。options
:可选配置对象,例如指定视口大小。await percySnapshot(driver, 'Example Page', { widths: [375, 1280] });
percy exec -- command:运行指定命令,并在测试过程中捕获截图。
npx percy exec -- node your-test-file.js
percy start:启动 Percy 代理服务,用于捕获页面截图。
npx percy start
percy stop:停止 Percy 代理服务。
npx percy stop
自定义视口
可以通过 widths
选项自定义截图的视口大小:
await percySnapshot(driver, 'Example Page', { widths: [320, 768, 1024] });
禁用特定元素
在截图过程中,可以通过 percyCSS
选项禁用特定的 CSS 选择器,使其在截图中不可见:
await percySnapshot(driver, 'Example Page', {
percyCSS: 'header { visibility: hidden; }'
});
集成 CI/CD 工具
在 CI/CD 管道中集成 Percy,可以在每次代码更改时自动运行视觉测试。以下是一个简单的 GitHub Actions 配置示例:
name: Visual Testing
on: [push, pull_request]
jobs:
visual-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Install dependencies
run: npm install
- name: Run visual tests
run: npx percy exec -- npx mocha
env:
PERCY_TOKEN: ${{ secrets.PERCY_TOKEN }}