diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b9a59518b2..a5a040893e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,198 +10,193 @@ permissions: contents: write pull-requests: write -# concurrency: -# group: test-${{ github.head_ref || github.run_id }} -# cancel-in-progress: true +concurrency: + group: test-${{ github.head_ref || github.run_id }} + cancel-in-progress: true env: FERRUM_PROCESS_TIMEOUT: 30 jobs: - # accessibility: - # name: Accessibility - # runs-on: ubuntu-latest-8-cores - # 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: 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 }} - # - 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: 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 }} - # - 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: Precompile assets - # run: | - # cd demo - # bundle - # bin/rails assets:precompile - # - name: Test - # run: | - # USE_BROWSER=chrome bundle exec rake test:system + accessibility: + name: Accessibility + runs-on: ubuntu-latest-8-cores + 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: 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 }} + - 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: 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 }} + - 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-22.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: ruby/setup-ruby@v1 @@ -219,99 +214,90 @@ jobs: run: | npm ci cd demo && npm ci - # - name: Precompile assets - # run: | - # cd demo - # bundle - # bin/rails assets:precompile - - name: Setup tmate session - uses: mxschmitt/action-tmate@v3 - with: - limit-access-to-actor: true - 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-8-cores - # 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 + visual: + name: Visual Regressions + if: ${{ github.event_name == 'pull_request' }} + timeout-minutes: 20 + runs-on: ubuntu-latest-8-cores + 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. + 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/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: ubuntu-latest-8-cores - # 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 + [Review visual differences](https://github.com/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: ubuntu-latest-8-cores + 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 diff --git a/previews/primer/alpha/select_panel_preview/list_of_links.html.erb b/previews/primer/alpha/select_panel_preview/list_of_links.html.erb index 0fb19baf80..c15bb8385a 100644 --- a/previews/primer/alpha/select_panel_preview/list_of_links.html.erb +++ b/previews/primer/alpha/select_panel_preview/list_of_links.html.erb @@ -7,9 +7,9 @@ open_on_load: open_on_load )) do |panel| %> <% panel.with_show_button { "Panel" } %> - <% panel.with_item(label: "GitHub", href: "https://github.com") %> - <% panel.with_item(label: "Microsoft", href: "https://microsoft.com", active: true) %> <% panel.with_item(label: "Primer", href: "https://primer.style") %> + <% panel.with_item(label: "Microsoft", href: "https://microsoft.com", active: true) %> + <% panel.with_item(label: "GitHub", href: "https://github.com") %> <% panel.with_item(label: "Catalyst", href: "https://catalyst.rocks") %> <% end %> diff --git a/test/system/alpha/select_panel_test.rb b/test/system/alpha/select_panel_test.rb index a83f318440..076f9e34eb 100644 --- a/test/system/alpha/select_panel_test.rb +++ b/test/system/alpha/select_panel_test.rb @@ -278,7 +278,7 @@ def test_pressing_enter_in_filter_input_navigates_if_first_item_is_link keyboard.type(:enter) - assert_current_path "https://github.com" + assert_current_path "https://primer.style" end def test_selecting_without_data_values