Skip to content

feat(test): add multi-device E2E testing support #11

feat(test): add multi-device E2E testing support

feat(test): add multi-device E2E testing support #11

Workflow file for this run

name: Deploy to SmartHavenAI.com
on:
push:
branches:
- master
workflow_dispatch:
jobs:
test:
name: Run Tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 8
- name: Install dependencies
run: pnpm install
- name: Run unit tests
run: pnpm test
- name: Install Playwright
run: npx playwright install --with-deps
- name: Run E2E tests
run: pnpm test:e2e --run
- name: Upload test results
if: failure()
uses: actions/upload-artifact@v3
with:
name: test-results
path: test-results/
build:
name: Build Application
needs: test
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 8
- name: Install dependencies
run: pnpm install
- name: Build application
run: pnpm build
- name: Upload build artifacts
uses: actions/upload-artifact@v3
with:
name: dist
path: dist/
deploy:
name: Deploy to Hostinger
needs: build
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/master'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Download build artifacts
uses: actions/download-artifact@v3
with:
name: dist
path: dist/
- name: Install SSH key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.HOSTINGER_SSH_KEY }}
known_hosts: ${{ secrets.HOSTINGER_KNOWN_HOSTS }}
- name: Create deployment package
run: |
tar -czf deploy.tar.gz dist/ package.json pnpm-lock.yaml ecosystem.config.js
- name: Upload to server
run: |
scp deploy.tar.gz ${{ secrets.HOSTINGER_USER }}@${{ secrets.HOSTINGER_HOST }}:/var/www/smarthaven/
- name: Deploy on server
run: |
ssh ${{ secrets.HOSTINGER_USER }}@${{ secrets.HOSTINGER_HOST }} << 'ENDSSH'
cd /var/www/smarthaven
# Backup current deployment
if [ -d "dist" ]; then
tar -czf backup-$(date +%Y%m%d-%H%M%S).tar.gz dist/
ls -t backup-*.tar.gz | tail -n +6 | xargs -r rm
fi
# Extract new deployment
tar -xzf deploy.tar.gz
rm deploy.tar.gz
# Restart PM2 if needed
if pm2 list | grep -q "transcript-parser"; then
pm2 restart transcript-parser
else
pm2 start ecosystem.config.js
pm2 save
fi
echo "Deployment complete!"
ENDSSH
- name: Verify deployment
run: |
echo "Waiting for application to start..."
sleep 10
curl -f https://smarthaven.ai.com || exit 1
echo "✅ Deployment verified!"