From 51fea3826a4e8cb54ac51888aa731775e56c3384 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Sun, 3 May 2026 20:05:01 -0700 Subject: [PATCH] fix(qa): return slack smoke failure screenshot --- CHANGELOG.md | 1 + extensions/qa-lab/src/mantis/slack-desktop-smoke.runtime.test.ts | 1 + extensions/qa-lab/src/mantis/slack-desktop-smoke.runtime.ts | 1 + 3 files changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cbd7a95c970..41770ed7d76 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ Docs: https://docs.openclaw.ai - QA/Mantis: add a `pnpm openclaw qa mantis discord-smoke` runner and manual GitHub workflow that verify the Mantis Discord bot can see the configured guild/channel, post a smoke message, add a reaction, and upload artifacts. - QA/Mantis: add `pnpm openclaw qa mantis slack-desktop-smoke` to run Slack live QA inside a Crabbox VNC desktop, open Slack Web, and capture desktop screenshots beside the Slack QA artifacts. - QA/Mantis: pass the runtime env through desktop-browser Crabbox and artifact-copy child commands, so embedded Mantis callers can provide Crabbox credentials without mutating the parent process. Thanks @vincentkoc. +- QA/Mantis: return the copied Slack desktop screenshot path even when remote Slack QA fails, so the CLI still prints the failure screenshot artifact. Thanks @vincentkoc. - QA/Slack: add a Slack live transport QA runner with canary and mention-gating coverage for the private bot-to-bot harness. Thanks @vincentkoc. - Gateway/performance: lazy-load the heavy cron runtime after the rest of Gateway startup, defer restart-sentinel refresh after readiness, and let the Gateway startup benchmark write per-run V8 CPU profiles with `--cpu-prof-dir`. - Gateway/performance: keep raw channel-config schema parsing from discovering bundled plugin runtime metadata, and add `pnpm gateway:watch --benchmark-no-force` for profiling startup without the default port cleanup. diff --git a/extensions/qa-lab/src/mantis/slack-desktop-smoke.runtime.test.ts b/extensions/qa-lab/src/mantis/slack-desktop-smoke.runtime.test.ts index 9adadc98782..cdf3891be27 100644 --- a/extensions/qa-lab/src/mantis/slack-desktop-smoke.runtime.test.ts +++ b/extensions/qa-lab/src/mantis/slack-desktop-smoke.runtime.test.ts @@ -162,6 +162,7 @@ describe("mantis Slack desktop smoke runtime", () => { }); expect(result.status).toBe("fail"); + expect(result.screenshotPath).toBe(path.join(result.outputDir, "slack-desktop-smoke.png")); await expect( fs.readFile(path.join(result.outputDir, "slack-desktop-smoke.png"), "utf8"), ).resolves.toBe("png"); diff --git a/extensions/qa-lab/src/mantis/slack-desktop-smoke.runtime.ts b/extensions/qa-lab/src/mantis/slack-desktop-smoke.runtime.ts index 4461c99de87..b86d51bead9 100644 --- a/extensions/qa-lab/src/mantis/slack-desktop-smoke.runtime.ts +++ b/extensions/qa-lab/src/mantis/slack-desktop-smoke.runtime.ts @@ -768,6 +768,7 @@ export async function runMantisSlackDesktopSmoke( return { outputDir, reportPath, + screenshotPath, status: "fail", summaryPath, };