name: Test Suite on: push: branches: [main, develop] workflow_run: workflows: ["Deploy Development", "Deploy Production"] types: [completed] jobs: lint-backend: if: ${{ github.event_name != 'workflow_run' || github.event.workflow_run.conclusion == 'success' }} runs-on: ubuntu-latest steps: - name: Check backend syntax run: | EVENT_NAME="${{ github.event_name }}" REF_NAME="${{ github.ref_name }}" RUN_WORKFLOW="${{ github.event.workflow_run.name }}" APP_DIR="/home/lars/docker/shinkan" if [ "$EVENT_NAME" = "workflow_run" ]; then if [ "$RUN_WORKFLOW" = "Deploy Development" ]; then APP_DIR="/home/lars/docker/shinkan-dev" fi elif [ "$REF_NAME" = "develop" ]; then APP_DIR="/home/lars/docker/shinkan-dev" fi python3 -m py_compile "$APP_DIR/backend/main.py" echo "✓ Backend syntax OK" build-frontend: if: ${{ github.event_name != 'workflow_run' || github.event.workflow_run.conclusion == 'success' }} runs-on: ubuntu-latest steps: - name: Build frontend run: | EVENT_NAME="${{ github.event_name }}" REF_NAME="${{ github.ref_name }}" RUN_WORKFLOW="${{ github.event.workflow_run.name }}" APP_DIR="/home/lars/docker/shinkan" if [ "$EVENT_NAME" = "workflow_run" ]; then if [ "$RUN_WORKFLOW" = "Deploy Development" ]; then APP_DIR="/home/lars/docker/shinkan-dev" fi elif [ "$REF_NAME" = "develop" ]; then APP_DIR="/home/lars/docker/shinkan-dev" fi cd "$APP_DIR/frontend" npm install npm run build echo "✓ Frontend build OK" playwright-tests: if: ${{ github.event_name != 'workflow_run' || github.event.workflow_run.conclusion == 'success' }} runs-on: ubuntu-latest needs: [lint-backend, build-frontend] steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' - name: Install Playwright run: | npm install -D @playwright/test npx playwright install chromium - name: Run Playwright tests env: TEST_EMAIL: lars@stommer.com TEST_PASSWORD: 12345678 run: | npx playwright test echo "✓ Playwright tests passed" - name: Upload test screenshots if: failure() uses: actions/upload-artifact@v4 with: name: playwright-screenshots path: screenshots/ retention-days: 7