Test #855
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: Test | |
on: | |
push: | |
branches: [ master ] | |
pull_request: | |
type: [ opened, synchronize, reopened, review_requested ] | |
paths: | |
- '**.gemfile' | |
- '**.rb' | |
- '.github/workflows/**' | |
- '!bin/**' | |
workflow_dispatch: | |
env: | |
BUNDLE_GEMFILE: gemfiles/rails71_gems.rb | |
DEBIAN_FRONTEND: noninteractive | |
FERRUM_PROCESS_TIMEOUT: 40 | |
JAVA_OPTS: -Xmn2g -Xms6g -Xmx6g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -Xss1m | |
-XX:+UseG1GC -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -XX:ReservedCodeCacheSize=256m | |
-XX:+UseCodeCacheFlushing | |
JRUBY_OPTS: --dev | |
MALLOC_ARENA_MAX: 2 | |
RUBY_GC_HEAP_FREE_SLOTS: 600000 | |
RUBY_GC_HEAP_GROWTH_FACTOR: 1.1 | |
RUBY_GC_HEAP_INIT_SLOTS: 600000 | |
RUBY_YJIT_ENABLE: 1 | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
# Test that new contributors can run the tests directly after checkout. | |
test-minimal-setup: | |
name: Test with minimal setup | |
runs-on: ubuntu-latest | |
timeout-minutes: 5 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Setup Ruby | |
uses: ./.github/actions/setup-ruby-and-dependencies | |
with: | |
ruby-version: 3.3 | |
- run: bin/rake test | |
test: | |
name: Functional Testing | |
runs-on: ubuntu-latest | |
timeout-minutes: 5 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Setup Ruby and Cache Apt Packages | |
uses: ./.github/actions/setup-ruby-and-dependencies | |
with: | |
ruby-version: 3.3 | |
cache-apt-packages: true | |
- name: Run Tests with coverage | |
env: | |
COVERAGE: enabled | |
DISABLE_SKIP_TESTS: 1 | |
SCREENSHOT_DRIVER: vips | |
run: bin/rake test | |
- name: Setup Ruby and Cache Apt Packages | |
uses: ./.github/actions/upload-screenshots | |
with: | |
name: base-screenshots | |
- name: Upload Coverage | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coverage | |
retention-days: 1 | |
path: coverage | |
test-signature: | |
name: Testing Signatures | |
needs: [ 'test' ] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Setup Ruby and Cache Apt Packages | |
uses: ./.github/actions/setup-ruby-and-dependencies | |
with: | |
ruby-version: 3.3 | |
cache-apt-packages: true | |
- name: Tests Signatures | |
env: | |
SCREENSHOT_DRIVER: vips | |
run: bin/rake test:signatures | |
matrix: | |
name: Test Integration Rails & Ruby | |
if: > | |
github.ref == 'refs/heads/master' || | |
github.event_name == 'workflow_dispatch' || | |
github.event.pull_request.requested_reviewers.length > 0 | |
needs: [ test ] | |
runs-on: ubuntu-latest | |
timeout-minutes: ${{ contains(matrix.ruby-version, 'jruby') && 12 || 8 }} | |
continue-on-error: ${{ matrix.experimental }} | |
strategy: | |
matrix: | |
ruby-version: [ 3.3, 3.2, 3.1, jruby ] | |
gemfile: | |
- rails61_gems.rb | |
- rails70_gems.rb | |
- rails71_gems.rb | |
experimental: [ false ] | |
exclude: | |
# We already tested last version | |
- ruby-version: 3.3 | |
gemfile: rails71_gems.rb | |
experimental: false | |
# Tests for Rails 6.1 cannot exit properly on JRuby | |
- ruby-version: jruby | |
gemfile: rails61_gems.rb | |
experimental: false | |
include: | |
- ruby-version: 3.3 | |
gemfile: edge_gems.rb | |
experimental: true | |
- ruby-version: 3.4.0-preview1 | |
gemfile: edge_gems.rb | |
experimental: true | |
- ruby-version: jruby-head | |
gemfile: rails71_gems.rb | |
experimental: true | |
env: | |
BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Ruby | |
uses: ./.github/actions/setup-ruby-and-dependencies | |
with: | |
ruby-version: ${{ matrix.ruby-version }} | |
ruby-cache-version: ${{ matrix.ruby-version }}-${{ matrix.gemfile }}-1 | |
cache-apt-packages: true | |
- name: Run tests | |
uses: nick-fields/retry@v3 | |
with: | |
timeout_minutes: ${{ contains(matrix.ruby-version, 'jruby') && 5 || 3 }} | |
max_attempts: 2 | |
command: bin/rake test | |
matrix-screenshot-driver: | |
name: Test Integration Capybara & Image Drivers | |
if: > | |
github.ref == 'refs/heads/master' || | |
github.event.inputs || | |
github.event_name == 'workflow_dispatch' || | |
github.event.pull_request.requested_reviewers.length > 0 | |
needs: [ 'test' ] | |
strategy: | |
matrix: | |
screenshot-driver: [ vips, chunky_png ] | |
capybara-driver: [ selenium_headless, selenium_chrome_headless, cuprite ] | |
runs-on: ubuntu-latest | |
timeout-minutes: 5 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Setup Ruby and Cache Apt Packages | |
uses: ./.github/actions/setup-ruby-and-dependencies | |
with: | |
ruby-version: 3.3 | |
cache-apt-packages: ${{ matrix.screenshot-driver == 'vips' }} | |
- name: Cache Selenium | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cache/selenium | |
key: ${{ runner.os }}-selenium-${{ matrix.capybara-driver }} | |
- name: Run tests | |
run: bin/rake test:integration | |
env: | |
SCREENSHOT_DRIVER: ${{ matrix.screenshot-driver }} | |
CAPYBARA_DRIVER: ${{ matrix.capybara-driver }} | |
- name: Setup Ruby and Cache Apt Packages | |
uses: ./.github/actions/upload-screenshots | |
with: | |
name: screenshots-${{ matrix.screenshot-driver }}-${{ matrix.capybara-driver }} |