radicle-interface icon indicating copy to clipboard operation
radicle-interface copied to clipboard

Migrate from Cypress to Playwright

Open rudolfs opened this issue 2 years ago • 0 comments

Because Playwright is more flexible and has better DX. We also want to mock less and have true integration tests that actually check that all the tools work together smoothly and allows us to catch bugs that affect users early on.

  • [x] set up Playwright scaffolding
  • [x] make app configurable during runtime, so we can test different configurations
  • [x] move global variable type definitions to a central place and document how they are used
  • [x] move all tests to /tests
  • [x] replace any mocks with a real http backend running in a docker container
  • [x] replace check-build with playwright equivalent
  • [x] warn if http-api container isn't started when running tests locally
  • [x] figure out why failing tests on console errors doesn't work in headless mode
  • [x] upload test failure assets to CI
  • [x] add time manipulation stubs

Specs TBD:

global
  - theme switching
  - font switching

seeds page
  - title, address, id, port, version
  - projects list
  - navigate from URL -> http://localhost:3000/seeds/0.0.0.0
  - navigate from project source page clicking on "0.0.0.0" button

source browsing
  - deep link to file source line number
  - copy URN to clipboard
  - copy peerId to clipboard
  - clone dropdown
    - copy the two commands to clipboard
  - readme could not be loaded
    http://localhost:3000/seeds/0.0.0.0/rad:git:hnrkgd7sjt79k4j59ddh11ooxg18rk7soej8o/tree/335dd6dc89b535a4a31e9422c803199bb6b0a09a

  - peer without identity
    - in peer selector
    - in commits listing and single commit view

commits tab
  - navigate to source at a specific revision
  - more button failing test

single commit view
  - title, description, commit sha
  - author
  - timestamp
  - additions/deletions
  - diff
    - modified http://localhost:3000/seeds/0.0.0.0/rad:git:hnrkgd7sjt79k4j59ddh11ooxg18rk7soej8o/remotes/hyy1k6ggg45pi7ip7ksyn1wt1ob4w5zh1awtg4qu3cxmbh5mws8pj1/commits/0be0f0302269b362be0bfe72aa4843eceaac5e3f
    - created  http://localhost:3000/seeds/0.0.0.0/rad:git:hnrkgd7sjt79k4j59ddh11ooxg18rk7soej8o/remotes/hyn1mjueopwzrmb18c3zmgg8ei8qunn5wpg76ouymytfqkfxqx7bun/commits/d6318f7f3d9c15b8ac6dd52267c53220d00f0982
    - deleted  http://localhost:3000/seeds/0.0.0.0/rad:git:hnrkgd7sjt79k4j59ddh11ooxg18rk7soej8o/remotes/hyn1mjueopwzrmb18c3zmgg8ei8qunn5wpg76ouymytfqkfxqx7bun/commits/cd13c2d9a8a930d64a82b6134b44d1b872e33662

navigation
  - test routing from various urls
  - navigate to a project from the landing page
  - navigate to a project via search
  - through a seed project listing

Follow-ups:

  • Ethereum feature testing
    • refactor wallet/session so that Ethereum features can be disabled via config
  • visual snapshot tests
    • keep heavy assets in a different history so that the repo can be pruned later
  • test multiple seeds simultaneously
    • search relies on this
    • we need to refactor the app to allow adding multiple local seeds on different ports

rudolfs avatar Oct 26 '22 14:10 rudolfs