SlideShare a Scribd company logo
@giltayar
Visual Testing:
The Missing Piece of the Puzzle
Gil Tayar (@giltayar)
September 2019
@giltayar@giltayar
About Me ● My developer experience goes all the way
back to the ‘80s.
● Am, was, and always will be a developer
● Testing the code I write is my passion
● Currently evangelist and architect @
Applitools
● We deliver Visual Testing tools:
If you’re serious about testing, checkout
Applitools Eyes
● Sometimes my arms bend back
● But the gum I like is coming back in style
@giltayar
@giltayar
Fear
@giltayar
@giltayar
But we do fear...
@giltayar
Fear of flying
@giltayar
Fear of
heights
@giltayar
Fear of
approaching
that cool guy
@giltayar
Fear of public
speaking
@giltayar
What About Software Development Fears?
@giltayar
Fear of adding code for
features
@giltayar
Fear of deleting code
@giltayar
Fear of refactoring
@giltayar
The Development Fears
● Fear of adding code
● Fear of deleting code
● Fear of refactoring
@giltayar
Why do we fear?
@giltayar
Because Developers are Shit
@giltayar
“All software
is a harmony
of bugs”
— Eli Singer
@giltayar
How do we
overcome our
fears?
@giltayar
We write tests!
@giltayar
We write unit tests!
● Code that tests
○ A class
○ A function
○ A module
○ A UI component
@giltayar
Backend unit tests Frontend unit
tests
@giltayar
Most of our
code is glue
@giltayar
And sometimes the units work, but...
@giltayar
We write integration tests!
● Testing a set of units functioning together
● Testing a whole frontend app, without the backend
● Testing a whole microservice, without the other
microservices
@giltayar
Backend unit tests Backend Services Backend database
integration
Frontend unit
tests
Frontend
components
Frontend
Application
@giltayar
So how do tests overcome our software
development fears?
@giltayar
A developer codes...
@giltayar
And she writes the tests for the code
(sometimes even before writing the code…)
@giltayar
Until it works
@giltayar
And if she...
● Adds code
● Deletes code
● Refactors
@giltayar
She just runs the tests again...
@giltayar
But are we really testing our whole code?
@giltayar
Are we testing our HTML? Our CSS?
@giltayar
Fear still exists in the frontend world
● Fear of adding/removing/refactoring CSS
● Fear of adding/removing/refactoring HTML
@giltayar
Are we testing our whole code?
Backend
● All Logic code ✔︎
● Database code ✔︎
● Microservices ✔︎
Frontend
● All Logic code
✔︎
● Component code
✔︎
● Ajax Code
✔︎
● Component Visuals
✕
● Application Visuals
@giltayar
Backend unit
tests
Backend
Services
Backend
database
integration
Frontend
unit tests
Frontend
components
Component
Visuals Frontend
Application
Application
Visuals
@giltayar
Visual Testing
@giltayar
Visual Testing
Components Application
@giltayar
Visual Testing
Components
@giltayar
How do we visually test our components?
1. Build a “demo” app that includes all the components
2. Run a browser
3. For each component
a. Take a screenshot
b. Compare against a baseline screenshot
i. The first run of the test determines the baseline screenshot
@giltayar
We need to...
1. Build a “demo” app that includes all the components
2. Run a browser
3. For each component
a. Take a screenshot
b. Compare against a baseline screenshot
i. The first run of the test determines the baseline screenshot
@giltayar
It’s not easy
● Modern Frontend development makes it difficult
● You have to deal with babel, webpack, … configurations
from here to eternity
● But there’s a solution!
@giltayar
@giltayar
Storybook
With just a few lines of HTML, we get all our components
in one nice UI
@giltayar
The code that generates the storybook
storiesOf('Header', module)
.add('no user', () => <Header appName="Blog App" />)
.add('with user', () =>
<Header appName="Blog App" currentUser={{userName:
'giltayar'}}/>);
storiesOf('Login', module)
.add('empty', () => <Login />)
.add('with text', () =>
<Login email="gil@tayar.org" password="apassword" />);
@giltayar
Navigation
Component
@giltayar
@giltayar
@giltayar
@giltayar
We need to...
1. Build a “demo” app that includes all the components
2. Run a browser
3. For each component
a. Take a screenshot
b. Compare against a baseline screenshot
i. The first run of the test determines the baseline screenshot
@giltayar
Run a browser
let driver
before(
async () =>
(driver = await new webdriver.Builder()
.forBrowser('chrome')
.build())
)
after(async () => await driver.quit())
let eyes
before(async () => {
await driver.get('http://localhost:9009')
})
@giltayar
We need to...
1. Build a “demo” app that includes all the components
2. Run a browser
3. For each component
a. Take a screenshot
b. Compare against a baseline screenshot
i. The first run of the test determines the baseline screenshot
@giltayar
Take screenshot and compare
it('should show "no user" correctly', async () => {
const noUser = await driver.findElement(By.linkText('no user'))
await noUser.click()
const screenshot = await driver.takeScreenshot()
expect(screenshot).to.matchImage('no-user')
})
@giltayar
Take screenshot and compare
it('should show "with user" correctly', async () => {
const noUser = await driver.findElement(By.linkText(with user'))
await noUser.click()
const screenshot = new Buffer(await driver.takeScreenshot(),
'base64')
expect(screenshot).to.matchImage(with-user')
})
@giltayar
Yes! We have overcome our component visual
fears!
@giltayar
Problems...
● Setup is difficult
● Flakiness in tests
● Baseline administration
● Scaling to hundreds of components
@giltayar
Setup is difficult
● Setting up (and tearing down!) storybook is more difficult
than it seems
○ Orphan processes
● Running a browser is a chore
@giltayar
Flakiness in Tests
@giltayar
@giltayar
@giltayar
Flakiness in Tests
@giltayar
• Image scaling
• 1 pixel offsets in element positioning
• Dynamic content
• Moving elements
• Images of different size
• Performance
AND MORE…
@giltayar
Here’s another one...
Chrome v67 Chrome v68
@giltayar
And the difference is...
@giltayar
Remember our Testing Bookstore? (1)
@giltayar
Remember our Testing Bookstore? (2)
@giltayar
Baseline Administration
● Baseline administration by files
● Copy to change baseline
● Diff files
@giltayar
Scaling to thousands of components
● If I have 100 components, and each one has 3 different
“views”...
● The test will take tens of minutes!
@giltayar
Solution: Commercial-Grade SaaS Tools
@giltayar
Solutions
● Baseline administration
● Flakiness in tests
● Setup is difficult
● Scaling to hundreds of components
@giltayar
Baseline administration
● Upload screenshots
to the cloud
● Use GUI tools to
○ View tests
○ View diffs
○ Update baselines
@giltayar
Flakiness
● Use advanced visual algorithms
● Mix with AI algorithms (ML and DL)
● Result: no flakiness
● Also get enhanced capabilities:
○ Layout mode
○ Ignore regions
○ And more...
@giltayar
Setup is difficult
● Use a good Storybook SDK
● And get a no-coding experience that tests your storybook
for free!
@giltayar
Scaling to hundreds of components
● Push the rendering itself to the cloud
● Send the DOM + resources (CSS, images, fonts, ...) to the cloud,
and have a grid of browsers render them concurrently
● [nice image]
@giltayar
Backend unit
tests
Backend
Services
Backend
database
integration
Frontend
unit tests
Frontend
components
Component
Visuals Frontend
Application
Application
Visuals
@giltayar
Visual Testing
Application
@giltayar
1. Run the app
2. Run a browser
3. Drive the app along the flow we want
4. Take screenshots along the way
5. Compare against a baseline screenshot
We need to...
@giltayar
Drive the flow
it('should show the main flow correctly', async () => {
await registerUser()
await publishPost()
await logout()
await showBlogHomePage()
})
@giltayar
… and take screenshots along the way
async function registerUser() {
await driver.get('http://localhost:3000/register')
await setText('input[placeholder=Username]', 'ausername')
await setText('input[placeholder=Password]', 'aPassword')
await setText('input[placeholder=Email]', 'an@email.com')
await checkWindow('registration-page')
await click('button[type=submit]')
await waitFor('.article-preview')
await checkWindow('empty-user-home-page')
}
@giltayar
Similar Problems
● Setup is difficult
● Flakiness in tests
● Baseline administration
● Scaling to hundreds of pages
@giltayar
With a similar solution...
@giltayar
Backend unit
tests
Backend
Services
Backend
database
integration
Frontend
unit tests
Frontend
components
Component
Visuals Frontend
Application
Application
Visuals
@giltayar
Fear of
deploying
@giltayar
How do we
overcome our
fear of
deployment?
@giltayar
We write E2E Tests!
@giltayar
E2E Tests
● Tests everything together:
● Frontend, with
● Backend, with
● All microservices together,
● In an environment that is as close to production as possible
@giltayar
The Theory
Visuals are covered by E2E tests, so no need to cover
them in E2E tests
@giltayar
The Reality
Most frontend testing is done by the QA Automation team
@giltayar
Similar Problems (but much much bigger)
● Flakiness in tests
● Baseline administration
● Scaling to hundreds of pages
@giltayar
With a similar solution...
@giltayar
Backend unit tests Backend Services Backend database
integration
Frontend unit
tests
Frontend
components
Component
Visuals
Frontend
Application
Application
Visuals
E2E Tests
E2E Automation
Visual Tests
@giltayar
Fear of problems in
production
@giltayar
Backend Production Problems
● Hardware/Node problems
● Networking problem
● Database problems
● Scaling problems
● …
@giltayar
Solution: Observability
● Logging
● Monitoring
● Alerting
@giltayar
Frontend Problems
● What frontend problems could there be?
● It’s all been tested!
@giltayar
Data Problems
@giltayar
@giltayar
But how can we visually test this?
@giltayar
Visual layout testing:
Testing the layout while ignoring the data
@giltayar
A non-trivial problem
This is where machine-learning really shines
@giltayar
Backend unit tests Backend Services Backend database
integration
Frontend unit
tests
Frontend
components
Component
Visuals
Frontend
Application
Application
Visuals
E2E Tests
E2E Automation
Visual Tests
Production
Observability
Production Visual
Layout
@giltayar
Fear of hacking
@giltayar
How do we
overcome our
fear of
hacking?
@giltayar
What can we do?
● Penetration Testing
@giltayar
Backend unit tests Backend Services Backend database
integration
Frontend unit
tests
Frontend
components
Component
Visuals
Frontend
Application
Application
Visuals
E2E Tests
E2E Automation
Visual Tests
Production
Observability
Production Visual
Layout
Penetration Testing
@giltayar
But What About Site Defacing?
@giltayar
Site Defacing
@giltayar
Site Defacing
@giltayar
It’s the corporate sites that are usually defaced
@giltayar
Backend unit tests Backend Services Backend database
integration
Frontend unit
tests
Frontend
components
Component
Visuals
Frontend
Application
Application
Visuals
E2E Tests
E2E Automation
Visual Tests
Production
Observability
Production Visual
Layout
Penetration Testing
Corporate Site
Visual Testing
@giltayar
@giltayar
● Fear of hacking
○ Web site defacement
● Fear of production problems
○ Layout problems
● Fear of deployment
○ E2E Automation tests
● Fear of changing code
○ Component visual bugs
○ Application visual bugs
Backend unit
tests
Backend Services Backend
database
integration
Frontend
unit tests
Frontend
components
Component
Visuals
Frontend
Application
Application
Visuals
E2E Tests
E2E Automation
Visual Tests
Production
Observability
Production Visual
Layout
Penetration
Testing
Corporate Site
Visual Testing
@giltayar
If you come out of this talk learning one thing,
it’s this...
@giltayar
MY TESTS WILL REMAIN.
TEST MY CODE.
@giltayar
Write tests and overcome your fear!
@giltayar
(and don’t forget to test the visual parts…)
@giltayar
@giltayar
Thank You!
Gil Tayar (@giltayar)

More Related Content

PDF
Visual AI Testing Using Applitools
PDF
Modern Functional Test Automation Through Visual AI - webinar w/ Raja Rao
PPTX
Automation of Security scanning easy or cheese?
PDF
Stop Testing (Only) The Functionality of Your Mobile Apps!
PPTX
Automated Visual Testing in NSW.Gov.AU
PDF
Applitools - Visual AI
PDF
Testing Hourglass at Jira Frontend - by Alexey Shpakov, Sr. Developer @ Atlas...
PDF
Visual Testing: Quality and Speed -- by GIl Tayar, Applitools
Visual AI Testing Using Applitools
Modern Functional Test Automation Through Visual AI - webinar w/ Raja Rao
Automation of Security scanning easy or cheese?
Stop Testing (Only) The Functionality of Your Mobile Apps!
Automated Visual Testing in NSW.Gov.AU
Applitools - Visual AI
Testing Hourglass at Jira Frontend - by Alexey Shpakov, Sr. Developer @ Atlas...
Visual Testing: Quality and Speed -- by GIl Tayar, Applitools

What's hot (20)

PPTX
Bringing Quality Design Systems to Life with Storybook & Applitools
PPTX
Colorful world-of-visual-automation-testing-latest
PDF
Test Automation Architecture
PPTX
Visual AI Enhanced Testing on Dynamic Websites
PPTX
ISTQB Foundation and Selenium Java Automation Testing
PPT
Enterprise Ready Test Execution Platform for Mobile Apps
PDF
"Software Quality in the Service of Innovation in the Insurance Industry"
PDF
ESLint Plugin for UI Tests
PDF
[TAQfull Meetup] Angie Jones + Expert Panel: Best Practices in Quality Manage...
PPTX
ATAGTR2017 Upgrading a mobile tester's weapons with advanced debugging
PDF
Top 5 Features To Look for in a Codeless Automation Solution -- Presentation ...
PDF
Web Accessibility Testing Trends and Shift Left Testing of accessibility usin...
PDF
Java Test Automation for REST, Web and Mobile
PDF
Wrong Tool, Wrong Time: Re-Thinking Test Automation -- w/ State of Visual Tes...
PPTX
Appium vs Espresso and XCUI Test
PPTX
Test Automation Frameworks: Assumptions, Concepts & Tools
PPTX
BDD Selenium for Agile Teams - User Stories
PDF
Katalon: Mobile and Browser-Based Automation | Quality Jam 2018
PDF
Continuous Delivery: The Dirty Details
PPTX
Do You Enjoy Espresso in Android App Testing?
Bringing Quality Design Systems to Life with Storybook & Applitools
Colorful world-of-visual-automation-testing-latest
Test Automation Architecture
Visual AI Enhanced Testing on Dynamic Websites
ISTQB Foundation and Selenium Java Automation Testing
Enterprise Ready Test Execution Platform for Mobile Apps
"Software Quality in the Service of Innovation in the Insurance Industry"
ESLint Plugin for UI Tests
[TAQfull Meetup] Angie Jones + Expert Panel: Best Practices in Quality Manage...
ATAGTR2017 Upgrading a mobile tester's weapons with advanced debugging
Top 5 Features To Look for in a Codeless Automation Solution -- Presentation ...
Web Accessibility Testing Trends and Shift Left Testing of accessibility usin...
Java Test Automation for REST, Web and Mobile
Wrong Tool, Wrong Time: Re-Thinking Test Automation -- w/ State of Visual Tes...
Appium vs Espresso and XCUI Test
Test Automation Frameworks: Assumptions, Concepts & Tools
BDD Selenium for Agile Teams - User Stories
Katalon: Mobile and Browser-Based Automation | Quality Jam 2018
Continuous Delivery: The Dirty Details
Do You Enjoy Espresso in Android App Testing?
Ad

Similar to Visual Testing: The Missing Piece of the Puzzle -- presentation by Gil Tayar (20)

PDF
Visual Regression Testing at the Speed of Unit Testing -- by Gil Tayar
PDF
Creating a flawless user experience, end to-end, functional to visual - Slide...
PDF
Visual Testing: Turbo-Charge Your Functional Tests with Visual Powers in Just...
PDF
Collaborating with Developers: How-to Guide for Test Engineers - By Gil Tayar
PPTX
Testing Best Practices
PPTX
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
PDF
Testing in FrontEnd World by Nikita Galkin
PPTX
Designing for the internet - Page Objects for the Real World
PDF
Devfest 2019-slides
PDF
Don't let your tests slow you down
PPTX
Coding Naked
PDF
Code and No-Code Journeys: The Coverage Overlook
PDF
Functional tests with the FEST framework
PDF
Arquillian: Effective tests from the client to the server
PDF
Mastering UI automation at Scale: Key Lessons and Best Practices (By Fernando...
PDF
[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium
PDF
Conquer 6 Testing Challenges_Applitools.pdf
PDF
Никита Галкин "Testing in Frontend World"
PDF
Using AI-Powered Visual Tests to empower your tests
PDF
[webinar] Cutting-edge Functional UI Testing Techniques - w/ Adam Carmi
Visual Regression Testing at the Speed of Unit Testing -- by Gil Tayar
Creating a flawless user experience, end to-end, functional to visual - Slide...
Visual Testing: Turbo-Charge Your Functional Tests with Visual Powers in Just...
Collaborating with Developers: How-to Guide for Test Engineers - By Gil Tayar
Testing Best Practices
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
Testing in FrontEnd World by Nikita Galkin
Designing for the internet - Page Objects for the Real World
Devfest 2019-slides
Don't let your tests slow you down
Coding Naked
Code and No-Code Journeys: The Coverage Overlook
Functional tests with the FEST framework
Arquillian: Effective tests from the client to the server
Mastering UI automation at Scale: Key Lessons and Best Practices (By Fernando...
[Srijan Wednesday Webinar] Mastering Mobile Test Automation with Appium
Conquer 6 Testing Challenges_Applitools.pdf
Никита Галкин "Testing in Frontend World"
Using AI-Powered Visual Tests to empower your tests
[webinar] Cutting-edge Functional UI Testing Techniques - w/ Adam Carmi
Ad

More from Applitools (20)

PDF
Applitools Platform Pulse: What's New and What's Coming - July 2025
PDF
Code and No-Code Journeys: The Maintenance Shortcut
PDF
Creating Automated Tests with AI - Cory House - Applitools.pdf
PDF
Navigating EAA Compliance in Testing.pdf
PDF
AI-Assisted, AI-Augmented & Autonomous Testing
PDF
Code or No-Code Tests: Why Top Teams Choose Both
PDF
The ROI of AI-Powered Testing, presented by Applitools
PDF
Building No-code Autonomous E2E Tests_Applitools.pdf
PDF
Autonomous End-to-End Testing for Online Banking Applications Presented with ...
PDF
Playwright Visual Testing Best Practices, presented by Applitools
PDF
Cross-Browser and Cross-Device Testing | Applitools in Action
PDF
Advanced Debugging Techniques | Applitools in Action.pdf
PDF
AI-Powered Testing Strategies for the Seasonal Shopping Surge.pdf
PDF
Test Automation for Dynamic Applications _ Applitools in Action.pdf
PDF
Proven Approaches to AI-Powered E2E Testing.pdf
PDF
Applitools Autonomous 2.0 Sneak Peek.pdf
PDF
Building the Ideal CI-CD Pipeline_ Achieving Visual Perfection
PDF
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
PDF
Streamlining Your Tech Stack: A Blueprint for Enhanced Efficiency and Coverag...
PDF
Visual AI for eCommerce: Improving Conversions with a Flawless UI
Applitools Platform Pulse: What's New and What's Coming - July 2025
Code and No-Code Journeys: The Maintenance Shortcut
Creating Automated Tests with AI - Cory House - Applitools.pdf
Navigating EAA Compliance in Testing.pdf
AI-Assisted, AI-Augmented & Autonomous Testing
Code or No-Code Tests: Why Top Teams Choose Both
The ROI of AI-Powered Testing, presented by Applitools
Building No-code Autonomous E2E Tests_Applitools.pdf
Autonomous End-to-End Testing for Online Banking Applications Presented with ...
Playwright Visual Testing Best Practices, presented by Applitools
Cross-Browser and Cross-Device Testing | Applitools in Action
Advanced Debugging Techniques | Applitools in Action.pdf
AI-Powered Testing Strategies for the Seasonal Shopping Surge.pdf
Test Automation for Dynamic Applications _ Applitools in Action.pdf
Proven Approaches to AI-Powered E2E Testing.pdf
Applitools Autonomous 2.0 Sneak Peek.pdf
Building the Ideal CI-CD Pipeline_ Achieving Visual Perfection
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Streamlining Your Tech Stack: A Blueprint for Enhanced Efficiency and Coverag...
Visual AI for eCommerce: Improving Conversions with a Flawless UI

Recently uploaded (20)

PDF
Understanding Forklifts - TECH EHS Solution
PDF
PTS Company Brochure 2025 (1).pdf.......
PPTX
L1 - Introduction to python Backend.pptx
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PPTX
Operating system designcfffgfgggggggvggggggggg
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PPTX
Essential Infomation Tech presentation.pptx
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
medical staffing services at VALiNTRY
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
Design an Analysis of Algorithms II-SECS-1021-03
Understanding Forklifts - TECH EHS Solution
PTS Company Brochure 2025 (1).pdf.......
L1 - Introduction to python Backend.pptx
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Operating system designcfffgfgggggggvggggggggg
VVF-Customer-Presentation2025-Ver1.9.pptx
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Essential Infomation Tech presentation.pptx
wealthsignaloriginal-com-DS-text-... (1).pdf
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
How to Migrate SBCGlobal Email to Yahoo Easily
medical staffing services at VALiNTRY
Odoo Companies in India – Driving Business Transformation.pdf
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Design an Analysis of Algorithms I-SECS-1021-03
Navsoft: AI-Powered Business Solutions & Custom Software Development
Design an Analysis of Algorithms II-SECS-1021-03

Visual Testing: The Missing Piece of the Puzzle -- presentation by Gil Tayar