Skip to content

test(e2e): migrate test-openclaw-slack-pairing.sh to vitest - #5582

Merged
jyaunches merged 47 commits into
mainfrom
e2e-phase6-openclaw-slack-pairing-linear
Jun 22, 2026
Merged

test(e2e): migrate test-openclaw-slack-pairing.sh to vitest#5582
jyaunches merged 47 commits into
mainfrom
e2e-phase6-openclaw-slack-pairing-linear

Conversation

@cv

@cv cv commented Jun 22, 2026

Copy link
Copy Markdown
Collaborator

Summary

Migrates the OpenClaw Slack pairing E2E into live Vitest coverage. The replacement keeps the real install/OpenShell sandbox boundary, hermetic fake Slack Socket Mode/REST token rewrite, runtime pairing request creation, and connect-shell approval flow.

Related Issue

Related issue #5098

Changes

  • Add test/e2e-scenario/live/openclaw-slack-pairing.test.ts as Vitest coverage for test/e2e/test-openclaw-slack-pairing.sh.
  • Reuse the OpenClaw pairing helpers introduced by the Discord pairing migration.
  • Wire openclaw-slack-pairing-vitest into .github/workflows/e2e-vitest-scenarios.yaml.

Type of Change

  • Code change (feature, bug fix, or refactor)
  • Code change with doc updates
  • Doc only (prose changes, no code sample modifications)
  • Doc only (includes code sample changes)

Verification

  • PR description includes the DCO sign-off declaration and every commit appears as Verified in GitHub
  • Git hooks passed during commit and push, or npx prek run --from-ref main --to-ref HEAD passes
  • Targeted tests pass for changed behavior
  • Full npm test passes (broad runtime changes only)
  • Tests added or updated for new or changed behavior
  • No secrets, API keys, or credentials committed
  • Docs updated for user-facing behavior changes
  • npm run docs builds without warnings (doc changes only)
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

Issue #5098 Acceptance Mapping

Relevant #5098 clauses and this PR evidence:

  • Goal: "Migrate every direct legacy bash E2E entry point under test/e2e/test-*.sh into the typed Vitest E2E system" → test/e2e-scenario/live/openclaw-slack-pairing.test.ts replaces test/e2e/test-openclaw-slack-pairing.sh with typed Vitest coverage.

  • Core Principle: "If a contract needs shell, process, host, platform, installer, or sandbox behavior, preserve that boundary from a typed Vitest test" → the Vitest test keeps the real install/OpenShell sandbox boundary, fake Slack Socket Mode/REST server, sandbox exec probes, and connect-shell approval flow.

  • Definition of Done 1-2: "Equivalent typed Vitest coverage exists" and "preserves the same user-visible contract" → the live test covers Slack Socket Mode pairing challenge creation, fake REST chat.postMessage, credential rewrite evidence, pairing approval, and allowFrom persistence.

  • Definition of Done 3: "deterministic artifacts, cleanup, timeout behavior, and secret redaction" → artifacts are written under e2e-artifacts/vitest/openclaw-slack-pairing/, cleanup is registered through the scenario cleanup registry, and fake Slack capture assertions verify secrets are redacted/re-written.

  • Definition of Done 4: "PR explains the contract mapping" → this section plus the Summary/Changes describe the legacy-to-Vitest mapping.

  • Definition of Done 5: "replacement test is wired into .github/workflows/e2e-vitest-scenarios.yaml" → openclaw-slack-pairing-vitest is a free-standing dispatchable workflow job.

  • Shell deletion deferral: "Default conversion PRs should defer legacy shell script deletion unless explicitly scoped to retire the script" → this PR leaves test/e2e/test-openclaw-slack-pairing.sh deletion to Phase 11 cleanup.

  • Issue comments: gh issue view 5098 --json comments returned 0 comments during PR validation, so there are no separate Epic: Migrate legacy bash E2E into the Vitest E2E system #5098 comment clauses to map beyond the issue body clauses quoted above.


Signed-off-by: Carlos Villela cvillela@nvidia.com

Summary by CodeRabbit

Release Notes

  • Tests
    • Added comprehensive end-to-end tests for Slack pairing workflow integration
    • Extended pairing helpers to support both Slack and Discord channels
    • Enhanced workflow validation to ensure Slack pairing scenarios meet boundary requirements

@cv cv self-assigned this Jun 22, 2026
@coderabbitai

coderabbitai Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

Pull request was closed or merged during review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: a22e638b-05a1-48a3-8bf6-13c2e4b97832

📥 Commits

Reviewing files that changed from the base of the PR and between e19579f and 941a051.

📒 Files selected for processing (5)
  • .github/workflows/e2e-vitest-scenarios.yaml
  • test/e2e-scenario/live/openclaw-pairing-helpers.ts
  • test/e2e-scenario/support-tests/openclaw-discord-pairing-helpers.test.ts
  • test/e2e-scenario/support-tests/openclaw-slack-workflow-boundary.test.ts
  • tools/e2e-scenarios/workflow-boundary.mts
🚧 Files skipped from review as they are similar to previous changes (2)
  • .github/workflows/e2e-vitest-scenarios.yaml
  • test/e2e-scenario/live/openclaw-pairing-helpers.ts

📝 Walkthrough

Walkthrough

Migrates the OpenClaw Slack pairing E2E scenario from a legacy shell script to a typed Vitest test. Shared pairing helpers are extended with Slack channel support, a Socket Mode pairing script, strict proxy validation, and fake Slack API harness. A new CI workflow job and workflow boundary validator are added.

Changes

OpenClaw Slack Pairing Vitest E2E Migration

Layer / File(s) Summary
PairingChannel type, PAIRING_USER, and pairingEnv/pairingRedactions
test/e2e-scenario/live/openclaw-pairing-helpers.ts
PairingChannel is widened to "slack" | "discord", PAIRING_USER gains a Slack user id, and pairingEnv()/pairingRedactions() branch on channel to inject or redact Slack bot/app tokens.
Slack policy validation and fake API harness
test/e2e-scenario/live/openclaw-pairing-helpers.ts
Adds assertSlackPresetPolicySemantics() with endpoint-block extraction helpers, and startFakeSlackApi() that starts the fake Docker Slack API container with expected bot/app tokens and socket user id.
Slack probe input validation source and Socket Mode pairing script
test/e2e-scenario/live/openclaw-pairing-helpers.ts
Introduces SLACK_PROBE_INPUT_VALIDATION_SOURCE for strict port/proxy validation, SLACK_PAIRING_SCRIPT for a full Socket Mode websocket handshake and chat.postMessage POST, replaces extractPairingResult with extractPairingCode, and routes issuePairingRequest by channel.
Discord script hardening, runtime locator, and strict proxy parsing
test/e2e-scenario/live/openclaw-pairing-helpers.ts
Adds required-env guards to DISCORD_PAIRING_SCRIPT, changes the OpenClaw binary locator to use bash/type -P/realpathSync, and replaces permissive proxy detection in DISCORD_GATEWAY_PROOF_SOURCE with a strict parseProxyTarget().
Live Vitest E2E test for Slack Socket Mode pairing
test/e2e-scenario/live/openclaw-slack-pairing.test.ts
Adds assertSlackCapture and a full live E2E test that provisions a sandbox, validates Slack preset policy, starts the fake Slack API, applies rewrite policies, issues a pairing request, asserts captured Socket Mode and chat.postMessage traffic, and approves the pairing.
Contract and unit tests for Slack probe, runtime locator, and Discord proxy
test/e2e-scenario/support-tests/openclaw-discord-pairing-helpers.test.ts
Adds table-driven SLACK_PROBE_INPUT_VALIDATION_SOURCE failure tests with NETWORK_ATTEMPTED=false sentinel, a shell-function-shadowing runtime locator test, tightened missing-runtime stderr assertions, and it.each Discord proxy validation tests.
Workflow boundary validator for openclaw-slack-pairing-vitest
tools/e2e-scenarios/workflow-boundary.mts, test/e2e-scenario/support-tests/openclaw-slack-workflow-boundary.test.ts
Adds validateOpenClawSlackPairingVitestJob enforcing runner/timeout, pinned actions, Docker auth isolation, OpenShell install, Vitest token/path requirements, artifact upload, and Docker cleanup; wires it into the shared boundary validator and adds a boundary test exercising expected violations.
CI workflow job and report-to-pr wiring
.github/workflows/e2e-vitest-scenarios.yaml
Adds the openclaw-slack-pairing-vitest workflow job with isolated Docker auth, Node setup, CLI build, OpenShell install, Vitest execution with fake Slack tokens, artifact upload, and always-on Docker cleanup; adds it to report-to-pr needs.

Sequence Diagram(s)

sequenceDiagram
  participant Test as openclaw-slack-pairing.test.ts
  participant Helpers as openclaw-pairing-helpers.ts
  participant FakeSlack as Fake Slack API (Docker)
  participant Sandbox as OpenClaw Sandbox
  participant Script as SLACK_PAIRING_SCRIPT

  Test->>Helpers: startFakeSlackApi(botToken, appToken, ...)
  Helpers->>FakeSlack: docker run fake-slack-api
  FakeSlack-->>Helpers: container + port
  Test->>Helpers: issuePairingRequest({channel: "slack", fakeSlackPort})
  Helpers->>Script: spawn Node with SLACK_PAIRING_SCRIPT
  Script->>FakeSlack: WebSocket connect (Socket Mode)
  FakeSlack-->>Script: hello event + pairing challenge payload
  Script->>Sandbox: POST chat.postMessage (pairing reply via HTTP proxy)
  Sandbox-->>Script: 200 OK
  Script-->>Helpers: output with pairing code
  Helpers-->>Test: ShellProbeResult
  Test->>FakeSlack: read capture log (assertSlackCapture)
  FakeSlack-->>Test: captured requests (token rewrites, body content)
  Test->>Sandbox: approvePairing(extractedCode)
  Sandbox-->>Test: pairing confirmed
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • NVIDIA/NemoClaw#5581: Directly extends the same openclaw-pairing-helpers.ts and workflow boundary infrastructure that this PR builds on top of, migrating the Discord pairing helpers from which Slack support is now branched.
  • NVIDIA/NemoClaw#5493: Adds live Vitest jobs to the same e2e-vitest-scenarios.yaml workflow and wires them into report-to-pr.needs, following the identical structural pattern used here for the Slack pairing job.
  • NVIDIA/NemoClaw#5347: Adds a new Vitest job validator to tools/e2e-scenarios/workflow-boundary.mts and wires it into validateE2eVitestScenariosWorkflowBoundary, the same extension point this PR uses for validateOpenClawSlackPairingVitestJob.

Suggested labels

area: e2e

Suggested reviewers

  • jyaunches

🐰 A socket is opened, a handshake is done,
The fake Slack API gleams under the sun!
The pairing code hops through proxy and port,
extractPairingCode returns the result we sought.
The bunny approves — the test run is won! 🎉

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title accurately summarizes the main change: migrating OpenClaw Slack pairing tests to Vitest, which is the core objective evident from all five files modified.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch e2e-phase6-openclaw-slack-pairing-linear

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-code-quality

github-code-quality Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage in the e2e-phase6-openclaw-... branch is 96%. Coverage data for the main branch is not yet available.

Show a code coverage summary of the most covered files.
File main e2e-phase6-openclaw-... 941a051 +/-
nemoclaw/src/se...cret-scanner.ts 100%
nemoclaw/src/commands/slash.ts 100%
nemoclaw/src/li...bprocess-env.ts 100%
nemoclaw/src/bl...eprint/state.ts 98%
nemoclaw/src/onboard/config.ts 98%
nemoclaw/src/bl...int/snapshot.ts 97%
nemoclaw/src/bl...print/runner.ts 95%
nemoclaw/src/co...ration-state.ts 94%
nemoclaw/src/bl...ate-networks.ts 94%
nemoclaw/src/index.ts 94%

TypeScript / code-coverage/cli

The overall coverage in the e2e-phase6-openclaw-... branch is 46%. Coverage data for the main branch is not yet available.

Show a code coverage summary of the most covered files.
File main e2e-phase6-openclaw-... 941a051 +/-
src/lib/state/o...oard-session.ts 91%
src/lib/inference/local.ts 76%
src/lib/sandbox/config.ts 72%
src/lib/actions...dbox/rebuild.ts 67%
src/lib/onboard/preflight.ts 64%
src/lib/actions...licy-channel.ts 56%
src/lib/state/sandbox.ts 55%
src/lib/onboard...er-gpu-patch.ts 50%
src/lib/policy/index.ts 49%
src/lib/onboard.ts 18%

Updated June 22, 2026 20:14 UTC
Code Coverage is in Public Preview. Learn more and provide us with your feedback.

@github-actions

github-actions Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

E2E Advisor Recommendation

Required E2E: openclaw-slack-pairing-vitest, openclaw-discord-pairing-vitest
Optional E2E: messaging-providers-vitest, network-policy-vitest

Dispatch hint: openclaw-slack-pairing-vitest,openclaw-discord-pairing-vitest

Workflow run

Full advisor summary

E2E Recommendation Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required E2E

  • openclaw-slack-pairing-vitest (high): Required because the PR introduces this live Slack pairing job/test and its workflow wiring. It validates Slack fake REST/Socket Mode token rewrite, OpenClaw pairing request creation, pending/approval state sharing, and Slack preset network-policy semantics.
  • openclaw-discord-pairing-vitest (high): Required because shared live pairing helpers used by the existing Discord pairing scenario were changed, including active OpenClaw runtime discovery and Discord Gateway proxy fail-closed behavior. Run the existing Discord pairing job to ensure the helper changes did not regress the current live pairing flow.

Optional E2E

  • messaging-providers-vitest (medium): Useful adjacent coverage because the new Slack pairing flow uses the fake provider infrastructure and credential rewrite behavior also covered by messaging provider scenarios. Not strictly merge-blocking if the two pairing jobs pass.
  • network-policy-vitest (medium): Optional confidence check for broader policy update/get semantics because the new Slack pairing test asserts Slack preset endpoint rewrite flags and applies fake REST/websocket policy overrides.

New E2E recommendations

  • None.

Dispatch hint

  • Workflow: .github/workflows/e2e-vitest-scenarios.yaml
  • jobs input: openclaw-slack-pairing-vitest,openclaw-discord-pairing-vitest

@github-actions

github-actions Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Recommendation

Required Vitest E2E scenarios: openclaw-slack-pairing-vitest, openclaw-discord-pairing-vitest
Optional Vitest E2E scenarios: None

Dispatch required Vitest E2E scenarios:

  • gh workflow run e2e-vitest-scenarios.yaml --ref <pr-head-ref> --field jobs=openclaw-slack-pairing-vitest
  • gh workflow run e2e-vitest-scenarios.yaml --ref <pr-head-ref> --field jobs=openclaw-discord-pairing-vitest

Workflow run

Full Vitest E2E advisor summary

Vitest E2E Scenario Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required Vitest E2E scenarios

  • openclaw-slack-pairing-vitest: Focused free-standing Vitest job wired for changed live test test/e2e-scenario/live/openclaw-slack-pairing.test.ts.
    • Dispatch: gh workflow run e2e-vitest-scenarios.yaml --ref <pr-head-ref> --field jobs=openclaw-slack-pairing-vitest
  • openclaw-discord-pairing-vitest: The shared OpenClaw pairing helper used by the existing Discord pairing live Vitest job changes runtime discovery, proxy validation, and pairing helper behavior. Run the existing Discord pairing job to cover the impacted shared surface.
    • Dispatch: gh workflow run e2e-vitest-scenarios.yaml --ref <pr-head-ref> --field jobs=openclaw-discord-pairing-vitest

Optional Vitest E2E scenarios

  • None.

Relevant changed files

  • .github/workflows/e2e-vitest-scenarios.yaml
  • test/e2e-scenario/live/openclaw-pairing-helpers.ts
  • test/e2e-scenario/live/openclaw-slack-pairing.test.ts
  • test/e2e-scenario/support-tests/openclaw-discord-pairing-helpers.test.ts
  • test/e2e-scenario/support-tests/openclaw-slack-workflow-boundary.test.ts
  • tools/e2e-scenarios/workflow-boundary.mts

@github-actions

github-actions Bot commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor — No blocking findings

Merge posture: No blocking advisor findings
Primary next action: Add or justify PRA-T1 and any related test follow-ups.
Open items: 0 required · 0 warnings · 0 suggestions · 1 test follow-up
Since last review: 3 prior items resolved · 0 still apply · 0 new items found

Action checklist

  • PRA-T1 Add or justify test follow-up: Acceptance clause
Test follow-ups to resolve or justify

If these cover changed behavior, prefer adding them in this PR; otherwise state why existing coverage is enough or link the follow-up.

  • PRA-T1 Acceptance clause — Legacy bash scripts are not kept as a second durable E2E suite. — add test evidence or identify existing coverage. The legacy script remains present, but issue Epic: Migrate legacy bash E2E into the Vitest E2E system #5098 explicitly allows conversion PRs to defer shell deletion to Phase 11; the PR does not add new shell workflow wiring.

Workflow run details

This is an automated, non-binding review; it still expects maintainers and agents to respond to each required or warning item. Treat suggestions as current-PR improvements when they touch changed code; defer only with maintainer rationale or a linked follow-up. A human maintainer must make the final merge decision.

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ❌ Some jobs failed

Run: 27955653081
Workflow ref: e2e-phase6-openclaw-slack-pairing-linear
Requested scenarios: (default — all supported)
Requested jobs: openclaw-slack-pairing-vitest
Summary: 1 passed, 1 failed, 55 skipped

Job Result
agent-turn-latency-vitest ⏭️ skipped
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
brave-search-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
cloud-onboard-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
concurrent-gateway-ports-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
cron-preflight-inference-local-vitest ⏭️ skipped
device-auth-health-vitest ⏭️ skipped
diagnostics-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
full-e2e-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
gpu-double-onboard-vitest ⏭️ skipped
gpu-e2e-vitest ⏭️ skipped
hermes-e2e-vitest ⏭️ skipped
hermes-inference-switch-vitest ⏭️ skipped
hermes-root-entrypoint-smoke-vitest ⏭️ skipped
inference-routing-vitest ⏭️ skipped
issue-2478-crash-loop-recovery-vitest ⏭️ skipped
issue-4434-tui-unreachable-inference-vitest ⏭️ skipped
issue-4462-scope-upgrade-approval-vitest ⏭️ skipped
kimi-inference-compat-vitest ⏭️ skipped
launchable-smoke-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
messaging-compatible-endpoint-vitest ⏭️ skipped
messaging-providers-vitest ⏭️ skipped
model-router-provider-routed-inference-vitest ⏭️ skipped
network-policy-vitest ⏭️ skipped
ollama-auth-proxy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
onboard-repair-vitest ⏭️ skipped
onboard-resume-vitest ⏭️ skipped
openclaw-discord-pairing-vitest ⏭️ skipped
openclaw-inference-switch-vitest ⏭️ skipped
openclaw-skill-cli-vitest ⏭️ skipped
openclaw-slack-pairing-vitest ❌ failure
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
rebuild-openclaw-vitest ⏭️ skipped
runtime-overrides-vitest ⏭️ skipped
sandbox-rebuild-vitest ⏭️ skipped
sandbox-survival-vitest ⏭️ skipped
sessions-agents-cli-vitest ⏭️ skipped
shields-config-vitest ⏭️ skipped
skill-agent-vitest ⏭️ skipped
snapshot-commands-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
telegram-injection-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
upgrade-stale-sandbox-vitest ⏭️ skipped

Failed jobs: openclaw-slack-pairing-vitest. Check run artifacts for logs.

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27959029453
Workflow ref: e2e-phase6-openclaw-slack-pairing-linear
Requested scenarios: (default — all supported)
Requested jobs: openclaw-slack-pairing-vitest
Summary: 2 passed, 0 failed, 55 skipped

Job Result
agent-turn-latency-vitest ⏭️ skipped
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
brave-search-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
cloud-onboard-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
concurrent-gateway-ports-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
cron-preflight-inference-local-vitest ⏭️ skipped
device-auth-health-vitest ⏭️ skipped
diagnostics-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
full-e2e-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
gpu-double-onboard-vitest ⏭️ skipped
gpu-e2e-vitest ⏭️ skipped
hermes-e2e-vitest ⏭️ skipped
hermes-inference-switch-vitest ⏭️ skipped
hermes-root-entrypoint-smoke-vitest ⏭️ skipped
inference-routing-vitest ⏭️ skipped
issue-2478-crash-loop-recovery-vitest ⏭️ skipped
issue-4434-tui-unreachable-inference-vitest ⏭️ skipped
issue-4462-scope-upgrade-approval-vitest ⏭️ skipped
kimi-inference-compat-vitest ⏭️ skipped
launchable-smoke-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
messaging-compatible-endpoint-vitest ⏭️ skipped
messaging-providers-vitest ⏭️ skipped
model-router-provider-routed-inference-vitest ⏭️ skipped
network-policy-vitest ⏭️ skipped
ollama-auth-proxy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
onboard-repair-vitest ⏭️ skipped
onboard-resume-vitest ⏭️ skipped
openclaw-discord-pairing-vitest ⏭️ skipped
openclaw-inference-switch-vitest ⏭️ skipped
openclaw-skill-cli-vitest ⏭️ skipped
openclaw-slack-pairing-vitest ✅ success
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
rebuild-openclaw-vitest ⏭️ skipped
runtime-overrides-vitest ⏭️ skipped
sandbox-rebuild-vitest ⏭️ skipped
sandbox-survival-vitest ⏭️ skipped
sessions-agents-cli-vitest ⏭️ skipped
shields-config-vitest ⏭️ skipped
skill-agent-vitest ⏭️ skipped
snapshot-commands-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
telegram-injection-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
upgrade-stale-sandbox-vitest ⏭️ skipped

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ✅ All jobs passed

Run: 27963222924
Workflow ref: e2e-phase6-openclaw-slack-pairing-linear
Requested scenarios: (default — all supported)
Requested jobs: openclaw-slack-pairing-vitest
Summary: 2 passed, 0 failed, 55 skipped

Job Result
agent-turn-latency-vitest ⏭️ skipped
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
brave-search-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
cloud-onboard-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
concurrent-gateway-ports-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
cron-preflight-inference-local-vitest ⏭️ skipped
device-auth-health-vitest ⏭️ skipped
diagnostics-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
full-e2e-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
gpu-double-onboard-vitest ⏭️ skipped
gpu-e2e-vitest ⏭️ skipped
hermes-e2e-vitest ⏭️ skipped
hermes-inference-switch-vitest ⏭️ skipped
hermes-root-entrypoint-smoke-vitest ⏭️ skipped
inference-routing-vitest ⏭️ skipped
issue-2478-crash-loop-recovery-vitest ⏭️ skipped
issue-4434-tui-unreachable-inference-vitest ⏭️ skipped
issue-4462-scope-upgrade-approval-vitest ⏭️ skipped
kimi-inference-compat-vitest ⏭️ skipped
launchable-smoke-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
messaging-compatible-endpoint-vitest ⏭️ skipped
messaging-providers-vitest ⏭️ skipped
model-router-provider-routed-inference-vitest ⏭️ skipped
network-policy-vitest ⏭️ skipped
ollama-auth-proxy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
onboard-repair-vitest ⏭️ skipped
onboard-resume-vitest ⏭️ skipped
openclaw-discord-pairing-vitest ⏭️ skipped
openclaw-inference-switch-vitest ⏭️ skipped
openclaw-skill-cli-vitest ⏭️ skipped
openclaw-slack-pairing-vitest ✅ success
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
rebuild-openclaw-vitest ⏭️ skipped
runtime-overrides-vitest ⏭️ skipped
sandbox-rebuild-vitest ⏭️ skipped
sandbox-survival-vitest ⏭️ skipped
sessions-agents-cli-vitest ⏭️ skipped
shields-config-vitest ⏭️ skipped
skill-agent-vitest ⏭️ skipped
snapshot-commands-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
telegram-injection-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
upgrade-stale-sandbox-vitest ⏭️ skipped

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ❌ Some jobs failed

Run: 27963225384
Workflow ref: e2e-phase6-openclaw-slack-pairing-linear
Requested scenarios: (default — all supported)
Requested jobs: openclaw-discord-pairing-vitest
Summary: 1 passed, 1 failed, 55 skipped

Job Result
agent-turn-latency-vitest ⏭️ skipped
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
brave-search-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
cloud-onboard-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
concurrent-gateway-ports-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
cron-preflight-inference-local-vitest ⏭️ skipped
device-auth-health-vitest ⏭️ skipped
diagnostics-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
full-e2e-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
gpu-double-onboard-vitest ⏭️ skipped
gpu-e2e-vitest ⏭️ skipped
hermes-e2e-vitest ⏭️ skipped
hermes-inference-switch-vitest ⏭️ skipped
hermes-root-entrypoint-smoke-vitest ⏭️ skipped
inference-routing-vitest ⏭️ skipped
issue-2478-crash-loop-recovery-vitest ⏭️ skipped
issue-4434-tui-unreachable-inference-vitest ⏭️ skipped
issue-4462-scope-upgrade-approval-vitest ⏭️ skipped
kimi-inference-compat-vitest ⏭️ skipped
launchable-smoke-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
messaging-compatible-endpoint-vitest ⏭️ skipped
messaging-providers-vitest ⏭️ skipped
model-router-provider-routed-inference-vitest ⏭️ skipped
network-policy-vitest ⏭️ skipped
ollama-auth-proxy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
onboard-repair-vitest ⏭️ skipped
onboard-resume-vitest ⏭️ skipped
openclaw-discord-pairing-vitest ❌ failure
openclaw-inference-switch-vitest ⏭️ skipped
openclaw-skill-cli-vitest ⏭️ skipped
openclaw-slack-pairing-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
rebuild-openclaw-vitest ⏭️ skipped
runtime-overrides-vitest ⏭️ skipped
sandbox-rebuild-vitest ⏭️ skipped
sandbox-survival-vitest ⏭️ skipped
sessions-agents-cli-vitest ⏭️ skipped
shields-config-vitest ⏭️ skipped
skill-agent-vitest ⏭️ skipped
snapshot-commands-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
telegram-injection-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
upgrade-stale-sandbox-vitest ⏭️ skipped

Failed jobs: openclaw-discord-pairing-vitest. Check run artifacts for logs.

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ❌ Some jobs failed

Run: 27977501441
Workflow ref: e2e-phase6-openclaw-slack-pairing-linear
Requested scenarios: (default — all supported)
Requested jobs: openclaw-slack-pairing-vitest
Summary: 1 passed, 1 failed, 56 skipped

Job Result
agent-turn-latency-vitest ⏭️ skipped
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
brave-search-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
channels-stop-start-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
cloud-onboard-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
concurrent-gateway-ports-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
cron-preflight-inference-local-vitest ⏭️ skipped
device-auth-health-vitest ⏭️ skipped
diagnostics-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
full-e2e-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
gpu-double-onboard-vitest ⏭️ skipped
gpu-e2e-vitest ⏭️ skipped
hermes-e2e-vitest ⏭️ skipped
hermes-inference-switch-vitest ⏭️ skipped
hermes-root-entrypoint-smoke-vitest ⏭️ skipped
inference-routing-vitest ⏭️ skipped
issue-2478-crash-loop-recovery-vitest ⏭️ skipped
issue-4434-tui-unreachable-inference-vitest ⏭️ skipped
issue-4462-scope-upgrade-approval-vitest ⏭️ skipped
kimi-inference-compat-vitest ⏭️ skipped
launchable-smoke-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
messaging-compatible-endpoint-vitest ⏭️ skipped
messaging-providers-vitest ⏭️ skipped
model-router-provider-routed-inference-vitest ⏭️ skipped
network-policy-vitest ⏭️ skipped
ollama-auth-proxy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
onboard-repair-vitest ⏭️ skipped
onboard-resume-vitest ⏭️ skipped
openclaw-discord-pairing-vitest ⏭️ skipped
openclaw-inference-switch-vitest ⏭️ skipped
openclaw-skill-cli-vitest ⏭️ skipped
openclaw-slack-pairing-vitest ❌ failure
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
rebuild-openclaw-vitest ⏭️ skipped
runtime-overrides-vitest ⏭️ skipped
sandbox-rebuild-vitest ⏭️ skipped
sandbox-survival-vitest ⏭️ skipped
sessions-agents-cli-vitest ⏭️ skipped
shields-config-vitest ⏭️ skipped
skill-agent-vitest ⏭️ skipped
snapshot-commands-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
telegram-injection-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
upgrade-stale-sandbox-vitest ⏭️ skipped

Failed jobs: openclaw-slack-pairing-vitest. Check run artifacts for logs.

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ❌ Some jobs failed

Run: 27977502816
Workflow ref: e2e-phase6-openclaw-slack-pairing-linear
Requested scenarios: (default — all supported)
Requested jobs: openclaw-discord-pairing-vitest
Summary: 1 passed, 1 failed, 56 skipped

Job Result
agent-turn-latency-vitest ⏭️ skipped
bedrock-runtime-compatible-anthropic-vitest ⏭️ skipped
brave-search-vitest ⏭️ skipped
channels-add-remove-vitest ⏭️ skipped
channels-stop-start-vitest ⏭️ skipped
cloud-inference-vitest ⏭️ skipped
cloud-onboard-vitest ⏭️ skipped
common-egress-agent-vitest ⏭️ skipped
concurrent-gateway-ports-vitest ⏭️ skipped
credential-migration-vitest ⏭️ skipped
credential-sanitization-vitest ⏭️ skipped
cron-preflight-inference-local-vitest ⏭️ skipped
device-auth-health-vitest ⏭️ skipped
diagnostics-vitest ⏭️ skipped
double-onboard-vitest ⏭️ skipped
full-e2e-vitest ⏭️ skipped
gateway-drift-preflight-vitest ⏭️ skipped
gateway-guard-recovery ⏭️ skipped
gateway-health-honest-vitest ⏭️ skipped
generate-matrix ✅ success
gpu-double-onboard-vitest ⏭️ skipped
gpu-e2e-vitest ⏭️ skipped
hermes-e2e-vitest ⏭️ skipped
hermes-inference-switch-vitest ⏭️ skipped
hermes-root-entrypoint-smoke-vitest ⏭️ skipped
inference-routing-vitest ⏭️ skipped
issue-2478-crash-loop-recovery-vitest ⏭️ skipped
issue-4434-tui-unreachable-inference-vitest ⏭️ skipped
issue-4462-scope-upgrade-approval-vitest ⏭️ skipped
kimi-inference-compat-vitest ⏭️ skipped
launchable-smoke-vitest ⏭️ skipped
live-scenarios ⏭️ skipped
messaging-compatible-endpoint-vitest ⏭️ skipped
messaging-providers-vitest ⏭️ skipped
model-router-provider-routed-inference-vitest ⏭️ skipped
network-policy-vitest ⏭️ skipped
ollama-auth-proxy-vitest ⏭️ skipped
onboard-negative-paths-vitest ⏭️ skipped
onboard-repair-vitest ⏭️ skipped
onboard-resume-vitest ⏭️ skipped
openclaw-discord-pairing-vitest ❌ failure
openclaw-inference-switch-vitest ⏭️ skipped
openclaw-skill-cli-vitest ⏭️ skipped
openclaw-slack-pairing-vitest ⏭️ skipped
openclaw-tui-chat-correlation-vitest ⏭️ skipped
openshell-version-pin-vitest ⏭️ skipped
rebuild-openclaw-vitest ⏭️ skipped
runtime-overrides-vitest ⏭️ skipped
sandbox-rebuild-vitest ⏭️ skipped
sandbox-survival-vitest ⏭️ skipped
sessions-agents-cli-vitest ⏭️ skipped
shields-config-vitest ⏭️ skipped
skill-agent-vitest ⏭️ skipped
snapshot-commands-vitest ⏭️ skipped
state-backup-restore-vitest ⏭️ skipped
telegram-injection-vitest ⏭️ skipped
token-rotation-vitest ⏭️ skipped
upgrade-stale-sandbox-vitest ⏭️ skipped

Failed jobs: openclaw-discord-pairing-vitest. Check run artifacts for logs.

…ing-linear' into e2e-phase6-openclaw-slack-pairing-linear

# Conflicts:
#	test/e2e-scenario/live/openclaw-pairing-helpers.ts

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
test/e2e-scenario/live/openclaw-pairing-helpers.ts (1)

505-508: 🧹 Nitpick | 🔵 Trivial | 💤 Low value

Slack output omits replyText, diverging from extractPairingResult contract.

The Slack script outputs { code, senderId, channelId } but extractPairingResult (line 527) expects a replyText field. The downstream test correctly uses extractPairingCode, so this isn't a bug now—but if someone later calls extractPairingResult with Slack output, it will fail with "missing pairing reply text".

Consider either:

  1. Adding replyText to the Slack output for parity with Discord, or
  2. Documenting that extractPairingResult is Discord-only and extractPairingCode is channel-agnostic.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test/e2e-scenario/live/openclaw-pairing-helpers.ts` around lines 505 - 508,
The console.log statement that outputs "PAIRING_E2E_RESULT" is missing the
replyText field that the extractPairingResult function expects according to its
contract. Add a replyText field to the object being logged in the Slack pairing
output to match the structure that extractPairingResult requires, ensuring
consistency with the Discord output format and preventing future failures if
extractPairingResult is called with this Slack output.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@test/e2e-scenario/live/openclaw-pairing-helpers.ts`:
- Around line 505-508: The console.log statement that outputs
"PAIRING_E2E_RESULT" is missing the replyText field that the
extractPairingResult function expects according to its contract. Add a replyText
field to the object being logged in the Slack pairing output to match the
structure that extractPairingResult requires, ensuring consistency with the
Discord output format and preventing future failures if extractPairingResult is
called with this Slack output.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: dc70a3d6-ef27-4223-ab95-9402db4ee690

📥 Commits

Reviewing files that changed from the base of the PR and between b9ce55b and e19579f.

📒 Files selected for processing (4)
  • .github/workflows/e2e-vitest-scenarios.yaml
  • test/e2e-scenario/live/openclaw-pairing-helpers.ts
  • test/e2e-scenario/live/openclaw-slack-pairing.test.ts
  • test/e2e-scenario/support-tests/openclaw-discord-pairing-helpers.test.ts

Base automatically changed from e2e-phase6-openclaw-discord-pairing-linear to main June 22, 2026 19:57
@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ⚠️ Run cancelled — no signal

Run: 27979868321
Workflow ref: e2e-phase6-openclaw-slack-pairing-linear
Requested scenarios: (default — all supported)
Requested jobs: openclaw-discord-pairing-vitest
Summary: 0 passed, 0 failed, 1 cancelled, 0 skipped

Job Result
openclaw-discord-pairing-vitest ⚠️ cancelled

@github-actions

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Results — ⚠️ Run cancelled — no signal

Run: 27979863588
Workflow ref: e2e-phase6-openclaw-slack-pairing-linear
Requested scenarios: (default — all supported)
Requested jobs: openclaw-slack-pairing-vitest
Summary: 0 passed, 0 failed, 1 cancelled, 0 skipped

Job Result
openclaw-slack-pairing-vitest ⚠️ cancelled

…lack-pairing-linear

# Conflicts:
#	.github/workflows/e2e-vitest-scenarios.yaml
#	test/e2e-scenario/live/openclaw-pairing-helpers.ts
#	test/e2e-scenario/support-tests/openclaw-discord-pairing-helpers.test.ts
@jyaunches
jyaunches merged commit b241036 into main Jun 22, 2026
43 of 44 checks passed
@jyaunches
jyaunches deleted the e2e-phase6-openclaw-slack-pairing-linear branch June 22, 2026 20:15
@jyaunches jyaunches changed the title test(e2e): migrate OpenClaw Slack pairing to Vitest test(e2e): migrate test-openclaw-slack-pairing.sh to vitest Jun 22, 2026
@wscurran wscurran added area: ci CI workflows, checks, release automation, or GitHub Actions area: e2e End-to-end tests, nightly failures, or validation infrastructure chore Build, CI, dependency, or tooling maintenance integration: openclaw OpenClaw integration behavior integration: slack Slack integration or channel behavior labels Aug 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ci CI workflows, checks, release automation, or GitHub Actions area: e2e End-to-end tests, nightly failures, or validation infrastructure chore Build, CI, dependency, or tooling maintenance integration: openclaw OpenClaw integration behavior integration: slack Slack integration or channel behavior

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants