module WatchDoge::Regression::DSL

Public Instance Methods

compare(path, **kwargs) { |worker| ... } click to toggle source
# File lib/watchdoge/regression/dsl.rb, line 43
def compare path, **kwargs
  path = URI.join(WatchDoge.configuration.host, path).to_s
  @reference_file_name = WatchDoge::Regression::Utils.path_to_filename(kwargs[:with] || path)

  puts "[compare] #{path} #{ ('[with]'+ @reference_file_name) if kwargs[:with] }"

  @setup_proc.call if @setup_proc

  args = {
    wait: nil
  }.merge(kwargs)

  @worker.goto path

  if args[:wait]
    @view_port.merge!({
      wait: args[:wait]
    })
  end

  @worker.resize_by_viewport(@view_port) do
    yield(@worker) if block_given?

    case @regression_flag
    when :capture
      puts "  -> make reference images on worker #{@worker}"
      @worker.screenshot.save reference_image
    when :test
      puts "  -> compare reference images on worker #{@worker}"
      reference_image = WatchDoge::Regression::Utils.load_png self.reference_image
      input_image = WatchDoge::Regression::Utils.load_png @worker.screenshot.png
      pixel_test = WatchDoge::PixelTest.new(input_image, reference_image, filename: @reference_file_name)

      WatchDoge::Notification.push pixel_test if pixel_test.diff?
    end
  end

  @teardown_proc.call if @teardown_proc
end
setup() { || ... } click to toggle source
# File lib/watchdoge/regression/dsl.rb, line 83
def setup
  @setup_proc = -> { yield }
end
sign_in_as(resoruce) { |worker| ... } click to toggle source
# File lib/watchdoge/regression/dsl.rb, line 26
def sign_in_as resoruce
  puts "[sign_in_as] #{resoruce}"
  WatchDoge.configuration.sign_in_proc.call(@worker, resoruce)

  return unless block_given?

  yield(@worker)
  puts "sign_out #{resoruce}"
  WatchDoge.configuration.sign_out_proc.call(@worker, resoruce)
end
teardown() { || ... } click to toggle source
# File lib/watchdoge/regression/dsl.rb, line 87
def teardown
  @teardown_proc = -> { yield }
end
use(browser) click to toggle source
# File lib/watchdoge/regression/dsl.rb, line 13
def use browser
  puts "[use] browser #{browser}"
  @worker.close

  worker_options =
    WatchDoge.configuration.default_worker_options.merge WatchDoge.configuration.worker_options

  worker_options = worker_options.dup
  worker_options[:browser] = browser

  @worker = WatchDoge::Worker.new @scenario_name, worker_options
end
with_viewport(**kwargs) { || ... } click to toggle source
# File lib/watchdoge/regression/dsl.rb, line 37
def with_viewport **kwargs
  @view_port = kwargs
  yield
  @view_port = {}
end