Throw ElementError
when the menu of the header is missing but a toggle is present
#9327
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Tests | |
on: | |
pull_request: | |
push: | |
branches: | |
- main | |
- 'feature/**' | |
- 'support/**' | |
workflow_dispatch: | |
concurrency: | |
group: tests-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
install: | |
name: Install | |
runs-on: ${{ matrix.runner }} | |
env: | |
PUPPETEER_SKIP_DOWNLOAD: true | |
strategy: | |
fail-fast: false | |
matrix: | |
runner: | |
- ubuntu-latest | |
- windows-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4.0.0 | |
- name: Install dependencies | |
uses: ./.github/workflows/actions/install-node | |
build: | |
name: Build | |
runs-on: ${{ matrix.runner }} | |
needs: [install] | |
strategy: | |
fail-fast: false | |
matrix: | |
runner: | |
- ubuntu-latest | |
- windows-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4.0.0 | |
- name: Restore dependencies | |
uses: ./.github/workflows/actions/install-node | |
- name: Build | |
uses: ./.github/workflows/actions/build | |
lint: | |
name: ${{ matrix.task.description }} (${{ matrix.runner }}) | |
runs-on: ${{ matrix.runner }} | |
needs: [install] | |
strategy: | |
fail-fast: false | |
matrix: | |
runner: | |
- ubuntu-latest | |
- windows-latest | |
task: | |
- description: Lint Sass | |
name: lint-scss | |
run: npm run lint:scss | |
cache: .cache/stylelint | |
- description: Lint JavaScript | |
name: lint-js | |
run: npm run lint:js | |
cache: .cache/eslint | |
- description: EditorConfig | |
name: lint-editorconfig | |
run: npm run lint:editorconfig | |
- description: Prettier | |
name: lint-prettier | |
run: npm run lint:prettier | |
cache: .cache/prettier | |
- description: TypeScript compiler | |
name: lint-types | |
run: npm run lint:types -- --incremental | |
cache: '**/*.tsbuildinfo' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4.0.0 | |
- name: Restore dependencies | |
uses: ./.github/workflows/actions/install-node | |
- name: Cache linter | |
if: ${{ matrix.task.cache }} | |
uses: actions/cache@v3.3.2 | |
with: | |
# Use faster GNU tar for all runners | |
enableCrossOsArchive: true | |
key: ${{ matrix.task.name }}-${{ runner.os }} | |
path: ${{ matrix.task.cache }} | |
- name: Run lint task | |
run: ${{ matrix.task.run }} | |
test: | |
name: ${{ matrix.task.description }} (${{ matrix.runner }}) | |
runs-on: ${{ matrix.runner }} | |
needs: [install, build] | |
env: | |
# Use 2x CPU cores unless on Windows (runs slower when concurrent) | |
# https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources | |
MAX_WORKERS: ${{ matrix.runner == 'windows-latest' && '1' || '2' }} | |
strategy: | |
fail-fast: false | |
matrix: | |
runner: | |
- ubuntu-latest | |
- windows-latest | |
task: | |
- description: Nunjucks macro tests | |
name: test-macro | |
cache: .cache/jest | |
projects: | |
- Nunjucks macro tests | |
- description: JavaScript unit tests | |
name: test-unit | |
cache: .cache/jest | |
coverage: true | |
projects: | |
- JavaScript unit tests | |
- description: JavaScript behaviour tests | |
name: test-behaviour | |
cache: .cache/jest | |
coverage: true | |
projects: | |
- JavaScript behaviour tests | |
- description: JavaScript component tests | |
name: test-component | |
cache: | | |
.cache/jest | |
.cache/puppeteer | |
projects: | |
- JavaScript component tests | |
- description: Accessibility tests | |
name: test-accessibility | |
cache: | | |
.cache/jest | |
.cache/puppeteer | |
projects: | |
- Accessibility tests | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4.0.0 | |
- name: Restore dependencies | |
uses: ./.github/workflows/actions/install-node | |
- name: Restore build | |
uses: ./.github/workflows/actions/build | |
- name: Cache task | |
if: ${{ matrix.task.cache }} | |
uses: actions/cache@v3.3.2 | |
with: | |
# Use faster GNU tar for all runners | |
enableCrossOsArchive: true | |
key: ${{ matrix.task.name }}-${{ runner.os }} | |
path: ${{ matrix.task.cache }} | |
- name: Run test task | |
run: npx jest --color ${{ format('--coverage={0} --maxWorkers={1} --selectProjects "{2}"', matrix.task.coverage || false, env.MAX_WORKERS, join(matrix.task.projects, '", "')) }} | |
- name: Save test coverage | |
uses: actions/upload-artifact@v3.1.3 | |
with: | |
name: ${{ matrix.task.description }} coverage (${{ matrix.runner }}) | |
path: coverage | |
if-no-files-found: ignore | |
verify: | |
name: ${{ matrix.task.description }} (${{ matrix.runner }}) | |
runs-on: ${{ matrix.runner }} | |
needs: [install, build] | |
strategy: | |
fail-fast: false | |
matrix: | |
runner: | |
- ubuntu-latest | |
- windows-latest | |
task: | |
- description: Verify package build | |
name: test-build-package | |
run: npm run build:package -- --ignore-scripts | |
- description: Verify distribution build | |
name: test-build-release | |
run: npm run build:release -- --ignore-scripts | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4.0.0 | |
- name: Restore dependencies | |
uses: ./.github/workflows/actions/install-node | |
- name: Restore build | |
uses: ./.github/workflows/actions/build | |
- name: Run verify task | |
run: ${{ matrix.task.run }} | |
package: | |
name: Export ${{ matrix.conditions }}, Node.js ${{ matrix.node-version }} | |
runs-on: ubuntu-latest | |
needs: [install, build] | |
strategy: | |
fail-fast: false | |
matrix: | |
node-version: | |
- 12 # Node.js 12.20+ uses package exports with subpath patterns | |
- 18 # Node.js 17+ cannot use package exports with trailing slashes | |
- 20 | |
conditions: | |
- require | |
- import | |
include: | |
- conditions: require | |
node-version: 12.18 # Node.js 12.18 uses package exports with trailing slashes | |
env: | |
# Node.js conditions override from "require" to "import" etc | |
# https://nodejs.org/api/cli.html#-c-condition---conditionscondition | |
FLAGS: ${{ matrix.conditions != 'require' && format(' --conditions {0}', matrix.conditions) || '' }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4.0.0 | |
- name: Restore build | |
uses: ./.github/workflows/actions/build | |
- name: Change Node.js version | |
uses: actions/setup-node@v3.8.1 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- run: node --eval "console.log(require.resolve('govuk-frontend'))"${{ env.FLAGS }} | |
working-directory: packages/govuk-frontend | |
- run: node --eval "console.log(require.resolve('govuk-frontend/package.json'))"${{ env.FLAGS }} | |
working-directory: packages/govuk-frontend | |
- run: node --eval "console.log(require.resolve('govuk-frontend/dist/govuk/components/accordion/accordion.bundle.js'))"${{ env.FLAGS }} | |
working-directory: packages/govuk-frontend | |
- run: node --eval "console.log(require.resolve('govuk-frontend/dist/govuk/components/accordion/accordion.bundle.mjs'))"${{ env.FLAGS }} | |
working-directory: packages/govuk-frontend | |
- run: node --eval "console.log(require.resolve('govuk-frontend/dist/govuk/i18n.mjs'))"${{ env.FLAGS }} | |
working-directory: packages/govuk-frontend | |
regression: | |
name: Percy | |
needs: [install, build] | |
# Run existing "Percy screenshots" workflow | |
# (after install and build have been cached) | |
uses: ./.github/workflows/screenshots.yml | |
secrets: inherit | |
generate-stats: | |
name: Stats comment | |
needs: [install, build] | |
permissions: | |
pull-requests: write | |
# Run existing "Stats comment" workflow | |
# (after install and build have been cached) | |
uses: ./.github/workflows/stats-comment.yml |