Files
resolutionflow/frontend/e2e/history.spec.ts
Michael Chihlas 1e3a6cfa01
All checks were successful
Mirror to GitHub / mirror (push) Successful in 12s
CI / frontend (pull_request) Successful in 5m43s
CI / backend (pull_request) Successful in 10m21s
CI / e2e (pull_request) Successful in 11m23s
fix(e2e): harden card selectors for session resume
Co-Authored-By: Codex <noreply@openai.com>
2026-04-25 16:42:33 -04:00

54 lines
1.9 KiB
TypeScript

import { expect, test } from '@playwright/test'
import {
createAuthenticatedApiContext,
createSession,
createTroubleshootingTree,
disposeApiContext,
uniqueName,
} from './helpers/api'
test.describe('session history smoke tests', () => {
test('can filter sessions by ticket and client, then open details', async ({ page }) => {
const api = await createAuthenticatedApiContext()
const ticketNumber = `PW-HISTORY-${Date.now()}`
const clientName = uniqueName('History Client')
const tree = await createTroubleshootingTree(api, {
name: uniqueName('Playwright History Flow'),
})
const session = await createSession(api, tree.id, {
ticket_number: ticketNumber,
client_name: clientName,
})
try {
await page.goto('/sessions')
await expect(
page.getByRole('heading', { name: 'Session History', exact: true }),
).toBeVisible()
// Default tab on /sessions is "AI Sessions"; flow sessions live behind
// the "Flow Sessions" tab and only that tab exposes ticket/client filters.
await page.getByRole('button', { name: 'Flow Sessions' }).click()
await page.getByPlaceholder('Search by ticket number...').fill(ticketNumber)
await page.getByPlaceholder('Search by client name...').fill(clientName)
const sessionCard = page
.getByTestId('flow-session-card')
.filter({ hasText: ticketNumber })
.filter({ hasText: clientName })
.first()
await expect(sessionCard).toBeVisible()
await expect(sessionCard.getByText(tree.name)).toBeVisible()
await sessionCard.getByRole('button', { name: 'View Details' }).click()
await expect(page).toHaveURL(new RegExp(`/sessions/${session.id}$`))
await expect(page.getByRole('heading', { name: ticketNumber })).toBeVisible()
} finally {
await disposeApiContext(api)
}
})
})