@@ -361,6 +361,65 @@ test('Workflows can use default versioning behavior', async (t) => {
361
361
t . pass ( ) ;
362
362
} ) ;
363
363
364
+ test ( 'Workflow versioningOverride overrides default versioning behavior' , async ( t ) => {
365
+ const taskQueue = 'task-queue-versioning-override-' + randomUUID ( ) ;
366
+ const { client, nativeConnection } = t . context . env ;
367
+
368
+ const workerV1 = {
369
+ buildId : '1.0' ,
370
+ deploymentName : 'deployment-versioning-override-' + randomUUID ( ) ,
371
+ } ;
372
+
373
+ const worker1 = await Worker . create ( {
374
+ workflowsPath : require . resolve ( './deployment-versioning-v1' ) ,
375
+ taskQueue,
376
+ workerDeploymentOptions : {
377
+ useWorkerVersioning : true ,
378
+ version : workerV1 ,
379
+ defaultVersioningBehavior : 'AUTO_UPGRADE' ,
380
+ } ,
381
+ connection : nativeConnection ,
382
+ } ) ;
383
+ const worker1Promise = worker1 . run ( ) ;
384
+ worker1Promise . catch ( ( err ) => {
385
+ t . fail ( 'Worker 1.0 run error: ' + err ) ;
386
+ } ) ;
387
+
388
+ // Wait for workers to be visible and set current version to v1
389
+ const describeResp = await waitUntilWorkerDeploymentVisible ( client , workerV1 ) ;
390
+ await setCurrentDeploymentVersion ( client , describeResp . conflictToken , workerV1 ) ;
391
+
392
+ // Start workflow with PINNED to v1 versioningOverride - should use v1 despite AUTO_UPGRADE default
393
+ const wfPinned = await client . workflow . start ( 'deploymentVersioning' , {
394
+ taskQueue,
395
+ workflowId : 'versioning-override-pinned-v1-' + randomUUID ( ) ,
396
+ versioningOverride : {
397
+ pinnedTo : workerV1 ,
398
+ } ,
399
+ } ) ;
400
+ const statePinned = await wfPinned . query ( versionQuery ) ;
401
+ assert . equal ( statePinned , 'v1' ) ;
402
+
403
+ await wfPinned . signal ( unblockSignal ) ;
404
+
405
+ // Get results and check versioning behavior
406
+ const historyPinned = await wfPinned . fetchHistory ( ) ;
407
+ const hasPinnedVersioningBehavior = historyPinned . events ! . some (
408
+ ( event ) =>
409
+ event . workflowExecutionStartedEventAttributes ?. versioningOverride ?. behavior ===
410
+ temporal . api . enums . v1 . VersioningBehavior . VERSIONING_BEHAVIOR_PINNED ||
411
+ event . workflowExecutionStartedEventAttributes ?. versioningOverride ?. pinned != null
412
+ ) ;
413
+ assert . ok ( hasPinnedVersioningBehavior , 'Expected workflow to use pinned versioning behavior' ) ;
414
+
415
+ const resPinned = await wfPinned . result ( ) ;
416
+ assert . equal ( resPinned , 'version-v1' ) ;
417
+
418
+ worker1 . shutdown ( ) ;
419
+ await worker1Promise ;
420
+ t . pass ( ) ;
421
+ } ) ;
422
+
364
423
async function setRampingVersion (
365
424
client : Client ,
366
425
conflictToken : Uint8Array ,
0 commit comments