effective_test_bot 1.1.21 → 1.1.26
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/config/test_helper.rb +3 -0
- data/lib/effective_test_bot.rb +3 -3
- data/lib/effective_test_bot/dsl.rb +3 -0
- data/lib/effective_test_bot/engine.rb +11 -4
- data/lib/effective_test_bot/version.rb +1 -1
- data/test/support/effective_test_bot_assertions.rb +9 -1
- data/test/support/effective_test_bot_form_faker.rb +4 -10
- data/test/support/effective_test_bot_form_filler.rb +3 -1
- data/test/support/effective_test_bot_mocks.rb +31 -0
- data/test/support/effective_test_bot_screenshots_helper.rb +8 -8
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 056f99bc5e086db92fb0373956e50f9ce4c3abeb60da858f987fa944833084ef
|
4
|
+
data.tar.gz: a596e8409bac6e4962c29f5dee5f91a6e7e6f20ddcd00bb43507ae1ac681adae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c70fe070b2150e45c10530a85b5bfb35be59194e98a1148e201cd5638a9db5db854f8baafa0be9a1cbf73ca0c6953d267ba5339e5d00b32195dc260f945ae0a
|
7
|
+
data.tar.gz: af8ddb81a52f914792a3ddd150274b74980951f08d4b8e134d3e7c40b702d142878e2a9a387bb1bcb089a8aeec4a6f19e4619d79bd6f05c67ced4d3cd013a824
|
data/config/test_helper.rb
CHANGED
@@ -2,6 +2,7 @@ ENV['RAILS_ENV'] ||= 'test'
|
|
2
2
|
require_relative '../config/environment'
|
3
3
|
|
4
4
|
require 'rails/test_help'
|
5
|
+
require 'minitest/mock'
|
5
6
|
require 'minitest/spec'
|
6
7
|
require 'minitest/reporters'
|
7
8
|
require 'minitest/fail_fast' if EffectiveTestBot.fail_fast?
|
@@ -10,6 +11,8 @@ class ActiveSupport::TestCase
|
|
10
11
|
# Run tests in parallel with specified workers
|
11
12
|
# parallelize(workers: :number_of_processors) if respond_to?(:parallelize)
|
12
13
|
|
14
|
+
include EffectiveTestBot::DSL
|
15
|
+
|
13
16
|
fixtures :all # Loads all fixtures in test/fixtures/*.yml
|
14
17
|
extend Minitest::Spec::DSL # For the let syntax
|
15
18
|
end
|
data/lib/effective_test_bot.rb
CHANGED
@@ -66,7 +66,7 @@ module EffectiveTestBot
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def self.gifs?
|
69
|
-
image_processing_class.present?
|
69
|
+
screenshots? && image_processing_class.present?
|
70
70
|
end
|
71
71
|
|
72
72
|
def self.image_processing_class
|
@@ -97,7 +97,7 @@ module EffectiveTestBot
|
|
97
97
|
if ENV['TOUR'].present?
|
98
98
|
ENV['TOUR'].to_s != 'false'
|
99
99
|
else
|
100
|
-
|
100
|
+
gifs? && (tour_mode != false)
|
101
101
|
end
|
102
102
|
end
|
103
103
|
|
@@ -106,7 +106,7 @@ module EffectiveTestBot
|
|
106
106
|
if ENV['TOUR'].present?
|
107
107
|
['extreme', 'debug'].include?(ENV['TOUR'].to_s.downcase)
|
108
108
|
else
|
109
|
-
|
109
|
+
gifs? && ['extreme', 'debug'].include?(tour_mode.to_s)
|
110
110
|
end
|
111
111
|
end
|
112
112
|
|
@@ -3,6 +3,7 @@ module EffectiveTestBot
|
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
5
|
included do
|
6
|
+
# test/support/
|
6
7
|
include EffectiveTestBotAssertions
|
7
8
|
include EffectiveTestBotFormFaker
|
8
9
|
include EffectiveTestBotFormFiller
|
@@ -12,6 +13,8 @@ module EffectiveTestBot
|
|
12
13
|
include EffectiveTestBotScreenshotsHelper
|
13
14
|
include EffectiveTestBotTestHelper
|
14
15
|
|
16
|
+
BasicObject.send :include, EffectiveTestBotMocks
|
17
|
+
|
15
18
|
# test/test_botable/
|
16
19
|
include BaseTest
|
17
20
|
include CrudTest
|
@@ -2,10 +2,17 @@ module EffectiveTestBot
|
|
2
2
|
class Engine < ::Rails::Engine
|
3
3
|
engine_name 'effective_test_bot'
|
4
4
|
|
5
|
-
config.autoload_paths += Dir[
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
config.autoload_paths += Dir[
|
6
|
+
"#{config.root}/test/test_botable/",
|
7
|
+
"#{config.root}/test/concerns/",
|
8
|
+
"#{config.root}/test/support/"
|
9
|
+
]
|
10
|
+
|
11
|
+
config.eager_load_paths += Dir[
|
12
|
+
"#{config.root}/test/test_botable/",
|
13
|
+
"#{config.root}/test/concerns/",
|
14
|
+
"#{config.root}/test/support/"
|
15
|
+
]
|
9
16
|
|
10
17
|
# Set up our default configuration options.
|
11
18
|
initializer 'effective_test_bot.defaults', before: :load_config_initializers do |app|
|
@@ -218,7 +218,15 @@ module EffectiveTestBotAssertions
|
|
218
218
|
# assert_email :new_user_sign_up
|
219
219
|
# assert_email :new_user_sign_up, to: 'newuser@example.com'
|
220
220
|
# assert_email from: 'admin@example.com'
|
221
|
-
def assert_email(action = nil, to: nil, from: nil, subject: nil, body: nil, message: nil)
|
221
|
+
def assert_email(action = nil, to: nil, from: nil, subject: nil, body: nil, message: nil, &block)
|
222
|
+
if block_given?
|
223
|
+
before = ActionMailer::Base.deliveries.length
|
224
|
+
yield
|
225
|
+
after = ActionMailer::Base.deliveries.length
|
226
|
+
|
227
|
+
assert (after - before == 1), "(assert_email) Expected one email to have been delivered"
|
228
|
+
end
|
229
|
+
|
222
230
|
if (action || to || from || subject || body).nil?
|
223
231
|
assert ActionMailer::Base.deliveries.present?, message || "(assert_email) Expected email to have been delivered"
|
224
232
|
return
|
@@ -5,6 +5,8 @@ require 'faker'
|
|
5
5
|
module EffectiveTestBotFormFaker
|
6
6
|
DIGITS = ('1'..'9').to_a
|
7
7
|
LETTERS = %w(A B C E G H J K L M N P R S T V X Y) # valid letters of a canadian postal code, eh?
|
8
|
+
TRUE_VALUES = [true, 1, '1', 't', 'T', 'true', 'TRUE', 'on', 'ON']
|
9
|
+
FALSE_VALUES = [false, 0, '0', 'f', 'F', 'false', 'FALSE', 'off', 'OFF']
|
8
10
|
|
9
11
|
# Generates an appropriately pseudo-random value for the given field
|
10
12
|
# Pass in a Hash of fills to define pre-selected values
|
@@ -269,19 +271,11 @@ module EffectiveTestBotFormFaker
|
|
269
271
|
end
|
270
272
|
|
271
273
|
def truthy?(value)
|
272
|
-
|
273
|
-
::ActiveRecord::ConnectionAdapters::Column::TRUE_VALUES.include?(value)
|
274
|
-
else
|
275
|
-
ActiveRecord::Type::Boolean.new.cast(value)
|
276
|
-
end
|
274
|
+
TRUE_VALUES.include?(value)
|
277
275
|
end
|
278
276
|
|
279
277
|
def falsey?(value)
|
280
|
-
|
281
|
-
::ActiveRecord::ConnectionAdapters::Column::FALSE_VALUES.include?(value)
|
282
|
-
else
|
283
|
-
::ActiveRecord::Type::Boolean.new.cast(value) == false
|
284
|
-
end
|
278
|
+
FALSE_VALUES.include?(value)
|
285
279
|
end
|
286
280
|
|
287
281
|
end
|
@@ -19,7 +19,8 @@ module EffectiveTestBotFormFiller
|
|
19
19
|
active_tab = all("li.active > a[data-toggle='tab']", wait: false).first
|
20
20
|
|
21
21
|
tab_content = if active_tab && active_tab['href'].present?
|
22
|
-
|
22
|
+
tab_href = '#' + active_tab['href'].split('#').last
|
23
|
+
find('div' + tab_href).find(:xpath, '..')
|
23
24
|
end
|
24
25
|
|
25
26
|
excluding_fields_with_parent(tab_content) { fill_form_fields(fills) }
|
@@ -129,6 +130,7 @@ module EffectiveTestBotFormFiller
|
|
129
130
|
@filled_country_fields = nil
|
130
131
|
|
131
132
|
save_test_bot_screenshot
|
133
|
+
true
|
132
134
|
end
|
133
135
|
|
134
136
|
def fill_input_text(field, value)
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# https://github.com/codeodor/minitest-stub_any_instance
|
2
|
+
|
3
|
+
# included on BasicObject when test_helper calls include EffectiveTestBot::DSL
|
4
|
+
module EffectiveTestBotMocks
|
5
|
+
def stub_any_instance(name, val_or_callable = nil, &block)
|
6
|
+
new_name = "__minitest_any_instance_stub__#{name}"
|
7
|
+
owns_method = instance_method(name).owner == self
|
8
|
+
|
9
|
+
class_eval do
|
10
|
+
alias_method new_name, name if owns_method
|
11
|
+
|
12
|
+
define_method(name) do |*args|
|
13
|
+
if val_or_callable.respond_to? :call then
|
14
|
+
instance_exec(*args, &val_or_callable)
|
15
|
+
else
|
16
|
+
val_or_callable
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
yield
|
22
|
+
ensure
|
23
|
+
class_eval do
|
24
|
+
remove_method name
|
25
|
+
if owns_method
|
26
|
+
alias_method name, new_name
|
27
|
+
remove_method new_name
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -7,17 +7,15 @@ module EffectiveTestBotScreenshotsHelper
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def save_test_bot_screenshot
|
10
|
-
return unless EffectiveTestBot.
|
10
|
+
return unless EffectiveTestBot.gifs?
|
11
11
|
return unless page.current_path.present?
|
12
|
-
|
12
|
+
|
13
13
|
page.save_screenshot("#{current_test_temp_path}/#{current_test_screenshot_id}.png")
|
14
14
|
true
|
15
15
|
end
|
16
16
|
|
17
17
|
def save_test_bot_failure_gif
|
18
|
-
return unless EffectiveTestBot.screenshots?
|
19
18
|
return unless EffectiveTestBot.gifs?
|
20
|
-
|
21
19
|
return unless save_test_bot_screenshot
|
22
20
|
|
23
21
|
Dir.mkdir(current_test_failure_path) unless File.exist?(current_test_failure_path)
|
@@ -28,7 +26,6 @@ module EffectiveTestBotScreenshotsHelper
|
|
28
26
|
end
|
29
27
|
|
30
28
|
def save_test_bot_tour_gif
|
31
|
-
return unless EffectiveTestBot.screenshots?
|
32
29
|
return unless EffectiveTestBot.gifs?
|
33
30
|
return unless (@test_bot_screenshot_id || 0) > 0
|
34
31
|
|
@@ -42,9 +39,12 @@ module EffectiveTestBotScreenshotsHelper
|
|
42
39
|
def without_screenshots(&block)
|
43
40
|
original = EffectiveTestBot.screenshots
|
44
41
|
|
45
|
-
|
46
|
-
|
47
|
-
|
42
|
+
begin
|
43
|
+
EffectiveTestBot.screenshots = false
|
44
|
+
yield
|
45
|
+
ensure
|
46
|
+
EffectiveTestBot.screenshots = original
|
47
|
+
end
|
48
48
|
end
|
49
49
|
|
50
50
|
protected
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_test_bot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.26
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code and Effect
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-09-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -160,6 +160,7 @@ files:
|
|
160
160
|
- test/support/effective_test_bot_form_helper.rb
|
161
161
|
- test/support/effective_test_bot_login_helper.rb
|
162
162
|
- test/support/effective_test_bot_minitest_helper.rb
|
163
|
+
- test/support/effective_test_bot_mocks.rb
|
163
164
|
- test/support/effective_test_bot_screenshots_helper.rb
|
164
165
|
- test/support/effective_test_bot_test_helper.rb
|
165
166
|
- test/test_bot/system/application_test.rb
|
@@ -175,7 +176,7 @@ homepage: https://github.com/code-and-effect/effective_test_bot
|
|
175
176
|
licenses:
|
176
177
|
- MIT
|
177
178
|
metadata: {}
|
178
|
-
post_install_message:
|
179
|
+
post_install_message:
|
179
180
|
rdoc_options: []
|
180
181
|
require_paths:
|
181
182
|
- lib
|
@@ -190,8 +191,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
190
191
|
- !ruby/object:Gem::Version
|
191
192
|
version: '0'
|
192
193
|
requirements: []
|
193
|
-
rubygems_version: 3.
|
194
|
-
signing_key:
|
194
|
+
rubygems_version: 3.1.2
|
195
|
+
signing_key:
|
195
196
|
specification_version: 4
|
196
197
|
summary: A shared library of rails model & system tests that should pass in every
|
197
198
|
Rails application.
|