diff --git a/e2e/tests/combinatorial-flows.spec.ts b/e2e/tests/combinatorial-flows.spec.ts index 3e516082..594849e4 100644 --- a/e2e/tests/combinatorial-flows.spec.ts +++ b/e2e/tests/combinatorial-flows.spec.ts @@ -1,5 +1,6 @@ import { test, expect, ElectronApplication, Page, Locator } from '@playwright/test'; import { launchApp, waitForMainWindow } from '../helpers/launch'; +import { startVisibility, VisibilityHandle } from '../helpers/visibility'; import fs from 'fs'; import os from 'os'; import path from 'path'; @@ -62,14 +63,23 @@ test.describe('combinatorial user flows', () => { expect(fresh.map((e) => `${e.kind}: ${e.text}`).join('\n'), `unexpected errors during: ${label}`).toBe(''); }; + let vis: VisibilityHandle; + test.beforeAll(async () => { app = await launchApp(); page = await waitForMainWindow(app); + vis = await startVisibility(app, page, 'combinatorial-flows'); page.on('pageerror', (e) => errors.push({ kind: 'pageerror', text: String(e?.message ?? e) })); page.on('console', (m) => { if (m.type() === 'error') errors.push({ kind: 'console', text: m.text() }); }); baselineCrashes = rendererCrashes(); }); - test.afterAll(async () => { await app?.close().catch(() => {}); }); + test.afterAll(async () => { + try { await vis?.stop(); } catch {} + await app?.close().catch(() => {}); + }); + // Per-test mark so events.jsonl is searchable by test name. + test.beforeEach(async ({}, info) => { vis?.mark('test-begin', { title: info.titlePath.join(' > ') }); }); + test.afterEach(async ({}, info) => { vis?.mark('test-end', { title: info.titlePath.join(' > '), status: info.status }); }); // The "test the test" sanity check: prove our must() helper fails loudly when // a target is missing. If this ever passes silently, every later assertion is diff --git a/e2e/tests/real-agent-roundtrip.spec.ts b/e2e/tests/real-agent-roundtrip.spec.ts index e230b229..0310a079 100644 --- a/e2e/tests/real-agent-roundtrip.spec.ts +++ b/e2e/tests/real-agent-roundtrip.spec.ts @@ -1,5 +1,6 @@ import { test, expect, ElectronApplication, Page } from '@playwright/test'; import { launchApp, waitForMainWindow, hasAnyProviderKey } from '../helpers/launch'; +import { startVisibility, VisibilityHandle } from '../helpers/visibility'; import fs from 'fs'; import os from 'os'; import path from 'path'; @@ -25,6 +26,7 @@ test.describe('real agent round-trip', () => { let app: ElectronApplication; let page: Page; let baselineCrashes = 0; + let vis: VisibilityHandle; // Whole describe skips with a clear reason when no key is wired, so we // never silently green this on a leg that can't actually test it. @@ -33,9 +35,13 @@ test.describe('real agent round-trip', () => { test.skip(process.env.CI !== 'true' && process.env.OPENSWARM_E2E_SEED !== '1', 'seed gate not enabled; set OPENSWARM_E2E_SEED=1 for local runs'); app = await launchApp(); page = await waitForMainWindow(app); + vis = await startVisibility(app, page, 'real-agent-roundtrip'); baselineCrashes = crashCount(); }); - test.afterAll(async () => { await app?.close().catch(() => {}); }); + test.afterAll(async () => { + try { await vis?.stop(); } catch {} + await app?.close().catch(() => {}); + }); test('compose, send, and receive an assistant reply', async ({}, info) => { // Find the New Agent button on the dashboard toolbar.