Skip to content

Add a local testing guide #6102

Add a local testing guide

Add a local testing guide #6102

Workflow file for this run

name: Continuous Integration
on:
push:
branches:
- main
pull_request:
schedule:
- cron: '0 2 * * *'
jobs:
node-test:
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
- run: npm test
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:
needs: engine-specs
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.2.3'
working-directory: engine
- run: bundle exec rubocop --format progress --format github
- run: bundle exec erblint --lint-all
demo-app:
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.2.3'
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() }}
demo-app-backstop:
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.2.3'
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
# 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:
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.2.3'
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