mirror of
https://github.com/samsonjs/vibetunnel.git
synced 2026-03-25 09:25:50 +00:00
130 lines
No EOL
3.9 KiB
YAML
130 lines
No EOL
3.9 KiB
YAML
name: NPM Package Test
|
|
|
|
on:
|
|
push:
|
|
branches: [ main, npm-build ]
|
|
paths:
|
|
- 'web/**'
|
|
- '.github/workflows/npm-test.yml'
|
|
pull_request:
|
|
branches: [ main ]
|
|
paths:
|
|
- 'web/**'
|
|
- '.github/workflows/npm-test.yml'
|
|
|
|
permissions:
|
|
contents: read
|
|
pull-requests: write
|
|
|
|
defaults:
|
|
run:
|
|
working-directory: web
|
|
|
|
jobs:
|
|
test-npm-package:
|
|
name: Test NPM Package
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup pnpm
|
|
uses: pnpm/action-setup@v4
|
|
with:
|
|
version: 10.12.1
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
cache: 'pnpm'
|
|
cache-dependency-path: 'web/pnpm-lock.yaml'
|
|
|
|
- name: Install system dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y libpam0g-dev build-essential python3 make g++
|
|
|
|
- name: Install dependencies
|
|
run: pnpm install --frozen-lockfile
|
|
|
|
- name: Build node-pty
|
|
run: |
|
|
cd node-pty && npm install && npm run build
|
|
|
|
- name: Build npm package
|
|
run: pnpm run build:npm -- --current-only
|
|
|
|
- name: Test npm package installation
|
|
run: |
|
|
# Create a test directory
|
|
mkdir -p /tmp/npm-test
|
|
cd /tmp/npm-test
|
|
|
|
# Copy the built package
|
|
cp ${{ github.workspace }}/web/vibetunnel-*.tgz .
|
|
|
|
# Install the package globally
|
|
npm install -g vibetunnel-*.tgz
|
|
|
|
# Verify installation
|
|
echo "=== Verifying installation ==="
|
|
which vibetunnel || (echo "vibetunnel not found" && exit 1)
|
|
which vt || echo "vt command not installed (expected on Linux)"
|
|
|
|
# Check if node-pty was extracted correctly
|
|
echo "=== Checking node-pty extraction ==="
|
|
# With the new build, node-pty is bundled directly in the package
|
|
ls -la $(npm root -g)/vibetunnel/node-pty/ || echo "Checking node-pty structure..."
|
|
ls -la $(npm root -g)/vibetunnel/node-pty/build/Release/pty.node || echo "node-pty prebuild will be extracted on postinstall"
|
|
|
|
# Check package structure
|
|
echo "=== Checking package structure ==="
|
|
ls -la $(npm root -g)/vibetunnel/
|
|
ls -la $(npm root -g)/vibetunnel/lib/
|
|
|
|
# Note: authenticate-pam is installed as a regular dependency now
|
|
# It's not bundled in the new clean build approach
|
|
|
|
# Test server startup
|
|
echo "=== Testing server startup ==="
|
|
vibetunnel --port 4020 --no-auth &
|
|
SERVER_PID=$!
|
|
|
|
# Wait for server to start
|
|
sleep 5
|
|
|
|
# Check if server is running
|
|
if ps -p $SERVER_PID > /dev/null; then
|
|
echo "✅ Server process is running"
|
|
else
|
|
echo "❌ Server process died"
|
|
exit 1
|
|
fi
|
|
|
|
# Test HTTP endpoint
|
|
if curl -s -f http://localhost:4020 > /dev/null; then
|
|
echo "✅ HTTP server is responding"
|
|
else
|
|
echo "❌ HTTP server not responding"
|
|
kill $SERVER_PID 2>/dev/null
|
|
exit 1
|
|
fi
|
|
|
|
# Test API endpoint
|
|
RESPONSE=$(curl -s http://localhost:4020/api/sessions)
|
|
# Check if response is an array (either empty [] or with sessions)
|
|
if echo "$RESPONSE" | grep -E '^\[.*\]$' > /dev/null; then
|
|
echo "✅ API is responding correctly"
|
|
echo "Response: $RESPONSE"
|
|
else
|
|
echo "❌ API not responding correctly"
|
|
echo "Response: $RESPONSE"
|
|
kill $SERVER_PID 2>/dev/null
|
|
exit 1
|
|
fi
|
|
|
|
# Clean up
|
|
kill $SERVER_PID
|
|
echo "✅ All tests passed!" |