SIGN IN SIGN UP

Chore/e2e tests GitHub action (#2193)

* ci: add e2e tests workflow against a locally-built Realtime image

Builds the Realtime image from the checkout and swaps it into a local
supabase stack (mise run e2e-local), so it exercises the actual PR
changes rather than whatever image the pinned Supabase CLI bundles.
Runs with --parallel --wait-time 10.

Part of REAL-1037.

* fix: create e2e test RLS policies sequentially, not concurrently

On a fresh database these CREATE POLICY statements actually run (the
IF NOT EXISTS guard only short-circuits once they already exist), and
running them concurrently via Promise.allSettled let them deadlock in
Postgres. The deadlock was silently swallowed, leaving policies
missing and causing RLS violations and channel-subscribe failures in
CI, which always starts from a fresh database.

Part of REAL-1037.

* ci: run only functional e2e tests, skip load tests

Part of REAL-1037.

* chore: scope e2e tests that can suffer from crosstalk.

Some e2e tests in the postgres-changes-filters suite have negation
filters that will match against every other test running concurrently.
This change introduces scoping at the database table level that allows
a test's data to be isolated from other test cases. It only needs to be
used for tests that suffer from this issue, which is typically those
that include negations and risk matching against rows created by other
tests.

* chore: Add isolation to open ended range tests

* chore: don't run test suites that hit pg_changes at the same time.

* chore: opt postgres_changes e2e tests into wait:true acks

Adding this in an attempt to reduce some flakiness. It does help
on a cold start but the wait only waits for the subscription row
to be created, not for the replication poller to be established,
so it still has some gaps.
S
Sean Geoghegan committed
5a258870f3c7ce0ceccdfbbe64eda56a096eff61
Parent: 3625a0b
Committed by GitHub <noreply@github.com> on 9/16/2026, 2:02:00 AM