Module: Nakal::DSL

Defined in:
lib/nakal/dsl.rb

Instance Method Summary collapse

Instance Method Details

#capture_screen(image_name) ⇒ Object



36
37
38
# File 'lib/nakal/dsl.rb', line 36

def capture_screen image_name
  Nakal.current_platform::Screen.new(image_name, :capture)
end

#current_screen_vs_base_image(image_file_name, acceptable_diff = 0) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/nakal/dsl.rb', line 7

def current_screen_vs_base_image image_file_name, acceptable_diff=0
  orignal_screen = Nakal.current_platform::Screen.new(image_file_name, :load)
  current_screen = Nakal.current_platform::Screen.new("#{image_file_name}_current", :capture)
  diff_screen, diff_metric = orignal_screen.compare(current_screen)

  Timeout::timeout(Nakal.timeout) {
    until diff_metric <= acceptable_diff do
      sleep 1
      current_screen = Nakal.current_platform::Screen.new("#{image_file_name}_current", :capture)
      diff_screen, diff_metric = orignal_screen.compare(current_screen)
    end
  } rescue nil

  if diff_metric <= acceptable_diff
    current_screen.delete!
  else
    diff_screen.save
    Nakal.diff_screens << image_file_name
    embed_screenshots image_file_name if Nakal.embed_screenshot == true
  end
  diff_metric
end

#embed_screenshots(image_file_name) ⇒ Object



30
31
32
33
34
# File 'lib/nakal/dsl.rb', line 30

def embed_screenshots image_file_name
  embed("#{image_file_name}.png", 'image/png', "#{image_file_name}")
  embed("#{image_file_name}_current.png", 'image/png', "#{image_file_name}_current")
  embed("#{image_file_name}_diff.png", 'image/png', "#{image_file_name}_diff")
end

#nakal_execute(relative_location, params = {:delay => nil, :replace_baseline => false, :acceptable_diff => 0.0}) ⇒ Object



40
41
42
43
44
45
46
47
# File 'lib/nakal/dsl.rb', line 40

def nakal_execute relative_location, params = {:delay => nil, :replace_baseline => false, :acceptable_diff => 0.0}
  return if ENV['NAKAL_MODE'].nil?
  Nakal.set File.dirname(relative_location)
  screen_name = File.basename(relative_location)
  sleep params[:delay] unless params[:delay].nil?
  capture_screen(screen_name) if (ENV['NAKAL_MODE'] == "build") || (params[:replace_baseline] == true)
  current_screen_vs_base_image(screen_name, params[:acceptable_diff]) if ENV['NAKAL_MODE'] == "compare" && params[:replace_baseline] != true
end