mirror of
https://github.com/getpaseo/paseo.git
synced 2026-07-29 12:01:31 +00:00
* test(app/e2e): cover sessions-screen empty state (Cluster G7) Adds one E2E test — opens Sessions on a fresh workspace with no agents and asserts the "No sessions yet" placeholder renders. Uses `withWorkspace` fixture (no agent seeding) so the empty branch runs for the first time. Also exports `expectSessionsEmptyState` helper from archive-tab helpers for reuse in future session-related specs. * fix(app/e2e): run sessions-empty test before archive-tab agents are created The sessions screen shows global agent history for the daemon. Running the empty-state test last meant the reconciliation tests had already created 6 agents, so "No sessions yet" never rendered. Moving the describe block first ensures it runs on a clean daemon (workers:1, fullyParallel:false, archive-tab.spec.ts is first alphabetically). * refactor(app/e2e): guard sessions-empty ordering + dedup selector constant Addresses reviewer feedback on the ordering fragility: - Add NOTE comment above Sessions screen empty state describe explaining why it must remain first in the file (daemon history is global; the reconciliation tests below call createIdleAgent which would pollute it). - Add a fast-fail guard in expectSessionsEmptyState: asserts 0 agent rows with a 5s timeout so a future maintainer sees an immediately actionable failure message rather than a mysterious "No sessions yet" timeout. - Extract AGENT_ROW_SELECTOR constant to eliminate the duplicated [data-testid^="agent-row-"] string shared by getSessionRowByTitle and the new guard. * fix(app/e2e): move sessions-empty to 00-prefixed file to survive new specs agent-stream-ui.spec.ts (merged in #743) sorts before archive-tab.spec.ts and creates agents, breaking the empty-state test. Any future a*-*.spec.ts has the same risk. Fix: move the test to 00-sessions-empty.spec.ts — digit prefix sorts before all alpha-named specs, making the ordering constraint explicit at the filesystem level. Also adds a beforeAll daemon probe that fails fast with a clear message if any pre-existing agents are found, covering both ordering violations and stale daemon state from a previous run. Supporting changes: - Add fetchAgentHistory to ArchiveTabDaemonClient interface (typed as Array<{ id: string }> — enough for the count check) - Remove the test and NOTE comment from archive-tab.spec.ts - Update expectSessionsEmptyState guard comment to reference the new file
38 lines
1.4 KiB
TypeScript
38 lines
1.4 KiB
TypeScript
// "00-" prefix is intentional: this file must sort before every other spec.
|
|
// Sessions history is daemon-global — any agent created by a prior spec hides the empty state.
|
|
// If the beforeAll probe below fails, a spec sorted before this file is creating agents.
|
|
import { test } from "./fixtures";
|
|
import {
|
|
connectArchiveTabDaemonClient,
|
|
expectSessionsEmptyState,
|
|
openSessions,
|
|
} from "./helpers/archive-tab";
|
|
|
|
test.describe("Sessions screen empty state", () => {
|
|
test.beforeAll(async () => {
|
|
const client = await connectArchiveTabDaemonClient();
|
|
try {
|
|
const history = await client.fetchAgentHistory({ page: { limit: 1 } });
|
|
if (history.entries.length > 0) {
|
|
throw new Error(
|
|
`Sessions empty-state precondition failed: daemon already has ${history.entries.length} agent(s). ` +
|
|
`Either a spec that sorts before 00-sessions-empty.spec.ts created agents, ` +
|
|
`or the daemon has stale history from a previous run.`,
|
|
);
|
|
}
|
|
} finally {
|
|
await client.close().catch(() => undefined);
|
|
}
|
|
});
|
|
|
|
test("shows empty placeholder when there is no session history", async ({
|
|
page,
|
|
withWorkspace,
|
|
}) => {
|
|
const workspace = await withWorkspace({ prefix: "sessions-empty-" });
|
|
await workspace.navigateTo();
|
|
await openSessions(page);
|
|
await expectSessionsEmptyState(page);
|
|
});
|
|
});
|