name: CI on: push: branches: [develop, main] pull_request: branches: [develop, main] types: [opened, synchronize, reopened, ready_for_review] permissions: contents: read jobs: validate: if: github.event_name == 'push' || github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20.19.0 cache: npm - name: Install locked dependencies run: npm ci - name: Validate template contract run: npm run check - name: Execute fixed QKForce profile run: npm run qkforce:test - name: Verify portable report exists if: always() run: test -s qreport-results/index.html - name: Upload QKTestAnalytics results if: always() uses: actions/upload-artifact@v4 with: name: qkforce-results path: qreport-results/ if-no-files-found: warn