SlideShare a Scribd company logo
1 of 50
Download to read offline
@giltayar
Creating a Flawless User Experience,
End-To-End, Functional to Visual
Gil Tayar (@giltayar)
April 2019
Github repo: https://github.com/applitools/cypress-applitools-webinar
This presentation: http://bit.ly/cypress-applitools-webinar
Gleb’s presentation: https://slides.com/bahmutov/flawless-tests
1
@giltayar
2
VP of Engineering, Cypress.io
Senior Architect, Applitools
@giltayar
Why Do We Write
Tests?
3
@giltayar
Answer: To Remove Fear
4
@giltayar
Fear of Adding Code
5
@giltayar
Fear of Removing Code
6
@giltayar
Fear of Refactoring
7
7
@giltayar
Functional Testing Solve That
● I add/remove/refactor, run the tests, and voila!
● Fearless
8
@giltayar
And Cypress is the perfect tool for that!
9
@giltayar
(although I will let Gleb expound on that)
10
@giltayar
Except for one teeny tiny area of my code
11
@giltayar
HTML and CSS Markup
When I change my HTML and CSS,
do the pages still look like they should?
● Yes, the checkbox is disabled. But does it look disabled?
● In my todo row, when it’s completed, does it look striked out?
● Does the whole page look OK?
● After I create a new row, does it still look OK?
12
@giltayar
Visual testing enables you to…
● Add markup
● Remove markup
● Refactor markup
Without Fear
13
@giltayar
And Applitools Eyes is the perfect tool for that!
14
@giltayar
Functional and Visual Tests enable you to
cover your application cover to cover
15
@giltayar
Cypress Functional Testing
16
@giltayar
Take it, Gleb!
17
@giltayar
Applitools Visual Testing
18
@giltayar
How does one go about visually testing an app?
● Automate the browser, do what the user would:
○ Use Cypress!
● For each page you would like to visually test:
○ Navigate/click/type to it
○ Take a screenshot
○ Check that it’s OK
19
@giltayar
How would it look like?
it('logs in', () => {
cy.contains('a.nav-link', 'Sign in').click()
cy.eyesCheckWindow ('Login page')
const user = Cypress.env('user')
cy.get('input[type="email"]' ).type(user.email)
cy.get('input[type="password"]' ).type(user.password)
cy.get('button[type="submit"]' ).click()
cy.eyesCheckWindow ('Empty home page after login' )
})
20
@giltayar
How would it look like?
it('logs in', () => {
cy.contains('a.nav-link', 'Sign in').click()
cy.eyesCheckWindow ('Login page')
const user = Cypress.env('user')
cy.get('input[type="email"]').type(user.email)
cy.get('input[type="password"]').type(user.password)
cy.get('button[type="submit"]').click()
cy.eyesCheckWindow ('Empty home page after login' )
})
21
Actions
@giltayar
How would it look like?
it('logs in', () => {
cy.contains('a.nav-link', 'Sign in').click()
cy.eyesCheckWindow('Login page')
const user = Cypress.env('user')
cy.get('input[type="email"]' ).type(user.email)
cy.get('input[type="password"]' ).type(user.password)
cy.get('button[type="submit"]' ).click()
cy.eyesCheckWindow('Empty home page after login')
})
22
Screenshots
@giltayar
This is how test code looks like
Navigate
Click, type, click
checkScreenshot
Click, click, type
checkScreenshot
Type, click, click
checkScreenshot
Click, click, click
checkScreenshot
23
@giltayar
How do we check that the screenshot is OK?
You send us screenshots of your app
We compare the screenshots with baseline images
We report any differences found
You accept or reject the differences
@giltayar
Simple, Right?
25
@giltayar
Building a UI
that you use to accept or reject a difference
26
@giltayar
27
@giltayar
28
@giltayar
29
@giltayar
A Huge Difficulty: False Positives
30
@giltayar
@giltayar
@giltayar
@giltayar
But also what about…?
● Different browsers
○ Chrome, Firefox, Safari
● Different responsive widths and pixel densities
○ Smartphone width and pixel density
○ Tablet width
○ Regular desktop width
○ Retina display width and pixel density
34
@giltayar
So...
Navigate
Click, click, click
checkScreenshot
Click, click, click
checkScreenshot
Click, click, click
checkScreenshot
Click, click, click
checkScreenshot
1024
Navigate
Click, click, click
checkScreenshot
Click, click, click
checkScreenshot
Click, click, click
checkScreenshot
Click, click, click
checkScreenshot
2500
Navigate
Click, click, click
checkScreenshot
Click, click, click
checkScreenshot
Click, click, click
checkScreenshot
Click, click, click
checkScreenshot
1024
…
35
@giltayar
Run each test ten times?
36
@giltayar
Run each test ten times?
(not even with Cypress…)
37
@giltayar
Why is this not a problem in functional e2e tests?
Because browsers have converged functionally
38
@giltayar
How do we solve this problem?
We parallelize
39
@giltayar
Solution: Parallelizing the tests
Navigate
Click, click, click
checkScreenshot
Click, click, click
checkScreenshot
Click, click, click
checkScreenshot
Click, click, click
checkScreenshot
1024
Navigate
Click, click, click
checkScreenshot
Click, click, click
checkScreenshot
Click, click, click
checkScreenshot
Click, click, click
checkScreenshot
1024
Navigate
Click, click, click
checkScreenshot
Click, click, click
checkScreenshot
Click, click, click
checkScreenshot
Click, click, click
checkScreenshot
2500
40
@giltayar
There’s a better solution
41
@giltayar
Parallelize the screenshots!
Navigate
Click, click, click
checkScreenshot #1
Click, click, click
checkScreenshot #2
Click, click, click
checkScreenshot #3
Click, click, click
checkScreenshot #4
...768 ,1024,2500
...768 ,1024,2500
...768 ,1024,2500
...768 ,1024,2500
screen #1 @
768
screen #1 @
1024
screen #1 @
2500
screen #2 @ 768
screen #1 @ 768
screen #1 @
1024
screen #1 @
2500
screen
#2
@
768
42
@giltayar
How? DOM Snapshots!
Navigate
Click, click, click
checkScreenshot #1
Click, click, click
checkScreenshot #2
Click, click, click
checkScreenshot #3
Click, click, click
checkScreenshot #4
screen #1 @
768
screen #1 @
1024
screen #1 @
2500
screen #1 @ 768
screen #1 @
1024
screen #1 @
2500
DOM Snapshot #1
Screenshots!43
@giltayar
How? DOM Snapshots!
Navigate
Click, click, click
checkScreenshot #1
Click, click, click
checkScreenshot #2
Click, click, click
checkScreenshot #3
Click, click, click
checkScreenshot #4
screen #1 @
768
screen #1 @
1024
screen #1 @
2500
screen #1 @ 768
screen #1 @
1024
screen #1 @
2500
DOM Snapshot #1
Screenshots!44
@giltayar
The Applitools
Visual Grid
DOM Snapshot
Screenshots
Applitools
Eyes Server
45
@giltayar
OK, OK. But how?
How do I write
tests?
Show me some
code!
46
@giltayar
Things we haven’t shown
● Take selective screenshot using selector
● Github and Bitbucket integration
● JIRA integration
● Shadow DOM and Canvas support: coming soon
● Ignore regions, floating ignore regions
● Layout mode!
47
@giltayar
Coming Soon
● A Cypress course in TestAutomationU
○ https://testautomationu.applitools.com/
○ Written by yours truly
48
@giltayar
Thank You
Github repo: https://github.com/applitools/cypress-applitools-webinar
This presentation: http://bit.ly/cypress-applitools-webinar
Gleb’s presentation: https://slides.com/bahmutov/flawless-tests
49
@giltayar
Question
50

More Related Content

Similar to Creating a flawless user experience, end to-end, functional to visual - Slides by Gil Tayar

Visual Regression Testing at the Speed of Unit Testing -- by Gil Tayar
Visual Regression Testing at the Speed of Unit Testing -- by Gil TayarVisual Regression Testing at the Speed of Unit Testing -- by Gil Tayar
Visual Regression Testing at the Speed of Unit Testing -- by Gil TayarApplitools
 
Visual Testing: The Missing Piece of the Puzzle -- presentation by Gil Tayar
Visual Testing: The Missing Piece of the Puzzle -- presentation by Gil TayarVisual Testing: The Missing Piece of the Puzzle -- presentation by Gil Tayar
Visual Testing: The Missing Piece of the Puzzle -- presentation by Gil TayarApplitools
 
Visual Testing: Turbo-Charge Your Functional Tests with Visual Powers in Just...
Visual Testing: Turbo-Charge Your Functional Tests with Visual Powers in Just...Visual Testing: Turbo-Charge Your Functional Tests with Visual Powers in Just...
Visual Testing: Turbo-Charge Your Functional Tests with Visual Powers in Just...Applitools
 
Lipstick on a Magical Pony: dynamic web pages without Javascript
Lipstick on a Magical Pony: dynamic web pages without JavascriptLipstick on a Magical Pony: dynamic web pages without Javascript
Lipstick on a Magical Pony: dynamic web pages without JavascriptTim Bell
 
Practical Secure Coding Workshop - {DECIPHER} Hackathon
Practical Secure Coding Workshop - {DECIPHER} HackathonPractical Secure Coding Workshop - {DECIPHER} Hackathon
Practical Secure Coding Workshop - {DECIPHER} HackathonStefan Streichsbier
 
BDD - Writing better scenario
BDD - Writing better scenarioBDD - Writing better scenario
BDD - Writing better scenarioArnauld Loyer
 
Cultural learnings of testing for make benefit glorious nation of startup
Cultural learnings of testing for make benefit glorious nation of startupCultural learnings of testing for make benefit glorious nation of startup
Cultural learnings of testing for make benefit glorious nation of startupGil Tayar
 
How not to suck at Cyber Security
How not to suck at Cyber SecurityHow not to suck at Cyber Security
How not to suck at Cyber SecurityChris Watts
 
WordPress Accessibility: WordCamp Chicago
WordPress Accessibility: WordCamp ChicagoWordPress Accessibility: WordCamp Chicago
WordPress Accessibility: WordCamp ChicagoJoseph Dolson
 
Ultimate Free Digital Marketing Toolkit #EdgeBristol 2012
Ultimate Free Digital Marketing Toolkit #EdgeBristol 2012Ultimate Free Digital Marketing Toolkit #EdgeBristol 2012
Ultimate Free Digital Marketing Toolkit #EdgeBristol 2012Steve Lock
 
QSDA2022: Qlik Sense Data Architect | Q & A
QSDA2022: Qlik Sense Data Architect | Q & AQSDA2022: Qlik Sense Data Architect | Q & A
QSDA2022: Qlik Sense Data Architect | Q & APalakMazumdar1
 
«iPython & Jupyter: 4 fun & profit», Лев Тонких, Rambler&Co
«iPython & Jupyter: 4 fun & profit», Лев Тонких, Rambler&Co«iPython & Jupyter: 4 fun & profit», Лев Тонких, Rambler&Co
«iPython & Jupyter: 4 fun & profit», Лев Тонких, Rambler&CoMail.ru Group
 
Collaborating with Developers: How-to Guide for Test Engineers - By Gil Tayar
Collaborating with Developers: How-to Guide for Test Engineers - By Gil Tayar Collaborating with Developers: How-to Guide for Test Engineers - By Gil Tayar
Collaborating with Developers: How-to Guide for Test Engineers - By Gil Tayar Applitools
 
The State of Front-end At CrowdTwist
The State of Front-end At CrowdTwistThe State of Front-end At CrowdTwist
The State of Front-end At CrowdTwistMark Fayngersh
 
Metrics-Driven Engineering
Metrics-Driven EngineeringMetrics-Driven Engineering
Metrics-Driven EngineeringMike Brittain
 
Cypress vs Selenium WebDriver: Better, Or Just Different? -- by Gil Tayar
Cypress vs Selenium WebDriver: Better, Or Just Different? -- by Gil TayarCypress vs Selenium WebDriver: Better, Or Just Different? -- by Gil Tayar
Cypress vs Selenium WebDriver: Better, Or Just Different? -- by Gil TayarApplitools
 
Software Testing
Software TestingSoftware Testing
Software Testingsuperphly
 
Google Analytics for Beginners - Training
Google Analytics for Beginners - TrainingGoogle Analytics for Beginners - Training
Google Analytics for Beginners - TrainingRuben Vezzoli
 

Similar to Creating a flawless user experience, end to-end, functional to visual - Slides by Gil Tayar (20)

Visual Regression Testing at the Speed of Unit Testing -- by Gil Tayar
Visual Regression Testing at the Speed of Unit Testing -- by Gil TayarVisual Regression Testing at the Speed of Unit Testing -- by Gil Tayar
Visual Regression Testing at the Speed of Unit Testing -- by Gil Tayar
 
Visual Testing: The Missing Piece of the Puzzle -- presentation by Gil Tayar
Visual Testing: The Missing Piece of the Puzzle -- presentation by Gil TayarVisual Testing: The Missing Piece of the Puzzle -- presentation by Gil Tayar
Visual Testing: The Missing Piece of the Puzzle -- presentation by Gil Tayar
 
Visual Testing: Turbo-Charge Your Functional Tests with Visual Powers in Just...
Visual Testing: Turbo-Charge Your Functional Tests with Visual Powers in Just...Visual Testing: Turbo-Charge Your Functional Tests with Visual Powers in Just...
Visual Testing: Turbo-Charge Your Functional Tests with Visual Powers in Just...
 
Advanced iOS
Advanced iOSAdvanced iOS
Advanced iOS
 
Going web native
Going web nativeGoing web native
Going web native
 
Lipstick on a Magical Pony: dynamic web pages without Javascript
Lipstick on a Magical Pony: dynamic web pages without JavascriptLipstick on a Magical Pony: dynamic web pages without Javascript
Lipstick on a Magical Pony: dynamic web pages without Javascript
 
Practical Secure Coding Workshop - {DECIPHER} Hackathon
Practical Secure Coding Workshop - {DECIPHER} HackathonPractical Secure Coding Workshop - {DECIPHER} Hackathon
Practical Secure Coding Workshop - {DECIPHER} Hackathon
 
BDD - Writing better scenario
BDD - Writing better scenarioBDD - Writing better scenario
BDD - Writing better scenario
 
Cultural learnings of testing for make benefit glorious nation of startup
Cultural learnings of testing for make benefit glorious nation of startupCultural learnings of testing for make benefit glorious nation of startup
Cultural learnings of testing for make benefit glorious nation of startup
 
How not to suck at Cyber Security
How not to suck at Cyber SecurityHow not to suck at Cyber Security
How not to suck at Cyber Security
 
WordPress Accessibility: WordCamp Chicago
WordPress Accessibility: WordCamp ChicagoWordPress Accessibility: WordCamp Chicago
WordPress Accessibility: WordCamp Chicago
 
Ultimate Free Digital Marketing Toolkit #EdgeBristol 2012
Ultimate Free Digital Marketing Toolkit #EdgeBristol 2012Ultimate Free Digital Marketing Toolkit #EdgeBristol 2012
Ultimate Free Digital Marketing Toolkit #EdgeBristol 2012
 
QSDA2022: Qlik Sense Data Architect | Q & A
QSDA2022: Qlik Sense Data Architect | Q & AQSDA2022: Qlik Sense Data Architect | Q & A
QSDA2022: Qlik Sense Data Architect | Q & A
 
«iPython & Jupyter: 4 fun & profit», Лев Тонких, Rambler&Co
«iPython & Jupyter: 4 fun & profit», Лев Тонких, Rambler&Co«iPython & Jupyter: 4 fun & profit», Лев Тонких, Rambler&Co
«iPython & Jupyter: 4 fun & profit», Лев Тонких, Rambler&Co
 
Collaborating with Developers: How-to Guide for Test Engineers - By Gil Tayar
Collaborating with Developers: How-to Guide for Test Engineers - By Gil Tayar Collaborating with Developers: How-to Guide for Test Engineers - By Gil Tayar
Collaborating with Developers: How-to Guide for Test Engineers - By Gil Tayar
 
The State of Front-end At CrowdTwist
The State of Front-end At CrowdTwistThe State of Front-end At CrowdTwist
The State of Front-end At CrowdTwist
 
Metrics-Driven Engineering
Metrics-Driven EngineeringMetrics-Driven Engineering
Metrics-Driven Engineering
 
Cypress vs Selenium WebDriver: Better, Or Just Different? -- by Gil Tayar
Cypress vs Selenium WebDriver: Better, Or Just Different? -- by Gil TayarCypress vs Selenium WebDriver: Better, Or Just Different? -- by Gil Tayar
Cypress vs Selenium WebDriver: Better, Or Just Different? -- by Gil Tayar
 
Software Testing
Software TestingSoftware Testing
Software Testing
 
Google Analytics for Beginners - Training
Google Analytics for Beginners - TrainingGoogle Analytics for Beginners - Training
Google Analytics for Beginners - Training
 

More from Applitools

Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonApplitools
 
Streamlining Your Tech Stack: A Blueprint for Enhanced Efficiency and Coverag...
Streamlining Your Tech Stack: A Blueprint for Enhanced Efficiency and Coverag...Streamlining Your Tech Stack: A Blueprint for Enhanced Efficiency and Coverag...
Streamlining Your Tech Stack: A Blueprint for Enhanced Efficiency and Coverag...Applitools
 
Visual AI for eCommerce: Improving Conversions with a Flawless UI
Visual AI for eCommerce: Improving Conversions with a Flawless UIVisual AI for eCommerce: Improving Conversions with a Flawless UI
Visual AI for eCommerce: Improving Conversions with a Flawless UIApplitools
 
A Test Automation Platform Designed for the Future
A Test Automation Platform Designed for the FutureA Test Automation Platform Designed for the Future
A Test Automation Platform Designed for the FutureApplitools
 
Add AI to Your SDLC, presented by Applitools and Curiosity
Add AI to Your SDLC, presented by Applitools and CuriosityAdd AI to Your SDLC, presented by Applitools and Curiosity
Add AI to Your SDLC, presented by Applitools and CuriosityApplitools
 
The Future of AI-Based Test Automation
The Future of AI-Based Test AutomationThe Future of AI-Based Test Automation
The Future of AI-Based Test AutomationApplitools
 
Test Automation at Scale: Lessons from Top-Performing Distributed Teams
Test Automation at Scale: Lessons from Top-Performing Distributed TeamsTest Automation at Scale: Lessons from Top-Performing Distributed Teams
Test Automation at Scale: Lessons from Top-Performing Distributed TeamsApplitools
 
Can AI Autogenerate and Run Automated Tests?
Can AI Autogenerate and Run Automated Tests?Can AI Autogenerate and Run Automated Tests?
Can AI Autogenerate and Run Automated Tests?Applitools
 
Triple Assurance: AI-Powered Test Automation in UI Design and Functionality
Triple Assurance: AI-Powered Test Automation in UI Design and FunctionalityTriple Assurance: AI-Powered Test Automation in UI Design and Functionality
Triple Assurance: AI-Powered Test Automation in UI Design and FunctionalityApplitools
 
Navigating the Challenges of Testing at Scale: Lessons from Top-Performing Teams
Navigating the Challenges of Testing at Scale: Lessons from Top-Performing TeamsNavigating the Challenges of Testing at Scale: Lessons from Top-Performing Teams
Navigating the Challenges of Testing at Scale: Lessons from Top-Performing TeamsApplitools
 
Introducing the Applitools Self Healing Execution Cloud.pdf
Introducing the Applitools Self Healing Execution Cloud.pdfIntroducing the Applitools Self Healing Execution Cloud.pdf
Introducing the Applitools Self Healing Execution Cloud.pdfApplitools
 
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Applitools
 
Collaborating From Design To Experience: Introducing Centra
Collaborating From Design To Experience: Introducing CentraCollaborating From Design To Experience: Introducing Centra
Collaborating From Design To Experience: Introducing CentraApplitools
 
What the QA Position Will Look Like in the Future
What the QA Position Will Look Like in the FutureWhat the QA Position Will Look Like in the Future
What the QA Position Will Look Like in the FutureApplitools
 
Getting Started with Visual Testing
Getting Started with Visual TestingGetting Started with Visual Testing
Getting Started with Visual TestingApplitools
 
Workshop: Head-to-Head Web Testing: Part 1 with Cypress
Workshop: Head-to-Head Web Testing: Part 1 with CypressWorkshop: Head-to-Head Web Testing: Part 1 with Cypress
Workshop: Head-to-Head Web Testing: Part 1 with CypressApplitools
 
From Washing Cars To Automating Test Applications
From Washing Cars To Automating Test ApplicationsFrom Washing Cars To Automating Test Applications
From Washing Cars To Automating Test ApplicationsApplitools
 
A Holistic Approach to Testing in Continuous Delivery
A Holistic Approach to Testing in Continuous DeliveryA Holistic Approach to Testing in Continuous Delivery
A Holistic Approach to Testing in Continuous DeliveryApplitools
 
AI-Powered-Cross-Browser Testing
AI-Powered-Cross-Browser TestingAI-Powered-Cross-Browser Testing
AI-Powered-Cross-Browser TestingApplitools
 
Workshop: An Introduction to API Automation with Javascript
Workshop: An Introduction to API Automation with JavascriptWorkshop: An Introduction to API Automation with Javascript
Workshop: An Introduction to API Automation with JavascriptApplitools
 

More from Applitools (20)

Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
 
Streamlining Your Tech Stack: A Blueprint for Enhanced Efficiency and Coverag...
Streamlining Your Tech Stack: A Blueprint for Enhanced Efficiency and Coverag...Streamlining Your Tech Stack: A Blueprint for Enhanced Efficiency and Coverag...
Streamlining Your Tech Stack: A Blueprint for Enhanced Efficiency and Coverag...
 
Visual AI for eCommerce: Improving Conversions with a Flawless UI
Visual AI for eCommerce: Improving Conversions with a Flawless UIVisual AI for eCommerce: Improving Conversions with a Flawless UI
Visual AI for eCommerce: Improving Conversions with a Flawless UI
 
A Test Automation Platform Designed for the Future
A Test Automation Platform Designed for the FutureA Test Automation Platform Designed for the Future
A Test Automation Platform Designed for the Future
 
Add AI to Your SDLC, presented by Applitools and Curiosity
Add AI to Your SDLC, presented by Applitools and CuriosityAdd AI to Your SDLC, presented by Applitools and Curiosity
Add AI to Your SDLC, presented by Applitools and Curiosity
 
The Future of AI-Based Test Automation
The Future of AI-Based Test AutomationThe Future of AI-Based Test Automation
The Future of AI-Based Test Automation
 
Test Automation at Scale: Lessons from Top-Performing Distributed Teams
Test Automation at Scale: Lessons from Top-Performing Distributed TeamsTest Automation at Scale: Lessons from Top-Performing Distributed Teams
Test Automation at Scale: Lessons from Top-Performing Distributed Teams
 
Can AI Autogenerate and Run Automated Tests?
Can AI Autogenerate and Run Automated Tests?Can AI Autogenerate and Run Automated Tests?
Can AI Autogenerate and Run Automated Tests?
 
Triple Assurance: AI-Powered Test Automation in UI Design and Functionality
Triple Assurance: AI-Powered Test Automation in UI Design and FunctionalityTriple Assurance: AI-Powered Test Automation in UI Design and Functionality
Triple Assurance: AI-Powered Test Automation in UI Design and Functionality
 
Navigating the Challenges of Testing at Scale: Lessons from Top-Performing Teams
Navigating the Challenges of Testing at Scale: Lessons from Top-Performing TeamsNavigating the Challenges of Testing at Scale: Lessons from Top-Performing Teams
Navigating the Challenges of Testing at Scale: Lessons from Top-Performing Teams
 
Introducing the Applitools Self Healing Execution Cloud.pdf
Introducing the Applitools Self Healing Execution Cloud.pdfIntroducing the Applitools Self Healing Execution Cloud.pdf
Introducing the Applitools Self Healing Execution Cloud.pdf
 
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
 
Collaborating From Design To Experience: Introducing Centra
Collaborating From Design To Experience: Introducing CentraCollaborating From Design To Experience: Introducing Centra
Collaborating From Design To Experience: Introducing Centra
 
What the QA Position Will Look Like in the Future
What the QA Position Will Look Like in the FutureWhat the QA Position Will Look Like in the Future
What the QA Position Will Look Like in the Future
 
Getting Started with Visual Testing
Getting Started with Visual TestingGetting Started with Visual Testing
Getting Started with Visual Testing
 
Workshop: Head-to-Head Web Testing: Part 1 with Cypress
Workshop: Head-to-Head Web Testing: Part 1 with CypressWorkshop: Head-to-Head Web Testing: Part 1 with Cypress
Workshop: Head-to-Head Web Testing: Part 1 with Cypress
 
From Washing Cars To Automating Test Applications
From Washing Cars To Automating Test ApplicationsFrom Washing Cars To Automating Test Applications
From Washing Cars To Automating Test Applications
 
A Holistic Approach to Testing in Continuous Delivery
A Holistic Approach to Testing in Continuous DeliveryA Holistic Approach to Testing in Continuous Delivery
A Holistic Approach to Testing in Continuous Delivery
 
AI-Powered-Cross-Browser Testing
AI-Powered-Cross-Browser TestingAI-Powered-Cross-Browser Testing
AI-Powered-Cross-Browser Testing
 
Workshop: An Introduction to API Automation with Javascript
Workshop: An Introduction to API Automation with JavascriptWorkshop: An Introduction to API Automation with Javascript
Workshop: An Introduction to API Automation with Javascript
 

Recently uploaded

Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
How To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTROHow To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTROmotivationalword821
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfYashikaSharma391629
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 

Recently uploaded (20)

Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
How To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTROHow To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTRO
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 

Creating a flawless user experience, end to-end, functional to visual - Slides by Gil Tayar

  • 1. @giltayar Creating a Flawless User Experience, End-To-End, Functional to Visual Gil Tayar (@giltayar) April 2019 Github repo: https://github.com/applitools/cypress-applitools-webinar This presentation: http://bit.ly/cypress-applitools-webinar Gleb’s presentation: https://slides.com/bahmutov/flawless-tests 1
  • 2. @giltayar 2 VP of Engineering, Cypress.io Senior Architect, Applitools
  • 3. @giltayar Why Do We Write Tests? 3
  • 8. @giltayar Functional Testing Solve That ● I add/remove/refactor, run the tests, and voila! ● Fearless 8
  • 9. @giltayar And Cypress is the perfect tool for that! 9
  • 10. @giltayar (although I will let Gleb expound on that) 10
  • 11. @giltayar Except for one teeny tiny area of my code 11
  • 12. @giltayar HTML and CSS Markup When I change my HTML and CSS, do the pages still look like they should? ● Yes, the checkbox is disabled. But does it look disabled? ● In my todo row, when it’s completed, does it look striked out? ● Does the whole page look OK? ● After I create a new row, does it still look OK? 12
  • 13. @giltayar Visual testing enables you to… ● Add markup ● Remove markup ● Refactor markup Without Fear 13
  • 14. @giltayar And Applitools Eyes is the perfect tool for that! 14
  • 15. @giltayar Functional and Visual Tests enable you to cover your application cover to cover 15
  • 19. @giltayar How does one go about visually testing an app? ● Automate the browser, do what the user would: ○ Use Cypress! ● For each page you would like to visually test: ○ Navigate/click/type to it ○ Take a screenshot ○ Check that it’s OK 19
  • 20. @giltayar How would it look like? it('logs in', () => { cy.contains('a.nav-link', 'Sign in').click() cy.eyesCheckWindow ('Login page') const user = Cypress.env('user') cy.get('input[type="email"]' ).type(user.email) cy.get('input[type="password"]' ).type(user.password) cy.get('button[type="submit"]' ).click() cy.eyesCheckWindow ('Empty home page after login' ) }) 20
  • 21. @giltayar How would it look like? it('logs in', () => { cy.contains('a.nav-link', 'Sign in').click() cy.eyesCheckWindow ('Login page') const user = Cypress.env('user') cy.get('input[type="email"]').type(user.email) cy.get('input[type="password"]').type(user.password) cy.get('button[type="submit"]').click() cy.eyesCheckWindow ('Empty home page after login' ) }) 21 Actions
  • 22. @giltayar How would it look like? it('logs in', () => { cy.contains('a.nav-link', 'Sign in').click() cy.eyesCheckWindow('Login page') const user = Cypress.env('user') cy.get('input[type="email"]' ).type(user.email) cy.get('input[type="password"]' ).type(user.password) cy.get('button[type="submit"]' ).click() cy.eyesCheckWindow('Empty home page after login') }) 22 Screenshots
  • 23. @giltayar This is how test code looks like Navigate Click, type, click checkScreenshot Click, click, type checkScreenshot Type, click, click checkScreenshot Click, click, click checkScreenshot 23
  • 24. @giltayar How do we check that the screenshot is OK? You send us screenshots of your app We compare the screenshots with baseline images We report any differences found You accept or reject the differences
  • 26. @giltayar Building a UI that you use to accept or reject a difference 26
  • 30. @giltayar A Huge Difficulty: False Positives 30
  • 34. @giltayar But also what about…? ● Different browsers ○ Chrome, Firefox, Safari ● Different responsive widths and pixel densities ○ Smartphone width and pixel density ○ Tablet width ○ Regular desktop width ○ Retina display width and pixel density 34
  • 35. @giltayar So... Navigate Click, click, click checkScreenshot Click, click, click checkScreenshot Click, click, click checkScreenshot Click, click, click checkScreenshot 1024 Navigate Click, click, click checkScreenshot Click, click, click checkScreenshot Click, click, click checkScreenshot Click, click, click checkScreenshot 2500 Navigate Click, click, click checkScreenshot Click, click, click checkScreenshot Click, click, click checkScreenshot Click, click, click checkScreenshot 1024 … 35
  • 36. @giltayar Run each test ten times? 36
  • 37. @giltayar Run each test ten times? (not even with Cypress…) 37
  • 38. @giltayar Why is this not a problem in functional e2e tests? Because browsers have converged functionally 38
  • 39. @giltayar How do we solve this problem? We parallelize 39
  • 40. @giltayar Solution: Parallelizing the tests Navigate Click, click, click checkScreenshot Click, click, click checkScreenshot Click, click, click checkScreenshot Click, click, click checkScreenshot 1024 Navigate Click, click, click checkScreenshot Click, click, click checkScreenshot Click, click, click checkScreenshot Click, click, click checkScreenshot 1024 Navigate Click, click, click checkScreenshot Click, click, click checkScreenshot Click, click, click checkScreenshot Click, click, click checkScreenshot 2500 40
  • 42. @giltayar Parallelize the screenshots! Navigate Click, click, click checkScreenshot #1 Click, click, click checkScreenshot #2 Click, click, click checkScreenshot #3 Click, click, click checkScreenshot #4 ...768 ,1024,2500 ...768 ,1024,2500 ...768 ,1024,2500 ...768 ,1024,2500 screen #1 @ 768 screen #1 @ 1024 screen #1 @ 2500 screen #2 @ 768 screen #1 @ 768 screen #1 @ 1024 screen #1 @ 2500 screen #2 @ 768 42
  • 43. @giltayar How? DOM Snapshots! Navigate Click, click, click checkScreenshot #1 Click, click, click checkScreenshot #2 Click, click, click checkScreenshot #3 Click, click, click checkScreenshot #4 screen #1 @ 768 screen #1 @ 1024 screen #1 @ 2500 screen #1 @ 768 screen #1 @ 1024 screen #1 @ 2500 DOM Snapshot #1 Screenshots!43
  • 44. @giltayar How? DOM Snapshots! Navigate Click, click, click checkScreenshot #1 Click, click, click checkScreenshot #2 Click, click, click checkScreenshot #3 Click, click, click checkScreenshot #4 screen #1 @ 768 screen #1 @ 1024 screen #1 @ 2500 screen #1 @ 768 screen #1 @ 1024 screen #1 @ 2500 DOM Snapshot #1 Screenshots!44
  • 45. @giltayar The Applitools Visual Grid DOM Snapshot Screenshots Applitools Eyes Server 45
  • 46. @giltayar OK, OK. But how? How do I write tests? Show me some code! 46
  • 47. @giltayar Things we haven’t shown ● Take selective screenshot using selector ● Github and Bitbucket integration ● JIRA integration ● Shadow DOM and Canvas support: coming soon ● Ignore regions, floating ignore regions ● Layout mode! 47
  • 48. @giltayar Coming Soon ● A Cypress course in TestAutomationU ○ https://testautomationu.applitools.com/ ○ Written by yours truly 48
  • 49. @giltayar Thank You Github repo: https://github.com/applitools/cypress-applitools-webinar This presentation: http://bit.ly/cypress-applitools-webinar Gleb’s presentation: https://slides.com/bahmutov/flawless-tests 49