Files
supabase/e2e/studio/README.md
a10bc9a88a feat(unified-logs): compact toggle banner and ArrowDown selects first log (#46812)
Visual cleanup of the Logs sidebar (unified logs):

- Restyle the "Go back to old logs" and "Try Unified Logs" banners as
full-bleed bordered strips (no card), with an icon-only switch-back
button and a tooltip
- Add a "Beta" badge next to the "Logs" sidebar title
- Rename the product from "Logs & Analytics" to "Logs"

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added Unified Logs banner with “Try Unified Logs” and “More
information” actions, plus a “Go back to old logs” utility layout.
  * Show a **“Beta”** badge for Unified Logs eligibility.

* **UX Updates**
* Updated the Logs experience to consistently display under the
**“Logs”** product layout.

* **Tests / Documentation**
* Updated end-to-end checks and examples to expect the **“Logs”**
heading text exactly.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: kemal <hello@kemal.earth>
2026-06-16 10:50:52 +00:00

183 lines
5.5 KiB
Markdown

# Supabase Studio E2E Tests
## Set up
### Prerequisites
#### For Self-Hosted Tests
- Nothing is required, running with IS_PLATFORM=false should run the tests locally with a self hosted docker container
#### For Platform Tests
1. **Create a platform account** - You can authenticate using either:
- Email and password
- GitHub OAuth (requires TOTP 2FA)
2. **Create an organization** on the platform, this can be done if run locally through `mise fullstack`
3. **Generate a Personal Access Token (PAT)** for API access
4. Configure the environment variables below (see Authentication section for details on email vs GitHub auth)
### Configure Environment
Choose the appropriate example file based on your testing scenario:
**For self-hosted tests:**
```bash
cp .env.local.self-hosted.example .env.local
```
**For platform tests with email authentication:**
```bash
cp .env.local.email.example .env.local
```
**For platform tests with GitHub authentication:**
```bash
cp .env.local.github.example .env.local
```
Edit `.env.local` and set the appropriate values based on your test environment (see Environment Variables section below).
### Install the playwright browser
⚠️ This should be done in the `e2e/studio` directory
```bash
cd e2e/studio
pnpm exec playwright install
```
### Environment Variables
Configure your tests by setting the following environment variables in `.env.local`. We have examples of what required on self hosted and platform:
#### Core Configuration
- **`STUDIO_URL`**: The URL where Studio is running (default: `http://localhost:8082`)
- **`API_URL`**: The Supabase API endpoint (default: `https://localhost:8080`)
- **`IS_PLATFORM`**: Set to `true` for platform tests, `false` for self-hosted (default: `false`)
- When `true`: Tests run serially (1 worker) due to API rate limits
- When `false`: Tests run in parallel (5 workers)
#### Authentication (Required for Platform Tests)
⚠️ **Before running platform tests, you must create an account and organization on the platform you're testing.**
Authentication is automatically enabled when either email/password OR GitHub credentials are configured.
##### Email Authentication
- **`EMAIL`**: Your platform account email
- **`PASSWORD`**: Your platform account password
- **`PROJECT_REF`**: Project reference (optional, will be auto-created if not provided)
When both `EMAIL` and `PASSWORD` are set, the tests will authenticate using email/password. HCaptcha is mocked during test setup. Note this only works on local and staging environments
##### GitHub Authentication
- **`GITHUB_USER`**: Your GitHub username
- **`GITHUB_PASS`**: Your GitHub password
- **`GITHUB_TOTP`**: Your GitHub TOTP secret for 2FA (required, as GitHub enforces 2FA)
When `GITHUB_USER`, `GITHUB_PASS`, and `GITHUB_TOTP` are all set, the tests will authenticate using GitHub OAuth with TOTP-based 2FA. The authentication flow handles:
- Clicking "Sign In with GitHub" button
- Filling GitHub credentials
- Generating and submitting TOTP codes
- Handling GitHub authorization prompts
- Automatic retry on failure (up to 3 attempts)
**Getting your GitHub TOTP secret:**
When setting up 2FA on GitHub, you'll see a QR code. Click "enter this text code instead" to reveal the secret key. This is the value to use for `GITHUB_TOTP`.
#### Platform-Specific Variables (Required when `IS_PLATFORM=true`)
- **`ORG_SLUG`**: Organization slug (default: `default`)
- **`SUPA_REGION`**: Supabase region (default: `us-east-1`)
- **`SUPA_PAT`**: Personal Access Token for API authentication (default: `test`)
- **`BRANCH_NAME`**: Name for the test branch/project (default: `e2e-test-local`)
#### Optional Variables
- **`OPENAI_API_KEY`**: Required for the AI Assistant test (`assistant.spec.ts`). Without this variable, the assistant test will be skipped.
- **`VERCEL_AUTOMATION_BYPASS_SELFHOSTED_STUDIO`**: Bypass token for Vercel protection (default: `false`)
#### Setup Commands Based on Configuration
The test setup automatically runs different commands based on your environment:
- **Platform + Localhost** (`IS_PLATFORM=true` and `STUDIO_URL=localhost`): Runs `pnpm run e2e:setup:platform`
- **Platform + Remote** (`IS_PLATFORM=true` and remote `STUDIO_URL`): No web server setup
- **Self-hosted** (`IS_PLATFORM=false`): Runs `pnpm run e2e:setup:selfhosted`
---
## Running the tests
Check the `package.json` for the available commands and environments.
```bash
pnpm run e2e
```
With Playwright UI:
```bash
pnpm run e2e -- --ui
```
---
## Tips for development
- Read [Playwright Best Practices](https://playwright.dev/docs/best-practices)
- Use `pnpm run e2e -- --ui` to get the playwright UI.
- Add the tests in `examples/examples.ts` to Cursor as context.
- Add messages to expect statements to make them easier to debug.
Example:
```ts
await expect(page.getByRole('heading', { name: 'Logs', exact: true }), {
message: 'Logs heading should be visible',
}).toBeVisible()
```
- Use the test utility instead of playwrights test.
```ts
import { test } from '../utils/test'
```
- Use the PWDEBUG environment variable to debug the tests.
```bash
PWDEBUG=1 pnpm run e2e -- --ui
```
---
## What should I test?
- Can the feature be navigated to?
- Does the feature load correctly?
- Can you do the actions (filtering, sorting, opening dialogs, etc)?
---
## API Mocks
Read here: https://playwright.dev/docs/mock#mock-api-requests
Example:
```ts
await page.route(`*/**/logs.all*`, async (route) => {
await route.fulfill({ body: JSON.stringify(mockAPILogs) })
})
```