Selenium for JavaScript Tutorial

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. 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
  1. Clone or download the repository and navigate to that folder
git clone https://github.com/applitools/tutorial-selenium-javascript-ultrafastgrid.git
cd tutorial-selenium-javascript-ultrafastgrid
1
2

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

  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 Project

  1. Install Applitools Eyes dependencies
npm install @applitools/eyes-selenium --save-dev
1
  1. Add an example test
'use strict';

const { Builder, By } = require('selenium-webdriver');
const { Eyes, VisualGridRunner, Target, RectangleSize, Configuration, BatchInfo, BrowserType, DeviceName, ScreenOrientation} = require('@applitools/eyes-selenium');

describe('DemoApp - Ultrafast Grid', function () {
  let runner, eyes, driver;

  before(async () => {

    // Create a new chrome web driver
    driver = await new Builder()
        .forBrowser('chrome')
        .build();

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

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

    // Initialize the eyes configuration.
    let conf = new Configuration()

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

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

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

    // set the configuration to eyes
    eyes.setConfiguration(conf)
  });

  it('ultraFastTest', async () => {
    // Call Open on eyes to initialize a test session
    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.get("https://demo.applitools.com");

    // check the login page with fluent api, see more info here
    // https://applitools.com/docs/topics/sdk/the-eyes-sdk-check-fluent-api.html
    await eyes.check("Login Window", Target.window().fully());

    // This will create a test with two test steps.
    await driver.findElement(By.id("log-in")).click();

    // Check the app page
    await eyes.check("App Window", Target.window().fully());

    // Call Close on eyes to let the server know it should display the results
    await eyes.closeAsync();
  });

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

    // 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 allTestResults = await runner.getAllTestResults();
    console.log(allTestResults);
  });
});
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
Option 2 - Run Locally
  1. Clone or download the repository and navigate to that folder
git clone https://github.com/applitools/tutorial-selenium-javascript-basic.git
cd tutorial-selenium-javascript-basic
1
2

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

  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 Project

  1. Install Applitools Eyes dependencies
npm install @applitools/eyes-selenium --save-dev
1
  1. Add an example test
'use strict';

require('chromedriver');
const { Builder, By } = require('selenium-webdriver');
const { Eyes, ClassicRunner, Target, RectangleSize } = require('@applitools/eyes-selenium');

describe('DemoApp - ClassicRunner', function () {
  let runner, eyes, driver;

  beforeEach(async () => {
    // Initialize the Runner for your test.
    runner = new ClassicRunner();

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

    // Use Chrome browser
    driver = await new Builder()
      .forBrowser('chrome')
      // .setChromeOptions(new ChromeOptions().headless())
      .build();
  });

  it('Smoke Test', async () => {
    // Start the test by setting AUT's name, test name and viewport size (width X height)
    await eyes.open(driver, 'DemoApp - ClassicRunner', 'Smoke Test', new RectangleSize(600, 800));

    // Navigate the browser to the "ACME" demo app.
    await driver.get("https://demo.applitools.com");
    // await driver.get("https://demo.applitools.com/index_v2.html");
    // To see visual bugs after the first run, use the commented line above instead.

    // Visual checkpoint #1 - Check the login page.
    await eyes.check("Login Window", Target.window());

    // This will create a test with two test steps.
    await driver.findElement(By.id("log-in")).click();

    // Visual checkpoint #2 - Check the app page.
    await eyes.check("App Window", Target.window().fully());

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

  afterEach(async () => {
    // Close the browser.
    await driver.quit();

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

    // Wait and collect all test results
    const allTestResults = await runner.getAllTestResults();
    console.log(allTestResults);
  });
});
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

More information

The documentation for the Applitools Eyes Selenium 3 Java SDK contains more information about advanced configuration.

Resources




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

Last Updated: 10/21/2021, 1:15:49 PM