WebdriverIO client library for visual testing with Percy
npm install @percy/webdriverio
!Test
Percy visual testing for WebdriverIO.
``sh-session`
$ npm install --save-dev @percy/cli @percy/webdriverioUsage
This is an example using the percySnapshot() function in async mode.
`javascript
const percySnapshot = require('@percy/webdriverio');
describe('webdriver.io page', () => {
it('should have the right title', async () => {
await browser.url('https://webdriver.io');
await expect(browser).toHaveTitle('WebdriverIO · Next-gen browser and mobile automation test framework for Node.js');
await percySnapshot('webdriver.io page');
});
});
`
Running the test above will result in the following log:
`sh-session
$ wdio wdio.conf.js
...
[...] webdriver.io page
[percy] Percy is not running, disabling snapshots
[...] ✓ should have the right title
...
`
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.
`sh-session
$ export PERCY_TOKEN=[your-project-token]
$ percy exec -- wdio wdio.conf.js
[percy] Percy has started!
[percy] Created build #1: https://percy.io/[your-project]
[percy] Running "wdio wdio.conf.js"
...
[...] webdriver.io page
[percy] Snapshot taken "webdriver.io page"
[...] ✓ should have the right title
...
[percy] Stopping percy...
[percy] Finalized build #1: https://percy.io/[your-project]
[percy] Done!
`
When using WebdriverIO in standalone mode, the browser
object must be provided as the first argument to the percySnapshot function.
`javascript
const { remote } = require('webdriverio');
const percySnapshot = require('@percy/webdriverio');
(async () => {
const browser = await remote({
logLevel: 'trace',
capabilities: {
browserName: 'chrome'
}
});
await browser.url('https://duckduckgo.com');
const inputElem = await browser.$('#search_form_input_homepage');
await inputElem.setValue('WebdriverIO');
const submitBtn = await browser.$('#search_button_homepage');
await submitBtn.click();
// the browser object is required in standalone mode
percySnapshot(browser, 'WebdriverIO at DuckDuckGo');
await browser.deleteSession();
})().catch((e) => console.error(e));
`
percySnapshot(name[, options])
percySnapshot(browser, name[, options]) (standalone mode only)
- browser (required) - The WebdriverIO browser objectname
- (required) - The snapshot name; must be unique to each snapshotoptions
- - See per-snapshot configuration options
We built a tool to help automate migrating to the new CLI toolchain! Migrating
can be done by running the following commands and following the prompts:
` shell`
$ npx @percy/migrate
? Are you currently using @percy/webdriverio? Yes
? Install @percy/cli (required to run percy)? Yes
? Migrate Percy config file? Yes
? Upgrade SDK to @percy/webdriverio@2.0.0? Yes
This will automatically run the changes described below for you.
If you're coming from a pre-2.0 version of this package, the percySnapshot function is now the default browser
export, and the argument is now only required when used in standalone mode.
`javascript
// before
const { percySnapshot } = require('@percy/webdriverio');
await percySnapshot(browser, 'Snapshot name', options);
// after
const percySnapshot = require('@percy/webdriverio');
await percySnapshot('Snapshot name', options);
// in standalone mode, browser is still required
await percySnapshot(browser, 'Snapshot name', options);
`
If you have a previous Percy configuration file, migrate it to the newest version with the
config:migrate command:
`sh-session``
$ percy config:migrate