kookaburra 0.17.1 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +3 -0
- data/Gemfile.lock +2 -0
- data/VERSION +1 -1
- data/kookaburra.gemspec +7 -2
- data/lib/kookaburra/exceptions.rb +2 -0
- data/lib/kookaburra/null_browser.rb +10 -0
- data/lib/kookaburra/test_data.rb +6 -15
- data/lib/kookaburra/ui_driver/ui_component.rb +8 -9
- data/lib/kookaburra/ui_driver.rb +1 -4
- data/lib/kookaburra.rb +14 -6
- data/spec/kookaburra/null_browser_spec.rb +15 -0
- data/spec/kookaburra/ui_driver/ui_component_spec.rb +0 -5
- data/spec/kookaburra/ui_driver_spec.rb +0 -1
- data/spec/kookaburra_integration_spec.rb +40 -4
- data/spec/kookaburra_spec.rb +1 -3
- metadata +41 -25
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -4,6 +4,7 @@ GEM
|
|
4
4
|
activesupport (3.2.2)
|
5
5
|
i18n (~> 0.6)
|
6
6
|
multi_json (~> 1.0)
|
7
|
+
basic_object (0.0.1)
|
7
8
|
capybara (1.1.2)
|
8
9
|
mime-types (>= 1.16)
|
9
10
|
nokogiri (>= 1.3.3)
|
@@ -74,6 +75,7 @@ PLATFORMS
|
|
74
75
|
|
75
76
|
DEPENDENCIES
|
76
77
|
activesupport (>= 3.0)
|
78
|
+
basic_object
|
77
79
|
capybara
|
78
80
|
i18n
|
79
81
|
jeweler
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.18.0
|
data/kookaburra.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "kookaburra"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.18.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["John Wilger", "Sam Livingston-Gray", "Ravi Gadad"]
|
12
|
-
s.date = "2012-03-
|
12
|
+
s.date = "2012-03-18"
|
13
13
|
s.description = "Cucumber + Capybara = Kookaburra? It made sense at the time."
|
14
14
|
s.email = "johnwilger@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -34,6 +34,7 @@ Gem::Specification.new do |s|
|
|
34
34
|
"lib/kookaburra/exceptions.rb",
|
35
35
|
"lib/kookaburra/given_driver.rb",
|
36
36
|
"lib/kookaburra/json_api_driver.rb",
|
37
|
+
"lib/kookaburra/null_browser.rb",
|
37
38
|
"lib/kookaburra/rack_driver.rb",
|
38
39
|
"lib/kookaburra/test_data.rb",
|
39
40
|
"lib/kookaburra/test_helpers.rb",
|
@@ -41,6 +42,7 @@ Gem::Specification.new do |s|
|
|
41
42
|
"lib/kookaburra/ui_driver/ui_component.rb",
|
42
43
|
"lib/kookaburra/utils/active_record_shared_connection.rb",
|
43
44
|
"spec/kookaburra/json_api_driver_spec.rb",
|
45
|
+
"spec/kookaburra/null_browser_spec.rb",
|
44
46
|
"spec/kookaburra/rack_driver_spec.rb",
|
45
47
|
"spec/kookaburra/test_data_spec.rb",
|
46
48
|
"spec/kookaburra/test_helpers_spec.rb",
|
@@ -60,6 +62,7 @@ Gem::Specification.new do |s|
|
|
60
62
|
s.specification_version = 3
|
61
63
|
|
62
64
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
65
|
+
s.add_runtime_dependency(%q<basic_object>, [">= 0"])
|
63
66
|
s.add_runtime_dependency(%q<i18n>, [">= 0"])
|
64
67
|
s.add_runtime_dependency(%q<activesupport>, [">= 3.0"])
|
65
68
|
s.add_runtime_dependency(%q<rack-test>, [">= 0"])
|
@@ -72,6 +75,7 @@ Gem::Specification.new do |s|
|
|
72
75
|
s.add_development_dependency(%q<reek>, [">= 0"])
|
73
76
|
s.add_development_dependency(%q<sinatra>, [">= 0"])
|
74
77
|
else
|
78
|
+
s.add_dependency(%q<basic_object>, [">= 0"])
|
75
79
|
s.add_dependency(%q<i18n>, [">= 0"])
|
76
80
|
s.add_dependency(%q<activesupport>, [">= 3.0"])
|
77
81
|
s.add_dependency(%q<rack-test>, [">= 0"])
|
@@ -85,6 +89,7 @@ Gem::Specification.new do |s|
|
|
85
89
|
s.add_dependency(%q<sinatra>, [">= 0"])
|
86
90
|
end
|
87
91
|
else
|
92
|
+
s.add_dependency(%q<basic_object>, [">= 0"])
|
88
93
|
s.add_dependency(%q<i18n>, [">= 0"])
|
89
94
|
s.add_dependency(%q<activesupport>, [">= 3.0"])
|
90
95
|
s.add_dependency(%q<rack-test>, [">= 0"])
|
data/lib/kookaburra/test_data.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'delegate'
|
2
|
+
|
1
3
|
class Kookaburra
|
2
4
|
# Each instance of {Kookaburra} has its own instance of TestData. This object
|
3
5
|
# is used to maintain a shared understanding of the application state between
|
@@ -38,14 +40,15 @@ class Kookaburra
|
|
38
40
|
#
|
39
41
|
# # Raises an UnknownKeyError
|
40
42
|
# test_data.widgets[:bar]
|
41
|
-
class Collection
|
43
|
+
class Collection < SimpleDelegator
|
42
44
|
# @param [String] name The name of the collection. Used to provide
|
43
45
|
# helpful error messages when unknown keys are accessed.
|
44
46
|
def initialize(name)
|
45
47
|
@name = name
|
46
|
-
|
48
|
+
data = Hash.new do |hash, key|
|
47
49
|
raise UnknownKeyError, "Can't find test_data.#{@name}[#{key.inspect}]. Did you forget to set it?"
|
48
50
|
end
|
51
|
+
super(data)
|
49
52
|
end
|
50
53
|
|
51
54
|
# Unlike a Hash, this object is only identical to another if the actual
|
@@ -69,21 +72,9 @@ class Kookaburra
|
|
69
72
|
# not been set
|
70
73
|
def slice(*keys)
|
71
74
|
results = keys.map do |key|
|
72
|
-
|
75
|
+
self[key]
|
73
76
|
end
|
74
77
|
end
|
75
|
-
|
76
|
-
# Any unknown messages are passed to the underlying data collection, which
|
77
|
-
# is a Hash.
|
78
|
-
def method_missing(name, *args, &block)
|
79
|
-
return super unless respond_to?(name)
|
80
|
-
@data.send(name, *args, &block)
|
81
|
-
end
|
82
|
-
|
83
|
-
# @private
|
84
|
-
def respond_to?(name)
|
85
|
-
super || @data.respond_to?(name)
|
86
|
-
end
|
87
78
|
end
|
88
79
|
end
|
89
80
|
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'kookaburra/exceptions'
|
2
|
-
require 'kookaburra/dependency_accessor'
|
3
2
|
|
4
3
|
class Kookaburra
|
5
4
|
class UIDriver
|
@@ -66,8 +65,6 @@ class Kookaburra
|
|
66
65
|
# you override the default implementation of {#show}, you must also
|
67
66
|
# override the {#component_path} method.
|
68
67
|
class UIComponent
|
69
|
-
extend DependencyAccessor
|
70
|
-
|
71
68
|
# New UIComponent instances are typically created for you by your
|
72
69
|
# {Kookaburra::UIDriver} instance.
|
73
70
|
#
|
@@ -82,7 +79,8 @@ class Kookaburra
|
|
82
79
|
end
|
83
80
|
|
84
81
|
# If the UIComponent is sent a message it does not understand, it will
|
85
|
-
# forward that message on to its {#browser}
|
82
|
+
# forward that message on to its {#browser} but wrap the call in a block
|
83
|
+
# provided to the the browser's `#within` method. This provides convenient
|
86
84
|
# access to the browser driver's DSL, automatically scoped to this
|
87
85
|
# component.
|
88
86
|
def method_missing(name, *args, &block)
|
@@ -135,11 +133,12 @@ class Kookaburra
|
|
135
133
|
protected
|
136
134
|
|
137
135
|
# This is the browser driver with which the UIComponent was initialized.
|
138
|
-
#
|
139
|
-
#
|
140
|
-
#
|
141
|
-
|
142
|
-
|
136
|
+
#
|
137
|
+
# If no :browser option was specified in {#initialize}, it returns a
|
138
|
+
# default {Kookaburra::NullBrowser} instance.
|
139
|
+
def browser
|
140
|
+
@browser ||= NullBrowser.new
|
141
|
+
end
|
143
142
|
|
144
143
|
# Provides a mechanism to make assertions about the state of your
|
145
144
|
# UIComponent without relying on a specific testing framework. A good
|
data/lib/kookaburra/ui_driver.rb
CHANGED
@@ -48,7 +48,7 @@ class Kookaburra
|
|
48
48
|
# this component.
|
49
49
|
def ui_component(component_name, component_class)
|
50
50
|
define_method(component_name) do
|
51
|
-
component_class.new(:browser => browser, :server_error_detection => @server_error_detection)
|
51
|
+
component_class.new(:browser => @browser, :server_error_detection => @server_error_detection)
|
52
52
|
end
|
53
53
|
end
|
54
54
|
end
|
@@ -70,9 +70,6 @@ class Kookaburra
|
|
70
70
|
|
71
71
|
protected
|
72
72
|
|
73
|
-
# @attribute [r] browser
|
74
|
-
dependency_accessor :browser
|
75
|
-
|
76
73
|
# @attribute [r] test_data
|
77
74
|
dependency_accessor :test_data
|
78
75
|
end
|
data/lib/kookaburra.rb
CHANGED
@@ -42,10 +42,11 @@ class Kookaburra
|
|
42
42
|
# Kookaburra is intended to work with `Capybara::Session` as a browser
|
43
43
|
# driver, but you could use something else that exposed the same basic API.
|
44
44
|
def initialize(options = {})
|
45
|
-
@api_driver_class
|
46
|
-
@given_driver_class
|
47
|
-
@ui_driver_class
|
48
|
-
@browser
|
45
|
+
@api_driver_class = options[:api_driver_class]
|
46
|
+
@given_driver_class = options[:given_driver_class]
|
47
|
+
@ui_driver_class = options[:ui_driver_class]
|
48
|
+
@browser = options[:browser]
|
49
|
+
@rack_app = options[:rack_app]
|
49
50
|
@server_error_detection = options[:server_error_detection]
|
50
51
|
end
|
51
52
|
|
@@ -91,14 +92,21 @@ class Kookaburra
|
|
91
92
|
private
|
92
93
|
|
93
94
|
extend DependencyAccessor
|
94
|
-
dependency_accessor :given_driver_class, :api_driver_class, :ui_driver_class
|
95
|
+
dependency_accessor :given_driver_class, :api_driver_class, :ui_driver_class
|
95
96
|
|
96
97
|
def api
|
97
|
-
api_driver_class.new(
|
98
|
+
api_driver_class.new(application_driver)
|
99
|
+
end
|
100
|
+
|
101
|
+
def application_driver
|
102
|
+
RackDriver.new(@rack_app)
|
98
103
|
end
|
99
104
|
|
100
105
|
def test_data
|
101
106
|
@test_data ||= TestData.new
|
102
107
|
end
|
103
108
|
|
109
|
+
def browser
|
110
|
+
@browser ||= NullBrowser.new
|
111
|
+
end
|
104
112
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'kookaburra/null_browser'
|
2
|
+
|
3
|
+
describe Kookaburra::NullBrowser do
|
4
|
+
it 'is a BasicObject' do
|
5
|
+
pending "Not sure how to test this, since a BasicObject doesn't implement #kind_of?, etc." do
|
6
|
+
subject.kind_of?(BasicObject).should == true
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'raises a NullBrowserError when any methods are called on it' do
|
11
|
+
lambda { subject.app }.should raise_error(
|
12
|
+
Kookaburra::NullBrowserError,
|
13
|
+
"You did not provide a :browser to the Kookaburra configuration, but you tried to use one anyway.")
|
14
|
+
end
|
15
|
+
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'kookaburra/ui_driver/ui_component'
|
2
|
-
require 'support/shared_examples/it_has_a_dependency_accessor'
|
3
2
|
|
4
3
|
describe Kookaburra::UIDriver::UIComponent do
|
5
4
|
describe '#show' do
|
@@ -154,9 +153,5 @@ describe Kookaburra::UIDriver::UIComponent do
|
|
154
153
|
.should raise_error(Kookaburra::AssertionFailed, "False isn't true, dummy.")
|
155
154
|
end
|
156
155
|
end
|
157
|
-
|
158
|
-
it_behaves_like :it_has_a_dependency_accessor, :browser do
|
159
|
-
let(:subject_class) { Kookaburra::UIDriver::UIComponent }
|
160
|
-
end
|
161
156
|
end
|
162
157
|
end
|
@@ -285,10 +285,11 @@ describe 'Kookaburra Integration' do
|
|
285
285
|
}
|
286
286
|
|
287
287
|
k = Kookaburra.new({
|
288
|
-
:ui_driver_class
|
289
|
-
:given_driver_class
|
290
|
-
:api_driver_class
|
291
|
-
:browser
|
288
|
+
:ui_driver_class => MyUIDriver,
|
289
|
+
:given_driver_class => MyGivenDriver,
|
290
|
+
:api_driver_class => MyAPIDriver,
|
291
|
+
:browser => Capybara::Session.new(:rack_test, my_app),
|
292
|
+
:rack_app => my_app,
|
292
293
|
:server_error_detection => server_error_detection
|
293
294
|
})
|
294
295
|
|
@@ -309,4 +310,39 @@ describe 'Kookaburra Integration' do
|
|
309
310
|
end
|
310
311
|
end
|
311
312
|
end
|
313
|
+
|
314
|
+
describe "testing a Ruby API" do
|
315
|
+
class MyUIDriver < Kookaburra::UIDriver
|
316
|
+
end
|
317
|
+
|
318
|
+
class MyGivenDriver < Kookaburra::GivenDriver
|
319
|
+
end
|
320
|
+
|
321
|
+
class APIDriver < Kookaburra::APIDriver
|
322
|
+
end
|
323
|
+
|
324
|
+
it "runs the tests" do
|
325
|
+
k = Kookaburra.new({
|
326
|
+
:api_driver_class => MyAPIDriver,
|
327
|
+
:given_driver_class => MyGivenDriver,
|
328
|
+
:ui_driver_class => MyUIDriver,
|
329
|
+
})
|
330
|
+
|
331
|
+
pending 'WIP' do
|
332
|
+
k.given.a_user(:bob)
|
333
|
+
k.given.a_widget(:widget_a)
|
334
|
+
k.given.a_widget(:widget_b, :name => 'Foo')
|
335
|
+
|
336
|
+
k.ui.sign_in(:bob)
|
337
|
+
k.ui.widget_list.show
|
338
|
+
k.ui.widget_list.widgets.should == k.get_data(:widgets).slice(:widget_a, :widget_b)
|
339
|
+
|
340
|
+
k.ui.create_new_widget(:widget_c, :name => 'Bar')
|
341
|
+
k.ui.widget_list.widgets.should == k.get_data(:widgets).slice(:widget_a, :widget_b, :widget_c)
|
342
|
+
|
343
|
+
k.ui.delete_widget(:widget_b)
|
344
|
+
k.ui.widget_list.widgets.should == k.get_data(:widgets).slice(:widget_a, :widget_c)
|
345
|
+
end
|
346
|
+
end
|
347
|
+
end
|
312
348
|
end
|
data/spec/kookaburra_spec.rb
CHANGED
@@ -3,8 +3,6 @@ require 'kookaburra'
|
|
3
3
|
describe Kookaburra do
|
4
4
|
describe '#given' do
|
5
5
|
it 'returns an instance of the configured GivenDriver' do
|
6
|
-
browser_instance = stub('Browser', :app => :a_rack_app)
|
7
|
-
|
8
6
|
Kookaburra::RackDriver.should_receive(:new) \
|
9
7
|
.with(:a_rack_app) \
|
10
8
|
.and_return(:a_rack_driver)
|
@@ -22,7 +20,7 @@ describe Kookaburra do
|
|
22
20
|
|
23
21
|
k = Kookaburra.new(:given_driver_class => my_given_driver_class,
|
24
22
|
:api_driver_class => my_api_driver_class,
|
25
|
-
:
|
23
|
+
:rack_app => :a_rack_app)
|
26
24
|
k.given.should == :a_given_driver
|
27
25
|
end
|
28
26
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kookaburra
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 87
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 18
|
9
|
+
- 0
|
10
|
+
version: 0.18.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- John Wilger
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2012-03-
|
20
|
+
date: 2012-03-18 00:00:00 Z
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
23
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|
@@ -29,12 +29,26 @@ dependencies:
|
|
29
29
|
segments:
|
30
30
|
- 0
|
31
31
|
version: "0"
|
32
|
-
name:
|
32
|
+
name: basic_object
|
33
33
|
prerelease: false
|
34
34
|
type: :runtime
|
35
35
|
requirement: *id001
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
version_requirements: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 3
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
version: "0"
|
46
|
+
name: i18n
|
47
|
+
prerelease: false
|
48
|
+
type: :runtime
|
49
|
+
requirement: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
38
52
|
none: false
|
39
53
|
requirements:
|
40
54
|
- - ">="
|
@@ -47,9 +61,9 @@ dependencies:
|
|
47
61
|
name: activesupport
|
48
62
|
prerelease: false
|
49
63
|
type: :runtime
|
50
|
-
requirement: *
|
64
|
+
requirement: *id003
|
51
65
|
- !ruby/object:Gem::Dependency
|
52
|
-
version_requirements: &
|
66
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
53
67
|
none: false
|
54
68
|
requirements:
|
55
69
|
- - ">="
|
@@ -61,9 +75,9 @@ dependencies:
|
|
61
75
|
name: rack-test
|
62
76
|
prerelease: false
|
63
77
|
type: :runtime
|
64
|
-
requirement: *
|
78
|
+
requirement: *id004
|
65
79
|
- !ruby/object:Gem::Dependency
|
66
|
-
version_requirements: &
|
80
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
67
81
|
none: false
|
68
82
|
requirements:
|
69
83
|
- - ">="
|
@@ -75,9 +89,9 @@ dependencies:
|
|
75
89
|
name: rspec
|
76
90
|
prerelease: false
|
77
91
|
type: :development
|
78
|
-
requirement: *
|
92
|
+
requirement: *id005
|
79
93
|
- !ruby/object:Gem::Dependency
|
80
|
-
version_requirements: &
|
94
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
81
95
|
none: false
|
82
96
|
requirements:
|
83
97
|
- - ">="
|
@@ -89,9 +103,9 @@ dependencies:
|
|
89
103
|
name: capybara
|
90
104
|
prerelease: false
|
91
105
|
type: :development
|
92
|
-
requirement: *
|
106
|
+
requirement: *id006
|
93
107
|
- !ruby/object:Gem::Dependency
|
94
|
-
version_requirements: &
|
108
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
95
109
|
none: false
|
96
110
|
requirements:
|
97
111
|
- - ">="
|
@@ -103,9 +117,9 @@ dependencies:
|
|
103
117
|
name: yard
|
104
118
|
prerelease: false
|
105
119
|
type: :development
|
106
|
-
requirement: *
|
120
|
+
requirement: *id007
|
107
121
|
- !ruby/object:Gem::Dependency
|
108
|
-
version_requirements: &
|
122
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
109
123
|
none: false
|
110
124
|
requirements:
|
111
125
|
- - ~>
|
@@ -118,9 +132,9 @@ dependencies:
|
|
118
132
|
name: redcarpet
|
119
133
|
prerelease: false
|
120
134
|
type: :development
|
121
|
-
requirement: *
|
135
|
+
requirement: *id008
|
122
136
|
- !ruby/object:Gem::Dependency
|
123
|
-
version_requirements: &
|
137
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
124
138
|
none: false
|
125
139
|
requirements:
|
126
140
|
- - ">="
|
@@ -132,9 +146,9 @@ dependencies:
|
|
132
146
|
name: jeweler
|
133
147
|
prerelease: false
|
134
148
|
type: :development
|
135
|
-
requirement: *
|
149
|
+
requirement: *id009
|
136
150
|
- !ruby/object:Gem::Dependency
|
137
|
-
version_requirements: &
|
151
|
+
version_requirements: &id010 !ruby/object:Gem::Requirement
|
138
152
|
none: false
|
139
153
|
requirements:
|
140
154
|
- - ">="
|
@@ -146,9 +160,9 @@ dependencies:
|
|
146
160
|
name: rcov
|
147
161
|
prerelease: false
|
148
162
|
type: :development
|
149
|
-
requirement: *
|
163
|
+
requirement: *id010
|
150
164
|
- !ruby/object:Gem::Dependency
|
151
|
-
version_requirements: &
|
165
|
+
version_requirements: &id011 !ruby/object:Gem::Requirement
|
152
166
|
none: false
|
153
167
|
requirements:
|
154
168
|
- - ">="
|
@@ -160,9 +174,9 @@ dependencies:
|
|
160
174
|
name: reek
|
161
175
|
prerelease: false
|
162
176
|
type: :development
|
163
|
-
requirement: *
|
177
|
+
requirement: *id011
|
164
178
|
- !ruby/object:Gem::Dependency
|
165
|
-
version_requirements: &
|
179
|
+
version_requirements: &id012 !ruby/object:Gem::Requirement
|
166
180
|
none: false
|
167
181
|
requirements:
|
168
182
|
- - ">="
|
@@ -174,7 +188,7 @@ dependencies:
|
|
174
188
|
name: sinatra
|
175
189
|
prerelease: false
|
176
190
|
type: :development
|
177
|
-
requirement: *
|
191
|
+
requirement: *id012
|
178
192
|
description: Cucumber + Capybara = Kookaburra? It made sense at the time.
|
179
193
|
email: johnwilger@gmail.com
|
180
194
|
executables: []
|
@@ -202,6 +216,7 @@ files:
|
|
202
216
|
- lib/kookaburra/exceptions.rb
|
203
217
|
- lib/kookaburra/given_driver.rb
|
204
218
|
- lib/kookaburra/json_api_driver.rb
|
219
|
+
- lib/kookaburra/null_browser.rb
|
205
220
|
- lib/kookaburra/rack_driver.rb
|
206
221
|
- lib/kookaburra/test_data.rb
|
207
222
|
- lib/kookaburra/test_helpers.rb
|
@@ -209,6 +224,7 @@ files:
|
|
209
224
|
- lib/kookaburra/ui_driver/ui_component.rb
|
210
225
|
- lib/kookaburra/utils/active_record_shared_connection.rb
|
211
226
|
- spec/kookaburra/json_api_driver_spec.rb
|
227
|
+
- spec/kookaburra/null_browser_spec.rb
|
212
228
|
- spec/kookaburra/rack_driver_spec.rb
|
213
229
|
- spec/kookaburra/test_data_spec.rb
|
214
230
|
- spec/kookaburra/test_helpers_spec.rb
|