1.0.8 • Published 7 months ago
@percy/playwright v1.0.8
@percy/playwright
Percy visual testing for Playwright.
Installation
$ npm install --save-dev @percy/cli @percy/playwrightUsage
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 snapshotsWhen 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])
page(required) - Aplaywrightpage instancename(required) - The snapshot name; must be unique to each snapshotoptions- See per-snapshot configuration 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])
page(required) - Aplaywrightpage instancename(required) - The snapshot name; must be unique to each snapshotoptions(optional) - There are various options supported by percyScreenshot to server further functionality.sync- Boolean value by default it falls back tofalse, Gives the processed result around screenshot From CLI v1.28.8+fullPage- Boolean value by default it falls back tofalse, Takes full page screenshot From CLI v1.27.6+freezeAnimatedImage- Boolean value by default it falls back tofalse, you can passtrueand percy will freeze image based animations.freezeImageBySelectors- List of selectors. Images will be freezed which are passed using selectors. For this to workfreezeAnimatedImagemust be set to true.freezeImageByXpaths- List of xpaths. Images will be freezed which are passed using xpaths. For this to workfreezeAnimatedImagemust be set to true.percyCSS- Custom CSS to be added to DOM before the screenshot being taken. Note: This gets removed once the screenshot is taken.ignoreRegionXpaths- List of xpaths. elements in the DOM can be ignored using xpathignoreRegionSelectors- List of selectors. elements in the DOM can be ignored using selectors.customIgnoreRegions- List of custom objects. elements can be ignored using custom boundaries. Just passing a simple object for it like below.- example:
{top: 10, right: 10, bottom: 120, left: 10} - In above example it will draw rectangle of ignore region as per given coordinates.
top(int): Top coordinate of the ignore region.bottom(int): Bottom coordinate of the ignore region.left(int): Left coordinate of the ignore region.right(int): Right coordinate of the ignore region.
- example:
considerRegionXpaths- List of xpaths. elements in the DOM can be considered for diffing and will be ignored by Intelli Ignore using xpaths.considerRegionSelectors- List of selectors. elements in the DOM can be considered for diffing and will be ignored by Intelli Ignore using selectors.customConsiderRegions- List of custom objects. elements can be considered for diffing and will be ignored by Intelli Ignore using custom boundaries- example:
{top: 10, right: 10, bottom: 120, left: 10} - In above example it will draw rectangle of consider region will be drawn.
- Parameters:
top(int): Top coordinate of the consider region.bottom(int): Bottom coordinate of the consider region.left(int): Left coordinate of the consider region.right(int): Right coordinate of the consider region.
- example:
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
1.0.8
7 months ago
1.0.7
12 months ago
1.0.8-beta.0
7 months ago
1.0.9-beta.0
7 months ago
1.0.6-beta.1
1 year ago
1.0.6-beta.0
1 year ago
1.0.6-beta.2
1 year ago
1.0.6
1 year ago
1.0.5
2 years ago
1.0.4
3 years ago
1.0.3
4 years ago
1.0.2
4 years ago
1.0.1
4 years ago
1.0.0
4 years ago