SlideShare a Scribd company logo
Photo by rawpixel.com from Pexels
End-2-end Testing
Done right!
@juristr • https://juristr.com
whoami?
Web Technologies
JURI
STRUMPFLOHNER
Software · GIS · Innovation · International Projects · South Tyrol
SFScon18 - Juri Strumpflohner - End-to-end testing done right!
Egghead.io Instructor
Learn the best JavaScript tools
and frameworks from industry
pros.
Video tutorials for badass web developers.
Trainer & Consultant
https://juristr.com
@juristr
Image: martinfowler.com
@juristr
Image: martinfowler.com
this part
@juristr
Image: martinfowler.com
costlyslow
Selenium
Server API
Selenium
Driver
Java
JavaScript
C#
Java
Our
WebApp
@juristr
Selenium
Server API
Selenium
Driver
Java
JavaScript
C#
Java
Our
WebApp
@juristr
Complex API
Selenium
Server API
Selenium
Driver
Java
JavaScript
C#
Java
Our
WebApp
@juristr
Needs to match
TRUST
NO
Cypress.io
https://cypress.io
@juristr
Time Travel
Real time Reloads
Debuggability
Automatic waiting
cypress.io
JavaScript
Our
WebApp
@juristr
Node.js
In
practice ?
@juristr
Writing
Tests
@juristr
describe('Login', () => {
it('should login and logout properly', () => {
cy.login(Cypress.env('username'), Cypress.env('password'));
cy.get('r3trees-shell');
// logout again
cy
.get('[data-tuid="user-menu-btn"]')
.click()
.get('[data-tuid="logout-btn"]')
.click()
.url()
.should('eq', `${Cypress.config('baseUrl')}/login`);
});
});
@juristr
describe('Login', () => {
it('should login and logout properly', () => {
cy.login(Cypress.env('username'), Cypress.env('password'));
cy.get('r3trees-shell');
// logout again
cy
.get('[data-tuid="user-menu-btn"]')
.click()
.get('[data-tuid="logout-btn"]')
.click()
.url()
.should('eq', `${Cypress.config('baseUrl')}/login`);
});
});
@juristr
describe('Login', () => {
it('should login and logout properly', () => {
cy.login(Cypress.env('username'), Cypress.env('password'));
cy.get('r3trees-shell');
// logout again
cy
.get('[data-tuid="user-menu-btn"]')
.click()
.get('[data-tuid="logout-btn"]')
.click()
.url()
.should('eq', `${Cypress.config('baseUrl')}/login`);
});
});
@juristr
describe('Login', () => {
it('should login and logout properly', () => {
cy.login(Cypress.env('username'), Cypress.env('password'));
cy.get('r3trees-shell');
// logout again
cy
.get('[data-tuid="user-menu-btn"]')
.click()
.get('[data-tuid="logout-btn"]')
.click()
.url()
.should('eq', `${Cypress.config('baseUrl')}/login`);
});
});
@juristr
describe('Login', () => {
it('should login and logout properly', () => {
cy.login(Cypress.env('username'), Cypress.env('password'));
cy.get('r3trees-shell');
// logout again
cy
.get('[data-tuid="user-menu-btn"]')
.click()
.get('[data-tuid="logout-btn"]')
.click()
.url()
.should('eq', `${Cypress.config('baseUrl')}/login`);
});
});
@juristr
describe('Login', () => {
it('should login and logout properly', () => {
cy.login(Cypress.env('username'), Cypress.env('password'));
cy.get('r3trees-shell');
// logout again
cy
.get('[data-tuid="user-menu-btn"]')
.click()
.get('[data-tuid="logout-btn"]')
.click()
.url()
.should('eq', `${Cypress.config('baseUrl')}/login`);
});
});
Extend
Cypress!
@juristr
describe('Login', () => {
it('should login and logout properly', () => {
cy.login(Cypress.env('username'), Cypress.env('password'));
cy.get('r3trees-shell');
// logout again
cy
.get('[data-tuid="user-menu-btn"]')
.click()
.get('[data-tuid="logout-btn"]')
.click()
.url()
.should('eq', `${Cypress.config('baseUrl')}/login`);
});
});
@juristr
Cypress.Commands.add('login', (username: string, pwd: string) => {
cy.visit('/login');
// compile and submit the form
cy.get('form')
.getEl('username')
.type(username);
cy.get('form')
.getEl('password')
.type(pwd);
cy.get('form').submit();
});
@juristr
it('should correctly choose toppings', () => {
...
cy.get('form')
.getToppings()
.first()
.click();
cy.get('form')
.getToppings()
.last()
.click();
cy.get('form').hasChosenToppings(2);
...
})
Strategies
e2e
@juristr
Frontend UI
API
Gate
way
Service
DB
Service
DB
Service
DB
Service
DB
Logic Logic Logic
pay prods orders
data data
@juristr
Frontend UI API
Gat
ew
ay
Service
DB
Service
DB
Service
DB
Service
DB
Logi
c
Logi
c
Logi
c
pay
pro
ds
orde
rs
da
ta
da
ta
@juristr
Frontend UI
API
Service
DB
Service
DB
Service
DB
Service
DB
... ... ...
... ... ...
... ...
@juristr
Frontend UI
API
Gate
way
Service
DB
Service
DB
Service
DB
Service
DB
Logic Logic Logic
pay prods orders
data data
Mock
API
Gateway
DB
@juristr
Frontend UI
API
Gate
way
Service
DB
Service
DB
Service
DB
Service
DB
Logic Logic Logic
pay prods orders
data data
Cypress
fakes
So...
to summarize
@juristr
Simpler API - just one global cy object
Extensible - extend the API with your app specific commands
Developer Ergonomics - time travelling, better error handling, debugging
Dev and CI support - Docker containers
Test run parallelization - reduces test runs by 50% (CI only)
Multi browser support coming - currently just Chrome and Electron
docs.cypress.io
@juristr
JURI
STRUMPFLOHNER
Questions?
Reach out to me later &
connect with me on Twitter
https://juristr.com

More Related Content

PDF
Spring Boot Interview Questions | Edureka
Edureka!
 
PDF
Netflix: A State of Xen - Chaos Monkey & Cassandra
DataStax Academy
 
PPTX
Cassandra Summit 2015 - A State of Xen - Chaos Monkey & Cassandra
Jean-Sébastien Jeannotte
 
PDF
How to build a social network on Serverless (AWS Community Summit)
Yan Cui
 
PPTX
Your API is not a Website!
Apigee | Google Cloud
 
PDF
How to build observability into a serverless application
Yan Cui
 
PPTX
Splunk'ing JIRA for deep insights into application, database, and server heal...
Cprime
 
PDF
Not All Heroes Wear Capes: Skills and Tools Helpful in Becoming a Support Sup...
Atlassian
 
Spring Boot Interview Questions | Edureka
Edureka!
 
Netflix: A State of Xen - Chaos Monkey & Cassandra
DataStax Academy
 
Cassandra Summit 2015 - A State of Xen - Chaos Monkey & Cassandra
Jean-Sébastien Jeannotte
 
How to build a social network on Serverless (AWS Community Summit)
Yan Cui
 
Your API is not a Website!
Apigee | Google Cloud
 
How to build observability into a serverless application
Yan Cui
 
Splunk'ing JIRA for deep insights into application, database, and server heal...
Cprime
 
Not All Heroes Wear Capes: Skills and Tools Helpful in Becoming a Support Sup...
Atlassian
 

What's hot (20)

PDF
Introduction to automated testing by Jordanian QA community
Azizeh Hasan
 
PDF
Introduction to Web Development with Ruby on Rails
pmatsinopoulos
 
PPTX
Develop Fast Deploy Faster - APS Scripting - Alfresco DevCon 2019
Miguel Sánchez
 
PPTX
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
Andreas Grabner
 
PDF
Where Node.JS Meets iOS
Sam Rijs
 
PPT
Indic threads java10-spring-roo-and-the-cloud
Shekhar Gulati
 
PPTX
Know the flow to master agility
Darren Byrne
 
PDF
Swift + GraphQL
Sommer Panage
 
PDF
TechSEO Boost 2018: Programming Basics for SEOs
Catalyst
 
KEY
Effective Testing with Ruby
Akira Sosa
 
PPTX
Netflix Winston meetup presentation 2015-11-18
Sayli Karmarkar
 
PPTX
Modern web app with REACT
AndryRajohnson
 
PPTX
Four Practices to Fix Your Top .NET Performance Problems
Andreas Grabner
 
PPTX
Deploy Faster Without Failing Faster - Metrics-Driven - Dynatrace User Groups...
Andreas Grabner
 
PPTX
OWASP ESAPI WAF AppSec DC 2009
llamakong
 
PDF
How to bring chaos engineering to serverless
Yan Cui
 
PDF
Tear Up Your Roadmap and Get Out of the Building
Atlassian
 
PDF
Agile Gurugram 2016 | Conference | Why your Agile Project will fail? Softwar...
AgileNetwork
 
PPTX
Top Java Performance Problems and Metrics To Check in Your Pipeline
Andreas Grabner
 
PPTX
From Zero to Performance Hero in Minutes - Agile Testing Days 2014 Potsdam
Andreas Grabner
 
Introduction to automated testing by Jordanian QA community
Azizeh Hasan
 
Introduction to Web Development with Ruby on Rails
pmatsinopoulos
 
Develop Fast Deploy Faster - APS Scripting - Alfresco DevCon 2019
Miguel Sánchez
 
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
Andreas Grabner
 
Where Node.JS Meets iOS
Sam Rijs
 
Indic threads java10-spring-roo-and-the-cloud
Shekhar Gulati
 
Know the flow to master agility
Darren Byrne
 
Swift + GraphQL
Sommer Panage
 
TechSEO Boost 2018: Programming Basics for SEOs
Catalyst
 
Effective Testing with Ruby
Akira Sosa
 
Netflix Winston meetup presentation 2015-11-18
Sayli Karmarkar
 
Modern web app with REACT
AndryRajohnson
 
Four Practices to Fix Your Top .NET Performance Problems
Andreas Grabner
 
Deploy Faster Without Failing Faster - Metrics-Driven - Dynatrace User Groups...
Andreas Grabner
 
OWASP ESAPI WAF AppSec DC 2009
llamakong
 
How to bring chaos engineering to serverless
Yan Cui
 
Tear Up Your Roadmap and Get Out of the Building
Atlassian
 
Agile Gurugram 2016 | Conference | Why your Agile Project will fail? Softwar...
AgileNetwork
 
Top Java Performance Problems and Metrics To Check in Your Pipeline
Andreas Grabner
 
From Zero to Performance Hero in Minutes - Agile Testing Days 2014 Potsdam
Andreas Grabner
 
Ad

Similar to SFScon18 - Juri Strumpflohner - End-to-end testing done right! (10)

PPTX
Slides for Automation Testing or End to End testing
SwapnilNarayan
 
PPTX
Михаил Боднарчук "Acceptance Testing in NodeJS: Tools & Approaches"
Fwdays
 
PPTX
Cypress.pptx
Arshad QA
 
PPTX
Cypress Automation
Susantha Pathirana
 
PDF
Automated testing with Cypress
Yong Shean Chong
 
PDF
Automated testing in javascript
Michael Yagudaev
 
PDF
Cypress Best Pratices for Test Automation
Knoldus Inc.
 
PDF
Cypress e2e automation testing - day1 intor by: Hassan Hameed
Hassan Muhammad
 
PPTX
Integrated security testing public
Morgan Roman
 
PDF
Node.js and Selenium Webdriver, a journey from the Java side
Mek Srunyu Stittri
 
Slides for Automation Testing or End to End testing
SwapnilNarayan
 
Михаил Боднарчук "Acceptance Testing in NodeJS: Tools & Approaches"
Fwdays
 
Cypress.pptx
Arshad QA
 
Cypress Automation
Susantha Pathirana
 
Automated testing with Cypress
Yong Shean Chong
 
Automated testing in javascript
Michael Yagudaev
 
Cypress Best Pratices for Test Automation
Knoldus Inc.
 
Cypress e2e automation testing - day1 intor by: Hassan Hameed
Hassan Muhammad
 
Integrated security testing public
Morgan Roman
 
Node.js and Selenium Webdriver, a journey from the Java side
Mek Srunyu Stittri
 
Ad

More from South Tyrol Free Software Conference (20)

PDF
SFSCON24 - Marina Latini - 1, 2, 3, Doc Kit!
South Tyrol Free Software Conference
 
PDF
SFSCON24 - Carmen Delgado Ivar Grimstad - Nurturing OpenJDK distribution: Ecl...
South Tyrol Free Software Conference
 
PDF
SFSCON24 - Eduardo Guerra - codEEmoji – Making code more informative with emojis
South Tyrol Free Software Conference
 
PDF
SFSCON24 - Juri Solovjov - How to start contributing and still have fun
South Tyrol Free Software Conference
 
PDF
SFSCON24 - Michal Skipala & Bruno Rossi - Monolith Splitter
South Tyrol Free Software Conference
 
PDF
SFSCON24 - Jorge Melegati - Software Engineering Automation: From early tools...
South Tyrol Free Software Conference
 
PDF
SFSCON24 - Chiara Civardi & Dominika Tasarz Sochacka - The Crucial Role of Op...
South Tyrol Free Software Conference
 
PDF
SFSCON24 - Moritz Mock, Barbara Russo & Jorge Melegati - Can Test Driven Deve...
South Tyrol Free Software Conference
 
PDF
SFSCON24 - Aurelio Buonomo & Christian Zanotti - Apisense – Easily monitor an...
South Tyrol Free Software Conference
 
PDF
SFSCON24 - Giovanni Giannotta & Orneda Lecini - Approaches to Object Detectio...
South Tyrol Free Software Conference
 
PDF
SFSCON24 - Alberto Nicoletti - The SMART Box of AURA Project
South Tyrol Free Software Conference
 
PDF
SFSCON24 - Luca Alloatti - Open-source silicon chips
South Tyrol Free Software Conference
 
PDF
SFSCON24 - Roberto Innocenti - 2025 scenario on OpenISA OpenPower Open Hardwa...
South Tyrol Free Software Conference
 
PDF
SFSCON24 - Juan Rico - Enabling global interoperability among smart devices ...
South Tyrol Free Software Conference
 
PDF
SFSCON24 - Seckin Celik & Davide Serpico - Adoption Determinants of Open Hard...
South Tyrol Free Software Conference
 
PDF
SFSCON24 - Stefan Mutschlechner - Smart Werke Meran - Lorawan Use Cases
South Tyrol Free Software Conference
 
PDF
SFSCON24 - Mattia Pizzirani - Raspberry Pi and Node-RED: Open Source Tools fo...
South Tyrol Free Software Conference
 
PDF
SFSCON24 - Attaullah Buriro - ClapMetrics: Decoding Users Genderand Age Throu...
South Tyrol Free Software Conference
 
PDF
SFSCON24 - Joseph P. De Veaugh Geiss - Opt out? Opt in? Opt Green! Bringing F...
South Tyrol Free Software Conference
 
PDF
SFSCON24 - Fulvio Mastrogiovanni - On the ethical challenges raised by robots...
South Tyrol Free Software Conference
 
SFSCON24 - Marina Latini - 1, 2, 3, Doc Kit!
South Tyrol Free Software Conference
 
SFSCON24 - Carmen Delgado Ivar Grimstad - Nurturing OpenJDK distribution: Ecl...
South Tyrol Free Software Conference
 
SFSCON24 - Eduardo Guerra - codEEmoji – Making code more informative with emojis
South Tyrol Free Software Conference
 
SFSCON24 - Juri Solovjov - How to start contributing and still have fun
South Tyrol Free Software Conference
 
SFSCON24 - Michal Skipala & Bruno Rossi - Monolith Splitter
South Tyrol Free Software Conference
 
SFSCON24 - Jorge Melegati - Software Engineering Automation: From early tools...
South Tyrol Free Software Conference
 
SFSCON24 - Chiara Civardi & Dominika Tasarz Sochacka - The Crucial Role of Op...
South Tyrol Free Software Conference
 
SFSCON24 - Moritz Mock, Barbara Russo & Jorge Melegati - Can Test Driven Deve...
South Tyrol Free Software Conference
 
SFSCON24 - Aurelio Buonomo & Christian Zanotti - Apisense – Easily monitor an...
South Tyrol Free Software Conference
 
SFSCON24 - Giovanni Giannotta & Orneda Lecini - Approaches to Object Detectio...
South Tyrol Free Software Conference
 
SFSCON24 - Alberto Nicoletti - The SMART Box of AURA Project
South Tyrol Free Software Conference
 
SFSCON24 - Luca Alloatti - Open-source silicon chips
South Tyrol Free Software Conference
 
SFSCON24 - Roberto Innocenti - 2025 scenario on OpenISA OpenPower Open Hardwa...
South Tyrol Free Software Conference
 
SFSCON24 - Juan Rico - Enabling global interoperability among smart devices ...
South Tyrol Free Software Conference
 
SFSCON24 - Seckin Celik & Davide Serpico - Adoption Determinants of Open Hard...
South Tyrol Free Software Conference
 
SFSCON24 - Stefan Mutschlechner - Smart Werke Meran - Lorawan Use Cases
South Tyrol Free Software Conference
 
SFSCON24 - Mattia Pizzirani - Raspberry Pi and Node-RED: Open Source Tools fo...
South Tyrol Free Software Conference
 
SFSCON24 - Attaullah Buriro - ClapMetrics: Decoding Users Genderand Age Throu...
South Tyrol Free Software Conference
 
SFSCON24 - Joseph P. De Veaugh Geiss - Opt out? Opt in? Opt Green! Bringing F...
South Tyrol Free Software Conference
 
SFSCON24 - Fulvio Mastrogiovanni - On the ethical challenges raised by robots...
South Tyrol Free Software Conference
 

Recently uploaded (20)

PDF
REPORT: Heating appliances market in Poland 2024
SPIUG
 
PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PDF
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
PDF
Event Presentation Google Cloud Next Extended 2025
minhtrietgect
 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
PDF
Doc9.....................................
SofiaCollazos
 
PDF
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
PPTX
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
PDF
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PDF
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
PDF
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
PDF
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
PDF
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
PDF
Brief History of Internet - Early Days of Internet
sutharharshit158
 
REPORT: Heating appliances market in Poland 2024
SPIUG
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
Event Presentation Google Cloud Next Extended 2025
minhtrietgect
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
Doc9.....................................
SofiaCollazos
 
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
Brief History of Internet - Early Days of Internet
sutharharshit158
 

SFScon18 - Juri Strumpflohner - End-to-end testing done right!