Files
supabase/e2e/studio/features/logs.spec.ts
Jordi Enric 55c3fdb49a E2E Testing Setup Consolidation (#35080)
* 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>
2025-06-03 17:37:39 +02:00

91 lines
2.3 KiB
TypeScript

import { expect } from '@playwright/test'
import { test } from '../utils/test'
import { toUrl } from '../utils/to-url'
const LOGS_PAGES = [
{ label: 'API Gateway', route: 'edge-logs' },
{ label: 'Postgres', route: 'postgres-logs' },
]
const mockAPILogs = {
error: null,
result: [
{
id: 'uuid-1',
timestamp: 1713200000000, // 15 Apr 18:53:20"
event_message: 'Random event message: uuid-1',
count: 123,
ok_count: 123,
error_count: 0,
warning_count: 20,
metadata: {
foo: 'bar',
request: {
url: 'https://example.com',
},
response: {
status: 200,
},
},
},
],
}
test.beforeEach(async ({ context }) => {
context.route(/.*logs\.all.*/, async (route) => {
await route.fulfill({
status: 200,
contentType: 'application/json',
body: JSON.stringify(mockAPILogs),
})
})
})
test.describe('Logs', () => {
for (const logPage of LOGS_PAGES) {
test(`${logPage.label} logs page`, async ({ page, ref }) => {
/**
* Navigates to Logs
*/
await page.goto(toUrl(`/project/${ref}/logs/${logPage.route}`))
await expect(page.getByRole('heading', { name: 'Logs & Analytics' }), {
message: 'Logs & Analytics heading should be visible',
}).toBeVisible()
/**
* Shows the logs table
*/
const logsTable = page.getByRole('table')
await expect(logsTable, {
message: 'Logs table should be visible',
}).toBeVisible({ timeout: 20000 })
/**
* Shows the logs data without errors
*/
await expect(page.getByText(mockAPILogs.result[0].event_message), {
message: 'Logs data should be visible',
}).toBeVisible()
/**
* Can select and view log details
*/
const gridcells = page.getByText('Random event message')
await gridcells.click()
const tabPanel = page.getByTestId('log-selection')
await expect(tabPanel).toBeVisible()
// Assert known fixed values instead of extracting text
await expect(tabPanel, {
message: 'Log selection should be visible',
}).toContainText('Random event message: uuid-1')
await expect(tabPanel.getByTestId('log-selection-id'), {
message: 'Log selection ID should be visible',
}).toContainText('uuid-1')
})
}
})