name: Nightly QA on: schedule: - cron: '0 3 * * *' workflow_dispatch: env: TARGET_URL: 'https://test.e-tib.com' PROJECT_NAME: 'etib' jobs: smoke: name: 💨 Smoke & Health runs-on: docker container: image: catthehacker/ubuntu:act-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup pnpm uses: pnpm/action-setup@v3 with: version: 10 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 - name: 🔍 Secret Diagnostics run: | echo "Checking available secrets..." [ -n "${{ secrets.NPM_TOKEN }}" ] && echo "✅ NPM_TOKEN is set" || echo "❌ NPM_TOKEN is empty" [ -n "${{ secrets.GITEA_PAT }}" ] && echo "✅ GITEA_PAT is set" || echo "❌ GITEA_PAT is empty" [ -n "${{ secrets.MINTEL_PRIVATE_TOKEN }}" ] && echo "✅ MINTEL_PRIVATE_TOKEN is set" || echo "❌ MINTEL_PRIVATE_TOKEN is empty" [ -n "${{ secrets.MINTEL_REGISTRY_TOKEN }}" ] && echo "✅ MINTEL_REGISTRY_TOKEN is set" || echo "❌ MINTEL_REGISTRY_TOKEN is empty" - name: 🔐 Registry Auth env: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} GITEA_PAT: ${{ secrets.GITEA_PAT }} MINTEL_PRIVATE_TOKEN: ${{ secrets.MINTEL_PRIVATE_TOKEN }} MINTEL_REGISTRY_TOKEN: ${{ secrets.MINTEL_REGISTRY_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: bash scripts/registry-auth.sh - name: Install dependencies run: pnpm install --no-frozen-lockfile - name: 🌐 Install Chrome & Dependencies run: | apt-get update && apt-get install -y libnss3 libnspr4 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxext6 libxfixes3 libxrandr2 libgbm1 libasound2t64 libpango-1.0-0 libcairo2 npx puppeteer browsers install chrome - name: 🚀 Run Smoke Test env: NEXT_PUBLIC_BASE_URL: ${{ env.TARGET_URL }} GATEKEEPER_PASSWORD: ${{ secrets.GATEKEEPER_PASSWORD }} run: npx tsx scripts/smoke.ts - name: 🔔 Notify if: always() run: | STATUS="${{ job.status }}" TITLE="💨 ${{ env.PROJECT_NAME }} Nightly Smoke $STATUS" curl -s -k -X POST "${{ secrets.GOTIFY_URL }}/message?token=${{ secrets.GOTIFY_TOKEN }}" \ -F "title=$TITLE" \ -F "message=Status: $STATUS | URL: ${{ env.TARGET_URL }}" \ -F "priority=5" || true