kookaburra 1.2.0 → 1.2.1
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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/.travis.yml +9 -0
- data/Gemfile +3 -17
- data/Gemfile.lock +63 -69
- data/LICENSE.txt +3 -1
- data/README.markdown +2 -2
- data/Rakefile +2 -55
- data/kookaburra.gemspec +30 -107
- data/lib/kookaburra/ui_driver/ui_component.rb +27 -9
- data/lib/kookaburra/version.rb +3 -0
- data/spec/integration/test_a_rack_application_spec.rb +16 -12
- data/spec/kookaburra/api_driver_spec.rb +7 -7
- data/spec/kookaburra/configuration_spec.rb +1 -1
- data/spec/kookaburra/ui_driver/scoped_browser_spec.rb +1 -1
- data/spec/kookaburra/ui_driver/ui_component/address_bar_spec.rb +3 -3
- data/spec/kookaburra/ui_driver/ui_component_spec.rb +18 -13
- data/spec/kookaburra/ui_driver_spec.rb +3 -3
- data/spec/kookaburra_spec.rb +8 -8
- data/spec/support/shared_examples/it_can_have_ui_components.rb +2 -2
- metadata +87 -71
- data/.rvmrc +0 -4
- data/VERSION +0 -1
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 91a3be166371e05653b174532301b1afa1d4adc5
|
|
4
|
+
data.tar.gz: cb1a9a42aa16a9500612dc127c40b8e8129f0894
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: cc48949a20b29008c1e956ff877d64ab80c0042e5c22498c2f712046ac798905009a372afa9811f24cd0f7ab6bb959b0159a555239d83ed6aaabedb3c7b7c9c0
|
|
7
|
+
data.tar.gz: 731ef0d1e26935a7ea06847e6c59d542b8a10dc016af8d4202d1e17a30bb5bb830bec8b971cbcdb9fb2e6e0f593a530506154ba0da71ae70fa3737b0f91cd9a8
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
CHANGED
|
@@ -1,18 +1,4 @@
|
|
|
1
|
-
source '
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
2
|
|
|
3
|
-
gem
|
|
4
|
-
|
|
5
|
-
# Add dependencies to develop your gem here.
|
|
6
|
-
# Include everything needed to run rake, tests, features, etc.
|
|
7
|
-
group :development do
|
|
8
|
-
gem 'jruby-openssl', :platforms => :jruby
|
|
9
|
-
gem 'rspec'
|
|
10
|
-
gem 'capybara'
|
|
11
|
-
gem 'yard'
|
|
12
|
-
gem 'kramdown' # used by yard to format documentation, but not a dependency as far as the yard gem is concerned
|
|
13
|
-
gem 'jeweler'
|
|
14
|
-
gem 'reek'
|
|
15
|
-
gem 'sinatra'
|
|
16
|
-
gem 'find_a_port'
|
|
17
|
-
gem 'json'
|
|
18
|
-
end
|
|
3
|
+
# Specify your gem's dependencies in kookaburra.gemspec
|
|
4
|
+
gemspec
|
data/Gemfile.lock
CHANGED
|
@@ -1,97 +1,91 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
kookaburra (1.2.1)
|
|
5
|
+
rest-client
|
|
6
|
+
|
|
1
7
|
GEM
|
|
2
|
-
remote:
|
|
8
|
+
remote: https://rubygems.org/
|
|
3
9
|
specs:
|
|
4
|
-
|
|
5
|
-
bouncy-castle-java (1.5.0146.1)
|
|
6
|
-
capybara (1.1.2)
|
|
10
|
+
capybara (2.2.0)
|
|
7
11
|
mime-types (>= 1.16)
|
|
8
12
|
nokogiri (>= 1.3.3)
|
|
9
13
|
rack (>= 1.0.0)
|
|
10
14
|
rack-test (>= 0.5.4)
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
ffi (1.1.5)
|
|
17
|
-
ffi (1.1.5-java)
|
|
15
|
+
xpath (~> 2.0)
|
|
16
|
+
childprocess (0.3.9)
|
|
17
|
+
ffi (~> 1.0, >= 1.0.11)
|
|
18
|
+
diff-lcs (1.2.5)
|
|
19
|
+
ffi (1.9.3)
|
|
18
20
|
find_a_port (1.0.1)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
libwebsocket (0.1.5)
|
|
31
|
-
addressable
|
|
32
|
-
mime-types (1.19)
|
|
33
|
-
multi_json (1.3.6)
|
|
34
|
-
nokogiri (1.5.5)
|
|
35
|
-
nokogiri (1.5.5-java)
|
|
36
|
-
rack (1.4.1)
|
|
37
|
-
rack-protection (1.2.0)
|
|
21
|
+
json (1.8.1)
|
|
22
|
+
kramdown (1.2.0)
|
|
23
|
+
macaddr (1.6.1)
|
|
24
|
+
systemu (~> 2.5.0)
|
|
25
|
+
mime-types (2.0)
|
|
26
|
+
mini_portile (0.5.2)
|
|
27
|
+
multi_json (1.8.2)
|
|
28
|
+
nokogiri (1.6.0)
|
|
29
|
+
mini_portile (~> 0.5.0)
|
|
30
|
+
rack (1.5.2)
|
|
31
|
+
rack-protection (1.5.1)
|
|
38
32
|
rack
|
|
39
33
|
rack-test (0.6.2)
|
|
40
34
|
rack (>= 1.0)
|
|
41
|
-
rake (
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
ruby2ruby (~> 1.2.5)
|
|
47
|
-
ruby_parser (~> 2.0)
|
|
48
|
-
sexp_processor (~> 3.0)
|
|
35
|
+
rake (10.1.0)
|
|
36
|
+
reek (1.3.4)
|
|
37
|
+
ruby2ruby (~> 2.0.2)
|
|
38
|
+
ruby_parser (~> 3.2)
|
|
39
|
+
sexp_processor
|
|
49
40
|
rest-client (1.6.7)
|
|
50
41
|
mime-types (>= 1.16)
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
rspec-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
rspec-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
sexp_processor (~>
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
rubyzip (0.9.9)
|
|
67
|
-
selenium-webdriver (2.25.0)
|
|
42
|
+
rspec (2.14.1)
|
|
43
|
+
rspec-core (~> 2.14.0)
|
|
44
|
+
rspec-expectations (~> 2.14.0)
|
|
45
|
+
rspec-mocks (~> 2.14.0)
|
|
46
|
+
rspec-core (2.14.7)
|
|
47
|
+
rspec-expectations (2.14.4)
|
|
48
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
|
49
|
+
rspec-mocks (2.14.4)
|
|
50
|
+
ruby2ruby (2.0.6)
|
|
51
|
+
ruby_parser (~> 3.1)
|
|
52
|
+
sexp_processor (~> 4.0)
|
|
53
|
+
ruby_parser (3.2.2)
|
|
54
|
+
sexp_processor (~> 4.1)
|
|
55
|
+
rubyzip (1.0.0)
|
|
56
|
+
selenium-webdriver (2.37.0)
|
|
68
57
|
childprocess (>= 0.2.5)
|
|
69
|
-
libwebsocket (~> 0.1.3)
|
|
70
58
|
multi_json (~> 1.0)
|
|
71
|
-
rubyzip
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
rack
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
59
|
+
rubyzip (~> 1.0.0)
|
|
60
|
+
websocket (~> 1.0.4)
|
|
61
|
+
sexp_processor (4.4.0)
|
|
62
|
+
sinatra (1.4.4)
|
|
63
|
+
rack (~> 1.4)
|
|
64
|
+
rack-protection (~> 1.4)
|
|
65
|
+
tilt (~> 1.3, >= 1.3.4)
|
|
66
|
+
systemu (2.5.2)
|
|
67
|
+
tilt (1.4.1)
|
|
68
|
+
uuid (2.3.7)
|
|
69
|
+
macaddr (~> 1.0)
|
|
70
|
+
websocket (1.0.7)
|
|
71
|
+
xpath (2.0.0)
|
|
79
72
|
nokogiri (~> 1.3)
|
|
80
|
-
yard (0.8.
|
|
73
|
+
yard (0.8.7.3)
|
|
81
74
|
|
|
82
75
|
PLATFORMS
|
|
83
|
-
java
|
|
84
76
|
ruby
|
|
85
77
|
|
|
86
78
|
DEPENDENCIES
|
|
79
|
+
bundler (~> 1.3)
|
|
87
80
|
capybara
|
|
88
81
|
find_a_port
|
|
89
|
-
jeweler
|
|
90
|
-
jruby-openssl
|
|
91
82
|
json
|
|
83
|
+
kookaburra!
|
|
92
84
|
kramdown
|
|
85
|
+
rake
|
|
93
86
|
reek
|
|
94
|
-
rest-client
|
|
95
87
|
rspec
|
|
88
|
+
selenium-webdriver
|
|
96
89
|
sinatra
|
|
90
|
+
uuid
|
|
97
91
|
yard
|
data/LICENSE.txt
CHANGED
data/README.markdown
CHANGED
|
@@ -5,8 +5,8 @@ order to keep acceptance tests maintainable.
|
|
|
5
5
|
|
|
6
6
|
## Requirements ##
|
|
7
7
|
|
|
8
|
-
Requires Ruby 1.9. Tested with both MRI and JRuby (note
|
|
9
|
-
JRuby in 1.9 compatability mode.)
|
|
8
|
+
Requires Ruby 1.9.3 or greater. Tested with both MRI and JRuby (note
|
|
9
|
+
that you must run JRuby in 1.9 compatability mode.)
|
|
10
10
|
|
|
11
11
|
## Installation ##
|
|
12
12
|
|
data/Rakefile
CHANGED
|
@@ -1,53 +1,10 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
2
|
|
|
3
|
-
require '
|
|
4
|
-
require 'bundler'
|
|
5
|
-
begin
|
|
6
|
-
Bundler.setup(:default, :development)
|
|
7
|
-
rescue Bundler::BundlerError => e
|
|
8
|
-
$stderr.puts e.message
|
|
9
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
|
10
|
-
exit e.status_code
|
|
11
|
-
end
|
|
12
|
-
require 'rake'
|
|
13
|
-
|
|
14
|
-
require 'jeweler'
|
|
15
|
-
Jeweler::Tasks.new do |gem|
|
|
16
|
-
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
|
17
|
-
gem.name = "kookaburra"
|
|
18
|
-
gem.homepage = "http://github.com/projectdx/kookaburra"
|
|
19
|
-
gem.license = "MIT"
|
|
20
|
-
gem.summary = %Q{WindowDriver testing pattern for Ruby apps}
|
|
21
|
-
gem.description = %Q{Cucumber + Capybara = Kookaburra? It made sense at the time.}
|
|
22
|
-
gem.email = "johnwilger@gmail.com"
|
|
23
|
-
gem.authors = ["John Wilger", "Sam Livingston-Gray", "Ravi Gadad"]
|
|
24
|
-
# dependencies defined in Gemfile
|
|
25
|
-
end
|
|
26
|
-
Jeweler::RubygemsDotOrgTasks.new
|
|
27
|
-
|
|
3
|
+
require 'bundler/gem_tasks'
|
|
28
4
|
require 'rspec/core/rake_task'
|
|
29
5
|
|
|
30
6
|
task :default => :spec
|
|
31
|
-
|
|
32
|
-
# TODO: figure out how to get rake task working under JRuby and rbenv
|
|
33
|
-
if defined?(JRUBY_VERSION) && ENV['RBENV_VERSION']
|
|
34
|
-
desc 'Run specs'
|
|
35
|
-
task :spec do
|
|
36
|
-
msg = <<-EOM
|
|
37
|
-
********************************************************************************
|
|
38
|
-
* You appear to be running under JRuby and using rbenv.
|
|
39
|
-
*
|
|
40
|
-
* For some reason the `rake spec` command isn't working correctly in
|
|
41
|
-
* these circumstances. However, you should be able to just run the
|
|
42
|
-
* `rspec` command directly.
|
|
43
|
-
********************************************************************************
|
|
44
|
-
EOM
|
|
45
|
-
raise msg
|
|
46
|
-
end
|
|
47
|
-
else
|
|
48
|
-
desc 'Run specs'
|
|
49
|
-
RSpec::Core::RakeTask.new
|
|
50
|
-
end
|
|
7
|
+
RSpec::Core::RakeTask.new
|
|
51
8
|
|
|
52
9
|
require 'reek/rake/task'
|
|
53
10
|
Reek::Rake::Task.new do |t|
|
|
@@ -58,13 +15,3 @@ end
|
|
|
58
15
|
|
|
59
16
|
require 'yard'
|
|
60
17
|
YARD::Rake::YardocTask.new
|
|
61
|
-
|
|
62
|
-
desc "Run rake on all supported rubies"
|
|
63
|
-
task :all_rubies do
|
|
64
|
-
rubies = %w[ruby-1.9.3 ruby-1.9.2 ree-1.8.7 ruby-1.8.7]
|
|
65
|
-
rubies.each do |ruby_version|
|
|
66
|
-
puts "Testing with #{ruby_version}"
|
|
67
|
-
system "rvm #{ruby_version}@kookaburra do rake" \
|
|
68
|
-
or raise "Failed to run rake with #{ruby_version}!"
|
|
69
|
-
end
|
|
70
|
-
end
|
data/kookaburra.gemspec
CHANGED
|
@@ -1,112 +1,35 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
require 'kookaburra/version'
|
|
5
5
|
|
|
6
|
-
Gem::Specification.new do |
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
Gem::Specification.new do |spec|
|
|
7
|
+
spec.name = "kookaburra"
|
|
8
|
+
spec.version = Kookaburra::VERSION
|
|
9
|
+
spec.authors = ["John Wilger", "Sam Livingston-Gray", "Ravi Gadad"]
|
|
10
|
+
spec.email = ["johnwilger@gmail.com"]
|
|
11
|
+
spec.description = %q{Cucumber + Capybara = Kookaburra? It made sense at the time.}
|
|
12
|
+
spec.summary = %q{Window Driver pattern for acceptance tests}
|
|
13
|
+
spec.homepage = "http://johnwilger.com/kookaburra/"
|
|
14
|
+
spec.license = "MIT"
|
|
9
15
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
s.email = "johnwilger@gmail.com"
|
|
15
|
-
s.extra_rdoc_files = [
|
|
16
|
-
"LICENSE.txt",
|
|
17
|
-
"README.markdown"
|
|
18
|
-
]
|
|
19
|
-
s.files = [
|
|
20
|
-
".document",
|
|
21
|
-
".rspec",
|
|
22
|
-
".rvmrc",
|
|
23
|
-
".yardopts",
|
|
24
|
-
"Gemfile",
|
|
25
|
-
"Gemfile.lock",
|
|
26
|
-
"LICENSE.txt",
|
|
27
|
-
"README.markdown",
|
|
28
|
-
"Rakefile",
|
|
29
|
-
"VERSION",
|
|
30
|
-
"kookaburra.gemspec",
|
|
31
|
-
"lib/core_ext/object/to_param.rb",
|
|
32
|
-
"lib/core_ext/object/to_query.rb",
|
|
33
|
-
"lib/kookaburra.rb",
|
|
34
|
-
"lib/kookaburra/api_driver.rb",
|
|
35
|
-
"lib/kookaburra/assertion.rb",
|
|
36
|
-
"lib/kookaburra/configuration.rb",
|
|
37
|
-
"lib/kookaburra/dependency_accessor.rb",
|
|
38
|
-
"lib/kookaburra/exceptions.rb",
|
|
39
|
-
"lib/kookaburra/given_driver.rb",
|
|
40
|
-
"lib/kookaburra/mental_model.rb",
|
|
41
|
-
"lib/kookaburra/mental_model_matcher.rb",
|
|
42
|
-
"lib/kookaburra/rack_app_server.rb",
|
|
43
|
-
"lib/kookaburra/test_helpers.rb",
|
|
44
|
-
"lib/kookaburra/ui_driver.rb",
|
|
45
|
-
"lib/kookaburra/ui_driver/has_ui_components.rb",
|
|
46
|
-
"lib/kookaburra/ui_driver/scoped_browser.rb",
|
|
47
|
-
"lib/kookaburra/ui_driver/ui_component.rb",
|
|
48
|
-
"lib/kookaburra/ui_driver/ui_component/address_bar.rb",
|
|
49
|
-
"spec/integration/test_a_rack_application_spec.rb",
|
|
50
|
-
"spec/kookaburra/api_driver_spec.rb",
|
|
51
|
-
"spec/kookaburra/configuration_spec.rb",
|
|
52
|
-
"spec/kookaburra/mental_model_matcher_spec.rb",
|
|
53
|
-
"spec/kookaburra/mental_model_spec.rb",
|
|
54
|
-
"spec/kookaburra/test_helpers_spec.rb",
|
|
55
|
-
"spec/kookaburra/ui_driver/scoped_browser_spec.rb",
|
|
56
|
-
"spec/kookaburra/ui_driver/ui_component/address_bar_spec.rb",
|
|
57
|
-
"spec/kookaburra/ui_driver/ui_component_spec.rb",
|
|
58
|
-
"spec/kookaburra/ui_driver_spec.rb",
|
|
59
|
-
"spec/kookaburra_spec.rb",
|
|
60
|
-
"spec/support/shared_examples/it_can_have_ui_components.rb",
|
|
61
|
-
"spec/support/shared_examples/it_can_make_assertions.rb",
|
|
62
|
-
"spec/support/shared_examples/it_has_a_dependency_accessor.rb"
|
|
63
|
-
]
|
|
64
|
-
s.homepage = "http://github.com/projectdx/kookaburra"
|
|
65
|
-
s.licenses = ["MIT"]
|
|
66
|
-
s.require_paths = ["lib"]
|
|
67
|
-
s.rubygems_version = "1.8.23"
|
|
68
|
-
s.summary = "WindowDriver testing pattern for Ruby apps"
|
|
16
|
+
spec.files = `git ls-files`.split($/)
|
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
|
+
spec.require_paths = ["lib"]
|
|
69
20
|
|
|
70
|
-
|
|
71
|
-
s.specification_version = 3
|
|
21
|
+
spec.add_dependency 'rest-client'
|
|
72
22
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
else
|
|
86
|
-
s.add_dependency(%q<rest-client>, [">= 0"])
|
|
87
|
-
s.add_dependency(%q<jruby-openssl>, [">= 0"])
|
|
88
|
-
s.add_dependency(%q<rspec>, [">= 0"])
|
|
89
|
-
s.add_dependency(%q<capybara>, [">= 0"])
|
|
90
|
-
s.add_dependency(%q<yard>, [">= 0"])
|
|
91
|
-
s.add_dependency(%q<kramdown>, [">= 0"])
|
|
92
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
|
93
|
-
s.add_dependency(%q<reek>, [">= 0"])
|
|
94
|
-
s.add_dependency(%q<sinatra>, [">= 0"])
|
|
95
|
-
s.add_dependency(%q<find_a_port>, [">= 0"])
|
|
96
|
-
s.add_dependency(%q<json>, [">= 0"])
|
|
97
|
-
end
|
|
98
|
-
else
|
|
99
|
-
s.add_dependency(%q<rest-client>, [">= 0"])
|
|
100
|
-
s.add_dependency(%q<jruby-openssl>, [">= 0"])
|
|
101
|
-
s.add_dependency(%q<rspec>, [">= 0"])
|
|
102
|
-
s.add_dependency(%q<capybara>, [">= 0"])
|
|
103
|
-
s.add_dependency(%q<yard>, [">= 0"])
|
|
104
|
-
s.add_dependency(%q<kramdown>, [">= 0"])
|
|
105
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
|
106
|
-
s.add_dependency(%q<reek>, [">= 0"])
|
|
107
|
-
s.add_dependency(%q<sinatra>, [">= 0"])
|
|
108
|
-
s.add_dependency(%q<find_a_port>, [">= 0"])
|
|
109
|
-
s.add_dependency(%q<json>, [">= 0"])
|
|
110
|
-
end
|
|
23
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
|
24
|
+
spec.add_development_dependency "rake"
|
|
25
|
+
spec.add_development_dependency "rspec"
|
|
26
|
+
spec.add_development_dependency "selenium-webdriver"
|
|
27
|
+
spec.add_development_dependency "capybara"
|
|
28
|
+
spec.add_development_dependency "reek"
|
|
29
|
+
spec.add_development_dependency "yard"
|
|
30
|
+
spec.add_development_dependency "kramdown"
|
|
31
|
+
spec.add_development_dependency "sinatra"
|
|
32
|
+
spec.add_development_dependency "uuid"
|
|
33
|
+
spec.add_development_dependency "find_a_port"
|
|
34
|
+
spec.add_development_dependency "json"
|
|
111
35
|
end
|
|
112
|
-
|
|
@@ -20,8 +20,9 @@ class Kookaburra
|
|
|
20
20
|
# '/signup'
|
|
21
21
|
# end
|
|
22
22
|
#
|
|
23
|
+
# # If it can't be inferred from the class name
|
|
23
24
|
# def component_locator
|
|
24
|
-
# '#
|
|
25
|
+
# '#user-sign-up'
|
|
25
26
|
# end
|
|
26
27
|
#
|
|
27
28
|
# def email
|
|
@@ -70,9 +71,10 @@ class Kookaburra
|
|
|
70
71
|
# You can get around this by calling it as `self.select`. See
|
|
71
72
|
# https://gist.github.com/3192103 for an example of this behavior.
|
|
72
73
|
#
|
|
73
|
-
# @abstract
|
|
74
|
-
#
|
|
75
|
-
#
|
|
74
|
+
# @abstract Unless you override the default implementation of {#url}, you
|
|
75
|
+
# must override the {#component_path} method if you want the component to
|
|
76
|
+
# be navigable by the {Kookaburra::UIDriver::UIComponent::AddressBar}
|
|
77
|
+
# component.
|
|
76
78
|
class UIComponent < SimpleDelegator
|
|
77
79
|
include Assertion
|
|
78
80
|
extend HasUIComponents
|
|
@@ -132,12 +134,28 @@ class Kookaburra
|
|
|
132
134
|
raise ConfigurationError, "You must define #{self.class.name}#component_path."
|
|
133
135
|
end
|
|
134
136
|
|
|
135
|
-
#
|
|
136
|
-
#
|
|
137
|
-
#
|
|
138
|
-
#
|
|
137
|
+
# The CSS3 selector that will find the element in the DOM
|
|
138
|
+
#
|
|
139
|
+
# Defaults to a "#" followed by the snake-cased (underscored) version of
|
|
140
|
+
# the class name with '/' replaced by '-'. Override this method in your
|
|
141
|
+
# subclasses if you need a different CSS3 selector to find your component.
|
|
142
|
+
#
|
|
143
|
+
# @example
|
|
144
|
+
# class My::Awesome::ComponentThingy < Kookaburra::UIDriver::UIComponent
|
|
145
|
+
# end
|
|
146
|
+
#
|
|
147
|
+
# x = My::Awesome::ComponentThingy.allocate
|
|
148
|
+
# x.send(:component_locator)
|
|
149
|
+
# #=> '#my-awesome-component_thingy'
|
|
150
|
+
#
|
|
151
|
+
# @return [String]
|
|
139
152
|
def component_locator
|
|
140
|
-
|
|
153
|
+
"#" + self.class.name.gsub(/::/, '/').
|
|
154
|
+
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
|
|
155
|
+
gsub(/([a-z\d])([A-Z])/,'\1_\2').
|
|
156
|
+
tr("-", "_").
|
|
157
|
+
gsub('/', '-').
|
|
158
|
+
downcase
|
|
141
159
|
end
|
|
142
160
|
|
|
143
161
|
# Runs the server error detection function specified in
|
|
@@ -2,6 +2,7 @@ require 'kookaburra/test_helpers'
|
|
|
2
2
|
require 'kookaburra/api_driver'
|
|
3
3
|
require 'kookaburra/rack_app_server'
|
|
4
4
|
require 'capybara'
|
|
5
|
+
require 'uuid'
|
|
5
6
|
|
|
6
7
|
# These are required for the Rack app used for testing
|
|
7
8
|
require 'sinatra/base'
|
|
@@ -102,17 +103,18 @@ describe "testing a Rack application with Kookaburra" do
|
|
|
102
103
|
else
|
|
103
104
|
{:name => params['name']}
|
|
104
105
|
end
|
|
105
|
-
widget_data[:id] =
|
|
106
|
+
widget_data[:id] = UUID.new.generate
|
|
106
107
|
@@widgets << widget_data
|
|
107
108
|
@@last_widget_created = widget_data
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
109
|
+
request.accept.each do |type|
|
|
110
|
+
case type.to_s
|
|
111
|
+
when 'application/json'
|
|
112
|
+
status 201
|
|
113
|
+
headers 'Content-Type' => 'application/json'
|
|
114
|
+
halt widget_data.to_json
|
|
115
|
+
else
|
|
116
|
+
halt redirect to('/widgets')
|
|
117
|
+
end
|
|
116
118
|
end
|
|
117
119
|
end
|
|
118
120
|
|
|
@@ -216,9 +218,11 @@ describe "testing a Rack application with Kookaburra" do
|
|
|
216
218
|
'/session/new'
|
|
217
219
|
end
|
|
218
220
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
221
|
+
# Use default component locator value
|
|
222
|
+
#
|
|
223
|
+
# def component_locator
|
|
224
|
+
# '#sign_in_screen'
|
|
225
|
+
# end
|
|
222
226
|
|
|
223
227
|
def sign_in(user_data)
|
|
224
228
|
fill_in 'Email:', :with => user_data['email']
|
|
@@ -5,18 +5,18 @@ describe Kookaburra::APIDriver do
|
|
|
5
5
|
URI.join('http://example.com', uri).to_s
|
|
6
6
|
end
|
|
7
7
|
|
|
8
|
-
let(:configuration) {
|
|
8
|
+
let(:configuration) { double('Configuration', :app_host => 'http://example.com') }
|
|
9
9
|
|
|
10
10
|
let(:api) { Kookaburra::APIDriver.new(configuration, client) }
|
|
11
11
|
|
|
12
|
-
let(:response) {
|
|
12
|
+
let(:response) { double('RestClient::Response', body: 'foo', code: 200) }
|
|
13
13
|
|
|
14
|
-
let(:client) {
|
|
14
|
+
let(:client) { double('RestClient') }
|
|
15
15
|
|
|
16
16
|
shared_examples_for 'any type of HTTP request' do |http_verb|
|
|
17
17
|
context "(#{http_verb})" do
|
|
18
18
|
before(:each) do
|
|
19
|
-
client.stub
|
|
19
|
+
client.stub(http_verb => response)
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
it 'returns the response body' do
|
|
@@ -24,8 +24,8 @@ describe Kookaburra::APIDriver do
|
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
it 'raises an UnexpectedResponse if the request is not successful' do
|
|
27
|
-
response.stub
|
|
28
|
-
client.stub
|
|
27
|
+
response.stub(code: 500)
|
|
28
|
+
client.stub(http_verb).and_raise(RestClient::Exception.new(response))
|
|
29
29
|
lambda { api.send(http_verb, '/foo') } \
|
|
30
30
|
.should raise_error(Kookaburra::UnexpectedResponse)
|
|
31
31
|
end
|
|
@@ -116,7 +116,7 @@ describe Kookaburra::APIDriver do
|
|
|
116
116
|
shared_examples_for 'it encodes request data' do |http_verb|
|
|
117
117
|
context "(#{http_verb})" do
|
|
118
118
|
before(:each) do
|
|
119
|
-
client.stub
|
|
119
|
+
client.stub(http_verb => response)
|
|
120
120
|
end
|
|
121
121
|
|
|
122
122
|
context 'when a custom encoder is specified' do
|
|
@@ -2,7 +2,7 @@ require 'kookaburra/ui_driver/scoped_browser'
|
|
|
2
2
|
|
|
3
3
|
describe Kookaburra::UIDriver::ScopedBrowser do
|
|
4
4
|
it 'forwards all method calls to the browser but scopes them to the component locator' do
|
|
5
|
-
browser =
|
|
5
|
+
browser = double('Browser')
|
|
6
6
|
browser.should_receive(:within).with('#a_component_locator').and_yield
|
|
7
7
|
browser.should_receive(:some_other_method).with(:foo)
|
|
8
8
|
subject = Kookaburra::UIDriver::ScopedBrowser.new(browser, lambda { '#a_component_locator' })
|
|
@@ -3,13 +3,13 @@ require 'kookaburra/ui_driver/ui_component/address_bar'
|
|
|
3
3
|
describe Kookaburra::UIDriver::UIComponent::AddressBar do
|
|
4
4
|
describe '#go_to' do
|
|
5
5
|
let(:browser) {
|
|
6
|
-
|
|
6
|
+
double('Capybara::Session').tap do |b|
|
|
7
7
|
b.should_receive(:visit).with('http://site.example.com')
|
|
8
8
|
end
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
let(:configuration) {
|
|
12
|
-
|
|
12
|
+
double('Configuration', :browser => browser, :app_host => nil, :server_error_detection => nil)
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
let(:address_bar) {
|
|
@@ -24,7 +24,7 @@ describe Kookaburra::UIDriver::UIComponent::AddressBar do
|
|
|
24
24
|
|
|
25
25
|
context 'when given a string' do
|
|
26
26
|
it 'causes the browser to navigate to the (presumably URL) string' do
|
|
27
|
-
addressable =
|
|
27
|
+
addressable = double('addressable', :url => 'http://site.example.com')
|
|
28
28
|
address_bar.go_to addressable
|
|
29
29
|
end
|
|
30
30
|
end
|
|
@@ -3,18 +3,18 @@ require 'support/shared_examples/it_can_make_assertions'
|
|
|
3
3
|
require 'support/shared_examples/it_can_have_ui_components'
|
|
4
4
|
|
|
5
5
|
describe Kookaburra::UIDriver::UIComponent do
|
|
6
|
-
let(:configuration) {
|
|
6
|
+
let(:configuration) { double('Configuration', :browser => nil, :app_host => nil, :server_error_detection => nil) }
|
|
7
7
|
let(:component) { Kookaburra::UIDriver::UIComponent.new(configuration) }
|
|
8
8
|
|
|
9
9
|
it_behaves_like :it_can_have_ui_components, Kookaburra::UIDriver::UIComponent
|
|
10
10
|
|
|
11
11
|
describe '#visible?' do
|
|
12
12
|
it 'returns true if the component_locator is found in the DOM and is visible' do
|
|
13
|
-
browser =
|
|
13
|
+
browser = double('Browser Driver')
|
|
14
14
|
browser.should_receive(:has_css?) \
|
|
15
15
|
.with('#my_component', :visible) \
|
|
16
16
|
.and_return(true)
|
|
17
|
-
configuration.stub
|
|
17
|
+
configuration.stub(:browser => browser)
|
|
18
18
|
def component.component_locator
|
|
19
19
|
'#my_component'
|
|
20
20
|
end
|
|
@@ -22,12 +22,12 @@ describe Kookaburra::UIDriver::UIComponent do
|
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
it 'returns false if the component_locator id not found in the DOM' do
|
|
25
|
-
browser =
|
|
26
|
-
configuration.stub
|
|
25
|
+
browser = double('Browser Driver', :has_css? => false)
|
|
26
|
+
configuration.stub(:browser => browser)
|
|
27
27
|
server_error_detection = lambda { |browser|
|
|
28
28
|
false
|
|
29
29
|
}
|
|
30
|
-
configuration.stub
|
|
30
|
+
configuration.stub(:server_error_detection => server_error_detection)
|
|
31
31
|
def component.component_locator
|
|
32
32
|
'#my_component'
|
|
33
33
|
end
|
|
@@ -35,12 +35,12 @@ describe Kookaburra::UIDriver::UIComponent do
|
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
it 'raises UnexpectedResponse if the component_locator is not found and a server error is detected' do
|
|
38
|
-
browser =
|
|
39
|
-
configuration.stub
|
|
38
|
+
browser = double('Browser Driver', :has_css? => false)
|
|
39
|
+
configuration.stub(:browser => browser)
|
|
40
40
|
server_error_detection = lambda { |browser|
|
|
41
41
|
true
|
|
42
42
|
}
|
|
43
|
-
configuration.stub
|
|
43
|
+
configuration.stub(:server_error_detection => server_error_detection)
|
|
44
44
|
def component.component_locator
|
|
45
45
|
'#my_component'
|
|
46
46
|
end
|
|
@@ -51,7 +51,7 @@ describe Kookaburra::UIDriver::UIComponent do
|
|
|
51
51
|
|
|
52
52
|
describe '#url' do
|
|
53
53
|
it 'returns the app_host + #component_path' do
|
|
54
|
-
configuration.stub
|
|
54
|
+
configuration.stub(:app_host => 'http://my.example.com')
|
|
55
55
|
def component.component_path
|
|
56
56
|
'/foo/bar'
|
|
57
57
|
end
|
|
@@ -68,9 +68,14 @@ describe Kookaburra::UIDriver::UIComponent do
|
|
|
68
68
|
end
|
|
69
69
|
|
|
70
70
|
describe '#component_locator' do
|
|
71
|
-
it '
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
it 'defaults to a string based on the class name' do
|
|
72
|
+
expected = "#" + component.class.name.gsub(/::/, '/').
|
|
73
|
+
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
|
|
74
|
+
gsub(/([a-z\d])([A-Z])/,'\1_\2').
|
|
75
|
+
tr("-", "_").
|
|
76
|
+
gsub('/', '-').
|
|
77
|
+
downcase
|
|
78
|
+
expect(component.send(:component_locator)).to eq expected
|
|
74
79
|
end
|
|
75
80
|
end
|
|
76
81
|
|
|
@@ -8,7 +8,7 @@ describe Kookaburra::UIDriver do
|
|
|
8
8
|
|
|
9
9
|
describe '.ui_driver' do
|
|
10
10
|
it 'adds an accessor method for the named driver that defaults to an instance of the specified class' do
|
|
11
|
-
foo_driver_class =
|
|
11
|
+
foo_driver_class = double(Class)
|
|
12
12
|
foo_driver_class.should_receive(:new) \
|
|
13
13
|
.with(:configuration) \
|
|
14
14
|
.and_return(:a_foo_driver)
|
|
@@ -24,13 +24,13 @@ describe Kookaburra::UIDriver do
|
|
|
24
24
|
|
|
25
25
|
describe '#url' do
|
|
26
26
|
it 'returns the configured app_host' do
|
|
27
|
-
config =
|
|
27
|
+
config = double('Configuration', :app_host => 'http://my.example.com')
|
|
28
28
|
driver = Kookaburra::UIDriver.new(config)
|
|
29
29
|
driver.url.should == 'http://my.example.com'
|
|
30
30
|
end
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
it_behaves_like :it_can_make_assertions do
|
|
34
|
-
let(:subject) { Kookaburra::UIDriver.new(
|
|
34
|
+
let(:subject) { Kookaburra::UIDriver.new(double('Configuration')) }
|
|
35
35
|
end
|
|
36
36
|
end
|
data/spec/kookaburra_spec.rb
CHANGED
|
@@ -9,32 +9,32 @@ describe Kookaburra do
|
|
|
9
9
|
|
|
10
10
|
describe '#given' do
|
|
11
11
|
it 'returns an instance of the configured GivenDriver' do
|
|
12
|
-
my_given_driver_class =
|
|
12
|
+
my_given_driver_class = double(Class)
|
|
13
13
|
my_given_driver_class.should_receive(:new) \
|
|
14
14
|
.with(configuration) \
|
|
15
15
|
.and_return(:a_given_driver)
|
|
16
|
-
configuration.stub
|
|
16
|
+
configuration.stub(:given_driver_class => my_given_driver_class)
|
|
17
17
|
k.given.should == :a_given_driver
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
describe '#ui' do
|
|
22
22
|
it 'returns an instance of the configured UIDriver' do
|
|
23
|
-
my_ui_driver_class =
|
|
23
|
+
my_ui_driver_class = double(Class)
|
|
24
24
|
my_ui_driver_class.should_receive(:new) \
|
|
25
25
|
.with(configuration) \
|
|
26
26
|
.and_return(:a_ui_driver)
|
|
27
|
-
configuration.stub
|
|
27
|
+
configuration.stub(:ui_driver_class => my_ui_driver_class)
|
|
28
28
|
k.ui.should == :a_ui_driver
|
|
29
29
|
end
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
describe '#get_data' do
|
|
33
33
|
it 'returns a dup of the specified MentalModel::Collection' do
|
|
34
|
-
collection =
|
|
34
|
+
collection = double('MentalModel::Collection')
|
|
35
35
|
collection.should_receive(:dup) \
|
|
36
36
|
.and_return(:mental_model_collection_dup)
|
|
37
|
-
configuration.stub
|
|
37
|
+
configuration.stub(:mental_model => double(:foos => collection))
|
|
38
38
|
k.get_data(:foos).should == :mental_model_collection_dup
|
|
39
39
|
end
|
|
40
40
|
end
|
|
@@ -54,9 +54,9 @@ describe Kookaburra do
|
|
|
54
54
|
|
|
55
55
|
describe '.configure' do
|
|
56
56
|
it 'yields Kookaburra.configuration' do
|
|
57
|
-
configuration =
|
|
57
|
+
configuration = double('Kookaburra::Configuration')
|
|
58
58
|
configuration.should_receive(:foo=).with(:bar)
|
|
59
|
-
Kookaburra.stub
|
|
59
|
+
Kookaburra.stub(:configuration => configuration)
|
|
60
60
|
Kookaburra.configure do |c|
|
|
61
61
|
c.foo = :bar
|
|
62
62
|
end
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
shared_examples_for :it_can_have_ui_components do |subject_class|
|
|
2
2
|
describe '.ui_component' do
|
|
3
3
|
it 'adds an accessor method for the named component that defaults to an instance of the specified class' do
|
|
4
|
-
configuration =
|
|
5
|
-
foo_component_class =
|
|
4
|
+
configuration = double('Kookaburra::Configuration').as_null_object
|
|
5
|
+
foo_component_class = double(Class)
|
|
6
6
|
foo_component_class.should_receive(:new) \
|
|
7
7
|
.with(configuration, :option => :value) \
|
|
8
8
|
.and_return(:a_foo_component)
|
metadata
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kookaburra
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.2.
|
|
5
|
-
prerelease:
|
|
4
|
+
version: 1.2.1
|
|
6
5
|
platform: ruby
|
|
7
6
|
authors:
|
|
8
7
|
- John Wilger
|
|
@@ -11,202 +10,207 @@ authors:
|
|
|
11
10
|
autorequire:
|
|
12
11
|
bindir: bin
|
|
13
12
|
cert_chain: []
|
|
14
|
-
date: 2013-
|
|
13
|
+
date: 2013-11-22 00:00:00.000000000 Z
|
|
15
14
|
dependencies:
|
|
16
15
|
- !ruby/object:Gem::Dependency
|
|
17
16
|
name: rest-client
|
|
18
17
|
requirement: !ruby/object:Gem::Requirement
|
|
19
|
-
none: false
|
|
20
18
|
requirements:
|
|
21
|
-
- -
|
|
19
|
+
- - '>='
|
|
22
20
|
- !ruby/object:Gem::Version
|
|
23
21
|
version: '0'
|
|
24
22
|
type: :runtime
|
|
25
23
|
prerelease: false
|
|
26
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
27
|
-
none: false
|
|
28
25
|
requirements:
|
|
29
|
-
- -
|
|
26
|
+
- - '>='
|
|
30
27
|
- !ruby/object:Gem::Version
|
|
31
28
|
version: '0'
|
|
32
29
|
- !ruby/object:Gem::Dependency
|
|
33
|
-
name:
|
|
30
|
+
name: bundler
|
|
34
31
|
requirement: !ruby/object:Gem::Requirement
|
|
35
|
-
none: false
|
|
36
32
|
requirements:
|
|
37
|
-
- -
|
|
33
|
+
- - ~>
|
|
34
|
+
- !ruby/object:Gem::Version
|
|
35
|
+
version: '1.3'
|
|
36
|
+
type: :development
|
|
37
|
+
prerelease: false
|
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
39
|
+
requirements:
|
|
40
|
+
- - ~>
|
|
41
|
+
- !ruby/object:Gem::Version
|
|
42
|
+
version: '1.3'
|
|
43
|
+
- !ruby/object:Gem::Dependency
|
|
44
|
+
name: rake
|
|
45
|
+
requirement: !ruby/object:Gem::Requirement
|
|
46
|
+
requirements:
|
|
47
|
+
- - '>='
|
|
38
48
|
- !ruby/object:Gem::Version
|
|
39
49
|
version: '0'
|
|
40
50
|
type: :development
|
|
41
51
|
prerelease: false
|
|
42
52
|
version_requirements: !ruby/object:Gem::Requirement
|
|
43
|
-
none: false
|
|
44
53
|
requirements:
|
|
45
|
-
- -
|
|
54
|
+
- - '>='
|
|
46
55
|
- !ruby/object:Gem::Version
|
|
47
56
|
version: '0'
|
|
48
57
|
- !ruby/object:Gem::Dependency
|
|
49
58
|
name: rspec
|
|
50
59
|
requirement: !ruby/object:Gem::Requirement
|
|
51
|
-
none: false
|
|
52
60
|
requirements:
|
|
53
|
-
- -
|
|
61
|
+
- - '>='
|
|
54
62
|
- !ruby/object:Gem::Version
|
|
55
63
|
version: '0'
|
|
56
64
|
type: :development
|
|
57
65
|
prerelease: false
|
|
58
66
|
version_requirements: !ruby/object:Gem::Requirement
|
|
59
|
-
none: false
|
|
60
67
|
requirements:
|
|
61
|
-
- -
|
|
68
|
+
- - '>='
|
|
62
69
|
- !ruby/object:Gem::Version
|
|
63
70
|
version: '0'
|
|
64
71
|
- !ruby/object:Gem::Dependency
|
|
65
|
-
name:
|
|
72
|
+
name: selenium-webdriver
|
|
66
73
|
requirement: !ruby/object:Gem::Requirement
|
|
67
|
-
none: false
|
|
68
74
|
requirements:
|
|
69
|
-
- -
|
|
75
|
+
- - '>='
|
|
70
76
|
- !ruby/object:Gem::Version
|
|
71
77
|
version: '0'
|
|
72
78
|
type: :development
|
|
73
79
|
prerelease: false
|
|
74
80
|
version_requirements: !ruby/object:Gem::Requirement
|
|
75
|
-
none: false
|
|
76
81
|
requirements:
|
|
77
|
-
- -
|
|
82
|
+
- - '>='
|
|
78
83
|
- !ruby/object:Gem::Version
|
|
79
84
|
version: '0'
|
|
80
85
|
- !ruby/object:Gem::Dependency
|
|
81
|
-
name:
|
|
86
|
+
name: capybara
|
|
82
87
|
requirement: !ruby/object:Gem::Requirement
|
|
83
|
-
none: false
|
|
84
88
|
requirements:
|
|
85
|
-
- -
|
|
89
|
+
- - '>='
|
|
86
90
|
- !ruby/object:Gem::Version
|
|
87
91
|
version: '0'
|
|
88
92
|
type: :development
|
|
89
93
|
prerelease: false
|
|
90
94
|
version_requirements: !ruby/object:Gem::Requirement
|
|
91
|
-
none: false
|
|
92
95
|
requirements:
|
|
93
|
-
- -
|
|
96
|
+
- - '>='
|
|
94
97
|
- !ruby/object:Gem::Version
|
|
95
98
|
version: '0'
|
|
96
99
|
- !ruby/object:Gem::Dependency
|
|
97
|
-
name:
|
|
100
|
+
name: reek
|
|
98
101
|
requirement: !ruby/object:Gem::Requirement
|
|
99
|
-
none: false
|
|
100
102
|
requirements:
|
|
101
|
-
- -
|
|
103
|
+
- - '>='
|
|
102
104
|
- !ruby/object:Gem::Version
|
|
103
105
|
version: '0'
|
|
104
106
|
type: :development
|
|
105
107
|
prerelease: false
|
|
106
108
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
-
none: false
|
|
108
109
|
requirements:
|
|
109
|
-
- -
|
|
110
|
+
- - '>='
|
|
110
111
|
- !ruby/object:Gem::Version
|
|
111
112
|
version: '0'
|
|
112
113
|
- !ruby/object:Gem::Dependency
|
|
113
|
-
name:
|
|
114
|
+
name: yard
|
|
114
115
|
requirement: !ruby/object:Gem::Requirement
|
|
115
|
-
none: false
|
|
116
116
|
requirements:
|
|
117
|
-
- -
|
|
117
|
+
- - '>='
|
|
118
118
|
- !ruby/object:Gem::Version
|
|
119
119
|
version: '0'
|
|
120
120
|
type: :development
|
|
121
121
|
prerelease: false
|
|
122
122
|
version_requirements: !ruby/object:Gem::Requirement
|
|
123
|
-
none: false
|
|
124
123
|
requirements:
|
|
125
|
-
- -
|
|
124
|
+
- - '>='
|
|
126
125
|
- !ruby/object:Gem::Version
|
|
127
126
|
version: '0'
|
|
128
127
|
- !ruby/object:Gem::Dependency
|
|
129
|
-
name:
|
|
128
|
+
name: kramdown
|
|
130
129
|
requirement: !ruby/object:Gem::Requirement
|
|
131
|
-
none: false
|
|
132
130
|
requirements:
|
|
133
|
-
- -
|
|
131
|
+
- - '>='
|
|
134
132
|
- !ruby/object:Gem::Version
|
|
135
133
|
version: '0'
|
|
136
134
|
type: :development
|
|
137
135
|
prerelease: false
|
|
138
136
|
version_requirements: !ruby/object:Gem::Requirement
|
|
139
|
-
none: false
|
|
140
137
|
requirements:
|
|
141
|
-
- -
|
|
138
|
+
- - '>='
|
|
142
139
|
- !ruby/object:Gem::Version
|
|
143
140
|
version: '0'
|
|
144
141
|
- !ruby/object:Gem::Dependency
|
|
145
142
|
name: sinatra
|
|
146
143
|
requirement: !ruby/object:Gem::Requirement
|
|
147
|
-
none: false
|
|
148
144
|
requirements:
|
|
149
|
-
- -
|
|
145
|
+
- - '>='
|
|
146
|
+
- !ruby/object:Gem::Version
|
|
147
|
+
version: '0'
|
|
148
|
+
type: :development
|
|
149
|
+
prerelease: false
|
|
150
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
151
|
+
requirements:
|
|
152
|
+
- - '>='
|
|
153
|
+
- !ruby/object:Gem::Version
|
|
154
|
+
version: '0'
|
|
155
|
+
- !ruby/object:Gem::Dependency
|
|
156
|
+
name: uuid
|
|
157
|
+
requirement: !ruby/object:Gem::Requirement
|
|
158
|
+
requirements:
|
|
159
|
+
- - '>='
|
|
150
160
|
- !ruby/object:Gem::Version
|
|
151
161
|
version: '0'
|
|
152
162
|
type: :development
|
|
153
163
|
prerelease: false
|
|
154
164
|
version_requirements: !ruby/object:Gem::Requirement
|
|
155
|
-
none: false
|
|
156
165
|
requirements:
|
|
157
|
-
- -
|
|
166
|
+
- - '>='
|
|
158
167
|
- !ruby/object:Gem::Version
|
|
159
168
|
version: '0'
|
|
160
169
|
- !ruby/object:Gem::Dependency
|
|
161
170
|
name: find_a_port
|
|
162
171
|
requirement: !ruby/object:Gem::Requirement
|
|
163
|
-
none: false
|
|
164
172
|
requirements:
|
|
165
|
-
- -
|
|
173
|
+
- - '>='
|
|
166
174
|
- !ruby/object:Gem::Version
|
|
167
175
|
version: '0'
|
|
168
176
|
type: :development
|
|
169
177
|
prerelease: false
|
|
170
178
|
version_requirements: !ruby/object:Gem::Requirement
|
|
171
|
-
none: false
|
|
172
179
|
requirements:
|
|
173
|
-
- -
|
|
180
|
+
- - '>='
|
|
174
181
|
- !ruby/object:Gem::Version
|
|
175
182
|
version: '0'
|
|
176
183
|
- !ruby/object:Gem::Dependency
|
|
177
184
|
name: json
|
|
178
185
|
requirement: !ruby/object:Gem::Requirement
|
|
179
|
-
none: false
|
|
180
186
|
requirements:
|
|
181
|
-
- -
|
|
187
|
+
- - '>='
|
|
182
188
|
- !ruby/object:Gem::Version
|
|
183
189
|
version: '0'
|
|
184
190
|
type: :development
|
|
185
191
|
prerelease: false
|
|
186
192
|
version_requirements: !ruby/object:Gem::Requirement
|
|
187
|
-
none: false
|
|
188
193
|
requirements:
|
|
189
|
-
- -
|
|
194
|
+
- - '>='
|
|
190
195
|
- !ruby/object:Gem::Version
|
|
191
196
|
version: '0'
|
|
192
197
|
description: Cucumber + Capybara = Kookaburra? It made sense at the time.
|
|
193
|
-
email:
|
|
198
|
+
email:
|
|
199
|
+
- johnwilger@gmail.com
|
|
194
200
|
executables: []
|
|
195
201
|
extensions: []
|
|
196
|
-
extra_rdoc_files:
|
|
197
|
-
- LICENSE.txt
|
|
198
|
-
- README.markdown
|
|
202
|
+
extra_rdoc_files: []
|
|
199
203
|
files:
|
|
200
204
|
- .document
|
|
205
|
+
- .gitignore
|
|
201
206
|
- .rspec
|
|
202
|
-
- .
|
|
207
|
+
- .travis.yml
|
|
203
208
|
- .yardopts
|
|
204
209
|
- Gemfile
|
|
205
210
|
- Gemfile.lock
|
|
206
211
|
- LICENSE.txt
|
|
207
212
|
- README.markdown
|
|
208
213
|
- Rakefile
|
|
209
|
-
- VERSION
|
|
210
214
|
- kookaburra.gemspec
|
|
211
215
|
- lib/core_ext/object/to_param.rb
|
|
212
216
|
- lib/core_ext/object/to_query.rb
|
|
@@ -226,6 +230,7 @@ files:
|
|
|
226
230
|
- lib/kookaburra/ui_driver/scoped_browser.rb
|
|
227
231
|
- lib/kookaburra/ui_driver/ui_component.rb
|
|
228
232
|
- lib/kookaburra/ui_driver/ui_component/address_bar.rb
|
|
233
|
+
- lib/kookaburra/version.rb
|
|
229
234
|
- spec/integration/test_a_rack_application_spec.rb
|
|
230
235
|
- spec/kookaburra/api_driver_spec.rb
|
|
231
236
|
- spec/kookaburra/configuration_spec.rb
|
|
@@ -240,32 +245,43 @@ files:
|
|
|
240
245
|
- spec/support/shared_examples/it_can_have_ui_components.rb
|
|
241
246
|
- spec/support/shared_examples/it_can_make_assertions.rb
|
|
242
247
|
- spec/support/shared_examples/it_has_a_dependency_accessor.rb
|
|
243
|
-
homepage: http://
|
|
248
|
+
homepage: http://johnwilger.com/kookaburra/
|
|
244
249
|
licenses:
|
|
245
250
|
- MIT
|
|
251
|
+
metadata: {}
|
|
246
252
|
post_install_message:
|
|
247
253
|
rdoc_options: []
|
|
248
254
|
require_paths:
|
|
249
255
|
- lib
|
|
250
256
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
251
|
-
none: false
|
|
252
257
|
requirements:
|
|
253
|
-
- -
|
|
258
|
+
- - '>='
|
|
254
259
|
- !ruby/object:Gem::Version
|
|
255
260
|
version: '0'
|
|
256
|
-
segments:
|
|
257
|
-
- 0
|
|
258
|
-
hash: -356630097343812047
|
|
259
261
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
260
|
-
none: false
|
|
261
262
|
requirements:
|
|
262
|
-
- -
|
|
263
|
+
- - '>='
|
|
263
264
|
- !ruby/object:Gem::Version
|
|
264
265
|
version: '0'
|
|
265
266
|
requirements: []
|
|
266
267
|
rubyforge_project:
|
|
267
|
-
rubygems_version:
|
|
268
|
+
rubygems_version: 2.0.3
|
|
268
269
|
signing_key:
|
|
269
|
-
specification_version:
|
|
270
|
-
summary:
|
|
271
|
-
test_files:
|
|
270
|
+
specification_version: 4
|
|
271
|
+
summary: Window Driver pattern for acceptance tests
|
|
272
|
+
test_files:
|
|
273
|
+
- spec/integration/test_a_rack_application_spec.rb
|
|
274
|
+
- spec/kookaburra/api_driver_spec.rb
|
|
275
|
+
- spec/kookaburra/configuration_spec.rb
|
|
276
|
+
- spec/kookaburra/mental_model_matcher_spec.rb
|
|
277
|
+
- spec/kookaburra/mental_model_spec.rb
|
|
278
|
+
- spec/kookaburra/test_helpers_spec.rb
|
|
279
|
+
- spec/kookaburra/ui_driver/scoped_browser_spec.rb
|
|
280
|
+
- spec/kookaburra/ui_driver/ui_component/address_bar_spec.rb
|
|
281
|
+
- spec/kookaburra/ui_driver/ui_component_spec.rb
|
|
282
|
+
- spec/kookaburra/ui_driver_spec.rb
|
|
283
|
+
- spec/kookaburra_spec.rb
|
|
284
|
+
- spec/support/shared_examples/it_can_have_ui_components.rb
|
|
285
|
+
- spec/support/shared_examples/it_can_make_assertions.rb
|
|
286
|
+
- spec/support/shared_examples/it_has_a_dependency_accessor.rb
|
|
287
|
+
has_rdoc:
|
data/.rvmrc
DELETED
data/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1.2.0
|