Merge pull request #203 from opf/changeset-release/main #859
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: Test | |
on: | |
pull_request: | |
push: | |
branches: | |
- main | |
permissions: | |
contents: write | |
pull-requests: write | |
concurrency: | |
group: test-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
env: | |
FERRUM_PROCESS_TIMEOUT: 45 | |
jobs: | |
accessibility: | |
name: Accessibility | |
runs-on: | |
labels: | |
- runs-on | |
- runner=16cpu-linux-x64 | |
- run-id=${{ github.run_id }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: '3.3' | |
bundler-cache: true | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 16 | |
cache: 'npm' | |
cache-dependency-path: | | |
package-lock.json | |
demo/package-lock.json | |
- name: Build | |
run: | | |
npm ci | |
cd demo && npm ci | |
- name: Test | |
run: bundle exec rake test:accessibility | |
components: | |
name: Components | |
runs-on: | |
labels: | |
- runs-on | |
- runner=16cpu-linux-x64 | |
- run-id=${{ github.run_id }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- rails_version: "6.1.1" | |
ruby_version: "3.0" | |
- rails_version: "7.0.3" | |
ruby_version: "3.0" | |
- rails_version: "7.1.3" | |
ruby_version: "3.2" | |
- rails_version: "7.1.3" | |
ruby_version: "3.3" | |
- rails_version: "main" | |
ruby_version: "3.2" | |
- rails_version: "main" | |
ruby_version: "3.3" | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.ruby_version }} | |
bundler-cache: true | |
cache-version: ${{ matrix.rails_version }}-${{ matrix.ruby_version }} | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 16 | |
cache: 'npm' | |
- name: Build | |
run: | | |
npm ci | |
bundle config unset deployment | |
bundle install --jobs 4 --retry 3 | |
env: | |
RUBY_VERSION: ${{ matrix.ruby_version }} | |
RAILS_VERSION: ${{ matrix.rails_version }} | |
- name: Test | |
run: | | |
bundle exec rake test:components | |
bundle exec rake test:coverage | |
env: | |
COVERAGE: 1 | |
RUBY_VERSION: ${{ matrix.ruby_version }} | |
RAILS_VERSION: ${{ matrix.rails_version }} | |
lib: | |
name: Lib | |
runs-on: | |
labels: | |
- runs-on | |
- runner=16cpu-linux-x64 | |
- run-id=${{ github.run_id }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- rails_version: "6.1.1" | |
ruby_version: "3.0" | |
- rails_version: "7.0.3" | |
ruby_version: "3.0" | |
- rails_version: "7.1.3" | |
ruby_version: "3.2" | |
- rails_version: "7.1.3" | |
ruby_version: "3.3" | |
- rails_version: "main" | |
ruby_version: "3.2" | |
- rails_version: "main" | |
ruby_version: "3.3" | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.ruby_version }} | |
bundler-cache: true | |
cache-version: ${{ matrix.rails_version }}-${{ matrix.ruby_version }} | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 16 | |
cache: 'npm' | |
- name: Build | |
run: | | |
npm ci | |
bundle config unset deployment | |
bundle install --jobs 4 --retry 3 | |
env: | |
RUBY_VERSION: ${{ matrix.ruby_version }} | |
RAILS_VERSION: ${{ matrix.rails_version }} | |
- name: Test | |
run: | | |
bundle exec rake test:lib | |
bundle exec rake test:coverage | |
env: | |
COVERAGE: 1 | |
RUBY_VERSION: ${{ matrix.ruby_version }} | |
RAILS_VERSION: ${{ matrix.rails_version }} | |
performance: | |
name: Performance | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- rails_version: "6.1.1" | |
ruby_version: "3.0" | |
- rails_version: "7.0.3" | |
ruby_version: "3.0" | |
- rails_version: "7.1.3" | |
ruby_version: "3.2" | |
- rails_version: "7.1.3" | |
ruby_version: "3.3" | |
- rails_version: "main" | |
ruby_version: "3.2" | |
- rails_version: "main" | |
ruby_version: "3.3" | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.ruby_version }} | |
bundler-cache: true | |
cache-version: ${{ matrix.rails_version }}-${{ matrix.ruby_version }} | |
- name: Build | |
run: | | |
bundle config unset deployment | |
bundle install --jobs 4 --retry 3 | |
env: | |
RUBY_VERSION: ${{ matrix.ruby_version }} | |
RAILS_VERSION: ${{ matrix.rails_version }} | |
- name: Test | |
run: | | |
bundle exec rake test:performance | |
env: | |
RUBY_VERSION: ${{ matrix.ruby_version }} | |
RAILS_VERSION: ${{ matrix.rails_version }} | |
system_chrome: | |
name: System (Chrome) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: '3.2' | |
bundler-cache: true | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 16 | |
cache: 'npm' | |
cache-dependency-path: | | |
package-lock.json | |
demo/package-lock.json | |
- name: Build | |
run: | | |
npm ci | |
cd demo && npm ci | |
- name: Test | |
run: | | |
USE_BROWSER=chrome bundle exec rake test:system | |
system_firefox: | |
name: System (Firefox) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: '3.2' | |
bundler-cache: true | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 16 | |
cache: 'npm' | |
cache-dependency-path: | | |
package-lock.json | |
demo/package-lock.json | |
- name: Build | |
run: | | |
npm ci | |
cd demo && npm ci | |
- name: Test | |
run: | | |
USE_BROWSER=firefox bundle exec rake test:system | |
visual: | |
name: Visual Regressions | |
if: ${{ github.event_name == 'pull_request' }} | |
timeout-minutes: 20 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: '3.2' | |
bundler-cache: true | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 16 | |
cache: 'npm' | |
cache-dependency-path: | | |
package-lock.json | |
demo/package-lock.json | |
- name: Build | |
run: | | |
npm ci | |
bundle install | |
bundle exec rake static:dump | |
cd demo | |
npm ci | |
bundle install | |
- name: Install Overmind | |
run: | | |
sudo apt-get install tmux | |
gem install overmind | |
- name: Install Playwright Browsers | |
run: npx playwright install --with-deps | |
- name: Run Playwright tests | |
id: playwright-run | |
continue-on-error: true | |
run: ./script/run-playwright | |
- id: auto-commit | |
uses: stefanzweifel/git-auto-commit-action@v5 | |
with: | |
commit_message: Generating component snapshots | |
file_pattern: .playwright/screenshots/**/*.png | |
- name: "Changes detected" | |
if: steps.auto-commit.outputs.changes_detected == 'true' | |
uses: phulsechinmay/rewritable-pr-comment@v0.3.0 | |
with: | |
message: | | |
### ⚠️ Visual differences found | |
Our visual comparison tests found UI differences. Please review the differences by viewing the files changed tab to ensure that the changes were intentional. | |
[Review visual differences](https://github.com/opf/primer_view_components/pull/${{ github.event.number }}/files?file-filters%5B%5D=.png&show-viewed-files=false) | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
COMMENT_IDENTIFIER: 'visual-comparison-diff' | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: playwright-report | |
path: .playwright/report/ | |
retention-days: 30 | |
- name: Failure | |
if: ${{ steps.auto-commit.outputs.changes_detected == 'true' || steps.playwright-run.outcome == 'failure' }} | |
run: exit 1 | |
selectors: | |
name: CSS coverage | |
runs-on: | |
labels: | |
- runs-on | |
- runner=16cpu-linux-x64 | |
- run-id=${{ github.run_id }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: '3.2' | |
bundler-cache: true | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 16 | |
cache: 'npm' | |
- name: NPM Build | |
run: npm ci | |
env: | |
# Disable CSS minification for tests | |
CI: 'false' | |
- name: Test CSS | |
run: bundle exec rake test:component_css |