diff --git a/packages/client/ui-workflow-run/src/client/WorkflowRunPanel.tsx b/packages/client/ui-workflow-run/src/client/WorkflowRunPanel.tsx index 9df3452775..8ab4290dbf 100644 --- a/packages/client/ui-workflow-run/src/client/WorkflowRunPanel.tsx +++ b/packages/client/ui-workflow-run/src/client/WorkflowRunPanel.tsx @@ -358,7 +358,7 @@ export function WorkflowRunPanel({ node, sessionId, useSessions, openSession, t runFacts, focusIsWithin(runContentRef.current), ) - const run = phaseStartedCycle && !advancedRun.open + const run = phaseStartedCycle && runFacts.mode !== 'clean' && !advancedRun.open ? { ...advancedRun, open: true, pendingCleanCollapse: false } : advancedRun return run !== current.run || phasesChanged ? { run, phases } : current diff --git a/packages/client/ui-workflow-run/tests/workflow-run.client.spec.tsx b/packages/client/ui-workflow-run/tests/workflow-run.client.spec.tsx index 4f64b71c01..01c8a80b4c 100644 --- a/packages/client/ui-workflow-run/tests/workflow-run.client.spec.tsx +++ b/packages/client/ui-workflow-run/tests/workflow-run.client.spec.tsx @@ -448,6 +448,18 @@ describe('WorkflowRunPanel', () => { expect(screen.getByRole('button', { name: /未分阶段/ }).getAttribute('aria-expanded')).toBe('false') expect(screen.queryByText('first')).toBeNull() expect(screen.queryByText('second')).toBeNull() + + phaseView.rerender() + expect(runHeader.getAttribute('aria-expanded')).toBe('false') + expect(screen.queryByRole('button', { name: /未分阶段/ })).toBeNull() }) it('initializes a newly observed phase before it becomes interactive', () => {