Need advice about which tool to choose?Ask the StackShare community!

Cypress

2.3K
2K
+ 1
114
Puppeteer

587
569
+ 1
26
Add tool

Cypress vs Puppeteer: What are the differences?

Introduction

Cypress and Puppeteer are both popular automation testing tools used for web application testing. While they serve a similar purpose, there are key differences between the two.

  1. Architecture: Cypress runs directly in the browser and executes commands while the page is rendering, which provides real-time feedback and control over the application. On the other hand, Puppeteer uses a separate Node.js process and communicates with the browser via the DevTools Protocol, making it suitable for non-rendering tasks as well.

  2. User Interface Testing: Cypress is primarily focused on end-to-end testing, providing features specifically tailored for testing user interfaces. It comes with a rich set of assertions and automatic waiting for network requests and DOM modifications. Puppeteer, however, is more flexible and can be used for testing not only the user interface but also automating tasks such as scraping, generating screenshots, or automating form filling.

  3. Browser Compatibility: Cypress only supports Chrome-based browsers, limiting its cross-browser testing capabilities. On the other hand, Puppeteer can control Chrome, Firefox, and other browsers through the use of the puppeteer-firefox library. This gives Puppeteer an advantage when it comes to testing on multiple browsers.

  4. Speed of Execution: Cypress runs tests in the same run loop as the application, allowing for faster execution as it can anticipate the application state and skip unnecessary waiting time. Puppeteer, being an outside-in approach, may have a slightly slower execution time as it needs to interact with the browser via the DevTools Protocol.

  5. Debugging Capabilities: Cypress provides an interactive test runner that allows developers to debug tests in real-time using built-in tools such as the Cypress Command Log or the browser's DevTools. This makes it easier to track down and fix issues. Puppeteer, while it can be integrated with external debugging tools, does not have the same level of built-in support for test debugging.

  6. Vendor Support and Community: Cypress is an open-source project backed by a dedicated team and has gained significant traction in the testing community. It has a strong community support and regular updates from the maintainers. Puppeteer, on the other hand, is maintained by the Chrome team and has the advantage of being part of the Google Chrome ecosystem. It also has a large community and is well-supported.

In Summary, while both Cypress and Puppeteer serve the purpose of automation testing, Cypress is more focused on user interface testing with a Chrome-only browser support, faster execution speed, and built-in debugging capabilities. Puppeteer, on the other hand, offers more flexibility with multi-browser support, non-rendering tasks automation, and the advantage of being maintained by the Chrome team.

Advice on Cypress and Puppeteer
Yildiz Dila
testmanager/automation tester at medicalservice · | 5 upvotes · 259.9K views
Needs advice
on
CypressCypress
and
ProtractorProtractor

In the company I will be building test automation framework and my new company develops apps mainly using AngularJS/TypeScript. I was planning to build Protractor-Jasmine framework but a friend of mine told me about Cypress and heard that its users are very satisfied with it. I am trying to understand the capabilities of Cypress and as the final goal to differentiate these two tools. Can anyone advice me on this in a nutshell pls...

See more
Replies (2)
Kevin Emery
QE Systems Engineer at Discovery, Inc. · | 4 upvotes · 158.9K views
Recommends
on
CypressCypressProtractorProtractor

I've used both Protractor and Cypress extensively. Cypress is the easier and more reliable tool, whereas Protractor is the more powerful tool. Your choice of tool should depend on your specific testing needs. Here are some advantages and disadvantages of each tool:

Cypress advantages:

  • Faster

  • More reliable (tends to throw fewer intermittent false failures)

  • Easier to read code (handles promises gracefully)

Cypress disadvantages:

  • Cannot switch between browser tabs

  • Cannot switch to iFrames

  • Cannot specify clicks or keypresses explicitly as if a real user was interacting

  • Cannot move the mouse to specific co-ordinates

  • Sometimes has trouble switching between different top-level domains, so not good for testing external links

  • Cypress is a newer tool with less extensive documentation and less community support

Protractor advantages:

  • More powerful because it is Selenium-based - it can switch between tabs, it can handle external links to other domains, it can handle iFrames, simulate keypresses and clicks, and move the mouse to specific co-ordinates within the browser.

  • More extensive community support and documentation

Protractor disadvantages:

  • Slower and more brittle - in general there is a higher likelihood of cryptic and/or intermittent errors which may cause your tests to fail even though there is nothing wrong with your application

  • For highly experienced automation engineers, the fundamental "brittle" nature of Selenium can be worked around - it can be reliable but only if you really know what you are doing

  • Less graceful handling of promises - relies on async/await or .then to manage the order of execution. Therefore it is a bit harder to read the code.

  • Harder to set up, and the method of setup impacts its reliability. For example, a hub/node configuration where the selenium jar is on a different physical machine than the browser under test will cause unreliability in your tests. Not everyone knows about this type of thing, so it's common to find Selenium frameworks that are set up poorly.

It's probably better to use Cypress if

  • you're at a smaller company and have a close relationship with developers who can help write hooks or stubs in their code to assist your testing

  • you don't need to do things like switch between tabs or test links to external top-level domains

It's probably better to use Protractor if

  • You might need to switch between tabs or test external links to other domains within the scope of your framework

  • You want to use a more accurate simulation of how a real user interacts with a browser (i.e. click at this location, type these keys)

  • You're at a company where you won't have any support from developers in writing hooks or stubs to make their code more testable in a less powerful framework like Cypress

See more
Jian Wang
Web Engineer at sentaca · | 1 upvotes · 187.7K views
Recommends

Please try Handow, the e2e tool basing on Puppeteer.

Gherkin syntax compatible

Chrome/Chromium orentied, driven by Puppeteer engine

Complete JavaScript programming

Create test suites rapidly without coding (or a little bit), basing on built-in steps library

Schedule test with plans and arrange stories with sequential stages

Fast running, execute story groups in parallel by multi-workers

Built-in single page report render

Cover page view, REST API and cookies test

https://github.com/newlifewj/handow

http://demo.shm.handow.org/reports

See more
Ankur Loriya
Needs advice
on
PhantomJSPhantomJS
and
PuppeteerPuppeteer

I am using Node 12 for server scripting and have a function to generate PDF and send it to a browser. Currently, we are using PhantomJS to generate a PDF. Some web post shows that we can achieve PDF generation using Puppeteer. I was a bit confused. Should we move to puppeteerJS? Which one is better with NodeJS for generating PDF?

See more
Replies (2)
Recommends
on
PuppeteerPuppeteer

You better go with puppeteer. It is basically chrome automation tool, written in nodejs. So what you get is PDF, generated by chrome itself. I guess there is hardly better PDF generation tool for the web. Phantomjs is already more or less outdated as technology. It uses some old webkit port that's quite behind in terms of standards and features. It can be replaced with puppeteer for every single task.

See more
Recommends
on
PuppeteerPuppeteer

I suggest puppeteer to go for. It is simple and easy to set up. Only limitaiton is it can be used only for chrome browser and currently they are looking into expanding into FF. The next thing is Playwright which is just a scale up of Puppeteer. It supports cross browsers.

See more
Decisions about Cypress and Puppeteer
Matt Wufsus
QA Engineer at Creditly · | 4 upvotes · 17.4K views

My company was looking for a testing tool that would integrate easily with AWS Amplify and quickly provide value. I created a POC for each tool we were exploring and showed it to the team (since we all want to contribute to the testing framework). Cypress was by far the easiest to go from nothing to running tests that were finding bugs in our web application.

The only difficulties I had with Cypress were working with iframes and the fact it does not currently handle new tabs. Cypress currently supports Chrome, Edge, Electron (headless) and has Firefox in beta so if IE is something you need to support, you might want to use another tool in conjunction or in place of Cypress.

Cypress is very well documented with a very responsive support team. Recently the Cypress team released the 'Real World App' as a showcase for implementing good tests with best practices.

See more
Shared insights
on
CypressCypressJestJest

As we all know testing is an important part of any application. To assist with our testing we are going to use both Cypress and Jest. We feel these tools complement each other and will help us get good coverage of our code. We will use Cypress for our end to end testing as we've found it quite user friendly. Jest will be used for our unit tests because we've seen how many larger companies use it with great success.

See more
Get Advice from developers at your company using StackShare Enterprise. Sign up for StackShare Enterprise.
Learn More
Pros of Cypress
Pros of Puppeteer
  • 29
    Open source
  • 22
    Great documentation
  • 20
    Simple usage
  • 18
    Fast
  • 10
    Cross Browser testing
  • 9
    Easy us with CI
  • 5
    Npm install cypress only
  • 1
    Good for beginner automation engineers
  • 10
    Very well documented
  • 10
    Scriptable web browser
  • 6
    Promise based

Sign up to add or upvote prosMake informed product decisions

Cons of Cypress
Cons of Puppeteer
  • 21
    Cypress is weak at cross-browser testing
  • 14
    Switch tabs : Cypress can'nt support
  • 12
    No iFrame support
  • 9
    No page object support
  • 9
    No multiple domain support
  • 8
    No file upload support
  • 8
    No support for multiple tab control
  • 8
    No xPath support
  • 7
    No support for Safari
  • 7
    Cypress doesn't support native app
  • 7
    Re-run failed tests retries not supported yet
  • 7
    No support for multiple browser control
  • 5
    $20/user/thread for reports
  • 4
    Adobe
  • 4
    Using a non-standard automation protocol
  • 4
    Not freeware
  • 3
    No 'WD wire protocol' support
  • 10
    Chrome only

Sign up to add or upvote consMake informed product decisions

- No public GitHub repository available -

What is Cypress?

Cypress is a front end automated testing application created for the modern web. Cypress is built on a new architecture and runs in the same run-loop as the application being tested. As a result Cypress provides better, faster, and more reliable testing for anything that runs in a browser. Cypress works on any front-end framework or website.

What is Puppeteer?

Puppeteer is a Node library which provides a high-level API to control headless Chrome over the DevTools Protocol. It can also be configured to use full (non-headless) Chrome.

Need advice about which tool to choose?Ask the StackShare community!

Jobs that mention Cypress and Puppeteer as a desired skillset
What companies use Cypress?
What companies use Puppeteer?
See which teams inside your own company are using Cypress or Puppeteer.
Sign up for StackShare EnterpriseLearn More

Sign up to get full access to all the companiesMake informed product decisions

What tools integrate with Cypress?
What tools integrate with Puppeteer?

Sign up to get full access to all the tool integrationsMake informed product decisions

Blog Posts

What are some alternatives to Cypress and Puppeteer?
Selenium
Selenium automates browsers. That's it! What you do with that power is entirely up to you. Primarily, it is for automating web applications for testing purposes, but is certainly not limited to just that. Boring web-based administration tasks can (and should!) also be automated as well.
TestCafe
It is a pure node.js end-to-end solution for testing web apps. It takes care of all the stages: starting browsers, running tests, gathering test results and generating reports.
WebdriverIO
WebdriverIO lets you control a browser or a mobile application with just a few lines of code. Your test code will look simple, concise and easy to read.
Jest
Jest provides you with multiple layers on top of Jasmine.
Protractor
Protractor is an end-to-end test framework for Angular and AngularJS applications. Protractor runs tests against your application running in a real browser, interacting with it as a user would.
See all alternatives