name: Test Patches
on:
    workflow_dispatch:
    schedule:
        # Every day at midnight
        - cron: 0 0 * * *

jobs:
    TestPlugins:
        if: github.repository == 'Vendicated/Vencord'
        runs-on: ubuntu-latest

        steps:
            - uses: actions/checkout@v4
              if: ${{ github.event_name == 'schedule' }}
              with:
                  ref: dev

            - uses: actions/checkout@v4
              if: ${{ github.event_name == 'workflow_dispatch' }}

            - uses: pnpm/action-setup@v3 # Install pnpm using packageManager key in package.json

            - name: Use Node.js 20
              uses: actions/setup-node@v4
              with:
                  node-version: 20
                  cache: "pnpm"

            - name: Install dependencies
              run: |
                  pnpm install --frozen-lockfile

            - name: Install Google Chrome
              id: setup-chrome
              uses: browser-actions/setup-chrome@82b9ce628cc5595478a9ebadc480958a36457dc2
              with:
                  chrome-version: stable

            - name: Build web
              run: pnpm buildWeb --standalone --dev

            - name: Create Report
              timeout-minutes: 10
              run: |
                  export PATH="$PWD/node_modules/.bin:$PATH"
                  export CHROMIUM_BIN=${{ steps.setup-chrome.outputs.chrome-path }}

                  esbuild scripts/generateReport.ts > dist/report.mjs
                  node dist/report.mjs >> $GITHUB_STEP_SUMMARY
              env:
                  DISCORD_TOKEN: ${{ secrets.DISCORD_TOKEN }}
                  DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}

            - name: Create Report (Canary)
              timeout-minutes: 10
              if: success() || failure() # even run if previous one failed
              run: |
                  export PATH="$PWD/node_modules/.bin:$PATH"
                  export CHROMIUM_BIN=${{ steps.setup-chrome.outputs.chrome-path }}
                  export USE_CANARY=true

                  esbuild scripts/generateReport.ts > dist/report.mjs
                  node dist/report.mjs >> $GITHUB_STEP_SUMMARY
              env:
                  DISCORD_TOKEN: ${{ secrets.DISCORD_TOKEN }}
                  DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}