nilal 0.0.2 → 0.0.3

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
  SHA1:
3
- metadata.gz: 4397779461f926b0ba4871a58230a93fef25d928
4
- data.tar.gz: 6695192ffbf3873cb94a40980039bc0b8ffc039d
3
+ metadata.gz: 58b2c4f9082f68c0af2c4e03e1547adb83292dad
4
+ data.tar.gz: 199bf3f1628b1c2eeb814961886b2e786a18cd21
5
5
  SHA512:
6
- metadata.gz: 593a872a08b1c15457ad8e53a4abd2dde9295043fb7aebc0b6c0343ff02e608c53c99678b10a07271a115c2d75810269216f855020c20f0efcb01d7a83edf7f8
7
- data.tar.gz: 109fabcef33692eda849bb3e00c8ec85d8a8ed3ad704ed5bb73d766e3e03e06858cffb21ef8c4ad82444328633c51e03f8e70c5409f3ce910458a85e6a61d8ed
6
+ metadata.gz: f31e0a058fe8d26c7366712d6466aa719c030473384ebd14fc6390cb950ab9ce9d88c87424af547283162ea3427550c1d41d6fd0c790ce681c5dd1940ce1ea77
7
+ data.tar.gz: 099a832d1bd3fbb751fd57cce9cb11e06a38ea8e26a7f0506a0a20144877e97959113b1692f4594d3094ee8e8b5257382eca306519f860522d689ea0959bf547
@@ -1,37 +1 @@
1
- require 'capybara'
2
- require 'nilal/chunky'
3
- require 'nilal/assert'
4
-
5
- module Nilal
6
- def capture (element,file_name)
7
- x = element.native.location.x
8
- y = element.native.location.y
9
- width = element.native.size.width
10
- height = element.native.size.height
11
- path = "#{Capybara.save_and_open_page_path}/#{file_name}.png"
12
- touch_file Capybara.save_and_open_page_path,"#{file_name}.png"
13
- script =
14
- "var nilal_element = document.getElementById('nilal_client');
15
- if (nilal_element == null){
16
- nilal_element = document.createElement('nilal_client');
17
- nilal_element.id = 'nilal_client';
18
- }
19
- nilal_element.setAttribute('x', #{x});
20
- nilal_element.setAttribute('y', #{y});
21
- nilal_element.setAttribute('width', #{width});
22
- nilal_element.setAttribute('height',#{height} );
23
- nilal_element.setAttribute('path', '#{path}');
24
- document.documentElement.appendChild(nilal_element);
25
- var evt = document.createEvent('Events');
26
- evt.initEvent('CatchNilal', true, false);
27
- nilal_element.dispatchEvent(evt); "
28
- script.delete!("\n")
29
- Capybara.page.execute_script(script)
30
- end
31
-
32
- def touch_file (folder,file)
33
- FileUtils.mkdir_p folder unless File.exists? folder
34
- FileUtils.touch "#{folder}/#{file}"
35
- end
36
- include AssertNilal
37
- end
1
+ require_relative 'nilal/capybara'
@@ -0,0 +1,17 @@
1
+ require 'chunky'
2
+
3
+ module Appium
4
+
5
+ should_match_previous_screen_capture do
6
+ capture_screen "second"
7
+ actual_file = "#{Dir.pwd}/second.png"
8
+ expexcted_file = "#{Dir.pwd}/first.png"
9
+ diff_file = "#{Dir.pwd}/diff.png"
10
+ Chunk.new.compare actual_file,expexcted_file,diff_file
11
+ end
12
+
13
+ def capture_screen file = "first"
14
+ #code to capture image
15
+ end
16
+
17
+ end
@@ -0,0 +1,23 @@
1
+ require_relative 'chunky'
2
+ require_relative 'firefox_driver'
3
+
4
+ module Nilal
5
+ module Capybara
6
+ extend RSpec::Matchers::DSL
7
+
8
+ matcher :match_image do |expexcted_file|
9
+ expexcted_file = File.absolute_path expexcted_file
10
+ actual_file = File.absolute_path "tmp/app_#{File.basename(expexcted_file)}"
11
+ diff_file = File.absolute_path "tmp/app_diff_#{File.basename(expexcted_file)}"
12
+ FileUtils.touch actual_file
13
+ match_for_should do |node|
14
+ FirefoxDriver.capture node,actual_file
15
+ Chunk.matches? actual_file,expexcted_file,diff_file
16
+ end
17
+ match_for_should_not do |node|
18
+ FirefoxDriver.capture node,actual_file
19
+ !Chunk.matches? actual_file,expexcted_file,diff_file
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,31 +1,39 @@
1
1
  require 'chunky_png'
2
-
3
- class Chunk
4
- def compare actual_file,expexcted_file,diff_file
2
+
3
+ module Chunk
4
+ extend self
5
+
6
+ def matches? actual_file,expexcted_file,diff_file
5
7
  images = [
6
8
  ChunkyPNG::Image.from_file(actual_file),
7
9
  ChunkyPNG::Image.from_file(expexcted_file)
8
10
  ]
11
+ return false unless images.first.height == images.last.height && images.first.width == images.last.width
12
+ image_diff_count = compute_image_difference images.first,images.last,diff_file
13
+ image_diff_count == 0
14
+ end
15
+
16
+ private
9
17
 
18
+ def compute_image_difference image1,image2,diff_image
10
19
  diff = 0
11
- images.first.height.times do |y|
12
- images.first.row(y).each_with_index do |pixel, x|
13
- r_diff = r(pixel) + r(images.last[x,y]) - 2 * [r(pixel), r(images.last[x,y])].min
14
- g_diff = g(pixel) + g(images.last[x,y]) - 2 * [g(pixel), g(images.last[x,y])].min
15
- b_diff = b(pixel) + b(images.last[x,y]) - 2 * [b(pixel), b(images.last[x,y])].min
16
- images.last[x,y] = rgb(r_diff,g_diff,b_diff)
17
- diff = r_diff + g_diff+b_diff
20
+ image1.height.times do |y|
21
+ image1.row(y).each_with_index do |pixel, x|
22
+ r_diff = r(pixel) + r(image2[x,y]) - 2 * [r(pixel), r(image2[x,y])].min
23
+ g_diff = g(pixel) + g(image2[x,y]) - 2 * [g(pixel), g(image2[x,y])].min
24
+ b_diff = b(pixel) + b(image2[x,y]) - 2 * [b(pixel), b(image2[x,y])].min
25
+ image2[x,y] = rgb(r_diff,g_diff,b_diff)
26
+ diff = diff + r_diff + g_diff+b_diff
18
27
  end
19
28
  end
20
- images.last.save(diff_file)
21
- diff == 0
29
+ image2.save(diff_image)
30
+ return diff
22
31
  end
23
-
24
- private
32
+
25
33
  def r (x)
26
34
  ChunkyPNG::Color.r x
27
35
  end
28
-
36
+
29
37
  def g (x)
30
38
  ChunkyPNG::Color.g x
31
39
  end
@@ -33,7 +41,7 @@ class Chunk
33
41
  def b (x)
34
42
  ChunkyPNG::Color.b x
35
43
  end
36
-
44
+
37
45
  def rgb (r1,g1,b1)
38
46
  ChunkyPNG::Color.rgb r1,g1,b1
39
47
  end
@@ -0,0 +1,26 @@
1
+ class FirefoxDriver
2
+ def self.capture element,file_name
3
+ x = element.native.location.x
4
+ y = element.native.location.y
5
+ width = element.native.size.width
6
+ height = element.native.size.height
7
+ script =
8
+ "var nilal_element = document.getElementById('nilal_client');
9
+ if (nilal_element == null){
10
+ nilal_element = document.createElement('nilal_client');
11
+ nilal_element.id = 'nilal_client';
12
+ }
13
+ nilal_element.setAttribute('x', #{x});
14
+ nilal_element.setAttribute('y', #{y});
15
+ nilal_element.setAttribute('width', #{width});
16
+ nilal_element.setAttribute('height',#{height} );
17
+ nilal_element.setAttribute('path', '#{file_name}');
18
+ document.documentElement.appendChild(nilal_element);
19
+ var evt = document.createEvent('Events');
20
+ evt.initEvent('CatchNilal', true, false);
21
+ nilal_element.dispatchEvent(evt); "
22
+ script.delete!("\n")
23
+ Capybara.page.execute_script(script)
24
+ end
25
+
26
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nilal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - deepak p
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-13 00:00:00.000000000 Z
11
+ date: 2015-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capybara
@@ -117,8 +117,10 @@ extra_rdoc_files: []
117
117
  files:
118
118
  - README.md
119
119
  - lib/nilal.rb
120
- - lib/nilal/assert.rb
120
+ - lib/nilal/appium.rb
121
+ - lib/nilal/capybara.rb
121
122
  - lib/nilal/chunky.rb
123
+ - lib/nilal/firefox_driver.rb
122
124
  - lib/nilal/nilal.xpi
123
125
  homepage: https://github.com/paramadeep/nilal_rb
124
126
  licenses:
@@ -1,19 +0,0 @@
1
- module AssertNilal
2
- extend RSpec::Matchers::DSL
3
-
4
- matcher :match_image do |text|
5
- match_for_should { |node|
6
- capture node,text
7
- compare_image text
8
- }
9
- match_for_should_not { |node|
10
- }
11
- end
12
-
13
- def compare_image file_name
14
- actual_file = "#{Dir.pwd}/features/images/#{file_name}.png"
15
- expexcted_file = "#{Capybara.save_and_open_page_path}/#{file_name}.png"
16
- diff_file = "#{Capybara.save_and_open_page_path}/#{file_name}_diff.png"
17
- Chunk.new.compare actual_file,expexcted_file,diff_file
18
- end
19
- end