Files
universe/e2e/03-bridge.spec.ts
Hanzo Dev 548440d94f k8s(financial): bump lux-financial to v1.2.0
Expanded solutions (10 new industries) and products (Compliance & Data
section) to cover full docs.lux.financial capability surface.
2026-04-20 22:33:19 -07:00

68 lines
3.1 KiB
TypeScript

import { test, expect } from '@playwright/test'
import { getUrls, httpStatus, snap } from './helpers'
const urls = getUrls()
// ── Bridge Frontend ─────────────────────────────────────────────────
test.describe('Bridge — Frontend Accessibility', () => {
test('bridge.lux.network loads', async ({ page }) => {
const res = await page.goto(urls.bridge, { timeout: 60_000, waitUntil: 'domcontentloaded' })
const status = res?.status() || 0
console.log(` Bridge HTTP: ${status}`)
// Accept 200 (live) or redirects
expect([200, 301, 302, 307]).toContain(status)
await snap(page, 'bridge-home')
})
test('bridge has visible UI elements', async ({ page }) => {
await page.goto(urls.bridge, { waitUntil: 'domcontentloaded' })
await page.waitForTimeout(5000)
const title = await page.title()
expect(title.length).toBeGreaterThan(0)
await snap(page, 'bridge-ui')
})
})
// ── Bridge — Chain Selection ────────────────────────────────────────
test.describe('Bridge — Chain Selection UI', () => {
test('bridge shows source/destination chain selectors', async ({ page }) => {
await page.goto(urls.bridge, { waitUntil: 'domcontentloaded' })
await page.waitForTimeout(5000)
// Look for bridge-specific UI: chain selectors, transfer button
const bridgeUI = page.locator(
'[class*="bridge"], [class*="Bridge"], [class*="transfer"], [class*="Transfer"], ' +
'button:has-text("Transfer"), button:has-text("Bridge"), ' +
'text=/from/i, text=/to/i'
).first()
const visible = await bridgeUI.isVisible({ timeout: 10_000 }).catch(() => false)
if (visible) {
await snap(page, 'bridge-chain-select')
}
// At minimum page loaded
expect(await page.title()).toBeTruthy()
})
})
// ── Bridge — Cross-Chain Routes ─────────────────────────────────────
test.describe('Bridge — Supported Routes', () => {
test('bridge supports Lux C-Chain', async ({ page }) => {
const res = await page.goto(urls.bridge, { waitUntil: 'domcontentloaded' })
expect(res?.status()).toBe(200)
await page.waitForTimeout(5000)
// Verify the page rendered (SPA may not have text content immediately)
const bodyLen = (await page.textContent('body'))?.length || 0
expect(bodyLen).toBeGreaterThan(0)
await snap(page, 'bridge-routes')
})
})
// ── Bridge API ──────────────────────────────────────────────────────
test.describe('Bridge — API Health', () => {
test('bridge API status endpoint', async ({ request }) => {
const status = await httpStatus(request, `${urls.bridge}/api/v1/status`)
console.log(` Bridge API: HTTP ${status}`)
// May not be deployed yet, but endpoint should respond
expect(status).toBeGreaterThan(0)
})
})