@@ -35,7 +35,6 @@ describe("SDK Worker Registration", () => {
3535 test ( "worker() function registers workers in global registry" , async ( ) => {
3636 const taskName = `sdk_test_basic_worker_${ Date . now ( ) } ` ;
3737
38- // Define worker using worker() function
3938 worker ( { taskDefName : taskName } ) (
4039 async function basicWorker ( ) {
4140 return {
@@ -58,7 +57,6 @@ describe("SDK Worker Registration", () => {
5857
5958 let workerExecuted = false ;
6059
61- // Define worker using worker() function
6260 worker ( { taskDefName : taskName , pollInterval : 100 } ) (
6361 async function autoDiscoverWorker ( task : Task ) {
6462 workerExecuted = true ;
@@ -81,19 +79,24 @@ describe("SDK Worker Registration", () => {
8179 expect ( handler . workerCount ) . toBe ( 1 ) ;
8280 expect ( handler . running ) . toBe ( false ) ;
8381
84- // Register workflow
82+ // Start workers BEFORE registering workflow
83+ handler . startWorkers ( ) ;
84+
85+ // Wait a bit for workers to start polling
86+ await new Promise ( resolve => setTimeout ( resolve , 100 ) ) ;
87+
88+ // Register workflow - pass workflow input to task
8589 await executor . registerWorkflow ( true , {
8690 name : workflowName ,
8791 version : 1 ,
8892 ownerEmail : "developers@orkes.io" ,
89- tasks : [ simpleTask ( taskName , taskName , { } ) ] ,
90- inputParameters : [ ] ,
93+ tasks : [ simpleTask ( taskName , taskName , {
94+ testData : "${workflow.input.testData}" ,
95+ } ) ] ,
96+ inputParameters : [ "testData" ] ,
9197 outputParameters : { } ,
9298 timeoutSeconds : 0 ,
9399 } ) ;
94-
95- // Start workers
96- handler . startWorkers ( ) ;
97100 expect ( handler . running ) . toBe ( true ) ;
98101 expect ( handler . runningWorkerCount ) . toBe ( 1 ) ;
99102
@@ -128,7 +131,8 @@ describe("SDK Worker Registration", () => {
128131 expect ( firstTask ?. taskType ) . toBe ( taskName ) ;
129132 expect ( firstTask ?. status ) . toBe ( "COMPLETED" ) ;
130133 expect ( firstTask ?. outputData ?. message ) . toBe ( "Auto-discovered worker executed" ) ;
131- expect ( firstTask ?. outputData ?. inputReceived ) . toEqual ( { testData : "hello" } ) ;
134+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
135+ expect ( ( firstTask ?. outputData ?. inputReceived as any ) ?. testData ) . toBe ( "hello" ) ;
132136
133137 // Stop workers
134138 await handler . stopWorkers ( ) ;
@@ -144,7 +148,6 @@ describe("SDK Worker Registration", () => {
144148 let executionCount = 0 ;
145149 const executionTimes : number [ ] = [ ] ;
146150
147- // Define worker with concurrency
148151 worker ( { taskDefName : taskName , concurrency : 3 , pollInterval : 100 } ) (
149152 async function concurrentWorker ( task : Task ) {
150153 const startTime = Date . now ( ) ;
@@ -170,6 +173,12 @@ describe("SDK Worker Registration", () => {
170173 scanForDecorated : true ,
171174 } ) ;
172175
176+ // Start workers BEFORE registering workflow
177+ handler . startWorkers ( ) ;
178+
179+ // Wait a bit for workers to start polling
180+ await new Promise ( resolve => setTimeout ( resolve , 100 ) ) ;
181+
173182 // Register workflow with multiple tasks
174183 await executor . registerWorkflow ( true , {
175184 name : workflowName ,
@@ -185,8 +194,6 @@ describe("SDK Worker Registration", () => {
185194 timeoutSeconds : 0 ,
186195 } ) ;
187196
188- handler . startWorkers ( ) ;
189-
190197 const { workflowId } = await executor . executeWorkflow (
191198 {
192199 name : workflowName ,
@@ -219,7 +226,6 @@ describe("SDK Worker Registration", () => {
219226 const taskName = `sdk_test_domain_${ Date . now ( ) } ` ;
220227 const domain = "test_domain" ;
221228
222- // Define worker with domain
223229 worker ( { taskDefName : taskName , domain, pollInterval : 100 } ) (
224230 async function domainWorker ( ) {
225231 return {
@@ -239,16 +245,22 @@ describe("SDK Worker Registration", () => {
239245 const registeredWorkers = getRegisteredWorkers ( ) ;
240246 expect ( registeredWorkers [ 0 ] ?. domain ) . toBe ( domain ) ;
241247
248+ // Start workers and verify they start properly
242249 handler . startWorkers ( ) ;
250+ expect ( handler . running ) . toBe ( true ) ;
251+
252+ // Wait a bit for workers to initialize
253+ await new Promise ( resolve => setTimeout ( resolve , 100 ) ) ;
254+
243255 await handler . stopWorkers ( ) ;
256+ expect ( handler . running ) . toBe ( false ) ;
244257 } ) ;
245258
246259 test ( "NonRetryableException marks task as terminal failure" , async ( ) => {
247260 const client = await clientPromise ;
248261 const taskName = `sdk_test_non_retryable_${ Date . now ( ) } ` ;
249262 const workflowName = `sdk_test_non_retryable_wf_${ Date . now ( ) } ` ;
250263
251- // Define worker that throws NonRetryableException
252264 worker ( { taskDefName : taskName , pollInterval : 100 } ) (
253265 async function nonRetryableWorker ( task : Task ) {
254266 const shouldFail = task . inputData ?. shouldFail ;
@@ -269,19 +281,25 @@ describe("SDK Worker Registration", () => {
269281 scanForDecorated : true ,
270282 } ) ;
271283
272- // Register workflow
284+ // Start workers BEFORE registering workflow (important!)
285+ handler . startWorkers ( ) ;
286+
287+ // Wait a bit for workers to start polling
288+ await new Promise ( resolve => setTimeout ( resolve , 100 ) ) ;
289+
290+ // Register workflow with input parameter
273291 await executor . registerWorkflow ( true , {
274292 name : workflowName ,
275293 version : 1 ,
276294 ownerEmail : "developers@orkes.io" ,
277- tasks : [ simpleTask ( taskName , taskName , { } ) ] ,
278- inputParameters : [ ] ,
295+ tasks : [ simpleTask ( taskName , taskName , {
296+ shouldFail : "${workflow.input.shouldFail}" ,
297+ } ) ] ,
298+ inputParameters : [ "shouldFail" ] ,
279299 outputParameters : { } ,
280300 timeoutSeconds : 0 ,
281301 } ) ;
282302
283- handler . startWorkers ( ) ;
284-
285303 // Execute workflow with shouldFail flag
286304 const { workflowId } = await executor . executeWorkflow (
287305 {
@@ -313,7 +331,7 @@ describe("SDK Worker Registration", () => {
313331 expect ( firstTask ?. reasonForIncompletion ) . toContain ( "Order not found - terminal error" ) ;
314332
315333 await handler . stopWorkers ( ) ;
316- } , 30000 ) ;
334+ } , 60000 ) ;
317335
318336 test ( "regular exceptions mark task for retry" , async ( ) => {
319337 const client = await clientPromise ;
@@ -345,7 +363,13 @@ describe("SDK Worker Registration", () => {
345363 scanForDecorated : true ,
346364 } ) ;
347365
348- // Register workflow with retry policy
366+ // Start workers BEFORE registering workflow (important!)
367+ handler . startWorkers ( ) ;
368+
369+ // Wait a bit for workers to start polling
370+ await new Promise ( resolve => setTimeout ( resolve , 100 ) ) ;
371+
372+ // Register workflow - task will be retried on failure
349373 await executor . registerWorkflow ( true , {
350374 name : workflowName ,
351375 version : 1 ,
@@ -356,8 +380,6 @@ describe("SDK Worker Registration", () => {
356380 timeoutSeconds : 0 ,
357381 } ) ;
358382
359- handler . startWorkers ( ) ;
360-
361383 const { workflowId } = await executor . executeWorkflow (
362384 {
363385 name : workflowName ,
@@ -376,7 +398,7 @@ describe("SDK Worker Registration", () => {
376398 executor ,
377399 workflowId ,
378400 "COMPLETED" ,
379- 30000
401+ 60000
380402 ) ;
381403
382404 expect ( workflowStatus . status ) . toBe ( "COMPLETED" ) ;
@@ -387,7 +409,7 @@ describe("SDK Worker Registration", () => {
387409 expect ( firstTask ?. outputData ?. message ) . toBe ( "Success on retry" ) ;
388410
389411 await handler . stopWorkers ( ) ;
390- } , 30000 ) ;
412+ } , 90000 ) ; // Increased timeout for retry test
391413
392414 test ( "event listeners receive lifecycle events" , async ( ) => {
393415 const client = await clientPromise ;
@@ -396,7 +418,6 @@ describe("SDK Worker Registration", () => {
396418
397419 const events : string [ ] = [ ] ;
398420
399- // Define worker
400421 worker ( { taskDefName : taskName , pollInterval : 100 } ) (
401422 async function eventWorker ( ) {
402423 return {
@@ -428,6 +449,12 @@ describe("SDK Worker Registration", () => {
428449 eventListeners : [ eventListener ] ,
429450 } ) ;
430451
452+ // Start workers BEFORE registering workflow
453+ handler . startWorkers ( ) ;
454+
455+ // Wait a bit for workers to start polling
456+ await new Promise ( resolve => setTimeout ( resolve , 100 ) ) ;
457+
431458 // Register workflow
432459 await executor . registerWorkflow ( true , {
433460 name : workflowName ,
@@ -439,8 +466,6 @@ describe("SDK Worker Registration", () => {
439466 timeoutSeconds : 0 ,
440467 } ) ;
441468
442- handler . startWorkers ( ) ;
443-
444469 const { workflowId } = await executor . executeWorkflow (
445470 {
446471 name : workflowName ,
@@ -475,7 +500,6 @@ describe("SDK Worker Registration", () => {
475500 let worker1Executed = false ;
476501 let worker2Executed = false ;
477502
478- // Define first worker
479503 worker ( { taskDefName : taskName1 , pollInterval : 100 } ) (
480504 async function worker1 ( ) {
481505 worker1Executed = true ;
@@ -486,7 +510,6 @@ describe("SDK Worker Registration", () => {
486510 }
487511 ) ;
488512
489- // Define second worker
490513 worker ( { taskDefName : taskName2 , pollInterval : 100 } ) (
491514 async function worker2 ( ) {
492515 worker2Executed = true ;
@@ -504,6 +527,12 @@ describe("SDK Worker Registration", () => {
504527
505528 expect ( handler . workerCount ) . toBe ( 2 ) ;
506529
530+ // Start workers BEFORE registering workflow
531+ handler . startWorkers ( ) ;
532+
533+ // Wait a bit for workers to start polling
534+ await new Promise ( resolve => setTimeout ( resolve , 100 ) ) ;
535+
507536 // Register workflow with both tasks
508537 await executor . registerWorkflow ( true , {
509538 name : workflowName ,
@@ -517,8 +546,6 @@ describe("SDK Worker Registration", () => {
517546 outputParameters : { } ,
518547 timeoutSeconds : 0 ,
519548 } ) ;
520-
521- handler . startWorkers ( ) ;
522549 expect ( handler . runningWorkerCount ) . toBe ( 2 ) ;
523550
524551 const { workflowId } = await executor . executeWorkflow (
@@ -604,7 +631,6 @@ describe("SDK Worker Registration", () => {
604631 const decoratedTaskName = `sdk_test_decorated_${ Date . now ( ) } ` ;
605632 const manualTaskName = `sdk_test_manual_${ Date . now ( ) } ` ;
606633
607- // Define decorated worker
608634 worker ( { taskDefName : decoratedTaskName , pollInterval : 100 } ) (
609635 async function decoratedWorker ( ) {
610636 return {
@@ -642,7 +668,6 @@ describe("SDK Worker Registration", () => {
642668 test ( "worker with custom configuration options" , async ( ) => {
643669 const taskName = `sdk_test_custom_config_${ Date . now ( ) } ` ;
644670
645- // Define worker with custom configuration
646671 worker ( {
647672 taskDefName : taskName ,
648673 concurrency : 5 ,
0 commit comments