Skip to content

Commit 809f4ea

Browse files
mxvshclaude
andcommitted
fix: console directive can access captured variables
🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 505536c commit 809f4ea

File tree

1 file changed

+32
-12
lines changed

1 file changed

+32
-12
lines changed

packages/engine/src/core/engine.ts

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -245,16 +245,24 @@ export class FlowExecutor {
245245
response: HttpResponse,
246246
context: ExecutionContext,
247247
): DirectiveResult[] {
248-
return directives.map((directive) => {
248+
const results: DirectiveResult[] = [];
249+
250+
for (const directive of directives) {
249251
try {
252+
let result: DirectiveResult;
253+
250254
if (directive.type === "capture") {
251-
return this.evaluateCaptureDirective(directive, response);
255+
result = this.evaluateCaptureDirective(directive, response);
256+
// Immediately store captured variable in context for subsequent directives
257+
if (result.success && result.capturedValue !== undefined) {
258+
context.variables[directive.variable] = result.capturedValue;
259+
}
252260
} else if (directive.type === "assert") {
253-
return this.evaluateAssertDirective(directive, response, context);
261+
result = this.evaluateAssertDirective(directive, response, context);
254262
} else if (directive.type === "console") {
255-
return this.evaluateConsoleDirective(directive, response, context);
263+
result = this.evaluateConsoleDirective(directive, response, context);
256264
} else {
257-
return {
265+
result = {
258266
directive,
259267
success: false,
260268
error: `Unknown directive type: ${
@@ -263,14 +271,18 @@ export class FlowExecutor {
263271
}`,
264272
};
265273
}
274+
275+
results.push(result);
266276
} catch (error) {
267-
return {
277+
results.push({
268278
directive,
269279
success: false,
270280
error: error instanceof Error ? error.message : String(error),
271-
};
281+
});
272282
}
273-
});
283+
}
284+
285+
return results;
274286
}
275287

276288
/**
@@ -340,10 +352,18 @@ export class FlowExecutor {
340352
context: ExecutionContext,
341353
): DirectiveResult {
342354
try {
343-
const value = this.valueExtractor.extract(
344-
directive.expression,
345-
response,
346-
);
355+
let value: unknown;
356+
357+
// Check if it's a captured variable first
358+
if (directive.expression in context.variables) {
359+
value = context.variables[directive.expression];
360+
} else {
361+
// Otherwise, extract from response
362+
value = this.valueExtractor.extract(
363+
directive.expression,
364+
response,
365+
);
366+
}
347367

348368
// Generate formatted console output without printing
349369
const consoleOutput = this.formatConsoleValue(directive.expression, value);

0 commit comments

Comments
 (0)