FabricFabricExperiments
Testing on Databricks

Studio full-stack regression tests

Run the real browser, API, authentication, tenancy, and PostgreSQL journeys before releasing Studio.

The Studio regression suite is deliberately different from a component test. Playwright starts production builds of the API and Studio, signs up a real Better Auth user, verifies that user in PostgreSQL, creates and activates an organization, and seeds a baseline experiment. Browser tests then reuse a saved session to exercise the same paths a customer uses.

What the release gate covers

  • signup form constraints and the live Better Auth endpoint,
  • email/password login and restoration of an existing organization,
  • tenant-scoped experiment pipeline and table views,
  • the five-stage experiment builder and detail page,
  • invalid and valid YAML import,
  • API-key creation, copy-once display, and revocation,
  • WCAG A/AA scans on public authentication plus authenticated experiment, detail, and settings surfaces.

These scenarios contain no conditional skips. A missing database, migration, backend, or browser is a failed precondition and fails the job. CI retains screenshots, traces, and JUnit output when a journey fails.

Run it locally

You need Node 22, pnpm, Chromium for Playwright, and PostgreSQL 16. The example below uses Docker for the database:

docker run --rm --name fx-studio-e2e \
  -e POSTGRES_PASSWORD=postgres \
  -e POSTGRES_DB=fabric_experiments \
  -p 55432:5432 \
  -d postgres:16-alpine

export DATABASE_URL=postgres://postgres:postgres@localhost:55432/fabric_experiments
export BETTER_AUTH_SECRET=local-e2e-secret-at-least-32-bytes

pnpm install --frozen-lockfile
pnpm migrate
pnpm -r build
pnpm --filter @fabricorg/experiments-studio exec playwright install chromium
pnpm --filter @fabricorg/experiments-studio test:e2e

The runner writes authentication state and fixture metadata under apps/studio/.auth/. That directory is ignored by Git. Delete it to force a fresh browser fixture; the setup is otherwise idempotent for repeated local runs.

CI behavior

The repository integration-test job provisions PostgreSQL, applies every migration, runs API integration tests, installs Chromium, and runs the Studio journeys with one worker. Keeping the browser suite in the same job proves that the exact schema accepted by the migration runner also supports the deployed control-plane and Studio contract.

On this page