Our tests are failing fairly consistently on CI. We believe that this started when the most recent Github Actions ubuntu-latest image was released[1]. Though, we don't 100% understand why. There's some speculation[2] that the root of the issue has something to do with Chrome/Chromedriver version 134 (which is the version bundled with that new ubuntu-latest). [1]: https://github.com/actions/runner-images PR#11761 [2]: https://github.com/teamcapybara/capybara Issue#2800 We've largely copied what the signon team did to get their CI back up-and-running[^3]. [^3]: https://github.com/alphagov/signon PR#3663 In this commit we remove the version of Chrome that the actions/runner-images image bundles for us, so that Selenium doesn't try to use it and install an old version of Chrome and Chromedriver.
98 lines
2.9 KiB
YAML
98 lines
2.9 KiB
YAML
name: tests
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
pull_request:
|
|
branches-ignore:
|
|
- i18n_master
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
env:
|
|
TEST_COVERAGE: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && 1 || '' }}
|
|
|
|
jobs:
|
|
tests:
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 60
|
|
services:
|
|
postgres:
|
|
image: postgres:13.16
|
|
ports: ["5432:5432"]
|
|
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
|
|
env:
|
|
POSTGRES_USER: consul
|
|
POSTGRES_PASSWORD: password
|
|
env:
|
|
PGUSER: consul
|
|
PGPASSWORD: password
|
|
RAILS_ENV: test
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
ci_node_total: [5]
|
|
ci_node_index: [0, 1, 2, 3, 4]
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: ruby/setup-ruby@v1
|
|
with:
|
|
bundler-cache: true
|
|
- name: Setup NPM
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
cache: "npm"
|
|
node-version-file: ".node-version"
|
|
- name: Install node packages
|
|
run: npm clean-install
|
|
- name: Install ImageMagick
|
|
run: sudo apt-get install imagemagick
|
|
- name: Remove image-bundled Chrome
|
|
run: sudo apt-get purge google-chrome-stable
|
|
- name: Setup Chrome/Chromium 128
|
|
uses: browser-actions/setup-chrome@v1
|
|
with:
|
|
chrome-version: 128
|
|
install-chromedriver: true
|
|
install-dependencies: true
|
|
- name: Copy secrets and database files
|
|
run: for i in config/*.example; do cp "$i" "${i/.example}"; done
|
|
- name: Setup database
|
|
run: bundle exec rake db:setup
|
|
- name: Compile assets
|
|
run: bundle exec rake assets:precompile > /dev/null 2>&1
|
|
- name: Run test suite
|
|
env:
|
|
KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC: ${{ secrets.KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC }}
|
|
KNAPSACK_PRO_CI_NODE_TOTAL: ${{ matrix.ci_node_total }}
|
|
KNAPSACK_PRO_CI_NODE_INDEX: ${{ matrix.ci_node_index }}
|
|
KNAPSACK_PRO_FIXED_QUEUE_SPLIT: true
|
|
KNAPSACK_PRO_LOG_LEVEL: info
|
|
run: bin/knapsack_pro_rspec
|
|
- name: Coveralls Parallel
|
|
if: ${{ env.TEST_COVERAGE == 1 }}
|
|
uses: coverallsapp/github-action@master
|
|
with:
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
flag-name: run-${{ matrix.ci_node_index }}
|
|
parallel: true
|
|
- name: Upload screenshots
|
|
if: failure()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: screenshots-${{ matrix.ci_node_index }}
|
|
path: tmp/capybara/
|
|
coveralls:
|
|
permissions:
|
|
contents: none
|
|
runs-on: ubuntu-24.04
|
|
needs: tests
|
|
steps:
|
|
- name: Finish coveralls
|
|
if: ${{ env.TEST_COVERAGE == 1 }}
|
|
uses: coverallsapp/github-action@master
|
|
with:
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
parallel-finished: true
|