Get started

Руководство по работе с Mantis в настольном приложении Slack

Mantis Slack desktop QA — это сценарий тестирования через реальный интерфейс для ошибок класса Slack, требующих рабочего стола Linux, аварийного доступа по VNC, Slack Web, реального Gateway OpenClaw, снимков экрана, видеозаписей и комментария с доказательствами в PR. Используйте его, когда модульные тесты или безголовый сценарий живого тестирования Slack не позволяют подтвердить ошибку.

Модель хранения

Mantis использует три уровня хранения:

  • Образ провайдера — принадлежит Crabbox и хранится в учётной записи облачного провайдера. Содержит возможности машины (Chrome/Chromium, ffmpeg, scrot, Node/corepack/pnpm, нативные инструменты сборки) и пустые каталоги кэша.
  • Состояние прогретой аренды — принадлежит текущему сеансу оператора. Может содержать профиль браузера с выполненным входом, /var/cache/crabbox/pnpm и подготовленную рабочую копию исходного кода, пока аренда активна.
  • Артефакты Mantis — принадлежат запуску OpenClaw. Находятся в .artifacts/qa-e2e/mantis/...; GitHub Actions загружает их, а приложение Mantis для GitHub добавляет встроенные доказательства в комментарий к PR.

Никогда не включайте секреты, файлы cookie браузера, состояние входа в Slack, рабочие копии репозитория, node_modules или dist/ в образ провайдера.

Запуск через GitHub

Запустите рабочий процесс из main:

bash
gh workflow run mantis-slack-desktop-smoke.yml \  --ref main \  -f candidate_ref=<trusted-ref-or-sha> \  -f pr_number=<pr-number> \  -f scenario_id=slack-canary \  -f crabbox_provider=aws \  -f keep_vm=false \  -f hydrate_mode=source

candidate_ref ограничен, поскольку рабочий процесс использует реальные учётные данные: он должен разрешаться в текущую цепочку предков main, тег выпуска или головной коммит открытого PR в openclaw/openclaw.

Рабочий процесс создаёт:

  • загруженный артефакт mantis-slack-desktop-smoke-<run-id>-<attempt>
  • встроенный комментарий к PR от приложения Mantis для GitHub
  • slack-desktop-smoke.png, slack-desktop-smoke.mp4
  • slack-desktop-smoke-preview.gif, slack-desktop-smoke-change.mp4
  • mantis-slack-desktop-smoke-summary.json, mantis-slack-desktop-smoke-report.md
  • удалённые журналы: slack-desktop-command.log, openclaw-gateway.log, chrome.log, ffmpeg.log

Комментарий к PR обновляется на месте с помощью скрытого маркера <!-- mantis-slack-desktop-smoke -->.

Локальный CLI

Проверка исходного кода с холодного запуска:

bash
pnpm openclaw qa mantis slack-desktop-smoke \  --provider aws \  --class standard \  --gateway-setup \  --credential-source convex \  --credential-role maintainer \  --provider-mode live-frontier \  --model openai/gpt-5.4 \  --alt-model openai/gpt-5.4 \  --scenario slack-canary \  --hydrate-mode source

Сохранение виртуальной машины для аварийного доступа по VNC:

bash
pnpm openclaw qa mantis slack-desktop-smoke \  --provider aws \  --class standard \  --gateway-setup \  --scenario slack-canary \  --keep-lease

Открытие VNC:

bash
crabbox vnc --provider aws --id <cbx_id> --open

Повторное использование прогретой аренды:

bash
pnpm openclaw qa mantis slack-desktop-smoke \  --provider aws \  --lease-id <cbx_id-or-slug> \  --gateway-setup \  --scenario slack-canary \  --hydrate-mode source

Используйте --hydrate-mode prehydrated только в том случае, если повторно используемое удалённое рабочее пространство уже содержит node_modules и собранный dist/; в противном случае Mantis безопасно завершает работу с ошибкой.

Проверка нативного интерфейса подтверждения Slack:

bash
pnpm openclaw qa mantis slack-desktop-smoke \  --provider aws \  --class standard \  --approval-checkpoints \  --credential-source convex \  --credential-role maintainer \  --hydrate-mode source

--approval-checkpoints несовместим с --gateway-setup. Он запускает сценарии slack-approval-exec-native и slack-approval-plugin-native, включаемые явно, если не передан явный --scenario контрольной точки подтверждения; другие сценарии Slack отклоняются до запуска виртуальной машины. Средство запуска QA для Slack записывает JSON-файл каждой контрольной точки из реального сообщения API Slack, которое оно наблюдало, после чего удалённый наблюдатель отображает это сообщение в approval-checkpoints/<scenario>-pending.png и approval-checkpoints/<scenario>-resolved.png. Запуск завершается с ошибкой, если какой-либо JSON контрольной точки, доказательство сообщения, JSON подтверждения получения или отображённый снимок экрана отсутствует либо пуст.

В холодных арендах GitHub Actions отсутствуют файлы cookie Slack Web, поэтому при захвате браузера может отображаться экран входа в Slack. Для доказательства через контрольные точки подтверждения следует полагаться на отображённые изображения контрольных точек и артефакты QA Slack, а не на slack-desktop-smoke.png. Используйте сохранённую прогретую аренду с профилем Slack Web, в котором вход выполнен вручную, только когда сам снимок экрана браузера должен показывать Slack Web.

Режимы подготовки

Режим Когда использовать Поведение на удалённой машине Компромисс
source Обычная проверка PR, холодные машины, CI Запускает pnpm install --frozen-lockfile --prefer-offline и pnpm build внутри виртуальной машины Самый медленный режим, наиболее надёжная проверка рабочей копии исходного кода
prehydrated Повторно используемая аренда намеренно подготовлена Требует существующие node_modules и dist/; пропускает установку и сборку Быстро, но допустимо только для контролируемых оператором прогретых аренд

GitHub Actions всегда подготавливает рабочую копию кандидата перед запуском виртуальной машины. Его хранилище pnpm кэшируется по ОС, версии Node и файлу блокировки. Запуск source на виртуальной машине также повторно использует /var/cache/crabbox/pnpm, если он присутствует.

Интерпретация времени выполнения

mantis-slack-desktop-smoke-report.md содержит длительность этапов:

  • crabbox.warmup — запуск облачного провайдера, готовность рабочего стола и браузера, SSH.
  • crabbox.inspect — поиск метаданных аренды.
  • credentials.prepare — получение аренды учётных данных Convex.
  • crabbox.remote_run — синхронизация, запуск браузера, установка или сборка OpenClaw либо проверка подготовки, запуск Gateway, создание снимка экрана и запись видео.
  • artifacts.copy — обратная синхронизация с виртуальной машины через rsync.

crabbox.remote_run может показывать accepted, когда Crabbox возвращает ненулевой статус удалённого выполнения, но Mantis скопировал метаданные, подтверждающие, что либо настройка Gateway OpenClaw завершилась, либо сама команда QA Slack успешно завершила работу. Считайте accepted успешным результатом с пояснением, а не неудачным сценарием.

Если запуск выполняется медленно:

  • Преобладает прогрев: предварительно соберите или продвиньте более подходящий образ провайдера Crabbox.
  • В source преобладает remote_run: используйте прогретую аренду, улучшите повторное использование хранилища pnpm или перенесите системные зависимости машины в образ провайдера.
  • В prehydrated преобладает remote_run: удалённое рабочее пространство в действительности не было готово либо настройка Gateway, браузера или Slack выполняется медленно.
  • Преобладает копирование артефактов: проверьте размер видео и содержимое каталога артефактов.

Контрольный список доказательств

Хороший комментарий к PR содержит:

  • идентификатор сценария и SHA кандидата
  • URL запуска GitHub Actions и URL артефакта
  • встроенный снимок экрана контрольной точки подтверждения или снимок экрана Slack Web из прогретой аренды с выполненным входом
  • встроенный анимированный предпросмотр, если доступен
  • ссылки на полный и обрезанный MP4
  • статус успеха или ошибки и сводку времени выполнения из отчёта

Не добавляйте снимки экрана или видеозаписи в репозиторий. Храните их в артефактах GitHub Actions или в комментарии к PR.

Обработка ошибок

Если рабочий процесс завершается с ошибкой до запуска виртуальной машины, сначала проверьте задание Actions. Типичные причины: недоверенный candidate_ref, отсутствующие секреты окружения или ошибка установки либо сборки кандидата.

Если запуск на виртуальной машине завершается с ошибкой, но снимки экрана были скопированы обратно, проверьте:

bash
cat mantis-slack-desktop-smoke-report.mdcat mantis-slack-desktop-smoke-summary.jsoncat slack-desktop-command.logcat openclaw-gateway.logcat chrome.logcat ffmpeg.log

Если запуск сохранил аренду, откройте VNC с помощью команды crabbox vnc ... из отчёта, а после завершения остановите аренду:

bash
crabbox stop --provider aws <cbx_id-or-slug>

Если срок действия входа в Slack истёк, восстановите его через VNC в сохранённой аренде и повторите запуск с --lease-id. Не включайте этот профиль браузера в образ провайдера.

Связанные материалы

Was this useful?
On this page

On this page