atmosphere explorer pds.ls

add end-to-end browser tests against a local PDS, run in Tangled CI #71

targeting main from tompscanlan.bsky.social/pdsls:e2e-tests
Closed opened by and assigned to tompscanlan.bsky.social
targeting main from tompscanlan.bsky.social/pdsls:e2e-tests

Hi, thanks for making pds.ls. It's a super handy tool.

I've been working on my own projects, and made a thing to help testing atproto apps without disrupting the main bluesky/community network. I feel like pds.ls is just on the edge of wanting an e2e test and I didn't see one, so here is a starting point.

This adds Playwright tests in e2e/, which open this commit's build against a local PDS and PLC directory (set up in snowglobe.yml), and a Tangled workflow to run them. They browse a PDS, a repo and its records, and sign in through the PDS to create and delete a record. No app code changes.

The workflow runs on every push and pull request, and takes 2 to 6 minutes. Adjust as desired.

Two parts are temporary, and I plan to remove both if this change is interesting:

  • The sign-in test needs a CI step that runs iptables in a privileged container. The CI machine's firewall otherwise blocks the test network from reaching PDSls.
  • The workflow pins snowglobe 0.3.0 with an npm override, for a dependency bug.

Anyway, hope it is helpful and I'm happy to change anything, or to drop it if you don't want the extra layer of testing.

Commits 2

e2e: sign in through the PDS, and create and delete a record
e2e: browser tests against a local PDS, run in Tangled CI