name: Post-Install Tests on: workflow_dispatch: inputs: target: description: 'Target node IP (e.g. 192.168.1.198)' required: true default: '192.168.1.198' password: description: 'Node password (or "auto" for fresh install)' required: false default: 'auto' jobs: post-install-tests: runs-on: ubuntu-latest timeout-minutes: 15 steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 1 - name: Run post-install tests on target run: | TARGET="${{ github.event.inputs.target }}" PASSWORD="${{ github.event.inputs.password }}" if [ "$PASSWORD" = "auto" ]; then PASSWORD="testpass123!" fi echo "══════════════════════════════════════════" echo "Running post-install tests on $TARGET" echo "══════════════════════════════════════════" # Copy test script to target and run sshpass -p 'archipelago' scp -o StrictHostKeyChecking=no \ scripts/run-post-install-tests.sh \ archipelago@${TARGET}:/tmp/run-post-install-tests.sh 2>/dev/null || \ scp -o StrictHostKeyChecking=no \ scripts/run-post-install-tests.sh \ archipelago@${TARGET}:/tmp/run-post-install-tests.sh # Run tests (with sudo for service checks) sshpass -p 'archipelago' ssh -o StrictHostKeyChecking=no \ archipelago@${TARGET} \ "sudo bash /tmp/run-post-install-tests.sh '$PASSWORD'" 2>/dev/null || \ ssh -o StrictHostKeyChecking=no \ archipelago@${TARGET} \ "sudo bash /tmp/run-post-install-tests.sh '$PASSWORD'" frontend-tests: runs-on: ubuntu-latest timeout-minutes: 10 steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 1 - name: Install dependencies run: cd neode-ui && npm ci - name: Type check run: cd neode-ui && npx vue-tsc -b --noEmit - name: Run tests run: cd neode-ui && npx vitest run - name: Audit dependencies run: cd neode-ui && npm audit --omit=dev