#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&#39;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>&mdash; 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&#39;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>&mdash; 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&#39;t be &quot;for the open web,&quot; and use technologies that eschew and are hostile to it. <a href="https://t.co/nsJbrcc4OX">https://t.co/nsJbrcc4OX</a></p>&mdash; 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>&mdash; 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&amp;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&amp;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>&mdash; 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>&mdash; 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&#39;t understand how selenium/webdriver work. It leads to things like Cypress advertising that webdriver is flaky. No it isn&#39;t. Your selectors, how your test is written, bad assumptions about system state is flaky.</p>&mdash; 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>&mdash; 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>