77 printClientResults ,
88 runServerConformanceTest ,
99 printServerResults ,
10- printServerSummary
10+ printServerSummary ,
11+ runInteractiveMode
1112} from './runner' ;
1213import { listScenarios , listClientScenarios } from './scenarios' ;
1314import { ConformanceCheck } from './types' ;
@@ -24,8 +25,10 @@ program
2425// Client command - tests a client implementation against scenarios
2526program
2627 . command ( 'client' )
27- . description ( 'Run conformance tests against a client implementation' )
28- . requiredOption ( '--command <command>' , 'Command to run the client' )
28+ . description (
29+ 'Run conformance tests against a client implementation or start interactive mode'
30+ )
31+ . option ( '--command <command>' , 'Command to run the client' )
2932 . requiredOption ( '--scenario <scenario>' , 'Scenario to test' )
3033 . option ( '--timeout <ms>' , 'Timeout in milliseconds' , '30000' )
3134 . option ( '--verbose' , 'Show verbose output' )
@@ -34,10 +37,20 @@ program
3437 // Validate options with Zod
3538 const validated = ClientOptionsSchema . parse ( options ) ;
3639
40+ // If no command provided, run in interactive mode
41+ if ( ! validated . command ) {
42+ await runInteractiveMode (
43+ validated . scenario ,
44+ validated . verbose ?? false
45+ ) ;
46+ process . exit ( 0 ) ;
47+ }
48+
49+ // Otherwise run conformance test
3750 const result = await runConformanceTest (
3851 validated . command ,
3952 validated . scenario ,
40- validated . timeout
53+ validated . timeout ?? 30000
4154 ) ;
4255
4356 const { failed } = printClientResults (
0 commit comments