test(e2e): migrate device auth health to vitest #10848
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. | |
| # SPDX-License-Identifier: Apache-2.0 | |
| name: E2E / macOS | |
| on: | |
| workflow_dispatch: | |
| pull_request: | |
| paths: | |
| - "bin/**" | |
| - "nemoclaw/**" | |
| - "scripts/**" | |
| - "src/**" | |
| - "test/**" | |
| - ".github/workflows/macos-e2e.yaml" | |
| - "package.json" | |
| - "package-lock.json" | |
| - "nemoclaw/package-lock.json" | |
| - "vitest.config.ts" | |
| push: | |
| branches: | |
| - main | |
| paths-ignore: | |
| - "docs/**" | |
| - "**/*.md" | |
| - ".github/workflows/docs-preview-*.yaml" | |
| - "ISSUE_TEMPLATE/**" | |
| - ".github/ISSUE_TEMPLATE/**" | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: macos-e2e-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| macos-e2e: | |
| runs-on: macos-26 | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 | |
| with: | |
| node-version: "22" | |
| cache: npm | |
| - name: Show environment | |
| run: | | |
| set -euo pipefail | |
| echo "Runner: $(uname -a)" | |
| echo "Arch: $(uname -m)" | |
| sw_vers | |
| node --version | |
| npm --version | |
| - name: Install root dependencies | |
| run: npm ci --ignore-scripts | |
| - name: Build CLI TypeScript modules | |
| run: npm run build:cli | |
| - name: Install and build plugin | |
| run: | | |
| set -euo pipefail | |
| cd nemoclaw | |
| npm ci --ignore-scripts | |
| npm run build | |
| - name: Detect Docker availability | |
| id: docker | |
| run: | | |
| if docker info >/dev/null 2>&1; then | |
| echo "docker_ok=true" >> "$GITHUB_OUTPUT" | |
| echo "Docker is available" | |
| docker version | |
| else | |
| echo "docker_ok=false" >> "$GITHUB_OUTPUT" | |
| echo "Docker is not available on this runner" | |
| fi | |
| - name: Run macOS full E2E | |
| if: steps.docker.outputs.docker_ok == 'true' | |
| env: | |
| NVIDIA_INFERENCE_API_KEY: ${{ secrets.NVIDIA_INFERENCE_API_KEY }} | |
| GITHUB_TOKEN: ${{ github.token }} | |
| NEMOCLAW_NON_INTERACTIVE: "1" | |
| NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1" | |
| NEMOCLAW_RECREATE_SANDBOX: "1" | |
| NEMOCLAW_SANDBOX_NAME: "e2e-macos" | |
| run: bash test/e2e/test-full-e2e.sh | |
| - name: Explain skipped full E2E | |
| if: steps.docker.outputs.docker_ok != 'true' | |
| run: | | |
| echo 'Skipping macOS full E2E because Docker is unavailable on this runner.' | |
| echo 'The workflow still validated the NemoClaw build on macOS (Apple Silicon).' | |
| - name: Upload logs on failure | |
| if: failure() | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: macos-e2e-logs | |
| path: | | |
| /tmp/nemoclaw-e2e-*.log | |
| if-no-files-found: ignore |