Skip to content

Commit d63cd8e

Browse files
princejosephclaude
andcommitted
Add GitHub Actions CI; modernise selenium/chromedriver setup
- Add .github/workflows/ci.yml running hyperstack-config and hyper-state specs on Ruby 3.1 with headless Chrome via browser-actions/setup-chrome - Add 'github' DRIVER mode to hyper-spec using CHROMEWEBDRIVER env var - Remove chromedriver-helper (removed from rubygems) from all gemspecs - Remove webdrivers (deprecated; Selenium Manager replaces it) from hyper-spec.gemspec and hyper-spec.rb - Pin selenium-webdriver >= 4.11 (ships with Selenium Manager) - Update Gemfile.locks for hyperstack-config and hyper-state to selenium-webdriver 4.32.0 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 07f3fe4 commit d63cd8e

13 files changed

Lines changed: 61 additions & 14 deletions

File tree

.github/workflows/ci.yml

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches:
6+
- rails-7-compatibility
7+
- edge
8+
pull_request:
9+
branches:
10+
- edge
11+
12+
jobs:
13+
test:
14+
name: ${{ matrix.gem }}
15+
runs-on: ubuntu-latest
16+
strategy:
17+
fail-fast: false
18+
matrix:
19+
gem:
20+
- hyperstack-config
21+
- hyper-state
22+
23+
defaults:
24+
run:
25+
working-directory: ruby/${{ matrix.gem }}
26+
27+
steps:
28+
- uses: actions/checkout@v4
29+
30+
- name: Set up Ruby
31+
uses: ruby/setup-ruby@v1
32+
with:
33+
ruby-version: '3.1'
34+
working-directory: ruby/${{ matrix.gem }}
35+
bundler-cache: true
36+
37+
- name: Set up Chrome
38+
uses: browser-actions/setup-chrome@v1
39+
id: setup-chrome
40+
41+
- name: Run specs
42+
run: bundle exec rake spec
43+
env:
44+
DRIVER: github
45+
CHROMEWEBDRIVER: ${{ steps.setup-chrome.outputs.chromedriver-path }}
46+
RAILS_ENV: test

ruby/hyper-component/hyper-component.gemspec

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ Gem::Specification.new do |spec|
2323
spec.add_dependency 'react-rails', '>= 2.4.0', '< 3.0'
2424

2525
spec.add_development_dependency 'bundler'
26-
spec.add_development_dependency 'chromedriver-helper'
2726
spec.add_development_dependency 'hyper-spec', Hyperstack::Component::VERSION
2827
spec.add_development_dependency 'jquery-rails'
2928
spec.add_development_dependency 'listen'

ruby/hyper-console/hyper-console.gemspec

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ Gem::Specification.new do |spec|
2222
spec.add_dependency 'hyper-store', Hyperloop::Console::VERSION
2323

2424
spec.add_development_dependency 'bundler'
25-
spec.add_development_dependency 'chromedriver-helper'
2625
spec.add_development_dependency 'hyper-component', Hyperloop::Console::VERSION
2726
spec.add_development_dependency 'hyper-operation', Hyperloop::Console::VERSION
2827
spec.add_development_dependency 'hyper-store', Hyperloop::Console::VERSION

ruby/hyper-i18n/hyper-i18n.gemspec

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ Gem::Specification.new do |spec|
2424
spec.add_dependency 'i18n'
2525

2626
spec.add_development_dependency 'bundler'
27-
spec.add_development_dependency 'chromedriver-helper'
2827
spec.add_development_dependency 'hyper-model', Hyperstack::I18n::VERSION
2928
spec.add_development_dependency 'hyper-spec', Hyperstack::I18n::VERSION
3029
spec.add_development_dependency 'mini_racer', '< 0.4.0' # something is busted with 0.4.0 and its libv8-node dependency

ruby/hyper-operation/hyper-operation.gemspec

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ Gem::Specification.new do |spec|
2626
spec.add_dependency 'tty-table'
2727

2828
spec.add_development_dependency 'bundler'
29-
spec.add_development_dependency 'chromedriver-helper'
3029
spec.add_development_dependency 'database_cleaner'
3130
spec.add_development_dependency 'hyper-spec', Hyperstack::Operation::VERSION
3231
spec.add_development_dependency 'mysql2'

ruby/hyper-router/hyper-router.gemspec

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ Gem::Specification.new do |spec|
1919
spec.add_dependency 'hyper-state', HyperRouter::VERSION
2020

2121
spec.add_development_dependency 'bundler'
22-
spec.add_development_dependency 'chromedriver-helper'
2322
spec.add_development_dependency 'hyper-spec', HyperRouter::VERSION
2423
spec.add_development_dependency 'hyper-store', HyperRouter::VERSION
2524
spec.add_development_dependency 'listen'

ruby/hyper-spec/hyper-spec.gemspec

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,15 @@ Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength
2222

2323
spec.add_dependency 'actionview'
2424
spec.add_dependency 'capybara'
25-
spec.add_dependency 'chromedriver-helper', '1.2.0'
2625
spec.add_dependency 'filecache'
2726
spec.add_dependency 'method_source'
2827
spec.add_dependency 'opal', ENV['OPAL_VERSION'] || '>= 0.11.0', '< 2.0'
2928
spec.add_dependency 'parser'
3029
spec.add_dependency 'rspec'
31-
spec.add_dependency 'selenium-webdriver'
30+
spec.add_dependency 'selenium-webdriver', '>= 4.11'
3231
spec.add_dependency 'timecop', '>= 0.8.1'
3332
spec.add_dependency 'uglifier'
3433
spec.add_dependency 'unparser', '>= 0.4.2'
35-
spec.add_dependency 'webdrivers'
3634

3735
spec.add_development_dependency 'bundler'
3836
spec.add_development_dependency 'hyper-component', HyperSpec::VERSION

ruby/hyper-spec/lib/hyper-spec.rb

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
require 'unparser'
55
require 'method_source'
66
require 'filecache'
7-
require 'webdrivers'
87

98

109
require 'capybara/rspec'
@@ -246,6 +245,19 @@ def self.on_server?
246245
Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
247246
end
248247

248+
# GitHub Actions: setup-chrome sets CHROMEWEBDRIVER to the chromedriver directory
249+
Capybara.register_driver :chrome_headless_github_actions do |app|
250+
options = ::Selenium::WebDriver::Chrome::Options.new
251+
options.add_argument('--headless')
252+
options.add_argument('--no-sandbox')
253+
options.add_argument('--disable-dev-shm-usage')
254+
options.add_argument('--disable-gpu')
255+
if (dir = ENV['CHROMEWEBDRIVER'])
256+
Selenium::WebDriver::Chrome::Service.driver_path = File.join(dir, 'chromedriver')
257+
end
258+
Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
259+
end
260+
249261
Capybara.register_driver :firefox_headless do |app|
250262
options = Selenium::WebDriver::Firefox::Options.new
251263
options.headless!
@@ -275,6 +287,7 @@ def self.on_server?
275287
when 'headless' then :selenium_chrome_headless
276288
when 'safari' then :safari
277289
when 'travis' then :chrome_headless_docker_travis
290+
when 'github' then :chrome_headless_github_actions
278291
else :selenium_chrome_headless
279292
end
280293
end

ruby/hyper-state/hyper-state.gemspec

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ Gem::Specification.new do |spec|
2020
spec.add_dependency 'hyperstack-config', Hyperstack::State::VERSION
2121

2222
spec.add_development_dependency 'bundler'
23-
spec.add_development_dependency 'chromedriver-helper'
2423
spec.add_development_dependency 'hyper-component', Hyperstack::State::VERSION
2524
spec.add_development_dependency 'hyper-spec', Hyperstack::State::VERSION
2625
spec.add_development_dependency 'listen'

ruby/hyper-store/hyper-store.gemspec

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ Gem::Specification.new do |spec|
2121
spec.add_dependency 'hyperstack-config', Hyperstack::Legacy::Store::VERSION
2222

2323
spec.add_development_dependency 'bundler'
24-
spec.add_development_dependency 'chromedriver-helper'
2524
spec.add_development_dependency 'hyper-component', Hyperstack::Legacy::Store::VERSION
2625
spec.add_development_dependency 'hyper-spec', Hyperstack::Legacy::Store::VERSION
2726
spec.add_development_dependency 'listen'

0 commit comments

Comments
 (0)