waterpig 0.0.2 → 0.0.3
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 +4 -4
- data/lib/waterpig.rb +6 -0
- data/lib/waterpig/browser-integration.rb +21 -187
- data/lib/waterpig/browser-tools.rb +77 -0
- data/lib/waterpig/ckeditor-tools.rb +10 -0
- data/lib/waterpig/database-cleaner.rb +43 -0
- data/lib/waterpig/poltergeist.rb +31 -0
- data/lib/waterpig/save-and-open-on-fail.rb +17 -0
- data/lib/waterpig/selenium_chrome.rb +8 -0
- data/lib/waterpig/snap-step.rb +15 -0
- data/lib/waterpig/tinymce-tools.rb +27 -0
- data/lib/waterpig/warning-suppressor.rb +9 -0
- metadata +40 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8ed5b323d7bcf0a64a7293ea82e645b58326fd60
|
4
|
+
data.tar.gz: 3f0398db3f97c31de26a59f023ab2b712fc1c417
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 342026e48effcac08a611e6267bbc2e1e4ae5bdcf30a8938403b66dd16a78125c639325c6b0583c047edecbe15bcbe0233b09ea1e38377050ed23a6952b5b683
|
7
|
+
data.tar.gz: f01dc7cf6658df744b052b2061bea7d67f39a39cab7a4c8fdc55cd783dcca8c612557a1da20c227d4ed51eb9e13625d6c9651fc2feed4c408b2b71440cac2911
|
data/lib/waterpig.rb
CHANGED
@@ -1,198 +1,32 @@
|
|
1
1
|
require 'capybara/rspec'
|
2
2
|
require 'stringio'
|
3
|
-
|
4
|
-
#require 'rspec-steps'
|
3
|
+
require 'rspec-steps'
|
5
4
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
prev.autoclose = false
|
15
|
-
$stdout = @write_io
|
16
|
-
STDOUT.reopen(@write_io)
|
17
|
-
|
18
|
-
prev = STDERR.dup
|
19
|
-
prev.autoclose = false
|
20
|
-
$stderr = @write_io
|
21
|
-
STDERR.reopen(@write_io)
|
22
|
-
yield
|
23
|
-
ensure
|
24
|
-
STDOUT.reopen(prev)
|
25
|
-
$stdout = STDOUT
|
26
|
-
STDERR.reopen(prev)
|
27
|
-
$stderr = STDERR
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
Capybara.register_driver :poltergeist_debug do |app|
|
33
|
-
Capybara::Poltergeist::Driver.new(app, :inspector => true, phantomjs_logger: WarningSuppressor)
|
34
|
-
end
|
35
|
-
rescue LoadError
|
36
|
-
end
|
37
|
-
|
38
|
-
begin
|
39
|
-
require 'selenium-webdriver'
|
40
|
-
Capybara.register_driver(:selenium_chrome) do |app|
|
41
|
-
Capybara::Selenium::Driver.new(app, :browser => :chrome)
|
42
|
-
end
|
43
|
-
|
44
|
-
rescue LoadError
|
45
|
-
end
|
46
|
-
|
47
|
-
class WarningSuppressor
|
48
|
-
class << self
|
49
|
-
def write(message)
|
50
|
-
if message =~ /QFont::setPixelSize: Pixel size <= 0/ || message =~/CoreText performance note:/ then 0 else puts(message);1;end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
5
|
+
require 'waterpig/poltergeist'
|
6
|
+
require 'waterpig/selenium_chrome'
|
7
|
+
require 'waterpig/warning-suppressor'
|
8
|
+
require 'waterpig/save-and-open-on-fail'
|
9
|
+
require 'waterpig/ckeditor-tools'
|
10
|
+
require 'waterpig/tinymce-tools'
|
11
|
+
require 'waterpig/browser-tools'
|
12
|
+
require 'waterpig/snap-step'
|
54
13
|
|
55
14
|
Capybara.default_driver = (ENV['CAPYBARA_DRIVER'] || :poltergeist_debug).to_sym
|
15
|
+
RSpec.configure do |config|
|
16
|
+
config.add_setting :waterpig_browser_types, :default => [:feature]
|
17
|
+
config.add_setting :waterpig_autosnap, :default => true
|
56
18
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
rescue RSpec::Core::Pending::PendingDeclaredInExample
|
61
|
-
raise
|
62
|
-
rescue Object => ex
|
63
|
-
begin
|
64
|
-
wrapper = ex.exception("#{ex.message}\nLast view at: file://#{save_page}")
|
65
|
-
wrapper.set_backtrace(ex.backtrace)
|
66
|
-
raise wrapper
|
67
|
-
rescue
|
68
|
-
raise ex
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
module CKEditorTools
|
74
|
-
def fill_in_ckeditor(id, options = {})
|
75
|
-
raise "Must pass a hash containing 'with'" if not options.is_a?(Hash) or not options.has_key?(:with)
|
76
|
-
raise "CKEeditor fill-in only works with Selenium driver" unless page.driver.class == Capybara::Selenium::Driver
|
77
|
-
browser = page.driver.browser
|
78
|
-
browser.execute_script("CKEDITOR.instances['#{id}'].setData('#{options[:with]}');")
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
module TinyMCETools
|
83
|
-
def fill_in_tinymce(id, options = {})
|
84
|
-
content =
|
85
|
-
case options
|
86
|
-
when Hash
|
87
|
-
content = options.fetch(:with)
|
88
|
-
when String
|
89
|
-
options
|
90
|
-
else
|
91
|
-
raise "Must pass a string or a hash containing 'with'"
|
92
|
-
end
|
93
|
-
|
94
|
-
case page.driver
|
95
|
-
when Capybara::Selenium::Driver
|
96
|
-
page.execute_script("$('##{id}').tinymce().setContent('#{content}')")
|
97
|
-
when Capybara::Poltergeist::Driver
|
98
|
-
within_frame("#{id}_ifr") do
|
99
|
-
element = find("body")
|
100
|
-
element.native.send_keys(content)
|
101
|
-
end
|
102
|
-
else
|
103
|
-
raise "fill_in_tinymce called with unrecognized page.driver: #{page.driver.class.name}"
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
|
109
|
-
module BrowserTools
|
110
|
-
def accept_alert
|
111
|
-
if poltergeist?
|
112
|
-
# do nothing ... really?
|
113
|
-
# https://github.com/jonleighton/poltergeist/issues/50
|
114
|
-
# Poltergeist's behavior is to return true to window.alert
|
115
|
-
# Does mean it's a challenge to test cancelling e.g. deletes, or
|
116
|
-
# confirming that an alert happens even
|
117
|
-
else
|
118
|
-
alert = page.driver.browser.switch_to.alert
|
119
|
-
alert.accept
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
|
-
def wait_for_animation
|
124
|
-
sleep(1) if poltergeist?
|
125
|
-
end
|
126
|
-
|
127
|
-
def poltergeist?
|
128
|
-
Capybara.javascript_driver.to_s =~ /poltergeist/
|
129
|
-
end
|
130
|
-
|
131
|
-
def self.warnings
|
132
|
-
@warnings ||= {}
|
133
|
-
end
|
134
|
-
|
135
|
-
def self.warn(general, specific=nil)
|
136
|
-
warnings.fetch(general) do
|
137
|
-
warnings[general] = true
|
138
|
-
puts "Warning: #{general}#{specific ? ": #{specific}" : ""}"
|
139
|
-
end
|
140
|
-
end
|
141
|
-
|
142
|
-
#renders the xpath to properly match a css class (or other space separated
|
143
|
-
#attribute)
|
144
|
-
#Use like: div[#{attr_includes("class", "findme")}]
|
145
|
-
#
|
146
|
-
def attr_includes(attr, value)
|
147
|
-
"contains(concat(' ', normalize-space(@#{attr}), ' '), ' #{value} ')"
|
148
|
-
end
|
149
|
-
|
150
|
-
def class_includes(value)
|
151
|
-
attr_includes("class", value)
|
152
|
-
end
|
153
|
-
|
154
|
-
def frame_index(dir)
|
155
|
-
@frame_dirs ||= Hash.new do |h,k|
|
156
|
-
FileUtils.rm_rf(k)
|
157
|
-
FileUtils.mkdir_p(k)
|
158
|
-
h[k] = 0
|
159
|
-
end
|
160
|
-
@frame_dirs[dir] += 1
|
161
|
-
end
|
162
|
-
|
163
|
-
def save_snapshot(dir, name)
|
164
|
-
require 'fileutils'
|
165
|
-
|
166
|
-
dir = "tmp/#{dir}"
|
167
|
-
|
168
|
-
path = "#{dir}/#{"%03i" % frame_index(dir)}-#{name}.png"
|
169
|
-
page.driver.save_screenshot(path, :full => true)
|
170
|
-
|
171
|
-
yield path if block_given?
|
172
|
-
rescue Capybara::NotSupportedByDriverError => nsbde
|
173
|
-
BrowserTools.warn("Can't use snapshot", nsbde.inspect)
|
174
|
-
end
|
175
|
-
|
176
|
-
def snapshot(dir)
|
177
|
-
save_snapshot(dir, "debug") do |path|
|
178
|
-
msg = "Saved screenshot: #{path} (from: #{caller[0].sub(/^#{Dir.pwd}/,'')})"
|
179
|
-
puts msg
|
180
|
-
Rails.logger.info(msg)
|
181
|
-
end
|
182
|
-
end
|
183
|
-
end
|
184
|
-
|
185
|
-
module SnapStep
|
186
|
-
def self.included(steps)
|
187
|
-
steps.after(:step) do
|
188
|
-
save_snapshot(example.metadata[:snapshots_into], example.description.downcase.gsub(/\s+/, "-"))
|
19
|
+
if defined?(Timecop)
|
20
|
+
config.after :all, :type => proc{|value| config.waterpig_browser_types.include?(value)} do
|
21
|
+
Timecop.return
|
189
22
|
end
|
190
23
|
end
|
191
|
-
end
|
192
24
|
|
193
|
-
|
194
|
-
config.include
|
195
|
-
config.include TinyMCETools, :type => :feature
|
25
|
+
config.include Waterpig::BrowserTools, :type => proc{|value| config.waterpig_browser_types.include?(value) }
|
26
|
+
config.include Waterpig::TinyMCETools, :type => proc{|value| config.waterpig_browser_types.include?(value) }
|
196
27
|
|
197
|
-
config.include
|
28
|
+
config.include Waterpig::AutoSnap, :type => proc{|value|
|
29
|
+
config.waterpig_autosnap? && config.waterpig_browser_types.include?(value)
|
30
|
+
}
|
31
|
+
config.include Waterpig::SnapStep, :snapshots_into => proc{|v| v.is_a? String}
|
198
32
|
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
module Waterpig
|
2
|
+
module BrowserTools
|
3
|
+
def accept_alert
|
4
|
+
if poltergeist?
|
5
|
+
# do nothing ... really?
|
6
|
+
# https://github.com/jonleighton/poltergeist/issues/50
|
7
|
+
# Poltergeist's behavior is to return true to window.alert
|
8
|
+
# Does mean it's a challenge to test cancelling e.g. deletes, or
|
9
|
+
# confirming that an alert happens even
|
10
|
+
else
|
11
|
+
alert = page.driver.browser.switch_to.alert
|
12
|
+
alert.accept
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def wait_for_animation
|
17
|
+
sleep(1) if poltergeist?
|
18
|
+
end
|
19
|
+
|
20
|
+
def poltergeist?
|
21
|
+
Capybara.javascript_driver.to_s =~ /poltergeist/
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.warnings
|
25
|
+
@warnings ||= {}
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.warn(general, specific=nil)
|
29
|
+
warnings.fetch(general) do
|
30
|
+
warnings[general] = true
|
31
|
+
puts "Warning: #{general}#{specific ? ": #{specific}" : ""}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
#renders the xpath to properly match a css class (or other space separated
|
36
|
+
#attribute)
|
37
|
+
#Use like: div[#{attr_includes("class", "findme")}]
|
38
|
+
#
|
39
|
+
def attr_includes(attr, value)
|
40
|
+
"contains(concat(' ', normalize-space(@#{attr}), ' '), ' #{value} ')"
|
41
|
+
end
|
42
|
+
|
43
|
+
def class_includes(value)
|
44
|
+
attr_includes("class", value)
|
45
|
+
end
|
46
|
+
|
47
|
+
def frame_index(dir)
|
48
|
+
@frame_dirs ||= Hash.new do |h,k|
|
49
|
+
FileUtils.rm_rf(k)
|
50
|
+
FileUtils.mkdir_p(k)
|
51
|
+
h[k] = 0
|
52
|
+
end
|
53
|
+
@frame_dirs[dir] += 1
|
54
|
+
end
|
55
|
+
|
56
|
+
def save_snapshot(dir, name)
|
57
|
+
require 'fileutils'
|
58
|
+
|
59
|
+
dir = "tmp/#{dir}"
|
60
|
+
|
61
|
+
path = "#{dir}/#{"%03i" % frame_index(dir)}-#{name}.png"
|
62
|
+
page.driver.save_screenshot(path, :full => true)
|
63
|
+
|
64
|
+
yield path if block_given?
|
65
|
+
rescue Capybara::NotSupportedByDriverError => nsbde
|
66
|
+
BrowserTools.warn("Can't use snapshot", nsbde.inspect)
|
67
|
+
end
|
68
|
+
|
69
|
+
def snapshot(dir)
|
70
|
+
save_snapshot(dir, "debug") do |path|
|
71
|
+
msg = "Saved screenshot: #{path} (from: #{caller[0].sub(/^#{Dir.pwd}/,'')})"
|
72
|
+
puts msg
|
73
|
+
Rails.logger.info(msg)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
module Waterpig
|
2
|
+
module CKEditorTools
|
3
|
+
def fill_in_ckeditor(id, options = {})
|
4
|
+
raise "Must pass a hash containing 'with'" if not options.is_a?(Hash) or not options.has_key?(:with)
|
5
|
+
raise "CKEeditor fill-in only works with Selenium driver" unless page.driver.class == Capybara::Selenium::Driver
|
6
|
+
browser = page.driver.browser
|
7
|
+
browser.execute_script("CKEDITOR.instances['#{id}'].setData('#{options[:with]}');")
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'database_cleaner'
|
2
|
+
|
3
|
+
RSpec.configure do |config|
|
4
|
+
#config.use_transactional_fixtures = false
|
5
|
+
DatabaseCleaner.strategy = :transaction
|
6
|
+
|
7
|
+
config.add_setting :waterpig_truncation_types, :default => [:feature]
|
8
|
+
config.add_setting :waterpig_exclude_seeds_types, :default => []
|
9
|
+
config.add_setting :waterpig_database_truncation_config, :default => {:except => %w[spatial_ref_sys]}
|
10
|
+
config.add_setting :waterpig_db_seeds, :default => 'db/seeds.rb'
|
11
|
+
|
12
|
+
config.before :all, :type => proc{ |value| config.waterpig_truncation_types.include?(value)} do
|
13
|
+
Rails.application.config.action_dispatch.show_exceptions = true
|
14
|
+
DatabaseCleaner.clean_with :truncation, config.waterpig_database_truncation_config
|
15
|
+
unless config.waterpig_exclude_seeds_types.include?(self.class.metadata[:type])
|
16
|
+
if config.waterpig_db_seeds?
|
17
|
+
load config.waterpig_db_seeds
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
config.after :all, :type => proc{ |value| config.waterpig_truncation_types.include?(value)} do
|
23
|
+
DatabaseCleaner.clean_with :truncation, config.waterpig_database_truncation_config
|
24
|
+
if config.waterpig_db_seeds?
|
25
|
+
load config.waterpig_db_seeds
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
config.before :each, :type => proc{ |value| !config.waterpig_truncation_types.include?(value) } do
|
30
|
+
DatabaseCleaner.start
|
31
|
+
end
|
32
|
+
|
33
|
+
config.after :each, :type => proc{ |value| !config.waterpig_truncation_types.include?(value) } do
|
34
|
+
DatabaseCleaner.clean
|
35
|
+
end
|
36
|
+
|
37
|
+
config.before :suite do
|
38
|
+
DatabaseCleaner.clean_with :truncation, config.waterpig_database_truncation_config
|
39
|
+
if config.waterpig_db_seeds?
|
40
|
+
load config.waterpig_db_seeds
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
|
2
|
+
begin
|
3
|
+
require 'capybara/poltergeist'
|
4
|
+
module Capybara::Poltergeist
|
5
|
+
class Client
|
6
|
+
private
|
7
|
+
def redirect_stdout
|
8
|
+
prev = STDOUT.dup
|
9
|
+
prev.autoclose = false
|
10
|
+
$stdout = @write_io
|
11
|
+
STDOUT.reopen(@write_io)
|
12
|
+
|
13
|
+
prev = STDERR.dup
|
14
|
+
prev.autoclose = false
|
15
|
+
$stderr = @write_io
|
16
|
+
STDERR.reopen(@write_io)
|
17
|
+
yield
|
18
|
+
ensure
|
19
|
+
STDOUT.reopen(prev)
|
20
|
+
$stdout = STDOUT
|
21
|
+
STDERR.reopen(prev)
|
22
|
+
$stderr = STDERR
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
Capybara.register_driver :poltergeist_debug do |app|
|
28
|
+
Capybara::Poltergeist::Driver.new(app, :inspector => true, phantomjs_logger: Waterpig::WarningSuppressor)
|
29
|
+
end
|
30
|
+
rescue LoadError
|
31
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Waterpig
|
2
|
+
module SaveAndOpenOnFail
|
3
|
+
def instance_eval(&block)
|
4
|
+
super(&block)
|
5
|
+
rescue RSpec::Core::Pending::PendingDeclaredInExample
|
6
|
+
raise
|
7
|
+
rescue Object => ex
|
8
|
+
begin
|
9
|
+
wrapper = ex.exception("#{ex.message}\nLast view at: file://#{save_page}")
|
10
|
+
wrapper.set_backtrace(ex.backtrace)
|
11
|
+
raise wrapper
|
12
|
+
rescue
|
13
|
+
raise ex
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Waterpig
|
2
|
+
module SnapStep
|
3
|
+
def self.included(steps)
|
4
|
+
steps.after(:step) do
|
5
|
+
save_snapshot(example.metadata[:snapshots_into], example.description.downcase.gsub(/\s+/, "-"))
|
6
|
+
end
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
module AutoSnap
|
11
|
+
def self.included(group)
|
12
|
+
group.metadata[:snapshots_into] = group.metadata[:example_group][:description_args].first.downcase.gsub(/\W+/, "_").sub(/^_*/,'').sub(/_*$/,'')
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Waterpig
|
2
|
+
module TinyMCETools
|
3
|
+
def fill_in_tinymce(id, options = {})
|
4
|
+
content =
|
5
|
+
case options
|
6
|
+
when Hash
|
7
|
+
content = options.fetch(:with)
|
8
|
+
when String
|
9
|
+
options
|
10
|
+
else
|
11
|
+
raise "Must pass a string or a hash containing 'with'"
|
12
|
+
end
|
13
|
+
|
14
|
+
case page.driver
|
15
|
+
when Capybara::Selenium::Driver
|
16
|
+
page.execute_script("$('##{id}').tinymce().setContent('#{content}')")
|
17
|
+
when Capybara::Poltergeist::Driver
|
18
|
+
within_frame("#{id}_ifr") do
|
19
|
+
element = find("body")
|
20
|
+
element.native.send_keys(content)
|
21
|
+
end
|
22
|
+
else
|
23
|
+
raise "fill_in_tinymce called with unrecognized page.driver: #{page.driver.class.name}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: waterpig
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Judson Lester
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capybara
|
@@ -24,6 +24,34 @@ dependencies:
|
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 2.2.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: database_cleaner
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.3.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.3.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec-steps
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.4.1
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.4.1
|
27
55
|
description: |2
|
28
56
|
Because waterpig is what the scientific name for a capybara translates to, that's why.
|
29
57
|
email:
|
@@ -33,7 +61,16 @@ extensions: []
|
|
33
61
|
extra_rdoc_files: []
|
34
62
|
files:
|
35
63
|
- lib/waterpig.rb
|
64
|
+
- lib/waterpig/save-and-open-on-fail.rb
|
65
|
+
- lib/waterpig/ckeditor-tools.rb
|
66
|
+
- lib/waterpig/selenium_chrome.rb
|
67
|
+
- lib/waterpig/database-cleaner.rb
|
68
|
+
- lib/waterpig/tinymce-tools.rb
|
36
69
|
- lib/waterpig/browser-integration.rb
|
70
|
+
- lib/waterpig/poltergeist.rb
|
71
|
+
- lib/waterpig/warning-suppressor.rb
|
72
|
+
- lib/waterpig/snap-step.rb
|
73
|
+
- lib/waterpig/browser-tools.rb
|
37
74
|
- spec/embarrassing.rb
|
38
75
|
- spec_help/spec_helper.rb
|
39
76
|
- spec_help/gem_test_suite.rb
|
@@ -47,7 +84,7 @@ rdoc_options:
|
|
47
84
|
- --main
|
48
85
|
- doc/README
|
49
86
|
- --title
|
50
|
-
- waterpig-0.0.
|
87
|
+
- waterpig-0.0.3 Documentation
|
51
88
|
require_paths:
|
52
89
|
- lib/
|
53
90
|
required_ruby_version: !ruby/object:Gem::Requirement
|