Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { Builder } from 'selenium-webdriver';
- const { Eyes, MatchLevel, Target } = require('eyes.selenium');
- //all dynamic elements
- const dynamicElementsAll = {
- css: '.parent .child'
- };
- //we are going to replace %s with the actual number later
- const dynamicElementSel = '.parent:nth-child(%s) .child';
- //target object that takes a screenshot in Strict mode
- const strictMatchLevel = MatchLevel.Strict;
- const targetStrict = (matchLevel = strictMatchLevel) =>
- Target.window().matchLevel(matchLevel);
- //replace inline variables in dynamic selector strings
- async function parse(str) {
- var args = [].slice.call(arguments, 1);
- var i = 0;
- return str.replace(/%s/g, () => args[i++]);
- }
- //adding all dynamic elements to the target one by one in a loop instead of a chain
- async function ignoreDynamicElements(target) {
- var elements = await driver.findElements(dynamicElementsAll);
- for (var i = 1; i <= elements.length; i++) {
- target = target.ignore(By.css(parse(dynamicElementSel, i)));
- }
- return target;
- }
- //initialize Applitools Eyes instance
- var eyes = new Eyes();
- eyes.setApiKey("your applitools api key");
- eyes.setOs("platform name");
- //driver object should be initialized before we open Applitools Eyes
- /*
- var driver = new Builder()
- .withCapabilities(...)
- .usingServer(...)
- .build();
- */
- //now open eyes
- await eyes.open(driver, "app name", "scenario name");
- //here we pass the modified Target object where we previously ignored all dynamic elements
- await eyes.check("steenshot name", await ignoreDynamicElements(targetStrict()));
- await eyes.close();
- await eyes.abortIfNotClosed();
- //quitting the webdriver
- await driver.quit();
Add Comment
Please, Sign In to add comment