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:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 00e994d7cc48e7ad3f6594daf5f8e13678fcc85be4b178d8565f3d4666f5724e
         | 
| 4 | 
            +
              data.tar.gz: 3b2ec36407c22b8b8639e6a585e2fea987033affdacb0ab61e551f183965b55b
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 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 |  | 
| @@ -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. | 
| 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 | 
            +
            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
         |