effective_test_bot 1.5.2 → 1.5.4

Sign up to get free protection for your applications and to get access to all the features.
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