test(release): add npm telegram live smoke

This commit is contained in:
Ayaan Zaidi
2026-04-24 09:07:54 +05:30
parent 95f6697bd7
commit 9755c8a05f
5 changed files with 164 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
#!/usr/bin/env -S node --import tsx
import path from "node:path";
import { runTelegramQaLive } from "../../extensions/qa-lab/src/live-transports/telegram/telegram-live.runtime.ts";
import { formatErrorMessage } from "../../src/infra/errors.ts";
function parseBoolean(value: string | undefined) {
const normalized = value?.trim().toLowerCase();
return normalized === "1" || normalized === "true" || normalized === "yes";
}
function splitCsv(value: string | undefined) {
return (value ?? "")
.split(",")
.map((entry) => entry.trim())
.filter((entry) => entry.length > 0);
}
async function main() {
const sutOpenClawCommand = process.env.OPENCLAW_NPM_TELEGRAM_SUT_COMMAND?.trim();
if (!sutOpenClawCommand) {
throw new Error("Missing OPENCLAW_NPM_TELEGRAM_SUT_COMMAND.");
}
const repoRoot = path.resolve(process.env.OPENCLAW_NPM_TELEGRAM_REPO_ROOT ?? process.cwd());
const outputDir =
process.env.OPENCLAW_NPM_TELEGRAM_OUTPUT_DIR?.trim() ||
path.join(repoRoot, ".artifacts", "qa-e2e", `npm-telegram-live-${Date.now().toString(36)}`);
const result = await runTelegramQaLive({
repoRoot,
outputDir,
sutOpenClawCommand,
preflightInstalledOnboarding: true,
providerMode: process.env.OPENCLAW_NPM_TELEGRAM_PROVIDER_MODE,
primaryModel: process.env.OPENCLAW_NPM_TELEGRAM_MODEL,
alternateModel: process.env.OPENCLAW_NPM_TELEGRAM_ALT_MODEL,
fastMode: parseBoolean(process.env.OPENCLAW_NPM_TELEGRAM_FAST),
scenarioIds: splitCsv(process.env.OPENCLAW_NPM_TELEGRAM_SCENARIOS),
sutAccountId: process.env.OPENCLAW_NPM_TELEGRAM_SUT_ACCOUNT,
credentialSource: process.env.OPENCLAW_QA_CREDENTIAL_SOURCE,
credentialRole: process.env.OPENCLAW_QA_CREDENTIAL_ROLE,
});
process.stdout.write(`NPM Telegram QA report: ${result.reportPath}\n`);
process.stdout.write(`NPM Telegram QA summary: ${result.summaryPath}\n`);
process.stdout.write(`NPM Telegram QA observed messages: ${result.observedMessagesPath}\n`);
if (
!parseBoolean(process.env.OPENCLAW_NPM_TELEGRAM_ALLOW_FAILURES) &&
result.scenarios.some((scenario) => scenario.status === "fail")
) {
process.exitCode = 1;
}
}
main().catch((error) => {
process.stderr.write(`npm telegram live e2e failed: ${formatErrorMessage(error)}\n`);
process.exitCode = 1;
});