* add new e2e folder * add local supabase and confitional storage * fix e2e selfhosted * update actions * add correct e2e folder * fix e2e actions * fix action project ids * fix permissions * fix script * fix playwright install * playwright root * pnpm i * fix api rul * add env docs * update run script * only install deps for e2e * use same dep * only install deps for tests * upd lockfile * use official vercel integration * use vercel cli * remove old folder * fix script * rm filter * rename e2e studio package * fix install browsers * add polling for vercel build * use vercel-preview-url package * undo actions * rename ci env to ci * chore:add rls check and make playwright test less flakey (#35348) * update ci action * fix paths * fix browser install * run ci against staging * try caching builds * fix envs * fix env check * fix sign in * fix sign in url * fix envs and url * fix caching * fix race condition in sign in page * fix race condition in sign in page * add check to see if being redirected * fix caching, check IS_PLATFORM var * log is_platform * try vercel build * fix vercel project id * fix path * add temp vercel.json file * fix paths * undo project id stuff * rm cwd * fix path * fix paths again * fix path * fix base url * try different fix * fix config base url * fix base studio url issues * retain video on fails * Update e2e/studio/README.md Co-authored-by: Copple <10214025+kiwicopple@users.noreply.github.com> * Update e2e/studio/README.md Co-authored-by: Copple <10214025+kiwicopple@users.noreply.github.com> * fix env file naming * undo caching * rm old tests folder * fix readme scripts * rm vercel deploy for now, just run build locally * fix url * fix build script * fix is_platform * fix stuck studio start * fix env vars * retain network and logs on fail for better debugging * add apiurl env * back to vercel * disable catpcha * fix test * update environment configuration to remove default URLs for CI and streamline API base URL handling * fix typeerr * fix urls in home.spec * fix urls in logs.spec * fix urls in sqleditor spec * fix table editor spec * add tourl util * use staging api in ci * re add base url env var * fix url in projects page * fix url in sql editor spec * fix sign in not waiting for cookies omfg * fix env var name * fix sql-editor test * simplify table removal * add opt out telemetry step * fix logs tests * fix table editor spec * remove flaky steps from table editor tests * use vercel deployment events instead of build * add studio check * fix condition * debug event * rm if * trigger deploy * undo ac * make opt out button step optional, some envs dont hav eit * use testid for sql run button * use id instaed of timestamp in logs tests * empty * rm retries * up glbal timeout * chore: fix failing sql-editor playwright test (#35767) * chore: fix failing sql-editor playwright test * chore: minor fixes * Chore/update playwright config (#35826) chore: update playwright config * rm supabase project from e2e tests * refactor and simplify environments * fix sql editor test * fix ci env vars * fix * fix on windows * update readme * add playwright install script to readme * rm turbopack trace flag * npm to pnpm for scripts * delete ivan lines --------- Co-authored-by: Michael Ong <minghao_3728@hotmail.com> Co-authored-by: Copple <10214025+kiwicopple@users.noreply.github.com>
2.4 KiB
2.4 KiB
Supabase Studio E2E Tests
Set up
cp .env.local.example .env.local
Edit the .env.local file with your credentials and environment.
Install the playwright browser
pnpm exec playwright install
Environments
Staging
STUDIO_URL=https://supabase.green/dashboard
API_URL=https://api.supabase.green
AUTHENTICATION=true
EMAIL=your@email.com
PASSWORD=yourpassword
PROJECT_REF=yourprojectref
CLI (NO AUTH)
You'll need to run the CLI locally.
STUDIO_URL=http://localhost:54323
API_URL=http://localhost:54323/api
AUTHENTICATION=false
CLI Development (NO AUTH)
You'll need to run Studio in development mode with IS_PLATFORM=false
STUDIO_URL=http://localhost:8082/
API_URL=http://localhost:8082/api
AUTHENTICATION=false
Hosted Development
You'll need to run Studio in development mode with IS_PLATFORM=true
STUDIO_URL=http://localhost:8082/
API_URL=http://localhost:8080/api
AUTHENTICATION=true
EMAIL=your@email.com
PASSWORD=yourpassword
PROJECT_REF=yourprojectref
Running the tests
Check the package.json for the available commands and environments.
Example:
pnpm run e2e
With Playwright UI:
pnpm run e2e -- --ui
Tips for development
- Read Playwright Best Practices
- Use
pnpm run e2e -- --uito get the playwright UI. - Add the tests in
examples/examples.tsto Cursor as context. - Add messages to expect statements to make them easier to debug.
Example:
await expect(page.getByRole('heading', { name: 'Logs & Analytics' }), {
message: 'Logs heading should be visible',
}).toBeVisible()
- Use the test utility instead of playwrights test.
import { test } from '../utils/test'
- Use the PWDEBUG environment variable to debug the tests.
PWDEBUG=1 pnpm run e2e -- --ui
Organization
Name the folders based on the feature you are testing.
e2e/studio/logs/
e2e/studio/sql-editor/
e2e/studio/storage/
e2e/studio/auth/
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:
await page.route(`*/**/logs.all*`, async (route) => {
await route.fulfill({ body: JSON.stringify(mockAPILogs) })
})