fix(core): Fix task runner logging to browser console (#15111)

This commit is contained in:
Iván Ovejero
2025-05-06 09:42:46 +02:00
committed by GitHub
parent 07e6c7e13f
commit e86edf536f
3 changed files with 52 additions and 5 deletions
@@ -226,4 +226,37 @@ describe('ExecuteContext', () => {
]);
});
});
describe('logNodeOutput', () => {
it('when in manual mode, should parse JSON', () => {
const json = '{"key": "value", "nested": {"foo": "bar"}}';
const expectedParsedObject = { key: 'value', nested: { foo: 'bar' } };
const numberArg = 42;
const stringArg = 'hello world!';
const manualModeContext = new ExecuteContext(
workflow,
node,
additionalData,
'manual',
runExecutionData,
runIndex,
connectionInputData,
inputData,
executeData,
[closeFn],
abortSignal,
);
const sendMessageSpy = jest.spyOn(manualModeContext, 'sendMessageToUI');
manualModeContext.logNodeOutput(json, numberArg, stringArg);
expect(sendMessageSpy.mock.calls[0][0]).toEqual(expectedParsedObject);
expect(sendMessageSpy.mock.calls[0][1]).toBe(numberArg);
expect(sendMessageSpy.mock.calls[0][2]).toBe(stringArg);
sendMessageSpy.mockRestore();
});
});
});
@@ -20,6 +20,7 @@ import {
ApplicationError,
createDeferredPromise,
createEnvProviderState,
jsonParse,
NodeConnectionTypes,
} from 'n8n-workflow';
@@ -183,7 +184,10 @@ export class ExecuteContext extends BaseExecuteContext implements IExecuteFuncti
logNodeOutput(...args: unknown[]): void {
if (this.mode === 'manual') {
this.sendMessageToUI(...args);
const parsedLogArgs = args.map((arg) =>
typeof arg === 'string' ? jsonParse(arg, { fallbackValue: arg }) : arg,
);
this.sendMessageToUI(...parsedLogArgs);
return;
}