Testing,
the way it
should be.
Brian Mann
@be_mann
What is Cypress?
Why another
testing tool?
Developing since 2008
Testing for 5 years
Written 10,000+ tests
Testing is just too hard
To: Developers
“What are the biggest testing
challenges you want solved?”
From: Me
Having sane
configuration
It must be
easy to use
Easy to write
Easy to read
Easy to maintain
Visibility into why
something failed
Animation testing
Wasted time spent
debugging false
negatives
..slow to run and
often … fragile
Speed of
test execution
…errors using
Selenium are useless
…more insight into
failing tests
Running fast and
reliably
…having to go
through a pain
of setup
Frictionless test setup
…taking a long time
to develop and
difficult to maintain
Testing responsive
designs
See what broke
visually Can be quickly
debugged
Understand why test
failed
Being easy
to setup
Making it easy
Making it "fun" to
write tests
Cross-Browser
testing
Tooling that is easy
to use
Support for
async testing
Flake
Tooling that
is fast
Tooling that
actually works
Intermittent test
failures
Speed, flakiness
Time spent
debugging false
negatives
Testing across
browsers is painful
A solution that
is friendly to
frontend Devs
Less brittle
to changes
Legible syntax
Faster test-
development
feedback loop
Simpler to write
No endless setup
hassle
Testing browser
JS-heavy apps
Asynchronous
interaction
More insight into
failing tests
…very clunky
… and cryptic
Deals with async in a
non-flakey way
Testing frameworks
aren't great
Better information
for new testers
…complexity and
difficulty
Fixing failing tests
and regressions
Making testing more
enjoyable
Debugging failing
tests have left me
frustrated
Abandonment of
automated tests
…takes a bit of time
to setup
Step through the
error and inspect
what is happening
Elegantly dealing
with delays
Config
…causes them to
abandon testing…
Learning curve
Usable cross browser
testing
Test my apps on
multiple browsers
Managing a bunch of
fiddly testing tools
…hard time getting
started
Simplify integration
testing
Highlight and help
understand what
should be tested
Testing without
selenium
CSS rendering
testing
Cross-browser
compatibility
Automatically retest
the code you’re
working on
Reducing the pain
Encourage Devs to
actually write more
tests
…tests have left me
frustrated
…intimidates users
Slow iterations on
test code
Visually step through
the test runs
Takes lots of time to
get it right
Sane test-running
environment
Less hassle
to set up
Setup
Having sane
configuration
…having to go
through a pain
of setup
Frictionless test
setup
Being easy
to setup
No endless setup
hassle
Less hassle
to set up
It must be
easy to use
Easy to write
Running fast and
reliably
Testing responsive
designs
See what broke
visually
Support for
async testing
Simpler to write
Writing Management
Easy to maintain
Wasted time spent
debugging false
negatives
Understand why test
failed
Flake
Intermittent test
failures
Less brittle
to changes
More insight into
failing tests
Selenium
Selenium
• Evolution
• Async Code
• Architecture
• Control
• Speed
I hate testing :-(
Part 1: Setup
Part 2: Writing
Part 3: Management
Desktop App Cloud Platform
Goals
•Open Source
•Champions
•Documentation
•Happiness
Roadmap
docs.cypress.io
www.cypress.io

Testing the way it should be

  • 1.
    Testing, the way it shouldbe. Brian Mann @be_mann
  • 2.
  • 4.
  • 5.
    Developing since 2008 Testingfor 5 years Written 10,000+ tests
  • 6.
  • 8.
    To: Developers “What arethe biggest testing challenges you want solved?” From: Me
  • 9.
    Having sane configuration It mustbe easy to use Easy to write Easy to read Easy to maintain Visibility into why something failed Animation testing Wasted time spent debugging false negatives ..slow to run and often … fragile Speed of test execution …errors using Selenium are useless …more insight into failing tests Running fast and reliably …having to go through a pain of setup Frictionless test setup …taking a long time to develop and difficult to maintain Testing responsive designs See what broke visually Can be quickly debugged Understand why test failed Being easy to setup Making it easy Making it "fun" to write tests Cross-Browser testing Tooling that is easy to use Support for async testing Flake Tooling that is fast Tooling that actually works Intermittent test failures Speed, flakiness Time spent debugging false negatives Testing across browsers is painful A solution that is friendly to frontend Devs Less brittle to changes Legible syntax Faster test- development feedback loop Simpler to write No endless setup hassle Testing browser JS-heavy apps Asynchronous interaction More insight into failing tests …very clunky … and cryptic Deals with async in a non-flakey way Testing frameworks aren't great Better information for new testers …complexity and difficulty Fixing failing tests and regressions Making testing more enjoyable Debugging failing tests have left me frustrated Abandonment of automated tests …takes a bit of time to setup Step through the error and inspect what is happening Elegantly dealing with delays Config …causes them to abandon testing… Learning curve Usable cross browser testing Test my apps on multiple browsers Managing a bunch of fiddly testing tools …hard time getting started Simplify integration testing Highlight and help understand what should be tested Testing without selenium CSS rendering testing Cross-browser compatibility Automatically retest the code you’re working on Reducing the pain Encourage Devs to actually write more tests …tests have left me frustrated …intimidates users Slow iterations on test code Visually step through the test runs Takes lots of time to get it right Sane test-running environment Less hassle to set up
  • 10.
    Setup Having sane configuration …having togo through a pain of setup Frictionless test setup Being easy to setup No endless setup hassle Less hassle to set up It must be easy to use Easy to write Running fast and reliably Testing responsive designs See what broke visually Support for async testing Simpler to write Writing Management Easy to maintain Wasted time spent debugging false negatives Understand why test failed Flake Intermittent test failures Less brittle to changes More insight into failing tests
  • 11.
  • 12.
  • 13.
    • Evolution • AsyncCode • Architecture • Control • Speed
  • 16.
  • 17.
  • 18.
  • 45.
  • 48.
  • 53.
  • 54.
  • 55.
  • 56.