docs(ui-workspace): align approval status contracts

This commit is contained in:
ZiyaZhang
2026-07-30 02:40:31 -07:00
parent 9eee7cb462
commit 285cd60744
5 changed files with 16 additions and 14 deletions

View File

@@ -6,10 +6,10 @@
// layers, per-plugin CSS injection, and a rendered journey reaching chat
// content from the keyless FixtureApiClient transport.
//
// Behavior assertions do NOT belong here: component and wiring behavior is
// pinned by the per-package suites (SlotTestRuntime benches over src), which
// this smoke's plugin set cannot influence — bundling, module-table
// resolution, and boot layering are the only failure modes left to it.
// Component behavior remains owned by per-package suites (SlotTestRuntime
// benches over src). This smoke additionally pins the resident approval
// fixture's cross-plugin projection because only the built connection/runtime/
// workspace graph can prove that transport-to-row path end to end.
import { readFileSync } from 'node:fs'
import { join } from 'node:path'
import { act, cleanup, fireEvent, screen, waitFor, within } from '@testing-library/react'
@@ -105,13 +105,15 @@ it('boots the built plugin graph and renders a fixture session end to end', asyn
// The resident approval fixture proves the assembled workspace plugin
// distinguishes a blocked running session from an ordinarily busy one.
const waitingTitle = await within(tree).findByText('Fixture 历史会话')
const waitingRow = waitingTitle.closest('[role="treeitem"]')
expect(waitingRow?.querySelector('[data-state="warning"]')).not.toBeNull()
expect(waitingRow?.querySelector('[data-state="ongoing"]')).toBeNull()
expect(within(waitingRow as HTMLElement).getByText('Waiting for approval')).not.toBeNull()
const waitingRow = waitingTitle.closest<HTMLElement>('[role="treeitem"]')
expect(waitingRow).not.toBeNull()
if (waitingRow === null) throw new Error('fixture Session title must belong to a tree row')
expect(waitingRow.querySelector('[data-state="warning"]')).not.toBeNull()
expect(waitingRow.querySelector('[data-state="ongoing"]')).toBeNull()
expect(within(waitingRow).getByText('Waiting for approval')).not.toBeNull()
// Opening a session reaches chat content through the fixture transport.
fireEvent.click(await within(tree).findByText('Fixture 历史会话'))
fireEvent.click(waitingTitle)
await waitFor(() => {
expect(document.querySelector('[data-sample="bash-global"]')).not.toBeNull()
}, { timeout: 10_000 })