【发布时间】:2021-02-05 21:56:07
【问题描述】:
我正在使用 Github 操作来运行 Rspec 测试,这些测试具有许多功能测试和少量 javascript。所有其他测试通过,但 Javascript 测试失败。有没有办法使用 github 操作使用 javascript 运行 rspec capaybara 测试。 以下是我的水豚助手配置
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 但似乎它无法正常工作。任何帮助
【问题讨论】:
-
您的测试是否真的被指定为系统规范(在规范上键入元数据)?从他们的目录位置,他们可能被设置为功能规范而不是系统..
-
我添加了类型功能,但仍然出现同样的错误。
-
如果您希望它们成为系统测试,您应该添加类型系统(这是您在块之前在 rspec 中配置的内容
标签: javascript ruby-on-rails selenium capybara rspec-rails