Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ FROM ruby:2.7.8
# Install dependency packages
RUN apt-get update && apt-get install -y \
chromium \
chromium-driver \
curl \
fonts-liberation \
libappindicator3-1 \
Expand Down
22 changes: 13 additions & 9 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,7 @@ GEM
specs:
addressable (2.8.7)
public_suffix (>= 2.0.2, < 7.0)
apparition (0.6.0)
capybara (~> 3.13, < 4)
websocket-driver (>= 0.6.5)
ast (2.4.3)
base64 (0.2.0)
bigdecimal (3.1.9)
byebug (11.1.3)
capybara (3.39.2)
Expand Down Expand Up @@ -52,6 +48,10 @@ GEM
matrix (0.4.2)
method_source (1.1.0)
mini_mime (1.1.5)
mini_portile2 (2.8.9)
nokogiri (1.15.7)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
nokogiri (1.15.7-aarch64-linux)
racc (~> 1.4)
nokogiri (1.15.7-arm64-darwin)
Expand Down Expand Up @@ -102,6 +102,11 @@ GEM
rubocop-rspec (1.41.0)
rubocop (>= 0.68.1)
ruby-progressbar (1.13.0)
rubyzip (2.4.1)
selenium-webdriver (4.9.0)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0)
websocket (~> 1.0)
simplecov (0.22.0)
docile (~> 1.1)
simplecov-html (~> 0.11)
Expand All @@ -113,27 +118,26 @@ GEM
addressable (>= 2.8.0)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
websocket-driver (0.7.7)
base64
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
websocket (1.2.11)
xpath (3.2.0)
nokogiri (~> 1.8)

PLATFORMS
aarch64-linux
arm64-darwin-24
ruby
x86_64-linux

DEPENDENCIES
apparition
capybara
grpc-web!
pry-byebug
rack-cors
rake
rspec (~> 3.3)
rubocop (~> 0.79.0)
rubocop-rspec
selenium-webdriver
simplecov
webmock

Expand Down
3 changes: 2 additions & 1 deletion grpc-web.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ Gem::Specification.new do |spec|
spec.add_dependency 'google-protobuf', '~> 3.13.0'
spec.add_dependency 'rack', '>= 1.6.0', '< 3.0'

spec.add_development_dependency 'apparition'
spec.add_development_dependency 'capybara'
spec.add_development_dependency 'selenium-webdriver'
spec.add_development_dependency 'pry-byebug'
spec.add_development_dependency 'rack-cors'
spec.add_development_dependency 'rake'
Expand Down
31 changes: 19 additions & 12 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -109,18 +109,25 @@
require 'test_grpc_web_app'
Capybara.app = TestGRPCWebApp.build

require 'capybara/apparition'
Capybara.register_driver :apparition do |app|
opts = {
headless: true,
browser_options: [
:no_sandbox,
{ disable_features: 'VizDisplayCompositor' },
:disable_gpu,
],
}
Capybara::Apparition::Driver.new(app, opts)
require 'selenium-webdriver'

Capybara.register_driver :selenium_chrome_headless do |app|
options = Selenium::WebDriver::Chrome::Options.new
# Run Chrome without a GUI, necessary for CI/Docker environments
options.add_argument('--headless')
# Disable Chrome sandbox, required when running as root in Docker containers
options.add_argument('--no-sandbox')
# Prevent Chrome from using /dev/shm which can be too small in Docker, causing crashes
options.add_argument('--disable-dev-shm-usage')
# Disable GPU hardware acceleration to prevent crashes in headless mode
options.add_argument('--disable-gpu')

Capybara::Selenium::Driver.new(
app,
browser: :chrome,
options: options
)
end
Capybara.default_driver = :apparition
Capybara.default_driver = :selenium_chrome_headless
end
end