fix(editor): Continue manually triggered evaluation runs (#30814)

This commit is contained in:
Benjamin Schroth 2026-05-20 22:13:56 +02:00 committed by GitHub
parent 41c876ea68
commit 3115e9baaf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 21 additions and 2 deletions

View File

@ -326,6 +326,22 @@ describe('useRunWorkflow({ router })', () => {
);
});
it('should use the passed-in workflowState when injection is unavailable', async () => {
vi.mocked(injectWorkflowState).mockReturnValue(undefined as unknown as WorkflowState);
const setActiveExecutionId = vi.spyOn(workflowState, 'setActiveExecutionId');
const { runWorkflowApi } = useRunWorkflow({ router, workflowState });
vi.mocked(pushConnectionStore).isConnected = true;
vi.mocked(workflowsStore).runWorkflow.mockResolvedValue({
executionId: '123',
waitingForWebhook: false,
});
await expect(runWorkflowApi({} as IStartRunData)).resolves.not.toThrow();
expect(setActiveExecutionId).toHaveBeenCalled();
});
it('should successfully run a workflow', async () => {
const setActiveExecutionId = vi.spyOn(workflowState, 'setActiveExecutionId');
const { runWorkflowApi } = useRunWorkflow({ router });

View File

@ -55,13 +55,14 @@ import { useCanvasOperations } from './useCanvasOperations';
import { chatEventBus } from '@n8n/chat/event-buses';
import { useAgentRequestStore } from '@n8n/stores/useAgentRequestStore';
import { useWorkflowSaving } from './useWorkflowSaving';
import { injectWorkflowState } from '@/app/composables/useWorkflowState';
import { injectWorkflowState, type WorkflowState } from '@/app/composables/useWorkflowState';
import { useDocumentTitle } from './useDocumentTitle';
import { useChat } from '@n8n/chat/composables';
import type { WorkflowObjectAccessors } from '../types';
export function useRunWorkflow(useRunWorkflowOpts: {
router: ReturnType<typeof useRouter>;
workflowState?: WorkflowState;
}) {
const workflowHelpers = useWorkflowHelpers();
const i18n = useI18n();
@ -75,7 +76,9 @@ export function useRunWorkflow(useRunWorkflowOpts: {
const rootStore = useRootStore();
const pushConnectionStore = usePushConnectionStore();
const workflowsStore = useWorkflowsStore();
const workflowState = injectWorkflowState();
// `inject()` only resolves inside a setup context; callers from async event
// handlers must pass `workflowState` in.
const workflowState = useRunWorkflowOpts.workflowState ?? injectWorkflowState();
const workflowDocumentStore = injectWorkflowDocumentStore();