Sha256: d5bf37c1c92717e22bcdb2e96e2565fa86bc0052bfdd80911cfd9b51c19161c2

Contents?: true

Size: 1.21 KB

Versions: 2

Compression:

Stored size: 1.21 KB

Contents

require_relative "./exceptions"

module ClickSession
  class WebRunnerProcessor
    def initialize
      @retries_made  = 0
      @making_requests = true
    end

    delegate :runner_class, :notifier_class, to: :clicksession_configuration

    def process(model)
      while can_make_requests?
        begin
          run_steps_in_browser_with(model)
        rescue StandardError => e
          make_note_of_error(e)

          if too_many_retries?
            raise TooManyRetriesError.new
          end
        end
      end

      model
    end

    def stop_processing
      @making_requests = false
    end

    delegate :save_screenshot, to: :web_runner

    private

    def can_make_requests?
      @making_requests
    end

    def run_steps_in_browser_with(model)
      web_runner.reset
      web_runner.run(model)
      stop_processing
    end

    def make_note_of_error(error)
      @retries_made += 1
      notifier.rescued_error(error)
    end

    def too_many_retries?
      @retries_made > 2
    end

    def web_runner
      @web_runner ||= runner_class.new(self)
    end

    def notifier
      @notifier ||= notifier_class.new
    end

    def clicksession_configuration
      ClickSession.configuration
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
click_session-0.1.1 lib/click_session/web_runner_processor.rb
click_session-0.1.0 lib/click_session/web_runner_processor.rb