From 94f9427388ac5d2c68ed8370965a097d3b4f87e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Richard=20Sol=C3=A1r?= Date: Mon, 15 Jun 2026 22:30:26 +0000 Subject: [PATCH 1/2] test(api): fix flaky build-tag tests by waiting for terminal build status waitForBuildToFinish returned as soon as the build status was anything other than RUNNING. A freshly-created build starts in READY (queued) before transitioning to RUNNING, so the helper returned immediately with a not-yet-finished build. By the time the build-tag assertions ran, the build was RUNNING and tagging failed with "only successful builds can be tagged". Replace the hand-rolled poll loop with the client's built-in waitForFinish(), which waits for a terminal status and polls server-side. Co-Authored-By: Claude Opus 4.8 (1M context) --- test/__setup__/build-utils.ts | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/test/__setup__/build-utils.ts b/test/__setup__/build-utils.ts index 8eaf62d21..7ce9a8cde 100644 --- a/test/__setup__/build-utils.ts +++ b/test/__setup__/build-utils.ts @@ -1,18 +1,10 @@ import type { ApifyClient } from 'apify-client'; -import { ACTOR_JOB_STATUSES } from '@apify/consts'; - /** * Waits for the build to finish */ export const waitForBuildToFinish = async (client: ApifyClient, buildId: string) => { - while (true) { - const build = await client.build(buildId).get(); - if (build!.status !== (ACTOR_JOB_STATUSES.RUNNING as unknown)) return build; - await new Promise((resolve) => { - setTimeout(resolve, 2500); - }); - } + return client.build(buildId).waitForFinish(); }; /** From 3ff259b5d15466db5d317e5227a2f27eaeed44ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Richard=20Sol=C3=A1r?= Date: Mon, 15 Jun 2026 22:48:57 +0000 Subject: [PATCH 2/2] test(api): drop redundant async and non-null assertions waitForFinish() returns Promise, so waitForBuildToFinish no longer needs the async keyword and its call sites no longer need ! assertions. Co-Authored-By: Claude Opus 4.8 (1M context) --- test/__setup__/build-utils.ts | 2 +- test/api/commands/builds/tags.test.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test/__setup__/build-utils.ts b/test/__setup__/build-utils.ts index 7ce9a8cde..eea798373 100644 --- a/test/__setup__/build-utils.ts +++ b/test/__setup__/build-utils.ts @@ -3,7 +3,7 @@ import type { ApifyClient } from 'apify-client'; /** * Waits for the build to finish */ -export const waitForBuildToFinish = async (client: ApifyClient, buildId: string) => { +export const waitForBuildToFinish = (client: ApifyClient, buildId: string) => { return client.build(buildId).waitForFinish(); }; diff --git a/test/api/commands/builds/tags.test.ts b/test/api/commands/builds/tags.test.ts index 709bc6c67..2c7999d74 100644 --- a/test/api/commands/builds/tags.test.ts +++ b/test/api/commands/builds/tags.test.ts @@ -51,7 +51,7 @@ describe('[api] apify builds add-tag / remove-tag', () => { // Build the actor and wait for it to finish const buildStarted = await testUserClient.actor(testActor.id).build('0.0'); - testBuild = (await waitForBuildToFinish(testUserClient, buildStarted.id))!; + testBuild = await waitForBuildToFinish(testUserClient, buildStarted.id); }, TEST_TIMEOUT); afterAll(async () => { @@ -110,7 +110,7 @@ describe('[api] apify builds add-tag / remove-tag', () => { // Create another build const buildStarted2 = await testUserClient.actor(testActor.id).build('0.0'); - const testBuild2 = (await waitForBuildToFinish(testUserClient, buildStarted2.id))!; + const testBuild2 = await waitForBuildToFinish(testUserClient, buildStarted2.id); // Reassign the tag to the new build await testRunCommand(BuildsAddTagCommand, { @@ -169,7 +169,7 @@ describe('[api] apify builds add-tag / remove-tag', () => { async () => { // Create another build and tag it const buildStarted2 = await testUserClient.actor(testActor.id).build('0.0'); - const testBuild2 = (await waitForBuildToFinish(testUserClient, buildStarted2.id))!; + const testBuild2 = await waitForBuildToFinish(testUserClient, buildStarted2.id); await testRunCommand(BuildsAddTagCommand, { flags_build: testBuild2.id,