


















@@ -633,7 +633,7 @@ describe("package artifact reuse", () => {
633633);
634634});
635635636-it("plumbs Factory credentials through planned Docker E2E live lanes", () => {
636+it("plumbs live credentials through planned Docker E2E live lanes", () => {
637637const reusableWorkflow = readFileSync(LIVE_E2E_WORKFLOW, "utf8");
638638const releaseChecksWorkflow = readFileSync(RELEASE_CHECKS_WORKFLOW, "utf8");
639639const scheduledWorkflow = readFileSync(SCHEDULED_LIVE_CHECKS_WORKFLOW, "utf8");
@@ -645,9 +645,20 @@ describe("package artifact reuse", () => {
645645646646expect(hydrateScript).toContain(" FACTORY_API_KEY \\");
647647expect(dockerPlanAction).toContain('if [[ "$credentials" == *",factory,"* ]]; then');
648-expect(dockerPlanAction).toContain(
649-"FACTORY_API_KEY is required for selected Docker E2E lanes.",
650-);
648+expectTextToIncludeAll(dockerPlanAction, [
649+'if [[ "$credentials" == *",openai,"* ]]; then',
650+"require_any OpenAI OPENAI_API_KEY",
651+'if [[ "$credentials" == *",codex,"* ]]; then',
652+"require_any Codex OPENCLAW_CODEX_AUTH_JSON",
653+'if [[ "$credentials" == *",anthropic,"* ]]; then',
654+"require_any Anthropic ANTHROPIC_API_TOKEN ANTHROPIC_API_KEY OPENCLAW_CLAUDE_CREDENTIALS_JSON OPENCLAW_CLAUDE_JSON",
655+'if [[ "$credentials" == *",factory,"* ]]; then',
656+"require_any Factory FACTORY_API_KEY",
657+'if [[ "$credentials" == *",gemini,"* ]]; then',
658+"require_any Gemini GEMINI_API_KEY GOOGLE_API_KEY OPENCLAW_GEMINI_SETTINGS_JSON",
659+'if [[ "$credentials" == *",opencode,"* ]]; then',
660+"require_any OpenCode OPENCODE_API_KEY OPENCODE_ZEN_API_KEY",
661+]);
651662for (const workflow of [
652663reusableWorkflow,
653664releaseChecksWorkflow,
@@ -660,7 +671,16 @@ describe("package artifact reuse", () => {
660671}
661672expect(reusableWorkflow).toContain("FACTORY_API_KEY:\n required: false");
662673expect(packageAcceptanceWorkflow).toContain("FACTORY_API_KEY:\n required: false");
663-expect(reusableWorkflow).toContain('if [[ "$credentials" == *",factory,"* ]]; then');
674+expectTextToIncludeAll(reusableWorkflow, [
675+'if [[ "$credentials" == *",openai,"* ]]; then',
676+"require_any OpenAI OPENAI_API_KEY",
677+'if [[ "$credentials" == *",codex,"* ]]; then',
678+"require_any Codex OPENCLAW_CODEX_AUTH_JSON",
679+'if [[ "$credentials" == *",gemini,"* ]]; then',
680+"require_any Gemini GEMINI_API_KEY GOOGLE_API_KEY OPENCLAW_GEMINI_SETTINGS_JSON",
681+'if [[ "$credentials" == *",opencode,"* ]]; then',
682+"require_any OpenCode OPENCODE_API_KEY OPENCODE_ZEN_API_KEY",
683+]);
664684});
665685666686it("allows the Telegram lane to run from reusable package acceptance artifacts", () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。