SlideShare a Scribd company logo
Visual AI Testing using
Applitools
by Mikhail Laptev (@hotelsdotcom)
t: @mikelaptev / in: https://www.linkedin.com/in/mikhaillaptev/
No photo required 🤳📵 after this slide! 💫
Presentation 📑 is already available on-line💡
Why I chose this area
I have got a great experience while participating in Applitools
Hackathon (https://applitools.com/hackathon) last year and,
regardless of the fact that I was not nominated as one of the
winners 🏆, I would be happy 🥳 to share my story with all of
you ... and, at this time, in Java ☕.
A bit about Applitools 💭
E2E testing of UI
is awesome 🤪
Unless you end-up
managing endless sets of
locators and adjusting your
assertions during ±80% of
your working day 😟
But everything is not
as bad as we think,
yeah 😊?
How can we do things better? 🧐
E2E tests are necessary - they give us the highest level of
confidence 💂 that our product works as it should.
But, you don’t need to cover every single change 🤯 by a new
E2E test. You need to cover only critical business flows.
Small changes within the
flow ➡ acceptance /
integration tests ➡ help
your developers to deal with
that and never give up! 📢
“When you asked a developer to write a test for his/her change - he/she
starts looking at you like you just asked them for a ride to the airport.“
© Cole & Marmalade
Okay, tell me more
of those “beautiful
jokes” about E2E! 🤔
What about...
● Assertions?
● User Experience?
● Layout?
● etc... 😲
Having raw assertions, especially for
dynamic or graphic content might
be a challenge. As an example,
consider a case, when what you are
using is a 3rd party component or a
dynamic content of a tutorial or an
advert.
What you would like to avoid - an
enormous amount of code being
designed for those assertions 😩.
What you would not like to avoid -
losing confidence in what you are
delivering 💷.
Your end-user
approach your
product via UI, so...
💡
Visual AI Testing 💡
The idea as simple as it can be - why we need all kinds of different assertions with
different and, time-to-time complicated logic behind them? Can we replace them
with just one assertion - asserting what our customers see on the screen?
That’s exactly what Applitools (and a few other Applitools competitors) are dealing
with.
Long story short is - you don’t need your assertion code anymore 🤩. Navigate to a
necessary point that represent one or another condition within your application and
assert what is displayed on the screen 👀!
Sounds tasty, right? 😋 So, let’s try and see how much is the fish 🎣.
Implementation
details
Configuration 🔧
public class WebBase {
...
public static Configuration configureEyes() {
Configuration configuration = new Configuration();
configuration.setForceFullPageScreenshot(true)
.setApiKey(AppProperties.getProperty("applitools.api.key"));
return configuration;
}
...
}
Setup 🛠
public abstract class BaseUiTest {
private static EyesRunner runner;
private static Configuration configuration;
protected Eyes eyes;
protected WebBase base;
…
@BeforeAll
static void setUpAll() {
runner = new ClassicRunner();
configuration = WebBase.configureEyes();
}
…
}
Setup (cont.) 🛠
public abstract class BaseUiTest {
private static EyesRunner runner;
private static Configuration configuration;
protected Eyes eyes;
protected WebBase base;
…
@BeforeEach
void setUpTest() {
eyes = new Eyes(runner);
eyes.setConfiguration(configuration);
WebBase.setUpBase(); // Setup of the base (WebDriver & etc.)
base = new WebBase();
}
…
}
Login form: v1 vs. v2 📷
Login form: v1 vs. v2 📸
Implementation 💻
…
// Assert
assertAll(
() -> assertEquals("Login Form",
loginPage.getHeaderTitle(), "Invalid title of the login form"),
() -> assertEquals("Username",
loginPage.getUsername().getLabel(),
"Invalid label of the field for entering username"),
() -> assertTrue(loginPage.getUsername().isIconDisplayed(),
"Icon for the username field should be displayed"),
() -> assertEquals("Password",
loginPage.getPassword().getLabel(),
"Invalid label of the field for entering password"),
() -> assertTrue(
loginPage.getPassword().isIconDisplayed(),
"Icon for the password field should be displayed"),
() -> assertTrue(
isNullOrEmpty(loginPage.getStyleOfRememberMeCheckBox()),
"Alignment for the 'Remember Me' checkbox is incorrect"),
() -> assertEquals(expectedLinks.size(), actualLinks.size(),
"Invalid amount of the 'Login with' buttons"),
() -> assertIterableEquals(expectedLinks, actualLinks,
"Invalid content of the 'Login with' buttons")
);
...
…
// Assert
eyes.checkElement(
loginPage.getLoginFormLocatorToAssert(),
LOGIN.getTag());
assertEquals(TestResultsStatus.Passed,
eyes.close(false).getStatus());
...
Demo time 🎱 🎲
🎯
Conclusion
IMHO 🤷🏻‍♂
Despite of a lot of advantages in using of Visual AI for testing,
there are some areas where we need to limit ourselves in
order to avoid false positives.
It is not easy to switch entirely to Visual AI, you should
consider a symbiosis of both classical 🏛 and visual 🔮
approaches.
Links
● https://testautomationu.applitools.com/automated-visual-testing-a-fast-path-to-t
est-automation-success
● http://applitools.com/
● https://testautomationu.applitools.com/modern-functional-testing/
● https://applitools.com/ultrafast-grid
● https://applitools.com/blog/essential-components-continuous-testing
Thank you and
happy testing! 👩‍💻👨‍💻

More Related Content

PPTX
Visual Testing: The Missing Piece of the Puzzle -- presentation by Gil Tayar
PDF
Next Generation Functional & Visual Testing powered by AI
PPTX
Automation of Security scanning easy or cheese?
PPTX
Automated Visual Testing in NSW.Gov.AU
PDF
Modern Functional Test Automation Through Visual AI - webinar w/ Raja Rao
PPTX
An Overview of Selenium
PPTX
Bringing Quality Design Systems to Life with Storybook & Applitools
PDF
Getting started with Appium 2.0
Visual Testing: The Missing Piece of the Puzzle -- presentation by Gil Tayar
Next Generation Functional & Visual Testing powered by AI
Automation of Security scanning easy or cheese?
Automated Visual Testing in NSW.Gov.AU
Modern Functional Test Automation Through Visual AI - webinar w/ Raja Rao
An Overview of Selenium
Bringing Quality Design Systems to Life with Storybook & Applitools
Getting started with Appium 2.0

What's hot (20)

PDF
Stop Testing (Only) The Functionality of Your Mobile Apps!
PDF
Testing Hourglass at Jira Frontend - by Alexey Shpakov, Sr. Developer @ Atlas...
PDF
Visual Validation - The missing tip of the automation pyramid @AgileIndia2020
PDF
Visual Testing: Quality and Speed -- by GIl Tayar, Applitools
PDF
Lean Quality & Engineering
PPTX
Visual AI Enhanced Testing on Dynamic Websites
PPTX
ISTQB Foundation and Selenium Java Automation Testing
PDF
Web Accessibility Testing Trends and Shift Left Testing of accessibility usin...
PPTX
Appium vs Appium with Perfecto
PDF
Katalon Studio - Successful Test Automation for both Testers and Developers
PPTX
Test Automation Frameworks: Assumptions, Concepts & Tools
PDF
[webinar] Best of Breed: Successful Test Automation Practices from Innovative...
PPTX
Colorful world-of-visual-automation-testing-latest
PDF
Testing Design System Changes Across Your Application -- Intuit Use Case -- w...
PDF
Eradicate Flaky Tests - AppiumConf 2021
PDF
Role of Automation in Testing
PDF
Getting started with Visual Testing using Applitools - @TPC, Feb2020
PDF
Measuring Coverage From E2E Tests
PDF
Rewrite vs Refactor (AgileIndia 2021)
PPTX
A Look into Automated Web UI Test
Stop Testing (Only) The Functionality of Your Mobile Apps!
Testing Hourglass at Jira Frontend - by Alexey Shpakov, Sr. Developer @ Atlas...
Visual Validation - The missing tip of the automation pyramid @AgileIndia2020
Visual Testing: Quality and Speed -- by GIl Tayar, Applitools
Lean Quality & Engineering
Visual AI Enhanced Testing on Dynamic Websites
ISTQB Foundation and Selenium Java Automation Testing
Web Accessibility Testing Trends and Shift Left Testing of accessibility usin...
Appium vs Appium with Perfecto
Katalon Studio - Successful Test Automation for both Testers and Developers
Test Automation Frameworks: Assumptions, Concepts & Tools
[webinar] Best of Breed: Successful Test Automation Practices from Innovative...
Colorful world-of-visual-automation-testing-latest
Testing Design System Changes Across Your Application -- Intuit Use Case -- w...
Eradicate Flaky Tests - AppiumConf 2021
Role of Automation in Testing
Getting started with Visual Testing using Applitools - @TPC, Feb2020
Measuring Coverage From E2E Tests
Rewrite vs Refactor (AgileIndia 2021)
A Look into Automated Web UI Test
Ad

Similar to Visual AI Testing Using Applitools (20)

PDF
The State of Front-end At CrowdTwist
PDF
Going web native
PDF
A gently introduction to AngularJS
PDF
Visual Automation Framework via Screenshot Comparison
PDF
The 2014 Decision Makers Guide to Java Web Frameworks
PDF
Going web native - Feb 2018
PDF
How to develop nice portlet with Juzu framework
PDF
Prevent Test Automation Shelfware: A Selenium-WebDriver Case Study
PDF
jQquerysummit - Large-scale JavaScript Application Architecture
PDF
Asp.Net Mvc Dev Days09
PDF
From Idea to App (or “How we roll at Small Town Heroes”)
PPTX
Better User Experience with .NET
PDF
Vaadin DevDay 2017 - DI your UI
PPTX
UI Testing for Your Xamarin.Forms Apps
PPT
JavaScript UI Architecture: Be all that you can be
PPTX
Introduction to React
PPT
Android the Agile way
PPTX
Breaking free from static abuse in test automation frameworks and using Sprin...
PDF
Setting a clear baseline (How to test an user story #2)
PPTX
Telerik Kendo UI vs. AngularJS
The State of Front-end At CrowdTwist
Going web native
A gently introduction to AngularJS
Visual Automation Framework via Screenshot Comparison
The 2014 Decision Makers Guide to Java Web Frameworks
Going web native - Feb 2018
How to develop nice portlet with Juzu framework
Prevent Test Automation Shelfware: A Selenium-WebDriver Case Study
jQquerysummit - Large-scale JavaScript Application Architecture
Asp.Net Mvc Dev Days09
From Idea to App (or “How we roll at Small Town Heroes”)
Better User Experience with .NET
Vaadin DevDay 2017 - DI your UI
UI Testing for Your Xamarin.Forms Apps
JavaScript UI Architecture: Be all that you can be
Introduction to React
Android the Agile way
Breaking free from static abuse in test automation frameworks and using Sprin...
Setting a clear baseline (How to test an user story #2)
Telerik Kendo UI vs. AngularJS
Ad

Recently uploaded (20)

PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PPTX
Essential Infomation Tech presentation.pptx
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PDF
System and Network Administration Chapter 2
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PPTX
L1 - Introduction to python Backend.pptx
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Essential Infomation Tech presentation.pptx
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
System and Network Administration Chapter 2
VVF-Customer-Presentation2025-Ver1.9.pptx
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Odoo Companies in India – Driving Business Transformation.pdf
Which alternative to Crystal Reports is best for small or large businesses.pdf
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Design an Analysis of Algorithms I-SECS-1021-03
PTS Company Brochure 2025 (1).pdf.......
Wondershare Filmora 15 Crack With Activation Key [2025
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Softaken Excel to vCard Converter Software.pdf
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
2025 Textile ERP Trends: SAP, Odoo & Oracle
L1 - Introduction to python Backend.pptx

Visual AI Testing Using Applitools

  • 1. Visual AI Testing using Applitools by Mikhail Laptev (@hotelsdotcom) t: @mikelaptev / in: https://www.linkedin.com/in/mikhaillaptev/
  • 2. No photo required 🤳📵 after this slide! 💫 Presentation 📑 is already available on-line💡
  • 3. Why I chose this area I have got a great experience while participating in Applitools Hackathon (https://applitools.com/hackathon) last year and, regardless of the fact that I was not nominated as one of the winners 🏆, I would be happy 🥳 to share my story with all of you ... and, at this time, in Java ☕.
  • 4. A bit about Applitools 💭
  • 5. E2E testing of UI is awesome 🤪 Unless you end-up managing endless sets of locators and adjusting your assertions during ±80% of your working day 😟
  • 6. But everything is not as bad as we think, yeah 😊?
  • 7. How can we do things better? 🧐 E2E tests are necessary - they give us the highest level of confidence 💂 that our product works as it should. But, you don’t need to cover every single change 🤯 by a new E2E test. You need to cover only critical business flows.
  • 8. Small changes within the flow ➡ acceptance / integration tests ➡ help your developers to deal with that and never give up! 📢 “When you asked a developer to write a test for his/her change - he/she starts looking at you like you just asked them for a ride to the airport.“ © Cole & Marmalade
  • 9. Okay, tell me more of those “beautiful jokes” about E2E! 🤔
  • 10. What about... ● Assertions? ● User Experience? ● Layout? ● etc... 😲 Having raw assertions, especially for dynamic or graphic content might be a challenge. As an example, consider a case, when what you are using is a 3rd party component or a dynamic content of a tutorial or an advert. What you would like to avoid - an enormous amount of code being designed for those assertions 😩. What you would not like to avoid - losing confidence in what you are delivering 💷.
  • 12. Visual AI Testing 💡 The idea as simple as it can be - why we need all kinds of different assertions with different and, time-to-time complicated logic behind them? Can we replace them with just one assertion - asserting what our customers see on the screen? That’s exactly what Applitools (and a few other Applitools competitors) are dealing with. Long story short is - you don’t need your assertion code anymore 🤩. Navigate to a necessary point that represent one or another condition within your application and assert what is displayed on the screen 👀! Sounds tasty, right? 😋 So, let’s try and see how much is the fish 🎣.
  • 14. Configuration 🔧 public class WebBase { ... public static Configuration configureEyes() { Configuration configuration = new Configuration(); configuration.setForceFullPageScreenshot(true) .setApiKey(AppProperties.getProperty("applitools.api.key")); return configuration; } ... }
  • 15. Setup 🛠 public abstract class BaseUiTest { private static EyesRunner runner; private static Configuration configuration; protected Eyes eyes; protected WebBase base; … @BeforeAll static void setUpAll() { runner = new ClassicRunner(); configuration = WebBase.configureEyes(); } … }
  • 16. Setup (cont.) 🛠 public abstract class BaseUiTest { private static EyesRunner runner; private static Configuration configuration; protected Eyes eyes; protected WebBase base; … @BeforeEach void setUpTest() { eyes = new Eyes(runner); eyes.setConfiguration(configuration); WebBase.setUpBase(); // Setup of the base (WebDriver & etc.) base = new WebBase(); } … }
  • 17. Login form: v1 vs. v2 📷
  • 18. Login form: v1 vs. v2 📸
  • 19. Implementation 💻 … // Assert assertAll( () -> assertEquals("Login Form", loginPage.getHeaderTitle(), "Invalid title of the login form"), () -> assertEquals("Username", loginPage.getUsername().getLabel(), "Invalid label of the field for entering username"), () -> assertTrue(loginPage.getUsername().isIconDisplayed(), "Icon for the username field should be displayed"), () -> assertEquals("Password", loginPage.getPassword().getLabel(), "Invalid label of the field for entering password"), () -> assertTrue( loginPage.getPassword().isIconDisplayed(), "Icon for the password field should be displayed"), () -> assertTrue( isNullOrEmpty(loginPage.getStyleOfRememberMeCheckBox()), "Alignment for the 'Remember Me' checkbox is incorrect"), () -> assertEquals(expectedLinks.size(), actualLinks.size(), "Invalid amount of the 'Login with' buttons"), () -> assertIterableEquals(expectedLinks, actualLinks, "Invalid content of the 'Login with' buttons") ); ... … // Assert eyes.checkElement( loginPage.getLoginFormLocatorToAssert(), LOGIN.getTag()); assertEquals(TestResultsStatus.Passed, eyes.close(false).getStatus()); ...
  • 20. Demo time 🎱 🎲 🎯
  • 21. Conclusion IMHO 🤷🏻‍♂ Despite of a lot of advantages in using of Visual AI for testing, there are some areas where we need to limit ourselves in order to avoid false positives. It is not easy to switch entirely to Visual AI, you should consider a symbiosis of both classical 🏛 and visual 🔮 approaches.
  • 22. Links ● https://testautomationu.applitools.com/automated-visual-testing-a-fast-path-to-t est-automation-success ● http://applitools.com/ ● https://testautomationu.applitools.com/modern-functional-testing/ ● https://applitools.com/ultrafast-grid ● https://applitools.com/blog/essential-components-continuous-testing
  • 23. Thank you and happy testing! 👩‍💻👨‍💻