Rspec Javascript 无头测试 chrome Github 操作失败
Rspec failed for Javascript tests headless chrome on Github actions
我正在对 运行 Rspec 测试使用 Github 操作,这些测试有很多功能测试,但 javascript 很少。所有其他测试均通过,但 Javascript 一个测试失败。有没有办法 运行 rspec capaybara 测试 javascript 使用 github 动作。
以下是我的水豚助手配置
Capybara.server = :puma, { Silent: true }
Capybara.register_driver :chrome_headless do |app|
options = ::Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--window-size=1400,1400')
Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
end
Capybara.javascript_driver = :chrome_headless
# Setup rspec
RSpec.configure do |config|
#config.before(:each, type: :system) do
# driven_by :rack_test
#end
config.before(:each, type: :system, js: true) do
driven_by :chrome_headless
end
end
我遇到 Javascript 测试错误
2) Visitor signs up with valid email and password
Failure/Error: width = page.evaluate_script("$('#LeftNavPaneContent').width();")
Capybara::NotSupportedByDriverError:
Capybara::Driver::Base#evaluate_script
# ./spec/features/javascript/navigation_toggle_spec.rb:12:in `block (2 levels) in <top (required)>'
3) Login and out it should redirect to the dashboard and allow you to log out
Failure/Error: page.driver.browser.navigate.refresh
NoMethodError:
undefined method `navigate' for #<Capybara::RackTest::Browser:0x00005589b2afd070>
# ./spec/features/login_logout/login_spec.rb:15:in `block (2 levels) in <top (required)>'
以下是我的 chromedriver 操作文件
run: |
sudo apt-get -yqq install libpq-dev
sudo apt-get install google-chrome-stable
.
.
.
run: |
export DISPLAY=:99
chromedriver --url-base=/wd/hut &
sudo Xvfb -ac :99 -screen 0 1280/1024/24 > /dev/null 2>&1 & # optional
bundle exec rspec
这些测试在本地通过并且没有问题。我认为这是因为这些在测试中有 Javascripts 我正在使用 js: true
但它似乎无法正常工作。任何帮助
我在我的 rails_helper
中使用了以下配置并且有效。
Capybara.register_driver :headless_chrome do |app|
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
chromeOptions: { args: %w[--headless --disable-gpu] },
'goog:loggingPrefs': {
browser: 'ALL'
}
)
options = ::Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--window-size=1400,1400')
Capybara::Selenium::Driver.new(
app,
browser: :chrome,
desired_capabilities: capabilities,
options: options
)
end
Capybara.default_driver = :headless_chrome
我正在对 运行 Rspec 测试使用 Github 操作,这些测试有很多功能测试,但 javascript 很少。所有其他测试均通过,但 Javascript 一个测试失败。有没有办法 运行 rspec capaybara 测试 javascript 使用 github 动作。 以下是我的水豚助手配置
Capybara.server = :puma, { Silent: true }
Capybara.register_driver :chrome_headless do |app|
options = ::Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--window-size=1400,1400')
Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
end
Capybara.javascript_driver = :chrome_headless
# Setup rspec
RSpec.configure do |config|
#config.before(:each, type: :system) do
# driven_by :rack_test
#end
config.before(:each, type: :system, js: true) do
driven_by :chrome_headless
end
end
我遇到 Javascript 测试错误
2) Visitor signs up with valid email and password
Failure/Error: width = page.evaluate_script("$('#LeftNavPaneContent').width();")
Capybara::NotSupportedByDriverError:
Capybara::Driver::Base#evaluate_script
# ./spec/features/javascript/navigation_toggle_spec.rb:12:in `block (2 levels) in <top (required)>'
3) Login and out it should redirect to the dashboard and allow you to log out
Failure/Error: page.driver.browser.navigate.refresh
NoMethodError:
undefined method `navigate' for #<Capybara::RackTest::Browser:0x00005589b2afd070>
# ./spec/features/login_logout/login_spec.rb:15:in `block (2 levels) in <top (required)>'
以下是我的 chromedriver 操作文件
run: |
sudo apt-get -yqq install libpq-dev
sudo apt-get install google-chrome-stable
.
.
.
run: |
export DISPLAY=:99
chromedriver --url-base=/wd/hut &
sudo Xvfb -ac :99 -screen 0 1280/1024/24 > /dev/null 2>&1 & # optional
bundle exec rspec
这些测试在本地通过并且没有问题。我认为这是因为这些在测试中有 Javascripts 我正在使用 js: true
但它似乎无法正常工作。任何帮助
我在我的 rails_helper
中使用了以下配置并且有效。
Capybara.register_driver :headless_chrome do |app|
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
chromeOptions: { args: %w[--headless --disable-gpu] },
'goog:loggingPrefs': {
browser: 'ALL'
}
)
options = ::Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--window-size=1400,1400')
Capybara::Selenium::Driver.new(
app,
browser: :chrome,
desired_capabilities: capabilities,
options: options
)
end
Capybara.default_driver = :headless_chrome