#browser-automation
#node-js
## Incomplete list (alphabetical)
- [**cypress**](https://www.npmjs.com/package/cypress) (see also [[+Cypress]])
- [**nightwatch**](https://www.npmjs.com/package/nightwatch) (see also [[+Nightwatch]])
- [**playwright**](https://www.npmjs.com/package/playwright) (see also [[+Playwright]])
- [**puppeteer**](https://www.npmjs.com/package/puppeteer)
- [**selenium-webdriver**](https://www.npmjs.com/package/selenium-webdriver) (see also [[+Selenium]])
- [**testcafe**](https://www.npmjs.com/package/testcafe)
- [**webdriverio**](https://www.npmjs.com/package/webdriverio) (see also [[+WebdriverIO]])
## Downloads via NPM over time
https://www.npmtrends.com/cypress-vs-nightwatch-vs-playwright-vs-puppeteer-vs-selenium-webdriver-vs-testcafe-vs-webdriverio-vs-protractor
## Decision guide
[Decision guide for browser test tooling](https://medium.com/xing-engineering/decision-guide-for-browser-test-tooling-cc9b3e9d16a) - an article I wrote and published on tech.xing.com (Oct 2022)
## Comparison and opinions
Randomly collected articles/discussions:
- [Opacity : 0 is not considered as "Displayed"](https://github.com/SeleniumHQ/selenium/issues/14030) - Issue and discussion in the Selenium repository on GitHub
- [Why Browser Engines ≠ Real Desktop Browsers ≠ Mobile Browsers](https://www.youtube.com/watch?v=Mo6LmFGrtxY) - Talk by David Burns (BrowserStack) at Selenium Conference (April 2023)
- [Comment in cypress-io/cypress#311](https://github.com/cypress-io/cypress/issues/311#issuecomment-1518025083) (April 2023)
- [Discussion in microsoft/playwright: How will Playwright position itself to WebDriver BiDi?](https://github.com/microsoft/playwright/discussions/14014) (May 2022)
- [Five reasons why Playwright is better than Cypress (Alister B. Scott)](https://alisterbscott.com/2021/10/27/five-reasons-why-playwright-is-better-than-cypress/) (Oct 2021)
- [Selenium vs. Cypress: The Rematch](https://applitools.com/blog/selenium-vs-cypress-the-rematch/) (Jan 2021)
- [Puppeteer, Selenium, Playwright, Cypress – how to choose? (Testim Blog)](https://www.testim.io/blog/puppeteer-selenium-playwright-cypress-how-to-choose/) (June 2020)
- [Cypress vs. Selenium vs. TestProject – 7 Browsers Speed Benchmark (TestProject blog)](https://blog.testproject.io/2020/03/03/cypress-vs-selenium-vs-testproject-speed-benchmark-all-browsers/) (Mar 2020)
- [My Thoughts on Cypress.io (Alister B. Scott)](https://alisterbscott.com/2019/07/06/my-thoughts-on-cypress-io/) (Jul 2019)
Randomly collected tweets:
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Excellent info on the *new* headless Chrome mode. Also includes some insight into why testing with fake browsers is not the same as testing with real browsers. (Ironically that's one of the reasons why we started the Selenium project in the first place.)<a href="https://t.co/KJ0rh21RMz">https://t.co/KJ0rh21RMz</a> <a href="https://t.co/z0KlVPnjLQ">pic.twitter.com/z0KlVPnjLQ</a></p>— Jason Huggins 💬 (@hugs) <a href="https://twitter.com/hugs/status/1629110597504696325?ref_src=twsrc%5Etfw">February 24, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Conclusions in this article are right where I'm sitting as well. Cypress is still awesome, but I think I may prefer <a href="https://twitter.com/playwrightweb?ref_src=twsrc%5Etfw">@playwrightweb</a> more now... <a href="https://t.co/zPRn7G5wsd">https://t.co/zPRn7G5wsd</a></p>— Kent C. Dodds 🌌 (@kentcdodds) <a href="https://twitter.com/kentcdodds/status/1572302779569389568?ref_src=twsrc%5Etfw">September 20, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">As long as Playwright requires custom browser builds and is not based on a web standard endorsed by browser vendors, as W3C standards are, I will oppose this with every fiber of my being. You can't be "for the open web," and use technologies that eschew and are hostile to it. <a href="https://t.co/nsJbrcc4OX">https://t.co/nsJbrcc4OX</a></p>— Jim Evans (@jimevansmusic) <a href="https://twitter.com/jimevansmusic/status/1466801706495266821?ref_src=twsrc%5Etfw">December 3, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Interesting to see people wanting to migrate from Protractor to <a href="https://twitter.com/playwrightweb?ref_src=twsrc%5Etfw">@playwrightweb</a> , just so they can migrate their test framework again from Playwright back to another framework because MS kills the team 🤔🙈</p>— Christian Bromann (@bromann) <a href="https://twitter.com/bromann/status/1450763904137695232?ref_src=twsrc%5Etfw">October 20, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr"><a href="https://twitter.com/hashtag/cypress?src=hash&ref_src=twsrc%5Etfw">#cypress</a> sucks. I find that it is hard hard compose tests together, because it is not promised based.<br>Dashboard is cool but not good enough.<br><br>Alternatively, I think <a href="https://twitter.com/hashtag/webdriverio?src=hash&ref_src=twsrc%5Etfw">#webdriverio</a> has done a good job with the async API. The secret could be reporters, like the video reporter.</p>— Wayne (@waynevanson) <a href="https://twitter.com/waynevanson/status/1420272057481191426?ref_src=twsrc%5Etfw">July 28, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">This is a a hill I am willing to die on.<br><br>Seriously, stop comparing Selenium to Cypress. They are not comparable.<br><br>It’s unfair to both projects, but more than anything, it emphasis the fact that you clearly don’t understand your tooling.</p>— Richard Bradshaw (@FriendlyTester) <a href="https://twitter.com/FriendlyTester/status/1278257012636336130?ref_src=twsrc%5Etfw">July 1, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">I love that you posted this. There is a lot of people and don't understand how selenium/webdriver work. It leads to things like Cypress advertising that webdriver is flaky. No it isn't. Your selectors, how your test is written, bad assumptions about system state is flaky.</p>— Kylee Tilley ⚠️ Testing Required (@testingrequired) <a href="https://twitter.com/testingrequired/status/1262067234865889280?ref_src=twsrc%5Etfw">May 17, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">After dabbling with flaky Webdriver tests for a while, Cypress tests are refreshing and easier to debug, implement, and maintain. Loving the GUI and Dashboard Service so far and looking forward to cross-browser support (which was the main thing keeping us in Webdriver land)</p>— Alfred Lucero (@alfienitylucero) <a href="https://twitter.com/alfienitylucero/status/1043247468979183616?ref_src=twsrc%5Etfw">September 21, 2018</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>