Skip to content

Instantly share code, notes, and snippets.

@tsuhachev
Forked from gkop/gist:1371962
Created February 5, 2012 12:48
Show Gist options
  • Save tsuhachev/1745360 to your computer and use it in GitHub Desktop.
Save tsuhachev/1745360 to your computer and use it in GitHub Desktop.

Revisions

  1. Gabe Kopley revised this gist Dec 13, 2011. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion gistfile1.rb
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,4 @@
    # in features/env.rb
    # in features/support/env.rb
    require 'selenium/webdriver'

    # we need a firefox extension to start intercepting javascript errors before the page
  2. Gabe Kopley revised this gist Nov 17, 2011. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion gistfile1.rb
    Original file line number Diff line number Diff line change
    @@ -2,7 +2,7 @@
    require 'selenium/webdriver'

    # we need a firefox extension to start intercepting javascript errors before the page
    # script load
    # scripts load
    Capybara.register_driver :selenium do |app|
    profile = Selenium::WebDriver::Firefox::Profile.new
    # see https://github.com/mguillem/JSErrorCollector
  3. Gabe Kopley created this gist Nov 17, 2011.
    28 changes: 28 additions & 0 deletions gistfile1.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,28 @@
    # in features/env.rb
    require 'selenium/webdriver'

    # we need a firefox extension to start intercepting javascript errors before the page
    # script load
    Capybara.register_driver :selenium do |app|
    profile = Selenium::WebDriver::Firefox::Profile.new
    # see https://github.com/mguillem/JSErrorCollector
    profile.add_extension File.join(Rails.root, "features/support/extensions/JSErrorCollector.xpi")
    Capybara::Selenium::Driver.new app, :profile => profile
    end

    After do |scenario|
    if page.driver.to_s.match("Selenium")
    errors = page.execute_script("return window.JSErrorCollector_errors.pump()")

    if errors.any?
    puts '-------------------------------------------------------------'
    puts "Found #{errors.length} javascript #{pluralize(errors.length, 'error')}"
    puts '-------------------------------------------------------------'
    errors.each do |error|
    puts " #{error["errorMessage"]} (#{error["sourceName"]}:#{error["lineNumber"]})"
    end
    raise "Javascript #{pluralize(errors.length, 'error')} detected, see above"
    end

    end
    end