61 lines
2.1 KiB
TypeScript
61 lines
2.1 KiB
TypeScript
|
|
import { test, expect } from '@playwright/test'
|
||
|
|
|
||
|
|
test.describe('Exchange Detail (/exchanges/:id)', () => {
|
||
|
|
test('renders exchange header, timeline, and message panels', async ({ page }) => {
|
||
|
|
await page.goto('/exchanges/E-2026-03-18-00201')
|
||
|
|
|
||
|
|
// Exchange header — use the one NOT in the breadcrumb
|
||
|
|
await expect(page.getByText('E-2026-03-18-00201').nth(1)).toBeVisible()
|
||
|
|
|
||
|
|
// Header stats
|
||
|
|
await expect(page.getByText('Duration').first()).toBeVisible()
|
||
|
|
await expect(page.getByText('Processors').first()).toBeVisible()
|
||
|
|
|
||
|
|
// Processor Timeline section
|
||
|
|
await expect(page.getByText('Processor Timeline').first()).toBeVisible()
|
||
|
|
|
||
|
|
// Timeline/Flow toggle buttons
|
||
|
|
await expect(page.getByRole('button', { name: 'Timeline' })).toBeVisible()
|
||
|
|
await expect(page.getByRole('button', { name: 'Flow' })).toBeVisible()
|
||
|
|
|
||
|
|
// Message IN panel
|
||
|
|
await expect(page.getByText('Message IN')).toBeVisible()
|
||
|
|
await expect(page.getByText('Headers').first()).toBeVisible()
|
||
|
|
await expect(page.getByText('Body').first()).toBeVisible()
|
||
|
|
})
|
||
|
|
|
||
|
|
test('switching between Timeline and Flow view', async ({ page }) => {
|
||
|
|
await page.goto('/exchanges/E-2026-03-18-00201')
|
||
|
|
|
||
|
|
// Default view is timeline (gantt)
|
||
|
|
const timelineBtn = page.getByRole('button', { name: 'Timeline' })
|
||
|
|
const flowBtn = page.getByRole('button', { name: 'Flow' })
|
||
|
|
|
||
|
|
// Switch to Flow view
|
||
|
|
await flowBtn.click()
|
||
|
|
|
||
|
|
// Flow view should render (RouteFlow component)
|
||
|
|
await expect(flowBtn).toHaveClass(/active|Active/)
|
||
|
|
|
||
|
|
// Switch back to Timeline
|
||
|
|
await timelineBtn.click()
|
||
|
|
await expect(timelineBtn).toHaveClass(/active|Active/)
|
||
|
|
})
|
||
|
|
|
||
|
|
test('not-found exchange shows warning', async ({ page }) => {
|
||
|
|
await page.goto('/exchanges/nonexistent-id')
|
||
|
|
|
||
|
|
await expect(page.getByText('not found', { exact: false })).toBeVisible()
|
||
|
|
})
|
||
|
|
|
||
|
|
test('breadcrumb navigation works', async ({ page }) => {
|
||
|
|
await page.goto('/exchanges/E-2026-03-18-00201')
|
||
|
|
|
||
|
|
// Click Applications breadcrumb to go back
|
||
|
|
const appsBreadcrumb = page.getByRole('link', { name: 'Applications' })
|
||
|
|
await appsBreadcrumb.click()
|
||
|
|
|
||
|
|
await expect(page).toHaveURL(/\/apps/)
|
||
|
|
})
|
||
|
|
})
|