feat: make navigation use native links (#973)

This commit is contained in:
Maxim Kirilyuk
2026-05-24 14:13:42 +03:00
committed by GitHub
parent e743c81ad3
commit acdf18793c
20 changed files with 419 additions and 46 deletions
+6 -2
View File
@@ -16,12 +16,16 @@ test('renders authenticated shell and navigates between key product routes', asy
const cronHistoryRequest = api.requests.find((request) => request.pathname === '/api/cron-history')
expect(cronHistoryRequest?.headers['x-hermes-profile']).toBe('research')
await page.locator('aside.sidebar').getByRole('button', { name: /^Models$/ }).click()
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()
await page.locator('aside.sidebar').getByRole('button', { name: /^Settings$/ }).click()
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([])
+37
View File
@@ -0,0 +1,37 @@
import { expect, test } from '@playwright/test'
import { authenticate, mockHermesApi, TEST_ACCESS_KEY } from './fixtures'
const sampleSession = {
id: 'session-native-1',
title: 'Native Link Session',
source: 'cli',
model: 'test-model',
provider: 'test-provider',
profile: 'research',
started_at: 1_700_000_000,
ended_at: null,
last_active: 1_700_000_100,
message_count: 2,
}
test('sidebar navigation exposes native links', async ({ page }) => {
await authenticate(page, TEST_ACCESS_KEY, 'research')
await mockHermesApi(page)
await page.goto('/#/hermes/chat')
const models = page.locator('aside.sidebar').getByRole('link', { name: /^Models$/ })
await expect(models).toHaveAttribute('href', '#/hermes/models')
const history = page.locator('aside.sidebar').getByRole('link', { name: /^History$/ })
await expect(history).toHaveAttribute('href', '#/hermes/history')
})
test('session rows expose native session links', async ({ page }) => {
await authenticate(page, TEST_ACCESS_KEY, 'research')
await mockHermesApi(page, { sessions: [sampleSession] })
await page.goto('/#/hermes/chat')
const sessionLink = page.locator('.session-items a.session-item').first()
await expect(sessionLink).toHaveAttribute('href', '#/hermes/session/session-native-1?profile=research')
await expect(sessionLink).toContainText('Native Link Session')
})