percy / percy-playwright

Playwright client library for visual testing with Percy
MIT License
16 stars 6 forks source link
percy percy-sdk playwright testing visual-testing

@percy/playwright

Version Test

Percy visual testing for Playwright.

Installation

$ npm install --save-dev @percy/cli @percy/playwright

Usage

This is an example using the percySnapshot function. For other examples of playwright usage, see the Playwright docs.

const { chromium } = require('playwright');
const percySnapshot = require('@percy/playwright');

(async () => {
  const browser = await chromium.launch();
  const page = await browser.newPage();
  await page.goto('http://example.com/', { waitUntil: 'networkidle2' });
  await percySnapshot(page, 'Example Site');

  await browser.close();
})();

Running the code above directly will result in the following logs:

$ node script.js
[percy] Percy is not running, disabling snapshots

When running with percy exec, and your project's PERCY_TOKEN, a new Percy build will be created and snapshots will be uploaded to your project.

$ export PERCY_TOKEN=[your-project-token]
$ percy exec -- node script.js
[percy] Percy has started!
[percy] Created build #1: https://percy.io/[your-project]
[percy] Running "node script.js"
[percy] Snapshot taken "Example Site"
[percy] Stopping percy...
[percy] Finalized build #1: https://percy.io/[your-project]
[percy] Done!

Configuration

percySnapshot(page, name[, options])

Percy on Automate

Usage

const { chromium } = require('playwright');
const percyScreenshot = require('@percy/playwright');

const desired_cap = {
  'browser': 'chrome',
  'browser_version': 'latest',
  'os': 'osx',
  'os_version': 'ventura',
  'name': 'Percy Playwright PoA Demo',
  'build': 'percy-playwright-javascript-tutorial',
  'browserstack.username': 'username',
  'browserstack.accessKey': 'accesskey'
};

(async () => {
  const cdpUrl = `wss://cdp.browserstack.com/playwright?caps=${encodeURIComponent(JSON.stringify(desired_cap))}`;
  const browser = await chromium.connect(cdpUrl);
  const page = await browser.newPage();
  await page.goto("https://percy.io/");
  await percyScreenshot(page, 'Screenshot 1');

  // Options for percyScreenshot
  // await percyScreenshot(page, 'Screenshot 1', {
  //   fullPage: true,
  //   percyCSS: 'body { background: red; }',
  //   ignoreRegionSelectors: ['#ignore-this'],
  //   customIgnoreRegions: [{ top: 10, right: 10, bottom: 120, left: 10 }],
  // });

  await browser.close();
})();

Configuration

percyScreenshot(page, name[, options])

Creating Percy on automate build

Note: Automate Percy Token starts with auto keyword. The command can be triggered using exec keyword.

$ export PERCY_TOKEN=[your-project-token]
$ percy exec -- [playwright test command]
[percy] Percy has started!
[percy] [Playwright example] : Starting automate screenshot ...
[percy] Screenshot taken "Playwright example"
[percy] Stopping percy...
[percy] Finalized build #1: https://percy.io/[your-project]
[percy] Done!

Refer to docs here: Percy on Automate