Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to display JS errors in Capybara + ChromeDriver?

I have an integration test setup that uses RSpec + Capybara. We recently switched from PhantomJS to headless Chromedriver and I miss that javascript errors are not displayed anymore.

Is there a convenient way of configuring Chromedriver so that javascript errors show up in the log output of capybara tests?

The ways of accessing the javascript errors I found (see below) all are a bit cumbersome or not really what I was looking for.

  • setting an explicit log output path as described in this answer
  • accessing the (kind of cut back) error log through the driver interface as described in this gist
like image 342
juffel Avatar asked Mar 14 '18 16:03

juffel


2 Answers

With

RSpec.configure do |config|
  config.after(type: :feature) do
    STDERR.puts page.driver.browser.manage.logs.get(:browser)
  end
end

one can print out the logs after each example, that is a feature spec with RSpec. Should be similar in other test frameworks. This does not fail the example however.

like image 126
smallbutton Avatar answered Oct 21 '22 08:10

smallbutton


Assuming your second method is referring to the comments in that gist rather than the method that requires installing an extension, then no there isn't. Selenium is basing its functionality/feature support off the WebDriver spec - https://w3c.github.io/webdriver/webdriver-spec.html - which doesn't specify anything about reporting JS errors back to the automation client.

Note - there are configuration options for the Chrome logs which may change the verbosity and get rid of the "kind of cut back" issue - see Capture browser console logs with capybara

like image 38
Thomas Walpole Avatar answered Oct 21 '22 09:10

Thomas Walpole