name: Argos CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
    types:
      # Those 3 are the default PR workflow activity types,
      # see https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request
      - opened
      - synchronize
      - reopened
      # We want trigger workflow on labeled too!
      - labeled

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

jobs:
  take-screenshots:
    # Argos is heavy to run
    # We only want to trigger Argos on PRs with the 'Argos' label
    # See https://stackoverflow.com/questions/62325286/run-github-actions-when-pull-requests-have-a-specific-label
    if: ${{ (github.event_name != 'pull_request' && github.ref_name == 'main') || (github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'Argos')) }}
    runs-on: ubuntu-latest
    steps:
      - name: Check out repository code
        uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0

      - name: Use Node.js
        uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
        with:
          node-version: lts/*
          cache: yarn

      - name: Install dependencies
        run: yarn || yarn || yarn

      - name: Install Playwright browsers
        run: npx playwright install --with-deps chromium

      - name: Build website fast
        run: yarn argos:build

      - name: Take Argos screenshots
        run: yarn argos:screenshot
