Our Aurelia 2 and 1’s skeletons shipped with an e2e test option with Cypress.
However, over the years, there are few Cypress related unstable tests that hurt our CI over and over again. Cypress also shipped many major versions with breaking changes over the years, we have been keeping up with them, but certainly don’t enjoy the process. Current Cypress v10 seems introduced some issue in our CI that it’s hard to reproduce in standalone run.
I had a brief play with Playwright. It seems delightful with just one very readable config file to start with. In comparison, Cypress requires quite a few placeholder files to start with.
My vote is always for Playwright. My initial encounter with Cypress was not successful, as it failed to run in a CI environment. There might be some misconfiguration on my part, the point is that Playwright is a breeze in comparison. Moreover, you can your favourite test framework and assertion library in combination. Playwright also offers some of those, but you don’t have to use those infra.
playwright or puppeteer, definitely. the difference is also from an architecture standpoint. while Cypress lives within your page and thus needs to simulate lots of things like iframe/frameset handlers, Pptr/Playwright come via the devtools protocol and offer far more flexibility.
well, FF is kinda supported with Pptr as well. the big difference with Playwright though is that the API is more geared towards testing. convenience methods to wait for presence of elements, filling form fields vs click, type, loose focus.
the baseline is the same though, DevTools protocol.
I’m currently building an automated game tester for a Phaser based game and pptr (as would playwright) are just insanely capable and fast. Screenshots, Har file exports, and code injection just work super smoothly
I recommend using playwright, as it also supports firefox and webkit. If you want to write tests that are understandable for non-tech people, you may also want to combine cucumber with playwright, as you can use the gherkin syntax to write the tests.
e.g.
# Describe what this feature tests
Feature: As a developer I want to test the basic functionality of the e2e-presets steps
# Describe what this scenario tests
Scenario: It is possible to open a page and press a button with the preconfigured steps
Given I open the url 'https://keycode.info/'
When I press the key 'Backspace'
Then I expect the element '.keycode-display' to appear exactly 1 time
# Run one scenario with different parameters
Scenario: Check api's are available as anonymous user
When I call '<url>' as get, then I expect the http status code to be <statusCode>
Examples:
| url | statusCode |
| https://aurelia.io | 200 |
| https://google.ch | 200 |