乐于分享
好东西不私藏

OpenClaw 新增 Mantis Slack 桌面端冒烟测试:3 步实现自动化 QA

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_令牌,
  projectId1,           // 目标项目 ID
  category'Smoke Test'// 问题分类
  priority'high'        // 桌面端崩溃设为高优先级
};

// 自动创建缺陷报告
async function reportFailure(testResult) {
  const issue = {
    summary`[Smoke] ${testResult.appName} 构建失败: ${testResult.errorType}`,
    descriptionformatErrorDetails(testResult),
    platformdetectPlatform(), // 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-latestmacos-latestubuntu-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-令牌: ${{ 密钥s.MANTIS_令牌 }}
          project-id: ${{ vars.MANTIS_PROJECT }}
      
      # 5. 发送 Slack 通知(无论成败)
      - name: Notify Slack
        uses: openclaw/action-slack@v2
        with:
          webhook-url: ${{ 密钥s.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_令牌'

第二步:创建 Slack Webhook

  1. 访问 Slack API 应用管理[1]
  2. 创建新应用 → 启用 Incoming Webhooks
  3. 选择目标频道,复制 Webhook URL

第三步:配置 OpenClaw 密钥

在 OpenClaw 控制台添加加密变量:

openclaw 密钥 set MANTIS_API_令牌 "your-令牌-here" --project desktop-qa
openclaw 密钥 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 集成插件[2] 供选择。

Q2: Slack 通知可以自定义格式吗?

可以。OpenClaw 支持 Block Kit 自定义模板,也可使用简化文本模式。在配置中指定 template: custom 并提供 JSON 文件路径即可。

Q3: 桌面端测试需要真实机器还是虚拟机?

两者皆可。对于 Electron 应用,GitHub Actions 提供的 windows-latestmacos-latest 运行器已足够;若需测试特定硬件(如 GPU 加速),可连接自托管运行器:

runs-on: [self-hosteddesktopgpu]

Q4: 如何区分”构建失败”和”测试失败”?

OpenClaw 自动标记阶段状态:

  • build-failed:编译/打包错误,不创建 Mantis 工单(非代码缺陷)
  • test-failed:功能断言失败,创建工单并附加日志
  • infra-failed:环境/网络问题,仅通知不创建工单

Q5: 能否集成其他通知渠道(如企业微信、钉钉)?

OpenClaw 采用模块化设计,社区已提供 钉钉通知插件[3] 和 企业微信插件[4]。Webhook 格式遵循标准 HTTPS POST,可自行适配内部系统。


总结与下一步

OpenClaw 此次更新的 Mantis + Slack 桌面端冒烟测试 功能,实现了”测试执行 → 缺陷归档 → 团队通知”的全链路自动化。核心价值在于:

  1. 缩短反馈周期 —— 构建问题 5 分钟内触达责任人
  2. 降低沟通成本 —— 结构化信息减少反复确认
  3. 完善质量追溯 —— 缺陷与代码版本自动关联

建议下一步行动

  • 在 OpenClaw 文档[5] 查看完整 API 参考
  • 加入 OpenClaw 社区 Discord[6] 获取插件开发支持
  • 阅读相关文章:《Electron 应用 CI/CD 最佳实践[7]》、《AI Agent 驱动的测试用例生成[8]

参考来源

  • GitHub Commit: feat(qa): add mantis Slack desktop smoke[9]
  • Mantis Bug Tracker REST API 文档[10]
  • Slack Block Kit 构建器[11]
  • OpenClaw 官方文档[12]
  • 阅读原文:OpenClaw 教学小站[13]

引用链接

[1]Slack API 应用管理: https://api.slack.com/apps

[2]Jira 集成插件: URL

[3]钉钉通知插件: URL

[4]企业微信插件: URL

[5]OpenClaw 文档: URL

[6]OpenClaw 社区 Discord: URL

[7]Electron 应用 CI/CD 最佳实践: URL

[8]AI Agent 驱动的测试用例生成: URL

[9]GitHub Commit: feat(qa): add mantis Slack desktop smoke: https://github.com/openclaw/openclaw/commit/f632f5e60b3a212b161c20cbdda4487a0f8b0f79

[10]Mantis Bug Tracker REST API 文档: https://documenter.getpostman.com/view/29959/mantis-bug-tracker-rest-api/7Lh6ZPX

[11]Slack Block Kit 构建器: https://app.slack.com/block-kit-builder

[12]OpenClaw 官方文档: URL

[13]阅读原文:OpenClaw 教学小站: https://61wp.com