Check settings
checkSettings
generates a screenshot of the current page and adds it to the Applitools Eyes Test.
Syntax
eyes.check(checkSettings)
Holds the checkpoint's configuration. This is defined using a fluent API, starting with Target
.
Page screenshot
- To take a viewport screenshot, call
Target.window()
. - To take a full page screenshot, call
Target.window().fully()
.
Region screenshot
To take a region screenshot, you can specify either a selector or the element representation itself. For example:
// region by selector
eyes.check(Target.region(".banner"));
// region by locator
Locator locator = page.locator(".banner");
eyes.check(Target.region(locator));
// region by element
ElementHandle element = page.locator(".banner").elementHandle();
eyes.check(Target.region(element));
You can specify the absolute coordinates for the required region:
// region by coordinates
eyes.check(
Target.region(new Region(10, 20, 200, 80))
);
For all the above options, you can take the entire content of an element that can be scrolled using .fully()
.
Frames
For taking screenshots of elements inside iframes, you can specify the frame using the Target.frame
fluent API. For example:
// element inside frame
eyes.check(
Target.frame("frame-1").region(".element-inside frame")
);
To take a screenshot of the entire frame:
// entire frame
eyes.check(
Target.frame("frame-1").fully()
);
To create a "frame chain" with multiple calls:
// element inside nested frames
eyes.check(
Target.frame("frame-1").frame("frame-1-1").region(".nested-element")
)
Ignore regions
The test will not report any mismatches in an ignore region. This is useful for example for areas on the screen whose content is different on every run such as a time of day field.
// single region
eyes.check(
"viewport screenshot with ignore region",
Target.window()
.ignore(".dynamic-content-here")
)
// multiple regions
eyes.check(
"viewport screenshot with ignore region",
Target.window()
.ignore(".dynamic-content-here")
.ignore(page.locator("selector")) // some Locator
.ignore(page.locator("selector").elementHandle()) // some ElementHandle
.ignore(new Region(10, 20, 30, 40))
)
Possible input types:
- string (interpreted as css selector)
- locator
- element
- coordinates (
new Region(left, top, width, height)
)
Floating regions
In a Floating Region, the position of a region may move without reporting a mismatch.
// viewport screenshot with floating region
eyes.check(
Target
.window()
.floating(".floating-area", 10, 10, 10, 10) // up, down, left, right
)
// multiple regions
eyes.check(
Target
.window()
.floating(page.locator(".floating-area"), 10, 10, 10, 10) // Playwright Locator
.floating(10, ".floating-area")
.floating(10, page.locator(".floating-area")) // up, down, left, right all equal to 10
.floating(10, page.locator(".floating-area").elementHandle()) // up, down, left, right all equal to 10
.floating(10, new Region(10, 20, 30, 40))
.floating(new Region(10, 20, 30, 40), 10, 10, 10, 10)
)
Possible input types:
- string (interpreted as css selector)
- locator
- element
- coordinates (
new Region(left, top, width, height)
)
Region match levels
You can set the following match levels for a region:
- Strict: Detect any mismatch visible to the human eye.
- Ignore colors: Similar to the strict match level but ignores changes in colors.
- Layout: Check only the layout and ignore actual text and graphics.
- Dynamic: Detect text patterns such as a date, email address, or URL. For details, see Dynamic text match level
// viewport screenshot with strict region
eyes.check(Target.window().strict(".some-element"));
// viewport screenshot with ignore colors region
eyes.check(Target.window().ignoreColors(".some-element"));
// viewport screenshot with layout region
eyes.check(Target.window().layout(".some-element"));
// multiple regions
Target.window().ignoreColors(region1).ignoreColors(region2).ignoreColors(region3);
Target.window().strict(region1).strict(region2).strict(region3);
Target.window().layout(region1).layout(region2).layout(region3);
// Dynamic regions - default patterns
Target.window().dynamicRegions(region1, region2, region3)
// Multiple dynamic patterns for a single region
await eyes.check('Multiple Dynamic Text Types', Target.window().dynamicRegion(textSection, [
DynamicTextType.TextField,
DynamicTextType.Number,
DynamicTextType.Email,
DynamicTextType.Date,
DynamicTextType.Link,
DynamicTextType.Currency
<Custom Pattern name>
]))
Dynamic custom pattern name is defined in the Test Manager. For details, see Dynamic text match level
Input Types
- String - Interpreted as a CSS selector.
by
Locator - Defines the region.- Element - Specifies the match level region by passing an element.
- Coordinates (
{left, top, width, height}
) - If you have specific coordinates for the region, you can define it using the left, top, width, and height properties.
Accessibility regions
Defines an accessibility region and its type. The type can be IgnoreContrast
, RegularText
, LargeText
, BoldText
, or GraphicalObject
.
// viewport screenshot with accessibility region
eyes.check(
Target.window().accessibility(".some-element", AccessibilityRegionType.LargeText)
);
// multiple regions is done by chaining the same method
eyes.check(
Target.window()
.accessibility(".element-1", AccessibilityRegionType.LargeText)
.accessibility(".element-2", AccessibilityRegionType.IgnoreContrast)
.accessibility(".element-3", AccessibilityRegionType.BoldText)
);
Possible input types:
- string (interpreted as css selector)
- locator
- element
- coordinates (
new Region(left, top, width, height)
)
Scroll root element
Normally, Eyes selects the most appropriate element to scroll to execute the Fully keyword. You can use the scrollRootElement
element to specify the element to scroll explicitly.
// full page with custom scroll root element
eyes.check(
Target.window().fully().scrollRootElement(".main-content")
);
Possible input types:
- string (interpreted as css selector)
- locator
- element
Before capture screenshot
Script that runs after the page is loaded but before capturing the screenshot.
eyes.check("tag", Target.window().beforeRenderScreenshotHook(hook));
Tag (withName
)
Defines a name for the checkpoint in the Eyes Test Manager. The name may be any string and serves to identify the step to the user in the Test manager.
You can change the tag value without impacting testing in any way since Eyes does not use the tag to identify the baseline step that corresponds to the checkpoint; Eyes matches steps based on their content and position in the sequences of images of the test. See How Eyes compares checkpoints and baseline images for details.
// Tag
eyes.check(Target.window().withName("Main page"));
Lazy loading (lazyLoad
)
You can use the SDK to scroll the entire page, or a specific length of the page, to make sure all lazily loaded assets are on the page before performing a check.
Default values
scrollLength
: 300 pxwaitingTime
: 2000msmaxAmountToScroll
: 15,000 px
// lazy loads with default values
eyes.check(Target.window().lazyLoad());
// lazy loads with options specified
eyes.check(Target.window().lazyLoad(new LazyLoadOptions()
.maxAmountToScroll(1000) // total pixels of the page to be scrolled
.scrollLength(250) // amount of pixels to use for each scroll attempt
.waitingTime(500) // milliseconds to wait in-between each scroll attempt
));
Possible input types:
- nothing (enables sensible defaults)
- options object (
new LazyLoadOptions(maxAmountToScroll, waitingTime, scrollLength)
)
Other details:
- If an option is omitted, the sensible default for that value will be used
- The SDK will repeatedly scroll the page using the
scrollLength
until either the page cannot be scrolled further or themaxAmountToScroll
has been reached (whichever happens first)
Other checkSettings configuration
hideScrollbars
hideCaret
ignoreDisplacements
useDom
enablePatterns