|
|
@@ -20,6 +20,7 @@ import { connectFreshWorkspace, newEnglishPage, saveFailureShot } from './suppor
|
|
|
const BASE_FIXTURE = fileURLToPath(new URL('./snapshots/live-interactions/session.jsonl', import.meta.url))
|
|
|
const AVAILABLE_CHILD_EXPECTED = fileURLToPath(new URL('./snapshots/subagent-conversation/ui.expected.md', import.meta.url))
|
|
|
const TREE_EXPECTED = fileURLToPath(new URL('./snapshots/subagent-conversation/tree.expected.md', import.meta.url))
|
|
|
+const BRANCHLESS_EXPECTED = fileURLToPath(new URL('./snapshots/subagent-conversation/branchless.expected.md', import.meta.url))
|
|
|
const STALE_CATALOG_EXPECTED = fileURLToPath(new URL('./snapshots/subagent-conversation/stale-catalog.expected.md', import.meta.url))
|
|
|
const SIDEBAR_EXPECTED = fileURLToPath(new URL('./snapshots/subagent-conversation/sidebar.expected.md', import.meta.url))
|
|
|
const UNAVAILABLE_GRANDCHILD_EXPECTED = fileURLToPath(new URL('./snapshots/subagent-conversation/nested.expected.md', import.meta.url))
|
|
|
@@ -396,7 +397,15 @@ describe('web e2e: persisted subagent conversation and human continuation', () =
|
|
|
it('opens an unavailable persisted grandchild after recording the available child', async () => {
|
|
|
onTestFailed(() => saveFailureShot(page, 'web-e2e-subagent-grandchild'))
|
|
|
await page.getByRole('button', { name: '1 subagent' }).click()
|
|
|
- await page.getByRole('treeitem', { name: new RegExp(NESTED_LABEL) }).click()
|
|
|
+ const tree = page.getByRole('tree', { name: 'Subagent sessions' })
|
|
|
+ const nestedRow = tree.getByRole('treeitem', { name: new RegExp(NESTED_LABEL) })
|
|
|
+ expect(await nestedRow.locator(':scope > *').count()).toBe(1)
|
|
|
+ await compareOrRefreshGolden(
|
|
|
+ BRANCHLESS_EXPECTED,
|
|
|
+ await captureStableAria(page, '[role="tree"][aria-label="Subagent sessions"]', scaffold.workspaceCwd),
|
|
|
+ MODE,
|
|
|
+ )
|
|
|
+ await nestedRow.click()
|
|
|
await page.getByText('The parent session is offline; reopen it to continue sending messages.').waitFor()
|
|
|
const hierarchy = page.getByRole('navigation', { name: 'Session hierarchy' })
|
|
|
const crumbs = await hierarchy.getByRole('button').allTextContents()
|