mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-24 16:54:43 +00:00
Reverts the Preparing component changes from b2857110b so the progress bar
turns red (bg-destructive) and the error text shows below it when boot.error
is set, instead of bailing out with an early return null.
The corresponding e2e guard in waitForBootFailure (e2e/fixtures.ts) that
rejected any progress bar in the DOM is dropped — it now waits for the
failure dialog (Retry/Repair/Use local gateway/Connection settings) or the
"Desktop boot failed" toast. The boot-failure.spec.ts header comment is
updated to match.
Verified: tsc clean, vitest boot-failure-reauth (21/21) + boot-failure-overlay
(3/3) pass, npm run build clean, playwright e2e/boot-failure.spec.ts 2/2 pass.
47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
/**
|
|
* E2E boot-failure tests — verify the app shows an error overlay when the
|
|
* backend can't start.
|
|
*
|
|
* Injects a fake boot error (HERMES_DESKTOP_BOOT_FAKE_ERROR) so the backend
|
|
* resolution fails with a controlled error message. The app should show the
|
|
* BootFailureOverlay with retry/repair actions.
|
|
*
|
|
* Prerequisite: `npm run build` must have been run so dist/ exists.
|
|
*/
|
|
|
|
import { test } from '@playwright/test'
|
|
|
|
import {
|
|
type DeadBackendFixture,
|
|
setupDeadBackend,
|
|
waitForBootFailure,
|
|
} from './fixtures'
|
|
import { expectVisualSnapshot } from './visual-snapshot'
|
|
|
|
let fixture: DeadBackendFixture | null = null
|
|
|
|
test.afterAll(async () => {
|
|
await fixture?.cleanup()
|
|
fixture = null
|
|
})
|
|
|
|
test.describe('boot failure with dead backend', () => {
|
|
test('app shows error state', async () => {
|
|
// Inject a fake boot error so the backend resolution "fails" with a
|
|
// controlled error message. This is the only reliable way to trigger
|
|
// BootFailureOverlay in dev mode.
|
|
fixture = await setupDeadBackend({ fakeError: true })
|
|
|
|
await waitForBootFailure(fixture.page, 90_000)
|
|
})
|
|
|
|
test('screenshot of error state', async () => {
|
|
if (!fixture) {
|
|
test.skip(true, 'Previous test failed — no app running')
|
|
|
|
return
|
|
}
|
|
|
|
await expectVisualSnapshot(fixture!.page, { name: 'boot-failure-error-state', app: fixture.app })
|
|
})
|
|
})
|