diff options
| -rw-r--r-- | .travis.yml | 2 | ||||
| -rw-r--r-- | test/test_helper.rb | 35 | 
2 files changed, 37 insertions, 0 deletions
| diff --git a/.travis.yml b/.travis.yml index 232467c..3bd8ba1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,3 +8,5 @@ before_script:    - "bundle exec rake couchrest:migrate_with_proxies"    - "bundle exec rake couchrest:migrate_with_proxies"  # looks like this needs to run twice    - "mv test/config/couchdb.yml.user config/couchdb.yml" +after_script: +  - "cat tmp/*.test*.log" # printing logs from the failed integration tests diff --git a/test/test_helper.rb b/test/test_helper.rb index 1dff80a..3fb2716 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -52,4 +52,39 @@ class BrowserIntegrationTest < ActionDispatch::IntegrationTest      Capybara.reset_sessions!    # Forget the (simulated) browser state      Capybara.use_default_driver # Revert Capybara.current_driver to Capybara.default_driver    end + +  add_teardown_hook do |testcase| +    unless testcase.passed? +      testcase.save_state +    end +  end + +  def save_state +    page.save_screenshot screenshot_path +    File.open(logfile_path, 'w') do |test_log| +      test_log.puts self.class.name +      test_log.puts "=========================" +      test_log.puts __name__ +      test_log.puts Time.now +      test_log.puts current_path +      test_log.puts page.status_code +      test_log.puts page.response_headers +      test_log.puts "page.html" +      test_log.puts "------------------------" +      test_log.puts page.html +      test_log.puts "server log" +      test_log.puts "------------------------" +      test_log.puts `tail log/test.log -n 200` +    end +  end + +  protected + +  def logfile_path +    Rails.root + 'tmp' + "#{self.class.name.underscore}.#{__name__}.log" +  end + +  def screenshot_path +    Rails.root + 'tmp' + "#{self.class.name.underscore}.#{__name__}.png" +  end  end | 
