effective_test_bot 1.5.3 → 1.5.5

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: b5d2b6ddf1e130f21cdd75c9de378f53d634cc6653ebb7f3099cacd8107f3167
4
- data.tar.gz: 0ff7e7d9f70e8c79025d98dc545b445a8dce7cc3af7a2fcd6fbc5b9556e8c9e0
3
+ metadata.gz: 0c320a94c17497abc43a0f37559dcee2e608ba899a2aabc4f4a4b7cc7a9e5be8
4
+ data.tar.gz: e5753beb4030d91505ee07ee221abe9b76d79a69d4da1c41a1a11542b1d703dd
5
5
  SHA512:
6
- metadata.gz: 979b5895d9261f028a5642e76aefa2d98a2394f21b213b6bd1343cc46b9505bae18f3f013c6675fe723e6b1df5794db8043eea9514ed1ab39a707e6bc29f7bd3
7
- data.tar.gz: 6031706d32bddbdf9daffd54a7a83f2dcb3bf78712745496dcb5a7b91ec3c81c9ffb162f8265f88828c88ad92e6b912ae55d95bb92cf314a5dc31bd24d674966
6
+ metadata.gz: b0530afa717c87156b8b07b78b4660d62e82f13294d3075b8f27e09fc6fb26760bced8f3c579a9f0cfd442d4f70bd0dbcff1a7efc2b49300cf19c107e02e5076
7
+ data.tar.gz: bbe0ab99a02579405943790b1da5fe05604e7a8b66451b80df844baa6757626a4f64df47e2d608be6ef7ab98d4c2c75bb36b0dbccc96501d97b7d84c92a32db4
@@ -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.3'.freeze
2
+ VERSION = '1.5.5'.freeze
3
3
  end
@@ -34,12 +34,12 @@ module TestSeedable
34
34
 
35
35
  case seed
36
36
  when :all
37
- load(db_seeds) if File.exists?(db_seeds)
38
- load(test_seeds) if File.exists?(test_seeds)
37
+ load(db_seeds) if File.exist?(db_seeds)
38
+ load(test_seeds) if File.exist?(test_seeds)
39
39
  when :db
40
- load(db_seeds) if File.exists?(db_seeds)
40
+ load(db_seeds) if File.exist?(db_seeds)
41
41
  when :test
42
- load(test_seeds) if File.exists?(test_seeds)
42
+ load(test_seeds) if File.exist?(test_seeds)
43
43
  else
44
44
  raise('unexpected seed argument. use :all, :db or :test')
45
45
  end
@@ -166,7 +166,7 @@ module EffectiveTestBotFormFaker
166
166
  # If this is a file field, make sure the file is present at Rails.root/test/fixtures/
167
167
  if fill.present? && fill != :unselect && field_name == 'input_file'
168
168
  filename = (fill.to_s.include?('/') ? fill : "#{Rails.root}/test/fixtures/#{fill}")
169
- raise("Warning: Unable to load fill file #{fill}. Expected file #{filename}") unless File.exists?(filename)
169
+ raise("Warning: Unable to load fill file #{fill}. Expected file #{filename}") unless File.exist?(filename)
170
170
  return filename
171
171
  end
172
172
 
@@ -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.3
4
+ version: 1.5.5
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-21 00:00:00.000000000 Z
11
+ date: 2024-03-04 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
@@ -191,7 +192,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
191
192
  - !ruby/object:Gem::Version
192
193
  version: '0'
193
194
  requirements: []
194
- rubygems_version: 3.4.10
195
+ rubygems_version: 3.5.6
195
196
  signing_key:
196
197
  specification_version: 4
197
198
  summary: A shared library of rails model & system tests that should pass in every