diff --git a/common/tools/dev-tool/src/commands/run/testVitest.ts b/common/tools/dev-tool/src/commands/run/testVitest.ts index 60bc8a66f2ee..92b003efbe13 100644 --- a/common/tools/dev-tool/src/commands/run/testVitest.ts +++ b/common/tools/dev-tool/src/commands/run/testVitest.ts @@ -6,6 +6,7 @@ import { leafCommand, makeCommandInfo } from "../../framework/command"; import { runTestsWithProxyTool } from "../../util/testUtils"; import { createPrinter } from "../../util/printer"; import { shouldStartRelay, startRelayServer } from "../../util/browserRelayServer"; +import { runTestProxyCommand } from "../../util/testProxyUtils"; const log = createPrinter("test:vitest"); @@ -90,6 +91,13 @@ export default leafCommand(commandInfo, async (options) => { try { if (options["test-proxy"]) { if (options["test-proxy-debug"]) process.env["Logging__LogLevel__Default"] = "Debug"; + + // restore recordings first in CI to avoid impacting the first playback test + if (process.env["BUILD_BUILDNUMBER"]) { + log.info(`restoring recordings before testing`); + await runTestProxyCommand(["restore", "-a", "assets.json"]); + } + return await runTestsWithProxyTool(command); } diff --git a/common/tools/dev-tool/src/util/checkWithTimeout.ts b/common/tools/dev-tool/src/util/checkWithTimeout.ts index 6c33280faadc..93f777b2cd50 100644 --- a/common/tools/dev-tool/src/util/checkWithTimeout.ts +++ b/common/tools/dev-tool/src/util/checkWithTimeout.ts @@ -24,7 +24,7 @@ export async function checkWithTimeout( return false; } -async function delay(timeInMs: number) { +export async function delay(timeInMs: number) { return new Promise((resolve) => { log.info(`waiting for ${timeInMs}ms`); setTimeout(resolve, timeInMs); diff --git a/common/tools/dev-tool/src/util/testProxyUtils.ts b/common/tools/dev-tool/src/util/testProxyUtils.ts index 25c5b1ffaf0a..37123030691c 100644 --- a/common/tools/dev-tool/src/util/testProxyUtils.ts +++ b/common/tools/dev-tool/src/util/testProxyUtils.ts @@ -12,6 +12,7 @@ import envPaths from "env-paths"; import { promisify } from "node:util"; import { PassThrough } from "node:stream"; import { pipeline } from "node:stream/promises"; +import { delay } from "./checkWithTimeout"; const log = createPrinter("test-proxy"); const downloadLocation = path.join(envPaths("azsdk-dev-tool").cache, "test-proxy"); @@ -183,15 +184,15 @@ function runCommand(executable: string, argv: string[], options: SpawnOptions = } export async function runTestProxyCommand(argv: string[]): Promise { - const result = runCommand(await getTestProxyExecutable(), argv, { + const executable = await getTestProxyExecutable(); + await delay(1000); + await runCommand(executable, argv, { stdio: "inherit", env: { ...process.env }, }).result; if (await fs.pathExists("assets.json")) { await linkRecordingsDirectory(); } - - return result; } export function createAssetsJson(project: ProjectInfo): Promise { diff --git a/sdk/ai/ai-inference-rest/vitest.config.ts b/sdk/ai/ai-inference-rest/vitest.config.ts index ff0784ba04af..e9f8ed547c7e 100644 --- a/sdk/ai/ai-inference-rest/vitest.config.ts +++ b/sdk/ai/ai-inference-rest/vitest.config.ts @@ -9,7 +9,6 @@ export default mergeConfig( defineConfig({ test: { testTimeout: 50000, - hookTimeout: 50000, }, }), ); diff --git a/sdk/ai/ai-projects/vitest.config.ts b/sdk/ai/ai-projects/vitest.config.ts index 95d8903c0f43..c906eb67fc7e 100644 --- a/sdk/ai/ai-projects/vitest.config.ts +++ b/sdk/ai/ai-projects/vitest.config.ts @@ -9,7 +9,6 @@ export default mergeConfig( defineConfig({ test: { testTimeout: 100000, - hookTimeout: 50000, }, }) );