File size: 1,608 Bytes
fbf73ff |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
import { test as base, expect } from '@playwright/test'
import { HomePage } from './pages/HomePage'
// Error tests need to override the default mocks, so use base test
const test = base
test.describe('Error Handling', () => {
test('shows error when API fails', async ({ page }) => {
// Mock cases API (needed for page to load)
await page.route('**/api/cases', (route) => {
route.fulfill({
status: 200,
contentType: 'application/json',
body: JSON.stringify({ cases: ['sub-stroke0001'] }),
})
})
// Mock segment API to return error
await page.route('**/api/segment', (route) => {
route.fulfill({
status: 500,
contentType: 'application/json',
body: JSON.stringify({ detail: 'Segmentation failed' }),
})
})
const homePage = new HomePage(page)
await homePage.goto()
await homePage.waitForCasesToLoad()
await homePage.selectCase('sub-stroke0001')
await homePage.runSegmentation()
await homePage.expectErrorVisible()
await expect(homePage.errorAlert).toContainText(/failed/i)
})
test('shows error when cases fail to load', async ({ page }) => {
// Mock cases API to return error
await page.route('**/api/cases', (route) => {
route.fulfill({
status: 500,
contentType: 'application/json',
body: JSON.stringify({ detail: 'Server error' }),
})
})
const homePage = new HomePage(page)
await homePage.goto()
// Case selector should show error state
await expect(page.getByText(/failed to load/i)).toBeVisible()
})
})
|