我的Rails应用中的特定测试在CircleCI上失败。
此测试期望输入存在。输入/表单由React呈现。
失败测试的屏幕快照看起来像React组件根本没有呈现,可能是JS错误。但是我很难确定原因。
在我的本地开发环境中,表单正确呈现。
在我的本地测试环境中,测试通过了。
如果我将远程浏览器连接到CI版本,则表单将正确呈现。
我尝试检查CI无头chrome浏览器控制台日志,但最近的Chrome更新似乎导致此错误:
page.driver.browser.manage.logs.get(:browser)
Selenium::WebDriver::Error::WebDriverError:
unexpected response, code=404, content-type="text/plain"
unknown command: session/1595d6324fa6ae6bdc1ed885ba8c9ebf/se/log
有人知道我如何进一步调查此问题吗?有没有更简单的方法来保存来自此特定测试的浏览器控制台日志?
尝试这样的事情
config.after(:each, type: :system, js: true) do
errors = page.driver.browser.manage.logs.get(:browser)
if errors.present?
aggregate_failures 'javascript errrors' do
errors.each do |error|
expect(error.level).not_to eq('SEVERE'), error.message
next unless error.level == 'WARNING'
STDERR.puts 'WARN: javascript warning'
STDERR.puts error.message
end
end
end
end
这个问题让我很头疼了很长时间。事实证明这很容易解决,问题的很大一部分是我做出了应该检查的假设。
本地,我正在运行最新版本的Chrome和ChromeDriver。
我以为我在CI版本上也运行了相同的代码。事实证明,即使手动配置为下载ChromeDriver,我使用的docker映像也没有使用我期望的最新版本的Chrome。
我将图像更新为更新的红宝石版本,问题消失了。