diff --git a/src/commands/actors/push.ts b/src/commands/actors/push.ts index b457784fc..3c3073a4f 100644 --- a/src/commands/actors/push.ts +++ b/src/commands/actors/push.ts @@ -318,6 +318,13 @@ Skipping push. Use --force to override.`, run({ message: `Created version ${version} for Actor ${actor.name}.` }); } + // Sync standby mode on existing actors with actor.json + if (!isActorCreatedNow && !!actorConfig!.usesStandbyMode !== !!actor.actorStandby?.isEnabled) { + const isEnabled = !!actorConfig!.usesStandbyMode; + await actorClient.update({ actorStandby: { isEnabled } }); + info({ message: `${isEnabled ? 'Enabled' : 'Disabled'} standby mode for Actor ${actor.name}.` }); + } + // Build Actor on Apify and wait for build to finish run({ message: `Building Actor ${actor.name}` }); let build = await actorClient.build(version, { diff --git a/test/api/commands/push.test.ts b/test/api/commands/push.test.ts index 1fca6f3ad..3aa9607be 100644 --- a/test/api/commands/push.test.ts +++ b/test/api/commands/push.test.ts @@ -407,7 +407,7 @@ describe('[api] apify push', () => { ); it( - 'should not enable standby mode on existing actor when usesStandbyMode is true in actor.json', + 'should sync standby mode on existing actor based on usesStandbyMode in actor.json', async () => { // Create an actor without standby mode first const testActorWithTitleDesc = { @@ -422,23 +422,33 @@ describe('[api] apify push', () => { const initialActor = await testActorClient.get(); expect(initialActor?.actorStandby?.isEnabled).to.not.be.eql(true); - // Enable standby const actorJson = JSON.parse(readFileSync(joinPath(LOCAL_CONFIG_PATH), 'utf8')); + + // Enable standby in actor.json and push actorJson.usesStandbyMode = true; writeFileSync(joinPath(LOCAL_CONFIG_PATH), JSON.stringify(actorJson, null, '\t'), { flag: 'w' }); + await testRunCommand(ActorsPushCommand, { + args_actorId: testActor.id, + flags_noPrompt: true, + flags_force: true, + }); - // Push to existing actor - this should update standby mode + const enabledActor = await testActorClient.get(); + expect(enabledActor?.actorStandby?.isEnabled).to.be.eql(true); + + // Remove usesStandbyMode from actor.json and push again (should disable) + delete actorJson.usesStandbyMode; + writeFileSync(joinPath(LOCAL_CONFIG_PATH), JSON.stringify(actorJson, null, '\t'), { flag: 'w' }); await testRunCommand(ActorsPushCommand, { args_actorId: testActor.id, flags_noPrompt: true, flags_force: true, }); - const updatedActor = await testActorClient.get(); + const disabledActor = await testActorClient.get(); + expect(disabledActor?.actorStandby?.isEnabled).to.be.eql(false); - // Verify standby is not enabled after push - expect(updatedActor?.actorStandby?.isEnabled).to.not.be.eql(true); - if (updatedActor) await testActorClient.delete(); + if (disabledActor) await testActorClient.delete(); }, TEST_TIMEOUT, );