OpenClaw 新增 Mantis Slack 桌面端冒烟测试:3 步实现自动化 QA
——
OpenClaw 新增 Mantis Slack 桌面端冒烟测试:3 步实现自动化 QA
一句话总结:OpenClaw 最新提交实现了 Mantis 缺陷跟踪系统与 Slack 的集成,专为桌面端应用提供自动化冒烟测试通知,让 QA 团队第一时间掌握构建质量。
在持续集成/持续部署(CI/CD)流程中,冒烟测试(Smoke Testing) 是验证核心功能是否正常的快速检测手段。对于桌面端应用而言,由于环境复杂、依赖众多,自动化测试结果的及时通知尤为关键。本文将深入解析这一新功能的技术实现与配置方法。
—
什么是桌面端冒烟测试?
冒烟测试 源自硬件测试领域,比喻”通电后设备是否冒烟”。在软件测试中,它指对构建版本进行的最基础功能验证,确保核心路径可用,避免将明显缺陷的版本进入详细测试阶段。
桌面端应用(Electron、Tauri、原生应用等)的冒烟测试面临独特挑战:
| 挑战 | 说明 |
|:—|:—|
| 环境差异 | Windows/macOS/Linux 行为不一致 |
| 安装验证 | 需测试安装包完整性 |
| 启动耗时 | 冷启动时间较长,影响反馈速度 |
| 崩溃捕获 | 需监控进程异常退出 |
OpenClaw 作为 AI Agent 自动化平台,通过集成 Mantis BT(开源缺陷跟踪系统)与 Slack 工作区通知,解决了”测试结果无人知晓”的痛点。
—
核心功能解析
1. Mantis 集成:缺陷自动归档
当桌面端冒烟测试失败时,系统可自动创建或更新 Mantis 工单:
// mantis-reporter.js - 缺陷报告配置示例
const mantisConfig = {
apiUrl: 'https://your-mantis-instance/api/rest',
apiToken: process.env.MANTIS_API_TOKEN,
projectId: 1, // 目标项目 ID
category: 'Smoke Test', // 问题分类
priority: 'high' // 桌面端崩溃设为高优先级
};
// 自动创建缺陷报告
async function reportFailure(testResult) {
const issue = {
summary: [Smoke] ${testResult.appName} 构建失败: ${testResult.errorType},
description: formatErrorDetails(testResult),
platform: detectPlatform(), // Windows/macOS/Linux
buildVersion: testResult.version
};
return await mantisClient.createIssue(issue);
}
关键特性:
- 自动附加崩溃日志与截图
- 相同缺陷自动合并,避免重复工单
- 支持自定义字段映射(构建号、Git 提交 SHA 等)
2. Slack 实时通知:团队即时同步
测试状态通过 Slack Incoming Webhook 推送到指定频道:
.env 环境变量配置
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXX
SLACK_CHANNEL=#desktop-qa-alerts
SLACK_MENTION=@qa-team @release-manager
通知消息包含结构化信息块:
// slack-notifier.js - 富文本通知格式
const slackPayload = {
blocks: [
{
type: "header",
text: {
type: "plain_text",
text: "🖥️ 桌面端冒烟测试完成"
}
},
{
type: "section",
fields: [
{ type: "mrkdwn", text: 应用:\n${appName} },
{ type: "mrkdwn", text: 版本:\n${version} },
{ type: "mrkdwn", text: 平台:\n${platform} },
{ type: "mrkdwn", text: 结果:\n${status === 'pass' ? '✅ 通过' : '❌ 失败'} }
]
},
{
type: "actions",
elements: [
{
type: "button",
text: { type: "plain_text", text: "查看 Mantis 工单" },
url: mantisIssueUrl
},
{
type: "button",
text: { type: "plain_text", text: "下载测试日志" },
url: artifactUrl
}
]
}
]
};
3. OpenClaw 工作流编排
在 OpenClaw 平台中,通过 YAML 配置完整测试流水线:
openclaw-smoke-test.yml
name: desktop-smoke-mantis-slack
on:
schedule:
- cron: '0 9 *' # 每日上午 9 点
workflow_dispatch: # 支持手动触发
jobs:
smoke-test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-latest, macos-latest, ubuntu-latest]
steps:
# 1. 检出代码与依赖
- uses: actions/checkout@v4
# 2. 安装桌面应用(以 Electron 为例)
- name: Install Application
run: |
npm ci
npm run build:electron
npm run package:${{ matrix.os }}
# 3. 执行 OpenClaw 冒烟测试
- name: Run Smoke Tests
uses: openclaw/action-smoke-test@v2
with:
app-path: ./dist/*.exe # 动态匹配安装包
test-suite: desktop-core-smoke
timeout: 300 # 5 分钟超时
# 4. 失败时创建 Mantis 工单
- name: Report to Mantis
if: failure()
uses: openclaw/action-mantis@v1
with:
api-token: ${{ secrets.MANTIS_TOKEN }}
project-id: ${{ vars.MANTIS_PROJECT }}
# 5. 发送 Slack 通知(无论成败)
- name: Notify Slack
uses: openclaw/action-slack@v2
with:
webhook-url: ${{ secrets.SLACK_WEBHOOK }}
template: desktop-smoke-result
—
快速开始:3 步配置指南
第一步:准备 Mantis API 凭证
登录 Mantis BT 管理后台,生成 REST API 令牌:
测试 API 连通性
curl -X GET \
'https://your-mantis-instance/api/rest/projects' \
-H 'Authorization: YOUR_API_TOKEN'
第二步:创建 Slack Webhook
1. 访问 Slack API 应用管理
2. 创建新应用 → 启用 Incoming Webhooks
3. 选择目标频道,复制 Webhook URL
第三步:配置 OpenClaw 密钥
在 OpenClaw 控制台添加加密变量:
openclaw secret set MANTIS_API_TOKEN "your-token-here" --project desktop-qa
openclaw secret set SLACK_WEBHOOK_URL "https://hooks.slack.com/..." --project desktop-qa
—
最佳实践建议
| 场景 | 推荐配置 |
|:—|:—|
| 多平台并行 | 使用矩阵策略同时测试 Windows/macOS/Linux |
| 失败重试 | 设置 max-retries: 2,排除偶发环境干扰 |
| 通知降噪 | 连续失败 3 次才 @channel,避免频繁打扰 |
| 日志归档 | 将测试录像上传至 S3/MinIO,Slack 仅发送链接 |
—
常见问题 FAQ
Q1: Mantis 和 Jira 有什么区别?为什么选择 Mantis?
Mantis BT 是开源轻量级缺陷跟踪系统,部署成本低,REST API 简洁。对于中小团队或已有 Mantis 基础设施的企业,无需额外采购 Jira 许可证即可实现缺陷自动化。OpenClaw 也提供 Jira 集成插件 供选择。
Q2: Slack 通知可以自定义格式吗?
可以。OpenClaw 支持 Block Kit 自定义模板,也可使用简化文本模式。在配置中指定 template: custom 并提供 JSON 文件路径即可。
Q3: 桌面端测试需要真实机器还是虚拟机?
两者皆可。对于 Electron 应用,GitHub Actions 提供的 windows-latest、macos-latest 运行器已足够;若需测试特定硬件(如 GPU 加速),可连接自托管运行器:
runs-on: [self-hosted, desktop, gpu]
Q4: 如何区分”构建失败”和”测试失败”?
OpenClaw 自动标记阶段状态:
build-failed:编译/打包错误,不创建 Mantis 工单(非代码缺陷)test-failed:功能断言失败,创建工单并附加日志infra-failed:环境/网络问题,仅通知不创建工单
Q5: 能否集成其他通知渠道(如企业微信、钉钉)?
OpenClaw 采用模块化设计,社区已提供 钉钉通知插件 和 企业微信插件。Webhook 格式遵循标准 HTTPS POST,可自行适配内部系统。
—
总结与下一步
OpenClaw 此次更新的 Mantis + Slack 桌面端冒烟测试 功能,实现了”测试执行 → 缺陷归档 → 团队通知”的全链路自动化。核心价值在于:
1. 缩短反馈周期 —— 构建问题 5 分钟内触达责任人
2. 降低沟通成本 —— 结构化信息减少反复确认
3. 完善质量追溯 —— 缺陷与代码版本自动关联
建议下一步行动:
- 在 OpenClaw 文档 查看完整 API 参考
- 加入 OpenClaw 社区 Discord 获取插件开发支持
- 阅读相关文章:《Electron 应用 CI/CD 最佳实践》、《AI Agent 驱动的测试用例生成》
—