Skip to content

Commit

Permalink
Split up all tests workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
davidrapson committed May 16, 2024
1 parent 4b7d2da commit 23495e5
Show file tree
Hide file tree
Showing 7 changed files with 265 additions and 0 deletions.
33 changes: 33 additions & 0 deletions .github/workflows/all-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Run all tests

on:
pull_request: {}
workflow_call: {}

jobs:
lint:
uses: ./.github/workflows/lint.yml

jest:
uses: ./.github/workflows/jest.yml

engine:
uses: ./.github/workflows/engine.yml

cypress:
uses: ./.github/workflows/cypress.yml

backstop:
uses: ./.github/workflows/backstop.yml

docs-build:
uses: ./.github/workflows/docs-build.yml

all-tests:
needs:
- lint
- jest
- engine
- cypress
- backstop
- docs-build
47 changes: 47 additions & 0 deletions .github/workflows/backstop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Backstop

on: workflow_call

jobs:
backstop:
name: Run Backstop tests
runs-on: ubuntu-latest
env:
RAILS_ENV: test
CYPRESS_INSTALL_BINARY: 0
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: true
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: .nvmrc

# We link the @citizensadvice/design-system package
# from the root but we only build the lib/ directory
# when we publish to npm, so we need to build it first.
- uses: bahmutov/npm-install@v1
- run: npm run build

# Setup demo app
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3.1'
bundler-cache: true
working-directory: demo

- uses: bahmutov/npm-install@v1
with:
working-directory: demo

- run: npm run backstop:ci
working-directory: demo

- uses: actions/upload-artifact@v4
if: failure()
with:
name: backstop-report
path: |
demo/visual-regression/backstop_data/html_report
demo/visual-regression/backstop_data/bitmaps_reference
demo/visual-regression/backstop_data/bitmaps_test
retention-days: 3
62 changes: 62 additions & 0 deletions .github/workflows/cypress.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Cypress

on: workflow_call

jobs:
cypress:
name: Run Cypress tests
runs-on: ubuntu-latest
env:
RAILS_ENV: test
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: true
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: true
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: .nvmrc

# We link the @citizensadvice/design-system package
# from the root but we only build the lib/ directory
# when we publish to npm, so we need to build it first.
- uses: bahmutov/npm-install@v1
- run: npm run build

# Setup demo app
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3.1'
bundler-cache: true
working-directory: demo

# Cache cypress binary
- uses: actions/cache@v4
with:
path: /home/runner/.cache/Cypress
key: cypress-binary-${{ hashFiles('package-lock.json') }}

# Npm install
- uses: bahmutov/npm-install@v1
with:
working-directory: demo

# Run rubocop against demo app code
- run: bundle exec rubocop --format progress --format github
working-directory: demo

# Run asset build
- run: ./bin/rails assets:precompile
working-directory: demo

# Run cypress tests
- run: ./bin/rails cypress:run
working-directory: demo
env:
CYPRESS_RAILS_CYPRESS_OPTS: '--browser chrome'

# Archive test screenshots
- uses: actions/upload-artifact@v4
with:
name: cypress-screenshots
path: demo/cypress/screenshots
if: ${{ failure() }}
43 changes: 43 additions & 0 deletions .github/workflows/docs-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Docs build

on: workflow_call

jobs:
# Runs a build of the docs website as a smoke test
# to check there's no build failures
# This is in addition to any builds run when adding the
# "docs preview" label to a pull request.
docs-build:
name: Run docs build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: .nvmrc

# We link the @citizensadvice/design-system package
# from the root but we only build the lib/ directory
# when we publish to npm, so we need to build it first.
- uses: bahmutov/npm-install@v1
- run: npm run build

# Setup docs site
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3.1'
bundler-cache: true
working-directory: design-system-docs

# Install dependencies
- uses: bahmutov/npm-install@v1
with:
working-directory: design-system-docs

# Run rubocop against docs code
- run: bundle exec rubocop --format progress --format github
working-directory: design-system-docs

# Run a production build to confirm that assets compile correctly
- run: ./bin/bridgetown deploy
working-directory: design-system-docs
50 changes: 50 additions & 0 deletions .github/workflows/engine.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Engine

on: workflow_call

jobs:
engine-specs:
name: Run engine specs
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
# Active Ruby versions (https://endoflife.date/ruby)
ruby_version: ['3.1', '3.2', '3.3']
# Last 3 major Rails releases
rails_version: ['~> 6.1', '~> 7.0.0', '~> 7.1.0']
# Any supported ViewComponent versions
view_component_version: ['~> 2.82', '~> 3']
env:
RAILS_VERSION: ${{ matrix.rails_version }}
VIEW_COMPONENT_VERSION: ${{ matrix.view_component_version }}
defaults:
run:
working-directory: engine
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby_version }}
working-directory: engine
- run: |
bundle config path vendor/bundle
bundle update
bundle install --jobs 4 --retry 3
- run: bundle exec rake spec

engine-lint:
name: Run engine lint checks
runs-on: ubuntu-latest
defaults:
run:
working-directory: engine
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
bundler-cache: true
ruby-version: '3.3.1'
working-directory: engine
- run: bundle exec rubocop --format progress --format github
- run: bundle exec erblint --lint-all
15 changes: 15 additions & 0 deletions .github/workflows/jest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: Jest

on: workflow_call

jobs:
jest:
name: Run Jest tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
- uses: bahmutov/npm-install@v1
- run: npm test
15 changes: 15 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: Lint

on: workflow_call

jobs:
jest:
name: Run lint checks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
- uses: bahmutov/npm-install@v1
- run: npm run lint

0 comments on commit 23495e5

Please sign in to comment.