diff --git a/.github/actions/site-reset/action.yml b/.github/actions/site-reset/action.yml new file mode 100644 index 000000000..f24a9dc8b --- /dev/null +++ b/.github/actions/site-reset/action.yml @@ -0,0 +1,24 @@ +--- +name: Re-setting site, for CI Tests +description: Setup Docker with caching and Buildx + +inputs: + token: + description: A GitHub token + required: true + +runs: + using: "composite" + steps: + - uses: actions/checkout@v4 + with: + # Our Taskfile requires a proper checkout to function because of + # certain vars. + fetch-depth: 0 + - name: Install go-task + uses: arduino/setup-task@v2 + with: + repo-token: ${{ inputs.token }} + - name: Setup site + shell: bash + run: task ci:reset diff --git a/.github/workflows/ci-site-tests.yml b/.github/workflows/ci-site-tests.yml new file mode 100644 index 000000000..a1439be7d --- /dev/null +++ b/.github/workflows/ci-site-tests.yml @@ -0,0 +1,98 @@ +--- +name: CI site tests +on: pull_request + +jobs: + LightHouse: + name: Test site performance using Lighthouse + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Re-setting site + uses: ./.github/actions/site-reset + with: + token: ${{ secrets.GITHUB_TOKEN }} + - name: Run Lighthouse test + run: task ci:lighthouse + - name: Archive logs + uses: actions/upload-artifact@v4 + if: ${{ always() }} + with: + name: lighthouse-results + path: .lighthouseci + + Pa11y: + name: Test accessibility using Pa11y + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Re-setting site + uses: ./.github/actions/site-reset + with: + token: ${{ secrets.GITHUB_TOKEN }} + - name: Run Pa11y + run: task ci:pa11y + - name: Archive screenshots + if: ${{ always() }} + uses: actions/upload-artifact@v4 + with: + name: pa11y-screenshots + path: pa11y/screenshots + + Cypress: + name: Run Cypress functional tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Re-setting site + uses: ./.github/actions/site-reset + with: + token: ${{ secrets.GITHUB_TOKEN }} + - name: Run Cypress + run: task ci:cypress + - name: Archive videoes + if: ${{ always() }} + uses: actions/upload-artifact@v4 + with: + name: cypress-videos + path: cypress/videos + - name: Archive screenshots + if: ${{ always() }} + uses: actions/upload-artifact@v4 + with: + name: cypress-screenshots + path: cypress/screenshots + + CheckOpenApiSpec: + name: Check OpenAPI specification + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Re-setting site + uses: ./.github/actions/site-reset + with: + token: ${{ secrets.GITHUB_TOKEN }} + - name: Validate specification + run: task ci:openapi:validate + - name: Download current specification + run: task ci:openapi:download + - name: Ensure specification has not drifted + run: git diff --ignore-space-at-eol --exit-code openapi.json + - name: Generate package for CMS API specification + run: task dev:codegen:dpl-cms + - name: Ensure CMS API package code has not drifted + run: git diff --ignore-space-at-eol --exit-code packages/cms-api/* + + CheckDrupalConfig: + name: Check Drupal Config + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Re-setting site + uses: ./.github/actions/site-reset + with: + token: ${{ secrets.GITHUB_TOKEN }} + - name: Export configuration + run: task dev:cli -- drush config-export -y + - name: Check for uncommited configuration after install + run: git diff --ignore-space-at-eol --exit-code config/sync/*.yml diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml index 0ce56d467..f016a59c7 100644 --- a/.github/workflows/ci-tests.yml +++ b/.github/workflows/ci-tests.yml @@ -102,83 +102,6 @@ jobs: - name: Run PhpUnit run: ./vendor/bin/phpunit --coverage-text - LightHouse: - name: Test site performance using Lighthouse - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - # Our Taskfile requires a proper checkout to function because of - # certain vars. - fetch-depth: 0 - - name: Install go-task - uses: arduino/setup-task@v2 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Setup site - run: task ci:reset - - name: Run Lighthouse test - run: task ci:lighthouse - - name: Archive logs - uses: actions/upload-artifact@v4 - with: - name: lighthouse-results - path: .lighthouseci - - Pa11y: - name: Test accessibility using Pa11y - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - # Our Taskfile requires a proper checkout to function because of - # certain vars. - fetch-depth: 0 - - name: Install go-task - uses: arduino/setup-task@v2 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Setup site - run: task ci:reset - - name: Run Pa11y - run: task ci:pa11y - - name: Archive screenshots - if: ${{ always() }} - uses: actions/upload-artifact@v4 - with: - name: pa11y-screenshots - path: pa11y/screenshots - - Cypress: - name: Run Cypress functional tests - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - # Our Taskfile requires a proper checkout to function because of - # certain vars. - fetch-depth: 0 - - name: Install go-task - uses: arduino/setup-task@v2 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Setup site - run: task ci:reset - - name: Run Cypress - run: task ci:cypress - - name: Archive videoes - if: always() - uses: actions/upload-artifact@v4 - with: - name: cypress-videos - path: cypress/videos - - name: Archive screenshots - if: always() - uses: actions/upload-artifact@v4 - with: - name: cypress-screenshots - path: cypress/screenshots - MarkdownLint: name: Lint Markdown runs-on: ubuntu-latest @@ -256,52 +179,6 @@ jobs: - name: Run ESLint run: npx eslint cypress -c cypress/.eslintrc.json - CheckOpenApiSpec: - name: Check OpenAPI specification - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - # Our Taskfile requires a proper checkout to function because of - # certain vars. - fetch-depth: 0 - - name: Install go-task - uses: arduino/setup-task@v2 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Setup site - run: task ci:reset - - name: Validate specification - run: task ci:openapi:validate - - name: Download current specification - run: task ci:openapi:download - - name: Ensure specification has not drifted - run: git diff --ignore-space-at-eol --exit-code openapi.json - - name: Generate package for CMS API specification - run: task dev:codegen:dpl-cms - - name: Ensure CMS API package code has not drifted - run: git diff --ignore-space-at-eol --exit-code packages/cms-api/* - - CheckDrupalConfig: - name: Check Drupal Config - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - # Our Taskfile requires a proper checkout to function because of - # certain vars. - fetch-depth: 0 - - name: Install go-task - uses: arduino/setup-task@v2 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Setup site - run: task ci:reset - - name: Export configuration - run: task dev:cli -- drush config-export -y - - name: Check for uncommited configuration after install - run: git diff --ignore-space-at-eol --exit-code config/sync/*.yml - CheckPhpVersion: name: Check PHP version runs-on: ubuntu-latest