From 741261c6d0227f44e8a49e53bece19931ec26fd2 Mon Sep 17 00:00:00 2001 From: Joe Fiorini Date: Mon, 31 Oct 2011 14:35:51 -0400 Subject: [PATCH] Add matcher for javascript error checking --- lib/capybara/webkit/matchers.rb | 39 +++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 lib/capybara/webkit/matchers.rb diff --git a/lib/capybara/webkit/matchers.rb b/lib/capybara/webkit/matchers.rb new file mode 100644 index 0000000..a0af3c0 --- /dev/null +++ b/lib/capybara/webkit/matchers.rb @@ -0,0 +1,39 @@ +module Capybara + module Webkit + module RspecMatchers + extend RSpec::Matchers::DSL + + matcher :have_errors do |expected| + match do |actual| + actual = resolve(actual) + actual.error_messages.any? + end + + failure_message_for_should do |actual| + "Expected Javascript errors, but there were none." + end + failure_message_for_should_not do |actual| + actual = resolve(actual) + "Expected no Javascript errors, got:\n#{error_messages_for(actual)}" + end + + def error_messages_for(obj) + obj.error_messages.map do |m| + " - #{m[:message]}" + end.join("\n") + end + + def resolve(actual) + if actual.respond_to? :page + actual.page.driver + elsif actual.respond_to? :driver + actual.driver + else + actual + end + end + end + + end + end +end