diff --git a/spec/support/capybara_shared.rb b/spec/support/capybara_shared.rb index 2f982f9..747acc7 100644 --- a/spec/support/capybara_shared.rb +++ b/spec/support/capybara_shared.rb @@ -13,20 +13,20 @@ def verifying_fixed? if !@@displayed_spec_notice && result puts <<-NOTICE -****************************************************************************** - You are running the RailsGoat Capybara Specs in Training mode. These specs - are supposed to fail, indicating vulnerabilities exist. They contain - spoilers, so do not read the code in spec/vulnerabilities if your goal is to - learn more about patching the vulnerabilities. You should fix the - vulnerabilities in the application in order to get these specs to pass**. - You can use them to measure your progress. + ****************************************************************************** + You are running the RailsGoat Capybara Specs in Training mode. These specs + are supposed to fail, indicating vulnerabilities exist. They contain + spoilers, so do not read the code in spec/vulnerabilities if your goal is to + learn more about patching the vulnerabilities. You should fix the + vulnerabilities in the application in order to get these specs to pass**. + You can use them to measure your progress. - These same specs will pass if you set the #{maintainer_env_name} ENV - variable. + These same specs will pass if you set the #{maintainer_env_name} ENV + variable. - **NOTE: The RSpec pending feature is used to toggle the outcome of these - specs between Training mode and RailsGoat Maintainer mode, so when the - vulnerabilities are removed, these specs actually won't 'pass' but go into + **NOTE: The RSpec pending feature is used to toggle the outcome of these + specs between Training mode and RailsGoat Maintainer mode, so when the + vulnerabilities are removed, these specs actually won't 'pass' but go into a 'pending' state. ****************************************************************************** NOTICE @@ -43,3 +43,41 @@ def login(user) end click_on 'Login' end + +##Hack to fix PhantomJS errors on Mavericks - https://gist.github.com/ericboehs/7125105 +module Capybara::Poltergeist + class Client + private + def redirect_stdout + prev = STDOUT.dup + prev.autoclose = false + $stdout = @write_io + STDOUT.reopen(@write_io) + + prev = STDERR.dup + prev.autoclose = false + $stderr = @write_io + STDERR.reopen(@write_io) + yield + ensure + STDOUT.reopen(prev) + $stdout = STDOUT + STDERR.reopen(prev) + $stderr = STDERR + end + end +end + +class WarningSuppressor + class << self + def write(message) + if message =~ /QFont::setPixelSize: Pixel size <= 0/ || message =~/CoreText performance note:/ || message =~/Method userSpaceScaleFactor in class NSView/ then 0 else puts(message);1;end + end + end +end + +Capybara.register_driver :poltergeist do |app| + Capybara::Poltergeist::Driver.new(app, phantomjs_logger: WarningSuppressor) +end + +Capybara.javascript_driver = :poltergeist \ No newline at end of file