SlideShare a Scribd company logo
1 of 127
Modern Web Testing:
Going Beyond Selenium
Dmitry Vinnik
@DmitryVinnik dvinnik.com
What are our goals?
@DmitryVinnik dvinnik.com
Goals
End-to-End Testing:
What, Why, How and When
Looking Beyond Selenium WD
Find Right E2E Tool For Your
Team
@DmitryVinnik dvinnik.com
Let’s go in more details
@DmitryVinnik dvinnik.com
How do we usually test?
@DmitryVinnik dvinnik.com
Test Pyramid
↑ Fidelity
↓ Speed
↑ Cost
↓ Fidelity
↑ Speed
↓ Cost
@DmitryVinnik dvinnik.com
Let’s test something!
@DmitryVinnik dvinnik.com
What is this “something”?
@DmitryVinnik dvinnik.com
Example App
@DmitryVinnik dvinnik.com
Back to testing!
@DmitryVinnik dvinnik.com
End-to-End Testing
Today’s Focus
@DmitryVinnik dvinnik.com
Common way to do E2E?
@DmitryVinnik dvinnik.com
Selenium WebDriver
Defacto
E2E Tool
Testing
Standard
Generic ↑ Integrations
@DmitryVinnik dvinnik.com
Selenium WebDriver
@DmitryVinnik dvinnik.com
Selenium WebDriver
From “SeleniumHQ, Selenium RC”
@DmitryVinnik dvinnik.com
Case #1
Backend:
Java
Testing:
Java
Is there a problem?
@DmitryVinnik dvinnik.com
Yes, there is
@DmitryVinnik dvinnik.com
Why not Backend Tests?
Hybrid
Model
DDD
User
Centric
DDD
User
Centric
@DmitryVinnik dvinnik.com
Hybrid Model
Software
Engineers
Software
Principles
Testing
Expertise
@DmitryVinnik dvinnik.com
Why not Backend Tests?
Hybrid
Model
DDD
User
Centric
DDD
User
Centric
@DmitryVinnik dvinnik.com
Hybrid
Model
DDD
Domain Driven Design
Context Matters
Ubiquitous
Language
@DmitryVinnik dvinnik.com
Why not Backend Tests?
Hybrid
Model
DDD
User
Centric
DDD
User
Centric
@DmitryVinnik dvinnik.com
Hybrid
Model
DDDDDD
User
Centric
Still not convinced?
@DmitryVinnik dvinnik.com
Modern Web Testing
@DmitryVinnik dvinnik.com
Power of JavaScript
Assertion
Libraries
Process
Libraries
Enterprise
Libraries
Process
Libraries
Enterprise
Libraries
ChaiJasmine
Process
Libraries
BDD
Libraries
Cucumber
Enterprise
Libraries
Applitools
@DmitryVinnik dvinnik.com
Speaking Language
of the Web
@DmitryVinnik dvinnik.com
JavaScript
Node.js
@DmitryVinnik dvinnik.com
Node.js
NPM
Manager
Flexible
Customizable
Isomorphic
@DmitryVinnik dvinnik.com
Established Medium
@DmitryVinnik dvinnik.com
Going back to the Pyramid
@DmitryVinnik dvinnik.com
Test Pyramid
↓ Fidelity
↑ Speed
↓ Cost
@DmitryVinnik dvinnik.com
Unit Testing
In Web Context
@DmitryVinnik dvinnik.com
Example: Jasmine
@DmitryVinnik dvinnik.com
Test Pyramid
↓ Fidelity
↑ Speed
↓ Cost
@DmitryVinnik dvinnik.com
Integration Testing
In Web Context
@DmitryVinnik dvinnik.com
Example: Jest
@DmitryVinnik dvinnik.com
Example: Jest
@DmitryVinnik dvinnik.com
Example: Jest
@DmitryVinnik dvinnik.com
Example: Jest
@DmitryVinnik dvinnik.com
Example: Jest
@DmitryVinnik dvinnik.com
Example: Jest
@DmitryVinnik dvinnik.com
Example: Jest
@DmitryVinnik dvinnik.com
Let’s reflect on it
@DmitryVinnik dvinnik.com
Test Pyramid
↓ Fidelity
↑ Speed
↓ Cost
@DmitryVinnik dvinnik.com
Every step has
only 1 focus
@DmitryVinnik dvinnik.com
Developers
@DmitryVinnik dvinnik.com
Good for some tests
@DmitryVinnik dvinnik.com
But not for E2E tests
@DmitryVinnik dvinnik.com
Test Pyramid
↑ Fidelity
↓ Speed
↑ Cost
↓ Fidelity
↑ Speed
↓ Cost
@DmitryVinnik dvinnik.com
Shifting focus
@DmitryVinnik dvinnik.com
Developers Customers
@DmitryVinnik dvinnik.com
Sounds great!
@DmitryVinnik dvinnik.com
But how do we do it?
@DmitryVinnik dvinnik.com
End-to-End Task Testing
@DmitryVinnik dvinnik.com
User Centric Testing
Interactions Tasks
Page Object
Model
Screenplay
Pattern
@DmitryVinnik dvinnik.com
Back to our app
@DmitryVinnik dvinnik.com
Should we use
Java for tests?
@DmitryVinnik dvinnik.com
No!
@DmitryVinnik dvinnik.com
What should we do?
@DmitryVinnik dvinnik.com
Move to Client Side
@DmitryVinnik dvinnik.com
Continuing with Selenium
@DmitryVinnik dvinnik.com
WebdriverJs
@DmitryVinnik dvinnik.com
Selenium WebDriver
Defacto
E2E Tool
Testing
Standard
Generic ↑ Integrations
@DmitryVinnik dvinnik.com
Defacto
E2E Tool
Testing
Standard
Generic ↑ Integrations
WebdriverJs
@DmitryVinnik dvinnik.com
Selenium WebdriverJs
@DmitryVinnik dvinnik.com
Selenium WebdriverJs
From “SeleniumHQ, Selenium RC”
@DmitryVinnik dvinnik.com
Example: WebdriverJs
@DmitryVinnik dvinnik.com
Only good parts, right?
@DmitryVinnik dvinnik.com
Not Really...
@DmitryVinnik dvinnik.com
E2E Tests’ Complexity
Selectors
Locator
Strategy
Test Flows SPA Types
@DmitryVinnik dvinnik.com
What about WebdriverJs?
@DmitryVinnik dvinnik.com
Selectors
Locator
Strategy
Test Flows SPA Types
WebdriverJs
Locator
Strategy
Test Flows SPA Types
ID, CSS,
Xpath
Locator
Strategy
By Locators
Test Flows
Promise
Manager
SPA TypesSPA TypesSPA TypesGeneric
@DmitryVinnik dvinnik.com
Looks limited
@DmitryVinnik dvinnik.com
Is there anything better?
@DmitryVinnik dvinnik.com
Remember our test app?
@DmitryVinnik dvinnik.com
Case #2
@DmitryVinnik dvinnik.com
Angular
Components
Models Controllers
@DmitryVinnik dvinnik.com
Demo App: Closer Look
@DmitryVinnik dvinnik.com
How would we test that?
@DmitryVinnik dvinnik.com
Test Pyramid
↑ Fidelity
↓ Speed
↑ Cost
↓ Fidelity
↑ Speed
↓ Cost
@DmitryVinnik dvinnik.com
Do we have to use
WebdriverJs?
@DmitryVinnik dvinnik.com
No!
@DmitryVinnik dvinnik.com
Protractor
E2E Test Framework for Angular Apps
@DmitryVinnik dvinnik.com
@DmitryVinnik dvinnik.com
Protractor
Protractor
From “Protractor.org”
@DmitryVinnik dvinnik.com
E2E Tests’ Complexity
Selectors
Locator
Strategy
Test Flows SPA Types
@DmitryVinnik dvinnik.com
Protractor
Selectors
Locator
Strategy
Test Flows SPA Types
Locator
Strategy
Test Flows SPA Types
Selectors
Element
Bindings
Locator
Strategy
By Repeaters
Test Flows
Application
State Aware
SPA Types
Angular
Oriented
@DmitryVinnik dvinnik.com
Example: Protractor
@DmitryVinnik dvinnik.com
Angular is great
@DmitryVinnik dvinnik.com
But
@DmitryVinnik dvinnik.com
Many UI Frameworks...
React Vue
Ember Backbone
@DmitryVinnik dvinnik.com
Protractor + React
@DmitryVinnik dvinnik.com
Protractor + React
@DmitryVinnik dvinnik.com
Conclusion
@DmitryVinnik dvinnik.com
Protractor + React
@DmitryVinnik dvinnik.com
What’s Next?
@DmitryVinnik dvinnik.com
Non-Selenium
UI Test Frameworks
TestCafe
Cypress.io
@DmitryVinnik dvinnik.com
What have we
learned so far?
@DmitryVinnik dvinnik.com
Patterns.
Patterns everywhere
@DmitryVinnik dvinnik.com
Common Patterns
Handling
Waits
RTD
Parallel
Execution
Recorder
& IDE
@DmitryVinnik dvinnik.com
Non-Selenium
UI Test Frameworks
TestCafe
Cypress.io
@DmitryVinnik dvinnik.com
Cypress.io
Common Patterns
@DmitryVinnik dvinnik.com
TestCafe
Handling
Waits
RTD
Parallel
Execution
Recorder
& IDE
@DmitryVinnik dvinnik.com
TestCafe: Example
@DmitryVinnik dvinnik.com
TestCafe: Example
@DmitryVinnik dvinnik.com
TestCafe:
Recorder & IDE
@DmitryVinnik dvinnik.com
TestCafe: Recorder & IDE
@DmitryVinnik dvinnik.com
Non-Selenium
UI Test Frameworks
TestCafe
Cypress.io
@DmitryVinnik dvinnik.com
Cypress.io
TestCafe
Cypress.io
Common Patterns
@DmitryVinnik dvinnik.com
Cypress.io
Handling
Waits
RTD
Parallel
Execution
Recorder
& IDE
@DmitryVinnik dvinnik.com
Cypress.io: Example
@DmitryVinnik dvinnik.com
Cypress.io: Example
@DmitryVinnik dvinnik.com
Cypress.io:
Recorder & IDE
@DmitryVinnik dvinnik.com
Cypress.io: Reports & IDE
@DmitryVinnik dvinnik.com
Right Tool
for the Right Problem
@DmitryVinnik dvinnik.com
Many Test Frameworks...
WebdriverIO
WD
Nightwatch.js
Nemo
@DmitryVinnik dvinnik.com
Avoid Tool Mixups
No DDD
No Common
Language
↑ Complexity
@DmitryVinnik dvinnik.com
How to Choose?
Github
Stars
NPM
Downloads
External
Integrations
POC
@DmitryVinnik dvinnik.com
But More Importantly
Flexibility
Use CaseUse Case
@DmitryVinnik dvinnik.com
Flexibility
Cost of
Transition
ROI
Ability to
Replace
Ability to
Customize
@DmitryVinnik dvinnik.com
But More Importantly
Flexibility
Use CaseUse Case
@DmitryVinnik dvinnik.com
Flexibility
Use Case
Use Case
Team
Expertise
Application
Framework
Test
Infrastructure
@DmitryVinnik dvinnik.com
Call For Action
Evaluate Test
Architecture
Have Domain
Boundaries
Unify Test
Strategy
Experiment!
@DmitryVinnik dvinnik.com
Q/A
@DmitryVinnik dvinnik.com
About Speaker
Twitter: @DmitryVinnik
Blog: dvinnik.com
LinkedIn: in/dmitry-vinnik/
Email: dmitry@dvinnik.com

More Related Content

What's hot

33degree Krzysztof Debski - Let's build a solid base for a scale
33degree Krzysztof Debski - Let's build a solid base for a scale33degree Krzysztof Debski - Let's build a solid base for a scale
33degree Krzysztof Debski - Let's build a solid base for a scale
Krzysztof Debski
 

What's hot (20)

DevOps Days Columbus - Derek Weeks - 2019
DevOps Days Columbus - Derek Weeks - 2019DevOps Days Columbus - Derek Weeks - 2019
DevOps Days Columbus - Derek Weeks - 2019
 
DevOps Training - Ho Chi Minh City
DevOps Training - Ho Chi Minh CityDevOps Training - Ho Chi Minh City
DevOps Training - Ho Chi Minh City
 
TechTalk: What's New with Perfecto?
TechTalk: What's New with Perfecto?TechTalk: What's New with Perfecto?
TechTalk: What's New with Perfecto?
 
Advanced topics in Agile: Implementing Scrum in a project-based company
Advanced topics in Agile: Implementing Scrum in a project-based companyAdvanced topics in Agile: Implementing Scrum in a project-based company
Advanced topics in Agile: Implementing Scrum in a project-based company
 
33degree Krzysztof Debski - Let's build a solid base for a scale
33degree Krzysztof Debski - Let's build a solid base for a scale33degree Krzysztof Debski - Let's build a solid base for a scale
33degree Krzysztof Debski - Let's build a solid base for a scale
 
Jenkins User Conference - Continuous Delivery on Mobile
Jenkins User Conference - Continuous Delivery on MobileJenkins User Conference - Continuous Delivery on Mobile
Jenkins User Conference - Continuous Delivery on Mobile
 
DevOps para Open Source com Azure DevOps
DevOps para Open Source com Azure DevOpsDevOps para Open Source com Azure DevOps
DevOps para Open Source com Azure DevOps
 
Scaling pipelines
Scaling pipelinesScaling pipelines
Scaling pipelines
 
How to Become a Conference Speaker
How to Become a Conference SpeakerHow to Become a Conference Speaker
How to Become a Conference Speaker
 
Becoming a Git Master - Nicola Paolucci
Becoming a Git Master - Nicola PaolucciBecoming a Git Master - Nicola Paolucci
Becoming a Git Master - Nicola Paolucci
 
OpenTuesday: Agile Testautomatisierung und Continuous Integration
OpenTuesday: Agile Testautomatisierung und Continuous IntegrationOpenTuesday: Agile Testautomatisierung und Continuous Integration
OpenTuesday: Agile Testautomatisierung und Continuous Integration
 
Continous Delivery and Continous Integration at IKERLAN
Continous Delivery and Continous Integration at IKERLANContinous Delivery and Continous Integration at IKERLAN
Continous Delivery and Continous Integration at IKERLAN
 
From Zero to DevSecOps in 60 Minutes - DevTalks Romania - Cluj-Napoca
From Zero to DevSecOps in 60 Minutes - DevTalks Romania - Cluj-NapocaFrom Zero to DevSecOps in 60 Minutes - DevTalks Romania - Cluj-Napoca
From Zero to DevSecOps in 60 Minutes - DevTalks Romania - Cluj-Napoca
 
Professional iOS development
Professional iOS developmentProfessional iOS development
Professional iOS development
 
Application Security Epistemology in a Continuous Delivery World
Application Security Epistemology in a Continuous Delivery WorldApplication Security Epistemology in a Continuous Delivery World
Application Security Epistemology in a Continuous Delivery World
 
My 'Phoenix Project'—One Developer's Evolutionary Journey
My 'Phoenix Project'—One Developer's Evolutionary JourneyMy 'Phoenix Project'—One Developer's Evolutionary Journey
My 'Phoenix Project'—One Developer's Evolutionary Journey
 
Concurrent version management(tortoise CVS)
Concurrent version management(tortoise CVS)Concurrent version management(tortoise CVS)
Concurrent version management(tortoise CVS)
 
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
 
What I learned teaching programming to 150 beginners
What I learned teaching programming to 150 beginnersWhat I learned teaching programming to 150 beginners
What I learned teaching programming to 150 beginners
 
Keynote: The Phoenix Project: Lessons Learned - PuppetConf 2014
Keynote: The Phoenix Project: Lessons Learned - PuppetConf 2014Keynote: The Phoenix Project: Lessons Learned - PuppetConf 2014
Keynote: The Phoenix Project: Lessons Learned - PuppetConf 2014
 

Similar to Modern Web Testing: Going Beyond Selenium

Engineer in Test: Bridging the Gap
Engineer in Test: Bridging the GapEngineer in Test: Bridging the Gap
Engineer in Test: Bridging the Gap
Dmitry Vinnik
 

Similar to Modern Web Testing: Going Beyond Selenium (20)

Modern Web Testing: Going Beyond Selenium
Modern Web Testing: Going Beyond SeleniumModern Web Testing: Going Beyond Selenium
Modern Web Testing: Going Beyond Selenium
 
From Robotium to Appium: Choose your Journey
From Robotium to Appium: Choose your Journey From Robotium to Appium: Choose your Journey
From Robotium to Appium: Choose your Journey
 
Uphill Battle of Mobile Visual Regression
Uphill Battle of Mobile Visual RegressionUphill Battle of Mobile Visual Regression
Uphill Battle of Mobile Visual Regression
 
Testing at Scale at Meta and Salesforce
Testing at Scale at Meta and SalesforceTesting at Scale at Meta and Salesforce
Testing at Scale at Meta and Salesforce
 
Do you even Function? Guiding Through Functional Interfaces
Do you even Function? Guiding Through Functional InterfacesDo you even Function? Guiding Through Functional Interfaces
Do you even Function? Guiding Through Functional Interfaces
 
Engineer in Test: Bridging the Gap
Engineer in Test: Bridging the GapEngineer in Test: Bridging the Gap
Engineer in Test: Bridging the Gap
 
Testing Svelte with Jest: Validate Your Components Quickly!
Testing Svelte with Jest: Validate Your Components Quickly!Testing Svelte with Jest: Validate Your Components Quickly!
Testing Svelte with Jest: Validate Your Components Quickly!
 
Testing React with Jest: Validate Your Components Quickly!
Testing React with Jest: Validate Your Components Quickly!Testing React with Jest: Validate Your Components Quickly!
Testing React with Jest: Validate Your Components Quickly!
 
Hands-on React Native: From Zero to Hero
Hands-on React Native: From Zero to HeroHands-on React Native: From Zero to Hero
Hands-on React Native: From Zero to Hero
 
Back to the CompletableFuture: Concurrency in Action
Back to the CompletableFuture: Concurrency in ActionBack to the CompletableFuture: Concurrency in Action
Back to the CompletableFuture: Concurrency in Action
 
anoverviewofseleniumwebdriver-160407055026 (pdf.io).pdf
anoverviewofseleniumwebdriver-160407055026 (pdf.io).pdfanoverviewofseleniumwebdriver-160407055026 (pdf.io).pdf
anoverviewofseleniumwebdriver-160407055026 (pdf.io).pdf
 
An overview of selenium webdriver
An overview of selenium webdriverAn overview of selenium webdriver
An overview of selenium webdriver
 
Rendering SEO Manifesto - Why we need to go beyond JavaScript SEO
Rendering SEO Manifesto - Why we need to go beyond JavaScript SEORendering SEO Manifesto - Why we need to go beyond JavaScript SEO
Rendering SEO Manifesto - Why we need to go beyond JavaScript SEO
 
Selenium Interview Questions and Answers For Freshers And Experienced | Edureka
Selenium Interview Questions and Answers For Freshers And Experienced | EdurekaSelenium Interview Questions and Answers For Freshers And Experienced | Edureka
Selenium Interview Questions and Answers For Freshers And Experienced | Edureka
 
Selenium Certification
Selenium CertificationSelenium Certification
Selenium Certification
 
Selenium Tutorial For Beginners | What Is Selenium? | Selenium Automation Tes...
Selenium Tutorial For Beginners | What Is Selenium? | Selenium Automation Tes...Selenium Tutorial For Beginners | What Is Selenium? | Selenium Automation Tes...
Selenium Tutorial For Beginners | What Is Selenium? | Selenium Automation Tes...
 
Mobile WebDriver Selendroid
Mobile WebDriver SelendroidMobile WebDriver Selendroid
Mobile WebDriver Selendroid
 
Start Your Automation Journey With Rapise
Start Your Automation Journey With Rapise Start Your Automation Journey With Rapise
Start Your Automation Journey With Rapise
 
Selenium and Open Source Advanced Testing
Selenium and Open Source Advanced TestingSelenium and Open Source Advanced Testing
Selenium and Open Source Advanced Testing
 
What CS Class Didn't Teach About Testing
What CS Class Didn't Teach About TestingWhat CS Class Didn't Teach About Testing
What CS Class Didn't Teach About Testing
 

More from Dmitry Vinnik

More from Dmitry Vinnik (15)

Leadership in Open Source and Why Companies Care
Leadership in Open Source and Why Companies CareLeadership in Open Source and Why Companies Care
Leadership in Open Source and Why Companies Care
 
Maximizing React Speed: Hands-On Guide to Debugging and Optimizing React Appl...
Maximizing React Speed: Hands-On Guide to Debugging and Optimizing React Appl...Maximizing React Speed: Hands-On Guide to Debugging and Optimizing React Appl...
Maximizing React Speed: Hands-On Guide to Debugging and Optimizing React Appl...
 
Cross-Platform CSS (Yes, it's Possible!) with Yoga
Cross-Platform CSS (Yes, it's Possible!) with YogaCross-Platform CSS (Yes, it's Possible!) with Yoga
Cross-Platform CSS (Yes, it's Possible!) with Yoga
 
Documentation Made Easy with Docusaurus
Documentation Made Easy with DocusaurusDocumentation Made Easy with Docusaurus
Documentation Made Easy with Docusaurus
 
Fixing Broken Windows: Dealing with Legacy Systems, Poor Quality and Gaps
Fixing Broken Windows: Dealing with Legacy Systems, Poor Quality and GapsFixing Broken Windows: Dealing with Legacy Systems, Poor Quality and Gaps
Fixing Broken Windows: Dealing with Legacy Systems, Poor Quality and Gaps
 
Ent: Making Data Easy in Go
Ent: Making Data Easy in GoEnt: Making Data Easy in Go
Ent: Making Data Easy in Go
 
The 10,000 Steps of Open Source Project Health
The 10,000 Steps of Open Source Project HealthThe 10,000 Steps of Open Source Project Health
The 10,000 Steps of Open Source Project Health
 
Better Start: Enforcing Best Engineering Practices with Kotlin
Better Start: Enforcing Best Engineering Practices with KotlinBetter Start: Enforcing Best Engineering Practices with Kotlin
Better Start: Enforcing Best Engineering Practices with Kotlin
 
Developing Lightning Components for Communities.pptx
Developing Lightning Components for Communities.pptxDeveloping Lightning Components for Communities.pptx
Developing Lightning Components for Communities.pptx
 
Remote Work: Gateway to Freedom
Remote Work: Gateway to FreedomRemote Work: Gateway to Freedom
Remote Work: Gateway to Freedom
 
Kindness Engineering: Focusing on What Matters
Kindness Engineering: Focusing on What MattersKindness Engineering: Focusing on What Matters
Kindness Engineering: Focusing on What Matters
 
Gauge + Taiko, BDD for Web Revived
Gauge + Taiko, BDD for Web RevivedGauge + Taiko, BDD for Web Revived
Gauge + Taiko, BDD for Web Revived
 
Stress Driven Development, and How to Avoid It
Stress Driven Development, and How to Avoid ItStress Driven Development, and How to Avoid It
Stress Driven Development, and How to Avoid It
 
Domain Driven Testing: Know What You’re Doing
Domain Driven Testing: Know What You’re DoingDomain Driven Testing: Know What You’re Doing
Domain Driven Testing: Know What You’re Doing
 
Build Tests to Build Websites
Build Tests to Build WebsitesBuild Tests to Build Websites
Build Tests to Build Websites
 

Recently uploaded

The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 

Recently uploaded (20)

The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Pharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodologyPharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodology
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 

Modern Web Testing: Going Beyond Selenium

Editor's Notes

  1. Not how to, but why (not step-by-step instructions, there are 100s of those)
  2. Explain width is #tests
  3. Show the app: http://todomvc.com/examples/angularjs/#/
  4. Show the app
  5. Reference: https://www.seleniumhq.org/docs/05_selenium_rc.jsp
  6. Reference: https://www.seleniumhq.org/docs/05_selenium_rc.jsp
  7. Indeed open source
  8. Karma
  9. Jest, Jasmine - components
  10. Explain width is #tests
  11. Reinforce the idea that Tests are about feedback, about communication
  12. Reinforce the idea that Tests are about feedback, about communication
  13. Explain width is #tests
  14. Possibly talk about screenplay vs interation, explain why task SOLID pattern
  15. Possibly talk about screenplay vs interation, explain why task SOLID pattern
  16. Web app context, web rules - write tests on the client side
  17. Web app context, web rules - write tests on the client side
  18. Very important “Js”, not “JS”
  19. Very important “Js”, not “JS”
  20. Reference: https://www.seleniumhq.org/docs/05_selenium_rc.jsp
  21. Reference: https://www.seleniumhq.org/docs/05_selenium_rc.jsp
  22. ES6 Mocha
  23. Focus on SPA
  24. Focus on SPA
  25. Focus on SPA
  26. Explain width is #tests
  27. https://www.protractortest.org/#/infrastructure
  28. https://www.protractortest.org/#/infrastructure
  29. Jasmine
  30. Injects scripts directly into DOM
  31. Injects scripts directly into DOM
  32. Injects scripts directly into DOM
  33. Injects scripts directly into DOM
  34. https://github.com/DevExpress/testcafe https://github.com/DevExpress/testcafe-live
  35. https://github.com/DevExpress/testcafe https://github.com/DevExpress/testcafe-live https://testcafe-studio.devexpress.com
  36. https://github.com/DevExpress/testcafe https://github.com/DevExpress/testcafe-live https://testcafe-studio.devexpress.com
  37. Source: TestCafe by DevExpress, https://github.com/DevExpress/testcafe
  38. Injects scripts directly into DOM
  39. https://github.com/DevExpress/testcafe https://github.com/DevExpress/testcafe-live
  40. https://github.com/DevExpress/testcafe https://github.com/DevExpress/testcafe-live https://testcafe-studio.devexpress.com
  41. Extensive documentation - https://docs.cypress.io
  42. Source: Cypress.io Example by Cypress.io, https://www.cypress.io
  43. We exist in a land of options
  44. Compare to Kotlin/Scala transition cost, ROI
  45. Will be sharing slides, github and useful links