From 07d09c881da9c896f6a38d4029ce4ad49a04f73a Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 21 Feb 2026 22:27:25 +0000 Subject: [PATCH] test(wizard): share onboarding prompter scaffold --- src/wizard/onboarding.gateway-config.test.ts | 11 +++------ src/wizard/onboarding.test.ts | 26 ++++---------------- test/helpers/wizard-prompter.ts | 17 +++++++++++++ 3 files changed, 25 insertions(+), 29 deletions(-) create mode 100644 test/helpers/wizard-prompter.ts diff --git a/src/wizard/onboarding.gateway-config.test.ts b/src/wizard/onboarding.gateway-config.test.ts index 7e44e11cd3c..55705353627 100644 --- a/src/wizard/onboarding.gateway-config.test.ts +++ b/src/wizard/onboarding.gateway-config.test.ts @@ -1,4 +1,5 @@ import { describe, expect, it, vi } from "vitest"; +import { createWizardPrompter as buildWizardPrompter } from "../../test/helpers/wizard-prompter.js"; import type { RuntimeEnv } from "../runtime.js"; import type { WizardPrompter, WizardSelectParams } from "./prompts.js"; @@ -28,16 +29,10 @@ describe("configureGatewayForOnboarding", () => { async (_params: WizardSelectParams) => selectQueue.shift() as unknown, ) as unknown as WizardPrompter["select"]; - return { - intro: vi.fn(async () => {}), - outro: vi.fn(async () => {}), - note: vi.fn(async () => {}), + return buildWizardPrompter({ select, - multiselect: vi.fn(async () => []), text: vi.fn(async () => textQueue.shift() as string), - confirm: vi.fn(async () => false), - progress: vi.fn(() => ({ update: vi.fn(), stop: vi.fn() })), - } satisfies WizardPrompter; + }); } function createRuntime(): RuntimeEnv { diff --git a/src/wizard/onboarding.test.ts b/src/wizard/onboarding.test.ts index 7b9774413f2..b4a5d6d44e3 100644 --- a/src/wizard/onboarding.test.ts +++ b/src/wizard/onboarding.test.ts @@ -2,6 +2,7 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; import { afterAll, beforeAll, describe, expect, it, vi } from "vitest"; +import { createWizardPrompter as buildWizardPrompter } from "../../test/helpers/wizard-prompter.js"; import { DEFAULT_BOOTSTRAP_FILENAME } from "../agents/workspace.js"; import type { RuntimeEnv } from "../runtime.js"; import { runOnboardingWizard } from "./onboarding.js"; @@ -194,23 +195,6 @@ vi.mock("./onboarding.completion.js", () => ({ setupOnboardingShellCompletion, })); -function createWizardPrompter(overrides?: Partial): WizardPrompter { - const select = vi.fn( - async (_params: WizardSelectParams) => "quickstart", - ) as unknown as WizardPrompter["select"]; - return { - intro: vi.fn(async () => {}), - outro: vi.fn(async () => {}), - note: vi.fn(async () => {}), - select, - multiselect: vi.fn(async () => []), - text: vi.fn(async () => ""), - confirm: vi.fn(async () => false), - progress: vi.fn(() => ({ update: vi.fn(), stop: vi.fn() })), - ...overrides, - }; -} - function createRuntime(opts?: { throwsOnExit?: boolean }): RuntimeEnv { if (opts?.throwsOnExit) { return { @@ -266,7 +250,7 @@ describe("runOnboardingWizard", () => { const select = vi.fn( async (_params: WizardSelectParams) => "quickstart", ) as unknown as WizardPrompter["select"]; - const prompter = createWizardPrompter({ select }); + const prompter = buildWizardPrompter({ select }); const runtime = createRuntime({ throwsOnExit: true }); await expect( @@ -295,7 +279,7 @@ describe("runOnboardingWizard", () => { async (_params: WizardSelectParams) => "quickstart", ) as unknown as WizardPrompter["select"]; const multiselect: WizardPrompter["multiselect"] = vi.fn(async () => []); - const prompter = createWizardPrompter({ select, multiselect }); + const prompter = buildWizardPrompter({ select, multiselect }); const runtime = createRuntime({ throwsOnExit: true }); await runOnboardingWizard( @@ -338,7 +322,7 @@ describe("runOnboardingWizard", () => { return "quickstart"; }) as unknown as WizardPrompter["select"]; - const prompter = createWizardPrompter({ select }); + const prompter = buildWizardPrompter({ select }); const runtime = createRuntime({ throwsOnExit: true }); await runOnboardingWizard( @@ -379,7 +363,7 @@ describe("runOnboardingWizard", () => { try { const note: WizardPrompter["note"] = vi.fn(async () => {}); - const prompter = createWizardPrompter({ note }); + const prompter = buildWizardPrompter({ note }); const runtime = createRuntime(); await runOnboardingWizard( diff --git a/test/helpers/wizard-prompter.ts b/test/helpers/wizard-prompter.ts new file mode 100644 index 00000000000..8de49ebd972 --- /dev/null +++ b/test/helpers/wizard-prompter.ts @@ -0,0 +1,17 @@ +import { vi } from "vitest"; +import type { WizardPrompter } from "../../src/wizard/prompts.js"; + +export function createWizardPrompter(overrides?: Partial): WizardPrompter { + const select = vi.fn(async () => "quickstart") as unknown as WizardPrompter["select"]; + return { + intro: vi.fn(async () => {}), + outro: vi.fn(async () => {}), + note: vi.fn(async () => {}), + select, + multiselect: vi.fn(async () => []), + text: vi.fn(async () => ""), + confirm: vi.fn(async () => false), + progress: vi.fn(() => ({ update: vi.fn(), stop: vi.fn() })), + ...overrides, + }; +}