@@ -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