Bearer для /metrics (EVOBGP_METRICS_TOKEN); rate limit /v1/auth/config; constant-time agent secret; OTel stub; Playwright smoke; HTTP_PROXY note; checklist обновлён. Co-authored-by: Cursor <[email protected]>
33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
import { test, expect } from '@playwright/test'
|
|
|
|
/**
|
|
* Smoke against local API (+ optional UI). Profile: compose microvps-full.
|
|
*
|
|
* Env:
|
|
* - EVOBGP_E2E_API_URL (default http://127.0.0.1:8080)
|
|
* - EVOBGP_E2E_BASE_URL (default http://127.0.0.1:5173)
|
|
* - EVOBGP_E2E_TOKEN (default dev)
|
|
*/
|
|
const apiBase = process.env.EVOBGP_E2E_API_URL ?? 'http://127.0.0.1:8080'
|
|
const uiBase = process.env.EVOBGP_E2E_BASE_URL ?? 'http://127.0.0.1:5173'
|
|
const token = process.env.EVOBGP_E2E_TOKEN ?? 'dev'
|
|
|
|
test.describe('EvoBGP smoke', () => {
|
|
test('API health and modules list', async ({ request }) => {
|
|
const health = await request.get(`${apiBase}/v1/health`)
|
|
expect(health.ok()).toBeTruthy()
|
|
|
|
const mods = await request.get(`${apiBase}/v1/modules?limit=10`, {
|
|
headers: { Authorization: `Bearer ${token}` },
|
|
})
|
|
expect([200, 401]).toContain(mods.status())
|
|
})
|
|
|
|
test('UI loads when available', async ({ page }) => {
|
|
test.skip(!process.env.EVOBGP_E2E_UI, 'set EVOBGP_E2E_UI=1 to enable UI smoke')
|
|
await page.goto(uiBase)
|
|
await page.waitForLoadState('domcontentloaded')
|
|
await expect(page.locator('body')).toBeVisible()
|
|
})
|
|
})
|