Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 42 additions & 1 deletion .github/workflows/regression-e2e.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ on:
jobs:
description: >-
Comma-separated regression job names to run (empty = all).
Valid: dashboard-remote-bind-e2e,gateway-health-honest-e2e,gateway-drift-preflight-e2e,openshell-version-pin-e2e,onboard-inference-smoke-e2e,model-router-provider-routed-inference-e2e
Valid: dashboard-remote-bind-e2e,gateway-health-honest-e2e,gateway-drift-preflight-e2e,openshell-version-pin-e2e,onboard-inference-smoke-e2e,model-router-provider-routed-inference-e2e,openclaw-plugin-runtime-exdev-e2e
required: false
type: string
default: ""
Expand Down Expand Up @@ -50,6 +50,7 @@ jobs:
openshell_version_pin: ${{ steps.select.outputs.openshell_version_pin }}
onboard_inference_smoke: ${{ steps.select.outputs.onboard_inference_smoke }}
model_router_provider_routed_inference: ${{ steps.select.outputs.model_router_provider_routed_inference }}
openclaw_plugin_runtime_exdev: ${{ steps.select.outputs.openclaw_plugin_runtime_exdev }}
steps:
- id: select
env:
Expand Down Expand Up @@ -101,6 +102,12 @@ jobs:
echo "model_router_provider_routed_inference=false" >> "$GITHUB_OUTPUT"
fi

if [ -z "$normalized" ] || includes_job "openclaw-plugin-runtime-exdev-e2e"; then
echo "openclaw_plugin_runtime_exdev=true" >> "$GITHUB_OUTPUT"
else
echo "openclaw_plugin_runtime_exdev=false" >> "$GITHUB_OUTPUT"
fi

dashboard-remote-bind-e2e:
needs: select_regression_jobs
if: >-
Expand Down Expand Up @@ -290,3 +297,37 @@ jobs:
/tmp/nemoclaw-e2e-model-router-health.log
/tmp/nemoclaw-e2e-model-router-response.log
if-no-files-found: ignore

# ── OpenClaw plugin runtime-deps EXDEV E2E ─────────────────────
# Coverage guard for #3513 / #3127. On Ubuntu/OpenShell sandbox layouts
# where /tmp and /sandbox can live on different filesystems, OpenClaw's
# first CLI bootstrap must not fail plugin runtime dependency installation
# with EXDEV cross-device rename errors.
openclaw-plugin-runtime-exdev-e2e:
needs: select_regression_jobs
if: >-
github.repository == 'NVIDIA/NemoClaw' &&
needs.select_regression_jobs.outputs.openclaw_plugin_runtime_exdev == 'true'
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Run OpenClaw plugin runtime-deps EXDEV E2E test
env:
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
NEMOCLAW_NON_INTERACTIVE: "1"
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
run: bash test/e2e/test-openclaw-plugin-runtime-exdev.sh

- name: Upload OpenClaw plugin runtime-deps EXDEV logs on failure
if: failure()
uses: actions/upload-artifact@v4
with:
name: openclaw-plugin-runtime-exdev-logs
path: |
/tmp/nemoclaw-e2e-openclaw-plugin-exdev-onboard.log
/tmp/nemoclaw-e2e-openclaw-plugin-exdev-agent.log
/tmp/nemoclaw-e2e-openclaw-plugin-exdev-df.log
if-no-files-found: ignore
200 changes: 200 additions & 0 deletions test/e2e/docs/parity-map.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5680,6 +5680,136 @@ scripts:
reason: live legacy behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
secret_requirement: WeChat test credentials
- legacy: 'M-WA0: channels add whatsapp registered QR-only channel'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA0: channels add whatsapp failed or did not register channel'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA1: Unexpected WhatsApp bridge provider exists in gateway'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA1: WhatsApp QR-only channel creates no bridge provider'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA2: registry.messagingChannels contains whatsapp after channel add'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA2: registry.messagingChannels missing whatsapp after channel add ($(registry_field messagingChannels))'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA3: WhatsApp policy preset applied before rebuild'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA3: WhatsApp policy preset missing expected endpoints before rebuild'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA4: Rebuild completed after WhatsApp channel add'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA4: Rebuild failed after WhatsApp channel add'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA5: WhatsApp policy preset survived rebuild with Node binary scope'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA5: WhatsApp policy preset missing expected endpoints/binaries after rebuild'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA6: Sandbox ''$SANDBOX_NAME'' is Ready after WhatsApp rebuild'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA6: Sandbox ''$SANDBOX_NAME'' not Ready after WhatsApp rebuild (list: ${sandbox_list:0:200})'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA7a: WhatsApp credential-like env var found in sandbox environment'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA7a: No WhatsApp credential-like env var present in sandbox environment'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA7b: WhatsApp credential placeholder found in sandbox process list'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA7b: No WhatsApp credential placeholder present in sandbox process list'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA7c: WhatsApp host credential material found on sandbox filesystem: ${sandbox_fs_wa}'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA7c: No WhatsApp host credential material found on sandbox filesystem'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA8: WhatsApp account is enabled in openclaw.json'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA8: WhatsApp account missing or disabled in openclaw.json (${whatsapp_account_json:0:200})'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA8a: WhatsApp health monitor is disabled for unpaired QR session'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA8a: WhatsApp health monitor is not disabled (${whatsapp_account_json:0:200})'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA9: WhatsApp config has no token/auth/session provider placeholders'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
- legacy: 'M-WA9: WhatsApp config contains secret-like fields: ${whatsapp_secret_fields}'
status: deferred
reason: live WhatsApp QR-only behavior requires non-deterministic infrastructure; retained for bucket parity tracking
owner: e2e-maintainers
runner_requirement: sandbox runner with WhatsApp QR channel support
test-network-policy.sh:
scenario: ubuntu-repo-cloud-openclaw
status: migrated
Expand Down Expand Up @@ -6850,6 +6980,76 @@ scripts:
reason: legacy assertion is obsolete or negative cleanup behavior after scenario migration
reviewer: e2e-maintainers
approved_at: '2026-05-13'
test-openclaw-plugin-runtime-exdev.sh:
scenario: ''
status: deferred
bucket: openclaw-plugin-runtime-exdev
assertions:
- legacy: Docker is running
status: deferred
reason: regression guard validates #3513 before migration to scenario framework
owner: e2e-maintainers
runner_requirement: sandbox runner with Docker and NemoClaw/OpenShell CLIs
- legacy: Docker is not running
status: deferred
reason: prerequisite failure for #3513 regression guard
owner: e2e-maintainers
runner_requirement: sandbox runner with Docker and NemoClaw/OpenShell CLIs
- legacy: NVIDIA_API_KEY is set
status: deferred
reason: regression guard validates #3513 with live provider credentials before scenario migration
owner: e2e-maintainers
runner_requirement: sandbox runner with NVIDIA_API_KEY
- legacy: NVIDIA_API_KEY is required and must start with nvapi-
status: deferred
reason: prerequisite failure for #3513 regression guard
owner: e2e-maintainers
runner_requirement: sandbox runner with NVIDIA_API_KEY
- legacy: 'nemoclaw is available: $(nemoclaw --version 2>/dev/null || echo unknown)'
status: deferred
reason: regression guard validates checkout install before scenario migration
owner: e2e-maintainers
runner_requirement: local CLI build with installer
- legacy: nemoclaw not found after install
status: deferred
reason: prerequisite failure for #3513 regression guard
owner: e2e-maintainers
runner_requirement: local CLI build with installer
- legacy: fresh sandbox onboard completed
status: deferred
reason: regression guard validates #3513 on a fresh sandbox before scenario migration
owner: e2e-maintainers
runner_requirement: sandbox runner with Docker and OpenShell
- legacy: fresh sandbox onboard failed (exit ${onboard_rc}); see ${ONBOARD_LOG}
status: deferred
reason: setup failure evidence for #3513 regression guard
owner: e2e-maintainers
runner_requirement: sandbox runner with Docker and OpenShell
- legacy: 'OpenClaw-style plugin runtime deps replacement hit #3513 EXDEV failure'
status: deferred
reason: executable red assertion for #3513 regression guard
owner: e2e-maintainers
runner_requirement: sandbox runner with cross-filesystem /dev/shm and /sandbox paths
- legacy: runtime deps replacement exited ${agent_rc}; see ${AGENT_LOG}
status: deferred
reason: runtime failure evidence for #3513 regression guard
owner: e2e-maintainers
runner_requirement: sandbox runner with OpenShell exec
- legacy: OpenClaw-style plugin runtime-deps replacement completed across filesystems
status: deferred
reason: expected green assertion after #3513 fix before migration to scenario framework
owner: e2e-maintainers
runner_requirement: sandbox runner with cross-filesystem /dev/shm and /sandbox paths
- legacy: runtime deps replacement exited 0 but success marker was missing; see ${AGENT_LOG}
status: deferred
reason: runtime success-marker failure evidence for #3513 regression guard
owner: e2e-maintainers
runner_requirement: sandbox runner with OpenShell exec
- legacy: OpenClaw plugin runtime-deps EXDEV guard passed
status: deferred
reason: expected green summary after #3513 fix before migration to scenario framework
owner: e2e-maintainers
runner_requirement: sandbox runner with OpenShell exec
test-openshell-gateway-upgrade.sh:
scenario: ubuntu-repo-cloud-openclaw
status: migrated
Expand Down
Loading
Loading