Skip to main content

Puppeteer JavaScript overview

Applitools Eyes SDK for Puppeteer.

Installation

Install eyes-puppeteer as a local dev dependency in your tested project:

npm i -D @applitools/eyes-puppeteer

Getting started

To get started with this SDK, you need to set the following:

Entering the Applitools API key

To authenticate via the Applitools server and run tests, you need to set the environment variable APPLITOOLS_API_KEY to the API key provided from Applitools Eyes. For details how to retrieve your API key, see the Applitools documentation in the Eyes Knowledge Center.

Entering the API Key on Linux or a Mac

export APPLITOOLS_API_KEY=<your_key>
npm test

Entering the API Key on Windows

set APPLITOOLS_API_KEY=<your_key>
npx test

Entering the API Key programmatically

eyes.setApiKey('<your API key>')

Eyes server URL

If the Eyes server is not deployed in https://eyes.applitools.com, you need to set the Server URL in the environment variable APPLITOOLS_SERVER_URL before running tests.

The server URL of your Applitools Eyes dashboard is in the format https://<MY_COMPANY>.applitools.com

Entering the server URL on Linux or a Mac

export APPLITOOLS_SERVER_URL=<YOUR_SERVER_URL>

Entering the server URL on Windows

set APPLITOOLS_SERVER_URL=<YOUR_SERVER_URL>

A test in Applitools Eyes always starts with a eyes.open call and ends with eyes.close. The steps in the test are calls to eyes.check between eyes.open and eyes.close calls.

A test is structured as following:

eyes.open
[step 1]
[step 2]
...
eyes.close

Using the Puppeteer SDK

After defining the API key, you will be able to use commands from eyes-puppeteer in your tests to take screenshots and use Applitools Eyes to manage them.

Example

const {Eyes, Target} = require('@applitools/eyes-puppeteer')

(async () => {
const browser = await puppeteer.firefox.launch();
const context = await browser.newContext();
const page = await context.newPage();
await page.goto('https://applitools.com');

const eyes = new Eyes();
await eyes.open(page, "applitools.com website", "My first Puppeteer test!")
await eyes.check('home page', Target.window().fully())
await eyes.closeAsync()
})();

Common methods

Eyes constructor

Creates an instance of Eyes, which then exposes methods to run and configure visual tests.

const eyes = new Eyes(runner)
  • runner - A runner instance which manages tests across multiple Eyes instances. The runner can be an instance of either a ClassicRunenr or a VisualGridRunner. For more information, see the Runners section below.

open

Creates an Applitools test. This will start a session with the Applitools server.

eyes.open(page, appName, testName, viewportSize)

Visual tests and baselines

By using the open, check, and close methods on Eyes, you are creating visual tests in Applitools Eyes. A visual test is a sequence of screenshots, compared with a baseline. The baseline is also a sequence of screenshots. The specific baseline to compare against is found by using the values for:

  • Browser
  • Operating system
  • App name
  • Test name
  • Viewport size

The baseline is created automatically when running a test with specific values for these parameters for the first time. For example, you run a test with Chrome on OS X and specify the app name, test name and viewport size via eyes.open(t, 'some app', 'some test', {width: 1200, height: 800}). The first time the test runs with these parameters, a baseline will be created. Any subsequent execution with the same values will compare screenshots against this baseline. The test will actually be created after running eyes.close, and the results of the test are returned as a TestResults object.

For more information, see How Eyes compares checkpoints and baseline images.

Batches

It's possible to aggregate tests that are run in different processes, or in different Eyes instances, under the same batch. This is done by providing the same batch ID to these tests.

For more information, see How to organize your tests with batches.

check

Generates a screenshot of the current page and add it to the Applitools Test.

eyes.check(checkSettings)

closeAsync

Closes the Eyes test but does not wait for the Eyes server to return a result. This command enables your system to continue running tests while Eyes completes its comparisons in the background. You should call this command at the end of each test, symmetrically to eyes.open.

After executing all Eyes tests, your code should call Runner.getAllTestResults to retrieve all test results as a TestResultsSummary.

eyes.closeAsync()

close

Closes the Eyes test and waits for the Eyes Server to return a single result. The close command then returns a TestResults object with detailed test result data. This method takes an optional boolean parameter, if false it will not throw an exception if the test found differences (default is true). You should call this command at the end of each test, symmetrically to eyes.open.

info

This is a legacy API as it only returns a single result. We recommend using eyes.closeAsync and eyes.getResult instead of this API.

const testResults = await eyes.close()
//or
const testResults = await eyes.close(false)

Return value: TestResults.

getResults

Returns TestResults for the last test (open- ... -close) by the Eyes instance.

If you call getResults before eyes.closeAsync the method aborts the test.

const results1 = await eyes.getResults() // throws error by default
const results2 = await eyes.getResults(true) // explicitly specifies that error should be thrown
const results3 = await eyes.getResults(false) // explicitly specifies that error should NOT be thrown

Runners

Used to manage multiple Eyes sessions. There are the following types of runners:

  • ClassicRunner - Used when the screenshot is taken by the SDK itself.

  • VisualGridRunner - Used when the screenshot is taken by the Ultrafast Grid.

For details, see Runners