mirror of
https://github.com/EKKOLearnAI/hermes-web-ui.git
synced 2026-05-25 05:20:15 +00:00
33 lines
1.6 KiB
TypeScript
33 lines
1.6 KiB
TypeScript
import { expect, test } from '@playwright/test'
|
|
import { authenticate, mockHermesApi, TEST_ACCESS_KEY } from './fixtures'
|
|
|
|
test('renders authenticated shell and navigates between key product routes', async ({ page }) => {
|
|
await authenticate(page, TEST_ACCESS_KEY, 'research')
|
|
const api = await mockHermesApi(page)
|
|
|
|
await page.goto('/#/hermes/jobs')
|
|
|
|
await expect(page.getByRole('heading', { name: 'Scheduled Jobs' })).toBeVisible()
|
|
await expect(page.getByText('Nightly Smoke')).toBeVisible()
|
|
|
|
const jobsRequest = api.requests.find((request) => request.pathname === '/api/hermes/jobs')
|
|
expect(jobsRequest?.headers.authorization).toBe(`Bearer ${TEST_ACCESS_KEY}`)
|
|
expect(jobsRequest?.headers['x-hermes-profile']).toBe('research')
|
|
const cronHistoryRequest = api.requests.find((request) => request.pathname === '/api/cron-history')
|
|
expect(cronHistoryRequest?.headers['x-hermes-profile']).toBe('research')
|
|
|
|
const modelsLink = page.locator('aside.sidebar').getByRole('link', { name: /^Models$/ })
|
|
await expect(modelsLink).toHaveAttribute('href', '#/hermes/models')
|
|
await modelsLink.click()
|
|
await expect(page).toHaveURL(/#\/hermes\/models$/)
|
|
await expect(page.getByRole('heading', { name: 'Models' })).toBeVisible()
|
|
await expect(page.getByText('test-model').first()).toBeVisible()
|
|
|
|
const settingsLink = page.locator('aside.sidebar').getByRole('link', { name: /^Settings$/ })
|
|
await expect(settingsLink).toHaveAttribute('href', '#/hermes/settings')
|
|
await settingsLink.click()
|
|
await expect(page).toHaveURL(/#\/hermes\/settings$/)
|
|
await expect(page.getByRole('heading', { name: 'Settings' })).toBeVisible()
|
|
expect(api.unexpectedRequests).toEqual([])
|
|
})
|