require 'kookaburra' class Kookaburra # This module is intended to be mixed in to your testing context to provide # convenient access to your Kookaburra objects. Examples for both RSpec and # Cucumber are given below; mixing it in to other test setups should be pretty # straight-forward. # # @example RSpec setup # # in 'spec/support/kookaburra_setup.rb' # require 'kookaburra/test_helpers' # require 'my_app/kookaburra/api_driver' # require 'my_app/kookaburra/given_driver' # require 'my_app/kookaburra/ui_driver' # # Kookaburra.configuration = { # :given_driver_class => MyApp::Kookaburra::GivenDriver, # :api_driver_class => MyApp::Kookaburra::APIDriver, # :ui_driver_class => MyApp::Kookaburra::UIDriver, # :browser => Capybara, # :server_error_detection => lambda { |browser| # browser.has_css?('h1', text: 'Internal Server Error') # } # } # # RSpec.configure do |c| # c.include(Kookaburra::TestHelpers, :type => :request) # end # # # in 'spec/request/some_feature_spec.rb' # describe "Some Feature" do # example "some test script" do # given.a_widget(:foo) # given.a_widget(:bar, :hidden => true) # given.a_widget(:baz) # # ui.view_list_of_widgets # # ui.widget_list.widgets.should == k.get_data(:widgets).slice(:foo, :baz) # # ui.widget_list.hide_widget(:foo) # # ui.widget_list.widgets.should == k.get_data(:widgets).slice(:baz) # end # end # # @example Cucumber setup # # in 'features/support/kookaburra_setup.rb' # require 'kookaburra/test_helpers' # require 'my_app/kookaburra/api_driver' # require 'my_app/kookaburra/given_driver' # require 'my_app/kookaburra/ui_driver' # # Kookaburra.configuration = { # :given_driver_class => MyApp::Kookaburra::GivenDriver, # :api_driver_class => MyApp::Kookaburra::APIDriver, # :ui_driver_class => MyApp::Kookaburra::UIDriver, # :browser => Capybara, # :server_error_detection => lambda { |browser| # browser.has_css?('h1', text: 'Internal Server Error') # } # } # # World(Kookaburra::TestHelpers) # # # in 'features/step_definitions/some_steps.rb # Given /^there is a widget, "(\w+)"/ do |name| # given.a_widget(name.to_sym) # end # # Given /^there is a hidden widget, "(\w+)"/ do |name| # given.a_widget(name.to_sym, :hidden => true) # end # # When /^I view the widget list/ do # ui.view_the_widget_list # end # # Then /^I see the widget list contains the following widgets$/ do |widget_names| # widgets = widget_names.hashes.map { |h| h['name'].to_sym } # ui.widget_list.widgets.should == k.get_data(:widgets).slice(widgets) # end module TestHelpers # The {Kookaburra} instance to be used by your tests. It gets configured # using the options set in {Kookaburra.configuration}, and the result is # memoized. # # @return [Kookaburra] def k @k ||= Kookaburra.new(Kookaburra.configuration) end # @method given # Delegates to {#k} delegate :given, :to => :k # @method ui # Delegates to {#k} delegate :ui, :to => :k end end