如何在rspec中获取有关JS错误的信息?

问题描述 投票:1回答:2

我的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

有人知道我如何进一步调查此问题吗?有没有更简单的方法来保存来自此特定测试的浏览器控制台日志?

ruby-on-rails circleci
2个回答
0
投票

尝试这样的事情

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

0
投票

这个问题让我很头疼了很长时间。事实证明这很容易解决,问题的很大一部分是我做出了应该检查的假设。

本地,我正在运行最新版本的Chrome和ChromeDriver。

我以为我在CI版本上也运行了相同的代码。事实证明,即使手动配置为下载ChromeDriver,我使用的docker映像也没有使用我期望的最新版本的Chrome。

我将图像更新为更新的红宝石版本,问题消失了。

© www.soinside.com 2019 - 2024. All rights reserved.