WebdriverIO 4 tutorial

Note: This is for WebdriverIO 4. There are different tutorials for WebdriverIO 5 and WebdriverIO 6.

Getting Started with Applitools

Want to learn more about the Applitools platform and how it works? First get started with one of the following:

Running Tests with Applitools

Prerequisites
  1. A free Applitools account and Applitools API KEY

Tip: Unsure how to set up your API key?

Learn how to get started at Setting Up

  1. Node.js https://nodejs.org​

  2. Git https://git-scm.com​

Note: Installing `git` is optional

Installing git is used to clone the demo project from the Github repository. Instead of installing git, you can simply download the Zip file from the repository. Further, if you are Mac, you already have git.

  1. Selenium Standalone Server https://www.seleniumhq.org/download/

Note that this is a jar file

You should also have Java installed on your machine.

  1. Google Chrome Browser https://www.google.com/chrome/

  2. ChromeDriver https://chromedriver.chromium.org/getting-started

ChromeDriver must be installed and in your `PATH`

Below are some resources from the internet that'll help you

On Mac, place the chromedriver executable in /usr/local/bin folder so Eclipse and IntelliJ can find it.

Option 1 - Run With The Ultrafast Grid

Running the Example Project

  1. Clone or download the repository and navigate to that folder
git clone https://github.com/applitools/tutorial-webdriverio-ultrafastgrid
cd tutorial-webdriverio-ultrafastgrid
1
2

Note: you can alternatively download the project as a Zip file and extract it

  1. Run the standalone server jar file
java -jar selenium-server-standalone-3.141.59.jar
1

TIP

Replace the jar file name with your jar file name

  1. Install the dependencies
npm install
1
  1. Run the example test
APPLITOOLS_API_KEY="[Your API Key]" npm test
1

This will first set your APPLITOOLS_API_KEY into the node process then run npm test.

Adding Applitools Eyes to an Existing Node.js WebdriverIO Project

Install Applitools Eyes dependencies:

npm install @applitools/eyes.webdriverio webdriverio@4 --save-dev
1

Sample test

'use strict';

const webdriverio = require('webdriverio');
const {
    VisualGridRunner,
    Eyes,
    Target,
    Configuration,
    RectangleSize,
    BatchInfo,
    BrowserType,
    DeviceName,
    ScreenOrientation
} = require('@applitools/eyes.webdriverio');


let driver;
let eyes;

describe('wdio', function () {

    before(async () => {
        const chrome = {
            desiredCapabilities: {
                browserName: 'chrome'
            }
        };

        // Create a new chrome web driver
        driver = webdriverio.remote(chrome);
        await driver.init();

        // Create a runner with concurrency of 1
        const runner = new VisualGridRunner(1);

        // Create Eyes object with the runner, meaning it'll be a Visual Grid eyes.
        eyes = new Eyes(runner);

        // Initialize eyes Configuration
        const configuration = new Configuration();

        // You can get your api key from the Applitools dashboard
        configuration.setApiKey('APPLITOOLS_API_KEY')

        // create a new batch info instance and set it to the configuration
        configuration.setBatch(new BatchInfo('Ultrafast Batch'))

        // Add browsers with different viewports
        configuration.addBrowser(800, 600, BrowserType.CHROME);
        configuration.addBrowser(700, 500, BrowserType.FIREFOX);
        configuration.addBrowser(1600, 1200, BrowserType.IE_11);
        configuration.addBrowser(1024, 768, BrowserType.EDGE_CHROMIUM);
        configuration.addBrowser(800, 600, BrowserType.SAFARI);

        // Add mobile emulation devices in Portrait mode
        configuration.addDeviceEmulation(DeviceName.iPhone_X, ScreenOrientation.PORTRAIT);
        configuration.addDeviceEmulation(DeviceName.Pixel_2, ScreenOrientation.PORTRAIT);

        // Set the configuration to eyes
        eyes.setConfiguration(configuration);
    });

    it('Ultrafast grid Test', async () => {

        // Call Open on eyes to initialize a test session
        driver = await eyes.open(driver, 'Demo App', 'Ultrafast grid demo', new RectangleSize(800, 600));

        // Navigate the browser to the "ACME" demo app.
        // ⭐️ Note to see visual bugs, run the test using the above URL for the 1st run.
        // but then change the above URL to https://demo.applitools.com/index_v2.html
        // (for the 2nd run)
        await driver.url('https://demo.applitools.com');

        // To see visual bugs after the first run, use the commented line below instead.
        // await driver.url("https://demo.applitools.com/index_v2.html");

        // Visual checkpoint #1.
        await eyes.check('Login Window', Target.window().fully());

        // Click the "Log in" button.
        await driver.click('#log-in');

        // Visual checkpoint #2.
        await eyes.check('App Window', Target.window().fully());

        // End the test
        await eyes.closeAsync();
    });

    after(async () => {
        // Close the browser
        await driver.end();

        // If the test was aborted before eyes.close was called, ends the test as aborted.
        await eyes.abortAsync();

        // we pass false to this method to suppress the exception that is thrown if we
        // find visual differences
        const results = await eyes.getRunner().getAllTestResults();
        console.log(results);
    });

});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
Option 2 - Run Locally

Running the Example Project

  1. Clone or download the repository and navigate to that folder
git clone https://github.com/applitools/tutorial-webdriverio-basic
cd tutorial-webdriverio-basic
1
2

Note: you can alternatively download the project as a Zip file and extract it

  1. Run the standalone server jar file
java -jar selenium-server-standalone-3.141.59.jar
1

TIP

Replace the jar file name with your jar file name

  1. Install the dependencies
npm install
1
  1. Run the example test
APPLITOOLS_API_KEY="[Your API Key]" npm test
1

This will first set your APPLITOOLS_API_KEY into the node process then run npm test.

Adding Applitools Eyes to an Existing Node.js WebdriverIO Project

Install Applitools Eyes dependencies:

npm install @applitools/eyes.webdriverio webdriverio@4 --save-dev
1

Sample test

"use strict";

const chromedriver = require("chromedriver");
const webdriverio = require("webdriverio");
const {
  By,
  Eyes,
  Target,
  Configuration
} = require('@applitools/eyes.webdriverio');

(async () => {
  chromedriver.start();

  // Open a Chrome browser.
  const chrome = {
    desiredCapabilities: {
      browserName: 'chrome'
    }
  };
  let driver = webdriverio.remote(chrome);
  await driver.init();

  // Initialize the eyes SDK
  const eyes = new Eyes();

  try {
    const configuration = new Configuration();
    configuration.setAppName('Demo app');
    configuration.setTestName('WebdriverIO test!');


    // Set your private API key here or in the "APPLITOOLS_API_KEY" environment variable
    configuration.setApiKey(process.env.APPLITOOLS_API_KEY);
    eyes.setConfiguration(configuration);

    driver = await eyes.open(driver);

    // Navigate the browser to the "hello world!" web-site.
    await driver.url('https://demo.applitools.com');

    //⭐️To see visual bugs, change the above URL to:
    //  https://demo.applitools.com/index_v2.html and run the test again

    // Visual checkpoint #1.
    await eyes.check('Login Page', Target.window());

    // Click the "Log in" button.
    await driver.click(By.id('log-in'));

    // Visual checkpoint #2.
    await eyes.check('App page', Target.window());

    // End the test.
    const results = await eyes.close();
    console.log(results);
  } catch (e) {
    console.log(e);
  } finally {
    // Close the browser.
    await driver.end();

    // If the test was aborted before eyes.close was called ends the test as aborted.
    await eyes.abortIfNotClosed();

    chromedriver.stop();
  }
})();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68

Resources




Terms & Conditions Privacy Policy GDPR© 2021 Applitools. All rights reserved.

Last Updated: 6/24/2021, 10:09:59 AM