修 appSurface 生成任务用例的异步排空:等阶段合并、等轮询退出

- 阶段文案与徽标改用 waitFor:本地队列的「排队中。」先于后端记录合并,同步断言在整套连跑时抢跑
- 用例收尾连等两个 poll 周期(2s)并断言账本读计数不再增长,确认这条轮询链在本用例内退出
- 留在线上的轮询醒来会打进下一个用例的 spy(宿主按调用时读 __TAURI__),故排空放在用例内,未动全局 harness
- 未改生产:后台任务跨面板保活保持原样
This commit is contained in:
2026-09-17 19:44:48 +08:00
parent e0f9f811b7
commit 6fcf42e4ac
@@ -11831,8 +11831,15 @@ export function registerProjectAgentStatusTests() {
// 2) 面板关掉之后任务仍在「生成任务」面板里,阶段文案来自后端记录。
const taskPanel = await screen.findByRole('region', { name: '生成任务' });
expect(within(taskPanel).getByText('第一条设计图')).not.toBeNull();
expect(within(taskPanel).getByText('正在生成。')).not.toBeNull();
expect(within(taskPanel).getByText('生成中')).not.toBeNull();
/**
* ****
* 2s
*
*/
await waitFor(() => {
expect(within(taskPanel).getByText('正在生成。')).not.toBeNull();
expect(within(taskPanel).getByText('生成中')).not.toBeNull();
});
// 非模态:没有全屏遮罩、没有 aria-modal。
expect(taskPanel.getAttribute('aria-modal')).toBeNull();
expect(document.querySelector('[aria-modal="true"]')).toBeNull();
@@ -11890,6 +11897,28 @@ export function registerProjectAgentStatusTests() {
expect(
calls.filter((call) => call.command === 'get_local_game_manifest').length,
).toBeGreaterThanOrEqual(manifestReadsBefore + 2);
/**
* 5) 退 mock completed poll
* 2s
*
* 宿 `window.__TAURI__` afterEach
* mock/**** spy
* `does not open a preview before a local project is initialized`
* projectPath harness
*/
const ledgerReads = () =>
calls.filter(
(call) => call.command === 'list_local_project_asset_generations',
).length;
await act(async () => {
await new Promise((resolve) => setTimeout(resolve, 2_200));
});
const ledgerReadsAfterFirstQuietPeriod = ledgerReads();
await act(async () => {
await new Promise((resolve) => setTimeout(resolve, 2_200));
});
expect(ledgerReads()).toBe(ledgerReadsAfterFirstQuietPeriod);
}, 30_000);
/**