effective_test_bot 1.5.2 → 1.5.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e3b245c1e3d790a7705eabf892a9f3d4e27661680f87041c048467f356bc39c2
4
- data.tar.gz: 12061d2b15996bd76d0e2765064223a323364d260107ab40999ec8ff434dd0f7
3
+ metadata.gz: 00e994d7cc48e7ad3f6594daf5f8e13678fcc85be4b178d8565f3d4666f5724e
4
+ data.tar.gz: 3b2ec36407c22b8b8639e6a585e2fea987033affdacb0ab61e551f183965b55b
5
5
  SHA512:
6
- metadata.gz: 19368a5e42953b5e9b054eccf96e0330331bb2408292a919e433ac6c94de06034ef53c7c4560a62f5d9e35680948c12ae0516f9c33a84deb3434b564855713c2
7
- data.tar.gz: c3a725d50cfda94e55d575fc59d17bbe8986dc90177e8006981a34e64bcde902e23c1c5fd6f71f3ae57a2b2f2eb561110ab4d50949fa5464cad676d92184689a
6
+ metadata.gz: 32c6e8f8e86c813d29dcc283a449eda202b61791ad4ae4cdb599a7db95ab4678f9d93f9d248507ec07265f6c1a45a42b62355d42a4549d765b1684f4ad2c52b5
7
+ data.tar.gz: 6d9ad23ef9fe2bf9dd41b7ef7ec1d9664735a38f0ff8187d65bb09a85aa66c455ac4f9e26c276b0fcbe00697ea04ae796c483628d96189614d1a0f5a16ebde53
@@ -10,6 +10,7 @@ module EffectiveTestBot
10
10
  include EffectiveTestBotFormHelper
11
11
  include EffectiveTestBotLoginHelper
12
12
  include EffectiveTestBotMinitestHelper
13
+ include EffectiveTestBotPerformance
13
14
  include EffectiveTestBotScreenshotsHelper
14
15
  include EffectiveTestBotTestHelper
15
16
 
@@ -1,3 +1,3 @@
1
1
  module EffectiveTestBot
2
- VERSION = '1.5.2'.freeze
2
+ VERSION = '1.5.4'.freeze
3
3
  end
@@ -151,9 +151,14 @@ module EffectiveTestBotFormFiller
151
151
  def fill_input_checkbox(field, value)
152
152
  return if [nil, false].include?(value)
153
153
 
154
+ if field['class'].to_s.include?('custom-control-input')
155
+ label = all("label[for='#{field['id']}']", wait: false).first
156
+ return label.click() if label
157
+ end
158
+
154
159
  begin
155
160
  field.set(value)
156
- rescue => e
161
+ rescue Exception => e
157
162
  label = all("label[for='#{field['id']}']", wait: false).first
158
163
  label.click() if label
159
164
  end
@@ -162,9 +167,14 @@ module EffectiveTestBotFormFiller
162
167
  def fill_input_radio(field, value)
163
168
  return if [nil, false].include?(value)
164
169
 
170
+ if field['class'].to_s.include?('custom-control-input')
171
+ label = all("label[for='#{field['id']}']", wait: false).first
172
+ return label.click() if label
173
+ end
174
+
165
175
  begin
166
176
  field.set(value)
167
- rescue => e
177
+ rescue Exception => e
168
178
  label = all("label[for='#{field['id']}']", wait: false).first
169
179
  label.click() if label
170
180
  end
@@ -0,0 +1,62 @@
1
+ module EffectiveTestBotPerformance
2
+ def assert_performance(milliseconds: 250, print_results: false, &block)
3
+ result = performance_test(print_results: print_results, &block)
4
+
5
+ assert (result < milliseconds), "Expected performance to be less than #{milliseconds}ms, but it was #{result}ms"
6
+ end
7
+
8
+ def performance_test(warmups: 2, iterations: 10, print_results: true, &block)
9
+ raise('expected a block') unless block_given?
10
+ raise('please install the ruby-prof gem') unless defined?(RubyProf)
11
+
12
+ # Warmup
13
+ warmups.times { block.call() }
14
+
15
+ # Use ruby-prof to Profile
16
+ profile = RubyProf::Profile.new(track_allocations: true)
17
+
18
+ results = profile.profile do
19
+ iterations.times do
20
+ print '.'
21
+ block.call()
22
+ end
23
+ end
24
+
25
+ # Return a single number result
26
+ milliseconds = ((results.threads.sum { |thread| thread.total_time } * 1000.0) / iterations.to_f).round
27
+
28
+ # Print results
29
+ print_performance_test_results(results, milliseconds) if print_results
30
+
31
+ # Returns an integer number of milliseconds
32
+ milliseconds
33
+ end
34
+
35
+ private
36
+
37
+ def print_performance_test_results(results, milliseconds)
38
+ puts('')
39
+
40
+ path = Rails.application.root.join('tmp')
41
+
42
+ # Profile Graph
43
+ filename = path.join('profile-graph.html')
44
+ File.open(filename, 'w+') { |file| RubyProf::GraphHtmlPrinter.new(results).print(file) }
45
+ puts("Profile Graph: #{filename}")
46
+
47
+ # Profile Flat
48
+ filename = path.join('profile-flat.txt')
49
+ File.open(filename, 'w+') { |file| RubyProf::FlatPrinter.new(results).print(file) }
50
+ puts("Profile Flat: #{filename}")
51
+
52
+ # Profile Stack
53
+ filename = path.join('profile-stack.html')
54
+ File.open(filename, 'w+') { |file| RubyProf::CallStackPrinter.new(results).print(file) }
55
+ puts("Profile Stack: #{filename}")
56
+
57
+ # Total Performance
58
+ puts "Performance: #{milliseconds}ms"
59
+
60
+ puts('')
61
+ end
62
+ end
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.5.2
4
+ version: 1.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-14 00:00:00.000000000 Z
11
+ date: 2023-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -161,6 +161,7 @@ files:
161
161
  - test/support/effective_test_bot_login_helper.rb
162
162
  - test/support/effective_test_bot_minitest_helper.rb
163
163
  - test/support/effective_test_bot_mocks.rb
164
+ - test/support/effective_test_bot_performance.rb
164
165
  - test/support/effective_test_bot_screenshots_helper.rb
165
166
  - test/support/effective_test_bot_test_helper.rb
166
167
  - test/test_bot/system/application_test.rb