diff --git a/src/cmds/cli.ts b/src/cmds/cli.ts index f598857..3b9a3a7 100644 --- a/src/cmds/cli.ts +++ b/src/cmds/cli.ts @@ -1,29 +1,17 @@ import { Command } from "commander"; import path from "path"; -import { createTestStepGeneratorWithOptions, createWebControllerWithOptions } from "../helpers/cli.ts"; import { createDir, fileExists, readFileString, writeFileString } from "../helpers/files.ts"; -import { formatCodeByLanguage } from "../helpers/formatter.ts"; -import { parseModel } from "../models/wrapper.ts"; import { runGenMode } from "../modes/gen.ts"; -import { runPromptMode } from "../modes/prompt.ts"; import { runTestMode } from "../modes/test.ts"; import { parseTestPrompt } from "../testprompt/parser.ts"; import { GenCommand } from "./gen.ts"; -import { PromptCommand } from "./prompt.ts"; import { TestCommand } from "./test.ts"; -import { getTranslator } from "../translators/index.ts"; -import { getTemplateByTranslatorName } from "../templates/index.ts"; export async function main() { const program = new Command(); - program.description( - `A command-line tool that leverages AI to automatically generate test cases from natural language prompts. -This tool helps developers quickly create comprehensive test suites by describing what they want to test in plain English.`, - ); - - const promptCommand = new PromptCommand(); - program.addCommand(promptCommand); + program.description(`A command-line tool that leverages AI to automatically generate test cases from natural language prompts. +This tool helps developers quickly create comprehensive test suites by describing what they want to test in plain English.`); const genCommand = new GenCommand(); program.addCommand(genCommand); @@ -34,71 +22,6 @@ This tool helps developers quickly create comprehensive test suites by describin program.parse(); switch (program.args[0]) { - case "prompt": - promptCommand.parse(); - - const promptText = promptCommand.opts().prompt; - if (!promptText) { - console.error("User prompt not found. use `--prompt ` to set prompt"); - process.exit(1); - } - console.log("💬 User Prompt:", promptText); - - const genDirPath = promptCommand.opts().gendir; - const testFileOutputPath = promptCommand.opts().out; - const generatedStepsOutputPath = path.join(genDirPath, "steps.all.json"); - const finalizedStepsOutputPath = path.join(genDirPath, "steps.finalized.json"); - const messageBufferOutputPath = path.join(genDirPath, "message.buffer.json"); - - // create gen directory - await createDir(genDirPath); - - const model = parseModel(promptCommand.opts() as any); - - const webController = createWebControllerWithOptions({ headless: promptCommand.opts().headless }); - - const testStepGenerator = createTestStepGeneratorWithOptions(model, webController, { verbose: promptCommand.opts().verbose }); - - const translatorName = promptCommand.opts().translator; - const translator = getTranslator(translatorName); - const templateCode = getTemplateByTranslatorName(translatorName); - - let promptResult = await runPromptMode({ - promptText: promptText, - testCodeTemplate: templateCode, - model, - webController, - translator, - testStepGenerator, - }); - - let generatedCode = promptResult.generatedTestCode; - - generatedCode = templateCode.replace(`// {{TESTCASE_GENERATED_CODE}}`, generatedCode); - - try { - // try formatting the generated test code - generatedCode = await formatCodeByLanguage(promptCommand.opts().language, generatedCode); - // save formatted generated test code to file - await writeFileString(testFileOutputPath, generatedCode); - } catch (_) { - // error is okay. save unformatted code - console.error("failed to format generated test code"); - await writeFileString(testFileOutputPath, generatedCode); - } - - // write generated steps to file - await writeFileString(generatedStepsOutputPath, JSON.stringify(promptResult.generatedSteps)); - - // write finalize steps to file - await writeFileString(finalizedStepsOutputPath, JSON.stringify(promptResult.finalizedSteps)); - - // write message buffer to file - await writeFileString(messageBufferOutputPath, JSON.stringify(promptResult.messageBuffer)); - - console.log("Total Tokens used:", testStepGenerator.getTotalTokens()); - console.log("💾 Generated test code saved at:", testFileOutputPath); - return; case "gen": genCommand.parse(); diff --git a/src/cmds/prompt.ts b/src/cmds/prompt.ts deleted file mode 100644 index 0bb3a62..0000000 --- a/src/cmds/prompt.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Command } from "commander"; -import { addGenericOptions } from "../helpers/cli.ts"; - -export class PromptCommand extends Command { - constructor() { - super("prompt"); - - this.description("Generate test from prompting"); - this.option("-p, --prompt ", "Prompt message to generate the test", ""); - - addGenericOptions(this as Command); - } -} diff --git a/src/modes/prompt.ts b/src/modes/prompt.ts deleted file mode 100644 index b1beadb..0000000 --- a/src/modes/prompt.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { TestStepGenerator } from "../generators/generator.ts"; -import { WebController } from "../interfaces/controller.ts"; -import { TestTranslator } from "../interfaces/translator.ts"; -import { AIModel } from "../models/types.ts"; -import { createMessageBuffer } from "../models/wrapper.ts"; -import { PuppeteerTranslator } from "../translators/index.ts"; - -export interface promptModeOptions { - promptText: string; - model: AIModel; - webController: WebController; - testStepGenerator: TestStepGenerator; - translator: TestTranslator; - testCodeTemplate: string; -} - -export async function runPromptMode(options: promptModeOptions) { - let messageBuffer = createMessageBuffer(); - - // get finalized generate steps - const finalizedSteps = await options.testStepGenerator.generate(options.promptText, messageBuffer); - - // get generated step (not finalized) - const generatedSteps = options.testStepGenerator.getGeneratedSteps(); - - // generate the test code - let generatedTestCode = await options.translator.generate(finalizedSteps); - - return { - generatedSteps, - finalizedSteps, - generatedTestCode, - messageBuffer, - }; -}