nilal 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5c88e4f92ef90a96aa46109de1295d1b0b101171
4
+ data.tar.gz: 06e643b621d5d87a2444feba89f9eadd731fdf31
5
+ SHA512:
6
+ metadata.gz: d96d58474e0aaa0a140c6ea5ca3a5be1669488d4eab79b6f2428649e0427c97079277da9f81f1aae7835f02a1e7412c9e9ea4a90e2a0161ad621bb5d08ee6311
7
+ data.tar.gz: 1b6f48cc4b4b759791774289d0104376271dfbbff92effa781c7be8cf5b10090935276ee3a8e0a16d5a2e847691ae5e018ffc942725193fb8b6ebc4b29d358e9
data/README.md ADDED
@@ -0,0 +1,4 @@
1
+ nilal_rb
2
+ ========
3
+
4
+ Image Comparison at element level (Capybara)
@@ -0,0 +1,19 @@
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
@@ -0,0 +1,42 @@
1
+ require 'chunky_png'
2
+
3
+ class Chunk
4
+ def compare actual_file,expexcted_file,diff_file
5
+ images = [
6
+ ChunkyPNG::Image.from_file(actual_file),
7
+ ChunkyPNG::Image.from_file(expexcted_file)
8
+ ]
9
+
10
+ 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
18
+ end
19
+ end
20
+ images.last.save(diff_file)
21
+ diff == 0
22
+ end
23
+
24
+ private
25
+ def r (x)
26
+ ChunkyPNG::Color.r x
27
+ end
28
+
29
+ def g (x)
30
+ ChunkyPNG::Color.g x
31
+ end
32
+
33
+ def b (x)
34
+ ChunkyPNG::Color.b x
35
+ end
36
+
37
+ def rgb (r1,g1,b1)
38
+ ChunkyPNG::Color.rgb r1,g1,b1
39
+ end
40
+
41
+ end
42
+
Binary file
data/lib/nilal.rb ADDED
@@ -0,0 +1,36 @@
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
+ 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
+ end
metadata ADDED
@@ -0,0 +1,90 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nilal
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - deepak p
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-05-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: capybara
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 2.1.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 2.1.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: oily_png
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.1.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 1.1.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: selenium-webdriver
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '2.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '2.0'
55
+ description: Image Capturing and assertion at element level
56
+ email:
57
+ executables: []
58
+ extensions: []
59
+ extra_rdoc_files: []
60
+ files:
61
+ - README.md
62
+ - lib/nilal.rb
63
+ - lib/nilal/assert.rb
64
+ - lib/nilal/chunky.rb
65
+ - lib/nilal/nilal.xpi
66
+ homepage: https://github.com/paramadeep/nilal_rb
67
+ licenses:
68
+ - MIT
69
+ metadata: {}
70
+ post_install_message:
71
+ rdoc_options: []
72
+ require_paths:
73
+ - lib
74
+ required_ruby_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ requirements: []
85
+ rubyforge_project:
86
+ rubygems_version: 2.2.2
87
+ signing_key:
88
+ specification_version: 4
89
+ summary: Image Capturing and assertion at element level
90
+ test_files: []