From 57d4f63ac3e69f33ccc67799602c260f833aa092 Mon Sep 17 00:00:00 2001 From: Neil <4138956+nwparker@users.noreply.github.com> Date: Sun, 6 Sep 2026 18:20:49 -0700 Subject: [PATCH] test: refresh palette identities and structured-session journal fixtures (#19165) * test: persist palette fixture names across inventory refresh * test: locate palette workspaces by host-qualified identity * test: supply journal activity clocks in branch-rename fixtures --- .../first-work-branch-rename.test.ts | 2 + .../e2e/worktree-jump-palette-filter.spec.ts | 46 +++++++++++++------ 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/src/main/agent-hooks/first-work-branch-rename.test.ts b/src/main/agent-hooks/first-work-branch-rename.test.ts index fbe0dca909f..2464b3bf2a0 100644 --- a/src/main/agent-hooks/first-work-branch-rename.test.ts +++ b/src/main/agent-hooks/first-work-branch-rename.test.ts @@ -101,6 +101,7 @@ describe('maybeAutoRenameBranchOnFirstWork', () => { }) const items: AgentJournalRenderItem[] = [] const journal = { + lastActivityAt: () => 0, snapshot: () => ({ items }), isReadOnly: false } as unknown as AgentSessionJournal @@ -172,6 +173,7 @@ describe('maybeAutoRenameBranchOnFirstWork', () => { getRepo: () => ({ id: REPO_ID, kind: 'folder', path: '/workspace/platform' }) as Repo }) const journal = { + lastActivityAt: () => 0, isReadOnly: false, snapshot: () => ({ items: [ diff --git a/tests/e2e/worktree-jump-palette-filter.spec.ts b/tests/e2e/worktree-jump-palette-filter.spec.ts index 7461ce2b7c6..5b9a2cf9e29 100644 --- a/tests/e2e/worktree-jump-palette-filter.spec.ts +++ b/tests/e2e/worktree-jump-palette-filter.spec.ts @@ -1,4 +1,7 @@ import type { Locator, Page } from '@stablyai/playwright-test' +import type { ExecutionHostId } from '../../src/shared/execution-host' +import { getPaletteWorktreeIdentity } from '../../src/renderer/src/lib/palette-repo-resolution' +import { encodePaletteIdentity } from '../../src/renderer/src/lib/palette-match/palette-ranking' import { expect, test } from './helpers/orca-app' import { waitForActiveWorktree, waitForSessionReady } from './helpers/store' @@ -12,18 +15,25 @@ type PaletteFilterFixture = { localRepoId: string localWorktreeId: string remoteWorktreeId: string + remoteHostId: ExecutionHostId } async function seedPaletteFilterFixture(page: Page): Promise { return page.evaluate( - ({ localProject, remoteHost, remoteProject, remoteWorkspace }) => { + async ({ localProject, remoteHost, remoteProject, remoteWorkspace }) => { const store = window.__store if (!store) { throw new Error('window.__store is unavailable') } + const sourceRepo = store.getState().repos[0] + if ( + !sourceRepo || + !(await store.getState().updateRepo(sourceRepo.id, { displayName: localProject })) + ) { + throw new Error('Failed to persist the local palette fixture name') + } const state = store.getState() - const sourceRepo = state.repos[0] const sourceWorktree = Object.values(state.worktreesByRepo) .flat() .find((worktree) => worktree.repoId === sourceRepo?.id && !worktree.isArchived) @@ -60,12 +70,7 @@ async function seedPaletteFilterFixture(page: Page): Promise - repo.id === sourceRepo.id ? { ...repo, displayName: localProject } : repo - ), - remoteRepo - ], + repos: [...state.repos, remoteRepo], sshTargetLabels, worktreesByRepo: { ...state.worktreesByRepo, @@ -79,7 +84,8 @@ async function seedPaletteFilterFixture(page: Page): Promise { @@ -174,7 +184,9 @@ test.describe('Worktree jump-palette filters', () => { await selectRemoteHost(orcaPage, true) await expect(filterTrigger(orcaPage)).toContainText('1') await expect(palette(orcaPage).getByLabel(`Remove filter ${REMOTE_HOST}`)).toBeVisible() - await expect(worktreeRow(orcaPage, fixture.remoteWorktreeId)).toBeVisible() + await expect( + worktreeRow(orcaPage, fixture.remoteWorktreeId, fixture.remoteHostId) + ).toBeVisible() await expect(worktreeRow(orcaPage, fixture.localWorktreeId)).toHaveCount(0) // P2: host and repository fields intersect, with the filter-specific empty state. @@ -209,7 +221,9 @@ test.describe('Worktree jump-palette filters', () => { await palette(orcaPage).getByPlaceholder(SEARCH_PLACEHOLDER).fill('E2E Palette') await expect(filterTrigger(orcaPage)).toContainText('1') await expect(worktreeRow(orcaPage, fixture.localWorktreeId)).toBeVisible() - await expect(worktreeRow(orcaPage, fixture.remoteWorktreeId)).toHaveCount(0) + await expect(worktreeRow(orcaPage, fixture.remoteWorktreeId, fixture.remoteHostId)).toHaveCount( + 0 + ) }) test('opens with the sidebar repository scope without widening it', async ({ orcaPage }) => { @@ -224,7 +238,9 @@ test.describe('Worktree jump-palette filters', () => { await expect(filterTrigger(orcaPage)).toContainText('1') await expect(palette(orcaPage).getByLabel(`Remove filter ${LOCAL_PROJECT}`)).toBeVisible() await expect(worktreeRow(orcaPage, fixture.localWorktreeId)).toBeVisible() - await expect(worktreeRow(orcaPage, fixture.remoteWorktreeId)).toHaveCount(0) + await expect(worktreeRow(orcaPage, fixture.remoteWorktreeId, fixture.remoteHostId)).toHaveCount( + 0 + ) }) test('pressing Enter creates a worktree from a typed name', async ({ orcaPage }) => {