from Hacker News

Playwright: Automate Chromium, WebKit and Firefox

by cyrusmg on 1/26/22, 8:12 AM with 140 comments

  • by syspec on 1/27/22, 9:04 PM

    Interesting tidbit:

    One of the main contributors of this project[0], was the core contributor (creator?) of Puppeteer[1], but then I guess left Google to join Microsoft and work on this[2][3].

    [0] - https://github.com/aslushnikov

    [1] - https://github.com/puppeteer/puppeteer/

    [2] - https://github.com/microsoft/playwright/graphs/contributors

    [3] - https://github.com/microsoft/playwright/graphs/contributors

  • by johnnypangs on 1/27/22, 7:41 PM

    What do people thing of playwright vs cypress? I've been considering using playwright instead as it supports more browsers and I feel like it's easier to do production monitoring (by putting it in a aws lambda or using checkly)

    - Cypress: https://www.cypress.io

    - Playwright aws lambda: https://github.com/PauloGoncalvesBH/running-playwright-on-aw...

    - Checkly: https://www.checklyhq.com

  • by simonw on 1/27/22, 7:12 PM

    Electron appear to have dropped support for their previous automated testing framework Spectron - https://github.com/electron-userland/spectron/blob/master/RE... - and now suggest Playwright as an alternative: https://www.electronjs.org/docs/latest/tutorial/automated-te... and https://playwright.dev/docs/api/class-electronapplication/
  • by naasking on 1/27/22, 7:20 PM

    Anyone have experience with Playwright compared to Selenium? I have a fairly large test suite and Selenium produces constant false positive errors, typically due to various timeouts that seem fundamentally unsolvable when running it from .NET. It's just very finicky.

    I don't know if it's Selenium specifically or some problem with the .NET binding, but I figure Microsoft must have better .NET integration so it will at least eliminate that possible source of problems.

  • by forgotmyoldacc on 1/27/22, 9:12 PM

    Benefits of Playwright over Puppeteer - official support for languages outside of JavaScript, and official codegen/record support. Great!
  • by vthommeret on 1/27/22, 8:55 PM

    Reposting my previous notes on Playwright (https://news.ycombinator.com/item?id=30060135):

    I just want to plug Playwright by Microsoft as I've been using it over the past month and have had a really great experience with it: https://playwright.dev It's built by the founders of Puppeteer which came out of the Chrome team. Some things I like about it:

    1. It's reliable and implements auto-waiting as described in the article. You can use modern async/await syntax and it ensures elements are a) attached to the DOM, visible, stable (not animating), can receive events, and are enabled: https://playwright.dev/docs/actionability

    2. It's fast — It creates multiple processes and runs tests in parallel, unlike e.g. Cypress.

    3. It's cross-browser — supports Chrome, Safari, and Firefox out-of-the-box. 4. The tracing tools are incredible, you can step through the entire test execution and get a live DOM that you can inspect with your browser's existing developer tools, see all console.logs, etc...

    5. The developers and community are incredibly responsive. This is one of the biggest ones — issues are quickly responded to and addressed often by the founders, pull requests are welcomed and Slack is highly active and respectful.

    My prior experience with end-to-end tests was that they were highly buggy and unreliable and so Playwright was a welcome surprise and inspired me to fully test all the variations of our checkout flow.

  • by hoten on 1/27/22, 10:20 PM

    Having worked with these folks back in Chrome, it's been great seeing this project continue to be successful. Great job!
  • by tzs on 1/28/22, 2:15 AM

    How hard is it for a site (server side or via JavaScript on the page) to tell that it is being accessed via a browser that is being automated with Playwright?

    I've seen some sites that behave differently when the browser is being automated. E.g., if I access fanfiction.net from a browser being automated with Selenium it gets stuck in an endless Cloudflare CAPTCHA loop. Accordingly I've come to prefer automation methods that are less revealing to the site.

  • by Karupan on 1/27/22, 9:58 PM

    Playwright is great, especially if you are dealing with test cases that span multiple domains/contexts. I had to test some user flows which involved logging into two apps, each with three different users to perform and validate various actions. Playwright's context switching made it a breeze. Also, it offers a nice separation of browser automation and test runner API, so it can be used outside of E2E testing as well.
  • by defied on 1/27/22, 7:35 PM

    I’m working on a project that provides remote browsers, running on VMs/containers, capable of running Playwright tests (and Puppeteer scripts): https://headlesstesting.com/

    We’ve seen a consistent growth of interest in people wanting to use Playwright for browser automation (and testing).

  • by ithrow on 1/27/22, 9:26 PM

    For generating PDFs like invoices in a webapp, is libraries like this the way to go these days or is still using a pdf lib the norm?

    Pros of Playwright/Puppeteer:

    Reuse existing HTML/CSS knowledge

    Cons: Requires an external service or shelling out to an external process

    Pros of using a pdf lib:

    Probably better performance, simpler architecture by being in-process.

    Cons: Ad-hoc language for designing the PDF.

  • by thenerdhead on 1/28/22, 12:47 AM

    Playwright is a great tool. I was able to create a proof-of-concept stock screening tool using automation & screenshots of HTML elements to help me get swing trading ideas each morning/night when the market closed. It's a .NET Core console app using a CLI library called spectre.console based on rich(python) and playwright as the workhorse.

    There's so much potential to use playwright in CI/CD with GitHub Actions cron jobs. Really enjoying it so far.

  • by apatheticonion on 1/27/22, 10:59 PM

    The only thing I wish we had was remote browser access - so I could run my tests on a VM (like within a docker image) and use a browser on the host.

    We use TestCafe at work for this purpose. I personally hate TestCafe as it's is an absurd unfocused mess of a browser remote, but it lets me control my browser by navigating to a URL which no other browser remote system does.

  • by tomcam on 1/28/22, 3:24 AM

    What is the … operator for?

        test.use({
          ...devices['iPhone 13 Pro'],
          locale: 'en-US',
          geolocation: { longitude: 12.492507, latitude: 41.889938 },
          permissions: ['geolocation'],
        })
  • by shp0ngle on 1/28/22, 2:55 AM

    Looking at the source, I wonder why lots of the files have Google copyright?

    https://github.com/microsoft/playwright/blob/0d277fa589e9508...

    edit: ah puppeteer was a Google project. I forgot

  • by jwithington on 1/28/22, 2:56 AM

    Are there any products for QA folks that reduce the workload? I find most things are still done manually…
  • by robstain on 1/27/22, 8:35 PM

    Anyone tried BotCity?

    https://botcity.dev

  • by cfrover on 1/28/22, 4:52 PM

    There is also this Github Discussions thread on how it compares with things like Cypress, which is a E2E testing tool used by lots of people on the frontend web. TLDR: Playwright can achieve nearly all the things cypress can & more due to it being a fully scriptable browser - https://github.com/microsoft/playwright/discussions/11201 - https://cathalmacdonnacha.com/cypress-vs-playwright-which-is... - https://alisterbscott.com/2021/10/27/five-reasons-why-playwr...
  • by kundi on 1/27/22, 9:26 PM

    Does it support screencast - video recording of the browser with audio?
  • by tw20212021 on 1/27/22, 8:32 PM

    Is there an open source web testing tool which also integrates a dashboard, keeps track of test runs, creates reports, something that I can just install on a vm and run to test a web app?
  • by brimstedt on 1/27/22, 9:41 PM

    Does anyone know how it compares to NightwatchJs?

    Br

  • by headlessvictim2 on 1/27/22, 8:25 PM

    Off-topic, but our freemium website is under attack by headless browsers.

    The freemium service provides access to compute-heavy machine learning models running on GPUs.

    Hackers blast 50-100 requests in the same second, which clog the servers and block legitimate users.

    We reported IPs to AWS and use Cloudflare "Super Bot Fight Mode" to thwart attacks, but the hackers still break through.

    We don't require accounts, but could impose account requirements if this helps.

    Any suggestions?