From c5ea09c4f4fba223277d86e49be215676614784e Mon Sep 17 00:00:00 2001 From: Joe Clark Date: Tue, 17 Mar 2026 15:41:01 +0000 Subject: [PATCH 1/3] engine: report compile errors with step name, not id --- .../engine-multi/src/worker/thread/compile.ts | 2 +- packages/engine-multi/test/errors.test.ts | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/packages/engine-multi/src/worker/thread/compile.ts b/packages/engine-multi/src/worker/thread/compile.ts index 497d07ca2..b8bef0344 100644 --- a/packages/engine-multi/src/worker/thread/compile.ts +++ b/packages/engine-multi/src/worker/thread/compile.ts @@ -25,7 +25,7 @@ export default async ( job.sourceMap = result.map; job.expression = result.code; } catch (e) { - throw new CompileError(e, job.id!); + throw new CompileError(e, job.name ?? job.id!); } } } diff --git a/packages/engine-multi/test/errors.test.ts b/packages/engine-multi/test/errors.test.ts index 15781753f..e0360f3b3 100644 --- a/packages/engine-multi/test/errors.test.ts +++ b/packages/engine-multi/test/errors.test.ts @@ -27,6 +27,29 @@ test.before(async () => { engine = await createEngine(options); }); +test.serial('reporting: prefer step name to step id', (t) => { + return new Promise((done) => { + const plan = { + id: 'a', + workflow: { + steps: [ + { + id: 'x', + name: 'My Step', + expression: 'a a a', + }, + ], + }, + options: {}, + }; + + engine.execute(plan, {}).on(WORKFLOW_ERROR, (evt) => { + t.is(evt.message, 'My Step: Unexpected token (1:2)'); + done(); + }); + }); +}); + // This should exit gracefully with a compile error test.serial('syntax error: missing bracket', (t) => { return new Promise((done) => { @@ -45,6 +68,7 @@ test.serial('syntax error: missing bracket', (t) => { }; engine.execute(plan, {}).on(WORKFLOW_ERROR, (evt) => { + console.log(evt); t.is(evt.type, 'CompileError'); // t.is(evt.name, 'SyntaxError'); // TODO fix in #1004 From a976ba360cf8baf60774f3d40c9b0d149a039b50 Mon Sep 17 00:00:00 2001 From: Joe Clark Date: Tue, 17 Mar 2026 15:43:46 +0000 Subject: [PATCH 2/3] changeset --- .changeset/frank-terms-count.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/frank-terms-count.md diff --git a/.changeset/frank-terms-count.md b/.changeset/frank-terms-count.md new file mode 100644 index 000000000..c30a1b7d8 --- /dev/null +++ b/.changeset/frank-terms-count.md @@ -0,0 +1,6 @@ +--- +'@openfn/engine-multi': patch +'@openfn/ws-worker': patch +--- + +When reporting compilation errors, prefer the step name to the id From 5f3cf25a97e3e71f77dec74ad870a9f5bf642ba9 Mon Sep 17 00:00:00 2001 From: Joe Clark Date: Tue, 17 Mar 2026 15:48:19 +0000 Subject: [PATCH 3/3] remove debug code --- packages/engine-multi/test/errors.test.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/engine-multi/test/errors.test.ts b/packages/engine-multi/test/errors.test.ts index e0360f3b3..b904939f7 100644 --- a/packages/engine-multi/test/errors.test.ts +++ b/packages/engine-multi/test/errors.test.ts @@ -68,7 +68,6 @@ test.serial('syntax error: missing bracket', (t) => { }; engine.execute(plan, {}).on(WORKFLOW_ERROR, (evt) => { - console.log(evt); t.is(evt.type, 'CompileError'); // t.is(evt.name, 'SyntaxError'); // TODO fix in #1004