import { describe, it, expect, beforeEach, afterEach } from "bun:test"; import { LLMJudgeRunner, isLLMAvailable } from "./agent-llm.ts"; import { setupTempDir, cleanupTempDir, getTempDir, createFreshProject, writeDoc, } from "./fixtures.ts"; const tier3Available = isLLMAvailable(); if (!tier3Available) { console.log("RUNE_E2E_LLM_ 环境变量未配置,Tier 3 测试已跳过"); } describe("e2e: Tier 3", () => { const runner = new LLMJudgeRunner(); const testFn = tier3Available ? it : it.skip; beforeEach(async () => { await setupTempDir(); }); afterEach(async () => { await cleanupTempDir(); }); testFn( "plan: 单文档输出有效行动计划", async () => { const config = await createFreshProject(); const result = await runner.runPlan(getTempDir(), "user-auth", "design", config); expect(result.rawPlan).toBeDefined(); expect(result.rawPlan).toHaveProperty("actions"); const plan = result.rawPlan as { actions: unknown[] }; expect(plan.actions.length).toBeGreaterThan(0); }, 120_000, ); testFn( "build: 单任务输出有效行动计划", async () => { const config = await createFreshProject(); await writeDoc("auth", "task", "- [ ] 实现登录 API\n"); const result = await runner.runBuild(getTempDir(), "auth", config); expect(result.rawPlan).toBeDefined(); expect(result.rawPlan).toHaveProperty("actions"); }, 120_000, ); });