name: End-to-End Tests

on:
    push:
        branches: [trunk]
    pull_request:
jobs:
    Setup:
        name: Setup
        runs-on: ubuntu-22.04
        steps:
            - uses: actions/checkout@v3
            - name: Cache node modules
              uses: actions/cache@v3
              env:
                  cache-name: cache-node-modules
              with:
                  # npm cache files are stored in `~/.npm` on Linux/macOS
                  path: ~/.npm
                  key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
                  restore-keys: |
                      ${{ runner.os }}-build-${{ env.cache-name }}-
                      ${{ runner.os }}-build-
                      ${{ runner.os }}-

            - name: Use Node.js 20.x
              uses: actions/setup-node@v3
              with:
                  node-version: 20.x

            - name: Npm install and build
              run: |
                  npm ci
                  npm run build

            - name: Install WordPress
              run: |
                  chmod -R 767 ./ # TODO: Possibly integrate in wp-env
                  npm run wp-env start
                  npm run wp-env run tests-cli wp theme activate storefront

            - name: Running the tests
              run: |
                  npm run test:e2e

            - name: Archive debug artifacts (screenshots, HTML snapshots)
              uses: actions/upload-artifact@v3
              if: always()
              with:
                  name: failures-artifacts
                  path: artifacts
