nilal 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []