watir-get-image-content 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 43bb1b35e4400b27b314fcd174b5a607b80a9bc2
4
- data.tar.gz: f1cfc492382e8501f500b1fa90125b21b4a97446
2
+ SHA256:
3
+ metadata.gz: b1fee0de42bb9cb2395ff655e79a56d8fe94c43a493e6d5155cbb07f8a1c8beb
4
+ data.tar.gz: a9425180757c056ec864957eb7208fdcb705b29ca2d21686593107c615394c24
5
5
  SHA512:
6
- metadata.gz: 0b1354839cb32389cb2ee4dcf24c3733e0d234676c8d001efa41fcf86eedef774a8d10f8477fe9e6cb8fcf897e2b38040218f1bd78df12fe9de63a3a959929a4
7
- data.tar.gz: f6d0ab56b4b6836ce7d0326c3932647add9bd113bbd5cfb266a5a64b55fea6601c135d89e5444aeaf5fee1e26aba0276c68f986de2f5b222c2d96666440f2f93
6
+ metadata.gz: 1d985e6872cec5e2bee12a6d709d836f084ffb5a7ade98533433d58d813518eb4d7d0941e5606ace0da79465c3bcb991432831c83202383b253ff467031f57aa
7
+ data.tar.gz: 4bfdad3a53ac04ee49e1f9d3659cd3066755f4733c1ecf3bbd18b6b5faa9347e49af5280bad5f2b7d95b8a6c729ddc96efbccffea69b248b90802004fa72366f
data/README.md CHANGED
@@ -19,7 +19,7 @@ Or install it yourself as:
19
19
  ## Usage
20
20
 
21
21
  ```ruby
22
- require 'watir-webdriver'
22
+ require 'watir'
23
23
  require 'watir-get-image-content'
24
24
  browser = Watir::Browser.new
25
25
  browser.goto 'http://for_example.com/page_with_images'
@@ -1,2 +1,2 @@
1
- require "watir-webdriver"
1
+ require "watir"
2
2
  require "watir-get-image-content/image"
@@ -7,13 +7,13 @@ module Watir
7
7
  def to_x_base64(target)
8
8
  assert_exists
9
9
  js = %Q{var canvas = document.createElement("canvas");
10
- canvas.width = arguments[0].width;
11
- canvas.height = arguments[0].height;
10
+ canvas.width = arguments[1];
11
+ canvas.height = arguments[2];
12
12
  var ctx = canvas.getContext("2d");
13
13
  ctx.drawImage(arguments[0], 0, 0);
14
14
  var dataURL = canvas.toDataURL("image/#{target}");
15
15
  return dataURL.replace(/^data:image\\/(png|jpg|gif);base64,/, "");}
16
- driver.execute_script js, @element
16
+ driver.execute_script js, @element, naturalwidth, naturalheight
17
17
  end
18
18
 
19
19
  def to_png_base64
@@ -0,0 +1,36 @@
1
+ module ImageSimilarity
2
+ RSpec::Matchers.define :be_similar_to do |dst|
3
+ match do |src|
4
+ base64_re = %r{^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}=+)$}
5
+
6
+ src_img, dst_img = [src, dst].map do |data|
7
+ if src =~ base64_re
8
+ Magick::Image.read_inline(src)
9
+ elsif (File.exist?(src) rescue nil)
10
+ Magick::Image.read(src)
11
+ else
12
+ tmp = Tempfile.new
13
+ tmp.write(src)
14
+ tmp.flush
15
+ begin
16
+ Magick::Image.read(tmp.path)
17
+ ensure
18
+ tmp.close
19
+ tmp.unlink
20
+ end
21
+ end
22
+ end
23
+
24
+ @diff_img, @diff_metric = src_img[0].compare_channel(dst_img[0], Magick::MeanSquaredErrorMetric)
25
+ @diff_metric <= @mse.to_f
26
+ end
27
+
28
+ chain :with_mse_less_then do |mse|
29
+ @mse = mse
30
+ end
31
+
32
+ failure_message do |actual|
33
+ "expected that mse #{@diff_metric} would be less or equal #{@mse.to_f}"
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,33 @@
1
+ module ImageSize
2
+ RSpec::Matchers.define :be_same_size_as do |dst|
3
+ match do |src|
4
+ base64_re = %r{^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}=+)$}
5
+
6
+ src_img, dst_img = [src, dst].map do |data|
7
+ if src =~ base64_re
8
+ Magick::Image.read_inline(src)
9
+ elsif (File.exist?(src) rescue nil)
10
+ Magick::Image.read(src)
11
+ else
12
+ tmp = Tempfile.new
13
+ tmp.write(src)
14
+ tmp.flush
15
+ begin
16
+ Magick::Image.read(tmp.path)
17
+ ensure
18
+ tmp.close
19
+ tmp.unlink
20
+ end
21
+ end
22
+ end
23
+
24
+ @src_width, @src_height = src_img[0].columns, src_img[0].rows
25
+ @dst_width, @dst_height = dst_img[0].columns, dst_img[0].rows
26
+ @src_width == @dst_width && @src_height == @dst_height
27
+ end
28
+
29
+ failure_message do |actual|
30
+ "expected that size of src image (#{@src_width},#{@src_height}) would be same as of dst image (#{@dst_width},#{@dst_height})"
31
+ end
32
+ end
33
+ end
@@ -5,5 +5,9 @@
5
5
  <img src="./images/gif.gif" alt="gif"/>
6
6
  <img src="./images/jpg.jpg" alt="jpg"/>
7
7
  <img src="./images/png.png" alt="png"/>
8
+ <br/>
9
+ <img src="./images/gif.gif" width="260px" height="260px" alt="gif2"/>
10
+ <img src="./images/jpg.jpg" width="260px" height="260px" alt="jpg2"/>
11
+ <img src="./images/png.png" width="260px" height="260px" alt="png2"/>
8
12
  </body>
9
13
  </html>
@@ -2,6 +2,8 @@ require 'rmagick'
2
2
  require 'rspec/expectations'
3
3
  require 'watir-get-image-content'
4
4
  require 'rbconfig'
5
+ require 'matchers/image_similarity'
6
+ require 'matchers/image_size'
5
7
 
6
8
  if RbConfig::CONFIG['host_os'] =~ /linux/
7
9
  dir = '/usr/lib/chromium-browser/'
@@ -16,14 +18,17 @@ tmp = File.expand_path(File.join(__FILE__, %w(.. .. tmp)))
16
18
  FileUtils.mkdir_p(tmp)
17
19
 
18
20
  RSpec.configure do |spec|
21
+ include ImageSimilarity
22
+ include ImageSize
23
+
19
24
  spec.before(:all) do
20
25
  caps = Selenium::WebDriver::Remote::Capabilities.chrome
21
- args =['--disable-notifications',
22
- '--unsafely-treat-insecure-origin-as-secure',
23
- '--disable-web-security',
24
- '--allow-file-access',
25
- '--allow-file-access-from-files',
26
- "--user-data-dir=#{tmp}"]
26
+ args = ['--disable-notifications',
27
+ '--unsafely-treat-insecure-origin-as-secure',
28
+ '--disable-web-security',
29
+ '--allow-file-access',
30
+ '--allow-file-access-from-files',
31
+ "--user-data-dir=#{tmp}"]
27
32
  @browser = Watir::Browser.new :chrome, desired_capabilities: caps, args: args
28
33
  @browser.goto "file://#{Dir.pwd}/spec/spec.html"
29
34
  end
@@ -36,37 +41,3 @@ RSpec.configure do |spec|
36
41
  @browser.refresh
37
42
  end
38
43
  end
39
-
40
- RSpec::Matchers.define :be_similar_to do |dst|
41
- match do |src|
42
- base64_re = %r{^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}=+)$}
43
- src_img, dst_img = [src, dst].map do |data|
44
- if src =~ base64_re
45
- Magick::Image.read_inline(src)
46
- elsif (File.exist?(src) rescue nil)
47
- Magick::Image.read(src)
48
- else
49
- tmp = Tempfile.new
50
- tmp.write(src)
51
- tmp.flush
52
- begin
53
- Magick::Image.read(tmp.path)
54
- ensure
55
- tmp.close
56
- tmp.unlink
57
- end
58
- end
59
- end
60
-
61
- @diff_img, @diff_metric = src_img[0].compare_channel(dst_img[0], Magick::MeanSquaredErrorMetric)
62
- @diff_metric <= @mse.to_f
63
- end
64
-
65
- chain :with_mse_less_then do |mse|
66
- @mse = mse
67
- end
68
-
69
- failure_message do |actual|
70
- "expected that mse #{@diff_metric} would be less or equal #{@mse.to_f}"
71
- end
72
- end
@@ -2,50 +2,49 @@ require 'spec_helper'
2
2
 
3
3
  describe 'watir-get-image-content' do
4
4
  describe '#to_png_base64' do
5
- it 'from png' do
6
- expect(@browser.image(:alt, 'png').to_png_base64).to be_similar_to(File.join(Dir.pwd), %w(spec images png.png))
7
- end
8
-
9
- it 'from gif' do
10
- expect(@browser.image(:alt, 'gif').to_png_base64).to be_similar_to(File.join(Dir.pwd), %w(spec images gif.gif))
5
+ describe 'original size' do
6
+ it { expect(@browser.image(:alt, 'png').to_png_base64).to be_similar_to(File.join(Dir.pwd), %w(spec images png.png)) }
7
+ it { expect(@browser.image(:alt, 'gif').to_png_base64).to be_similar_to(File.join(Dir.pwd), %w(spec images gif.gif)) }
8
+ it { expect(@browser.image(:alt, 'jpg').to_png_base64).to be_similar_to(File.join(Dir.pwd), %w(spec images jpg.jpg)).with_mse_less_then(0.0000001) }
11
9
  end
12
10
 
13
- it 'from jpg' do
14
- expect(@browser.image(:alt, 'jpg').to_png_base64).
15
- to be_similar_to(File.join(Dir.pwd), %w(spec images jpg.jpg)).with_mse_less_then(0.0000001)
16
- end
17
- end
18
-
19
- describe '#to_png' do
20
- it 'from png' do
21
- expect(@browser.image(:alt, 'png').to_png).to be_similar_to(File.join(Dir.pwd), %w(spec images png.png))
22
- end
11
+ describe 'resized' do
12
+ it { expect(@browser.image(:alt, 'png2').to_png_base64).to be_similar_to(File.join(Dir.pwd), %w(spec images png.png)) }
13
+ it { expect(@browser.image(:alt, 'png2').to_png_base64).to be_same_size_as(File.join(Dir.pwd), %w(spec images png.png)) }
23
14
 
24
- it 'from gif' do
25
- expect(@browser.image(:alt, 'gif').to_png).to be_similar_to(File.join(Dir.pwd), %w(spec images gif.gif))
26
- end
15
+ it { expect(@browser.image(:alt, 'gif2').to_png_base64).to be_similar_to(File.join(Dir.pwd), %w(spec images gif.gif)) }
16
+ it { expect(@browser.image(:alt, 'gif2').to_png_base64).to be_same_size_as(File.join(Dir.pwd), %w(spec images gif.gif)) }
27
17
 
28
- it 'from jpg' do
29
- expect(@browser.image(:alt, 'jpg').to_png).
30
- to be_similar_to(File.join(Dir.pwd), %w(spec images jpg.jpg)).with_mse_less_then(0.0000001)
18
+ it { expect(@browser.image(:alt, 'jpg2').to_png_base64).to be_similar_to(File.join(Dir.pwd), %w(spec images jpg.jpg)).with_mse_less_then(0.0000001) }
19
+ it { expect(@browser.image(:alt, 'jpg2').to_png_base64).to be_same_size_as(File.join(Dir.pwd), %w(spec images jpg.jpg)) }
31
20
  end
32
21
  end
33
22
 
34
23
  describe '#to_jpg_base64' do
35
- it 'from png' do
36
- expect(@browser.image(:alt, 'png').to_jpg_base64).to be_similar_to(File.join(Dir.pwd), %w(spec images png.png))
24
+ describe 'original size' do
25
+ it { expect(@browser.image(:alt, 'png').to_jpg_base64).to be_similar_to(File.join(Dir.pwd), %w(spec images png.png)) }
26
+ it { expect(@browser.image(:alt, 'gif').to_jpg_base64).to be_similar_to(File.join(Dir.pwd), %w(spec images gif.gif)) }
27
+ it { expect(@browser.image(:alt, 'jpg').to_jpg_base64).to be_similar_to(File.join(Dir.pwd), %w(spec images jpg.jpg)).with_mse_less_then(0.0000001) }
37
28
  end
38
29
 
39
- it 'from gif' do
40
- expect(@browser.image(:alt, 'gif').to_jpg_base64).to be_similar_to(File.join(Dir.pwd), %w(spec images gif.gif))
41
- end
30
+ describe 'resized' do
31
+ it { expect(@browser.image(:alt, 'png').to_jpg_base64).to be_similar_to(File.join(Dir.pwd), %w(spec images png.png)) }
32
+ it { expect(@browser.image(:alt, 'png').to_jpg_base64).to be_same_size_as(File.join(Dir.pwd), %w(spec images png.png)) }
42
33
 
43
- it 'from jpg' do
44
- expect(@browser.image(:alt, 'jpg').to_jpg_base64).
45
- to be_similar_to(File.join(Dir.pwd), %w(spec images jpg.jpg)).with_mse_less_then(0.0000001)
34
+ it { expect(@browser.image(:alt, 'gif').to_jpg_base64).to be_similar_to(File.join(Dir.pwd), %w(spec images gif.gif)) }
35
+ it { expect(@browser.image(:alt, 'gif').to_jpg_base64).to be_same_size_as(File.join(Dir.pwd), %w(spec images gif.gif)) }
36
+
37
+ it { expect(@browser.image(:alt, 'jpg').to_jpg_base64).to be_similar_to(File.join(Dir.pwd), %w(spec images jpg.jpg)).with_mse_less_then(0.0000001) }
38
+ it { expect(@browser.image(:alt, 'jpg').to_jpg_base64).to be_same_size_as(File.join(Dir.pwd), %w(spec images jpg.jpg)) }
46
39
  end
47
40
  end
48
41
 
42
+ describe '#to_png' do
43
+ it { expect(@browser.image(:alt, 'png').to_png).to be_similar_to(File.join(Dir.pwd), %w(spec images png.png)) }
44
+ it { expect(@browser.image(:alt, 'gif').to_png).to be_similar_to(File.join(Dir.pwd), %w(spec images gif.gif)) }
45
+ it { expect(@browser.image(:alt, 'jpg').to_png).to be_similar_to(File.join(Dir.pwd), %w(spec images jpg.jpg)).with_mse_less_then(0.0000001) }
46
+ end
47
+
49
48
  describe '#to_jpg' do
50
49
  it 'from png' do
51
50
  expect(@browser.image(:alt, 'png').to_jpg).to be_similar_to(File.join(Dir.pwd), %w(spec images png.png))
@@ -57,7 +56,7 @@ describe 'watir-get-image-content' do
57
56
 
58
57
  it 'from jpg' do
59
58
  expect(@browser.image(:alt, 'jpg').to_jpg).
60
- to be_similar_to(File.join(Dir.pwd), %w(spec images jpg.jpg)).with_mse_less_then(0.0000001)
59
+ to be_similar_to(File.join(Dir.pwd), %w(spec images jpg.jpg)).with_mse_less_then(0.0000001)
61
60
  end
62
61
  end
63
62
  end
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "watir-get-image-content"
7
- spec.version = "0.0.3"
7
+ spec.version = "0.0.4"
8
8
  spec.authors = ["orangeudav"]
9
9
  spec.email = ["orangeudav@gmail.com"]
10
10
  spec.description = %q{Get Watir::Image's content copy without external download}
@@ -17,9 +17,9 @@ Gem::Specification.new do |spec|
17
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
18
  spec.require_paths = ["lib"]
19
19
 
20
- spec.add_dependency "watir-webdriver"
20
+ spec.add_dependency "watir"
21
21
 
22
- spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "bundler"
23
23
  spec.add_development_dependency "rake"
24
24
  spec.add_development_dependency "rspec"
25
25
  spec.add_development_dependency "rmagick"
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: watir-get-image-content
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - orangeudav
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-14 00:00:00.000000000 Z
11
+ date: 2018-06-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: watir-webdriver
14
+ name: watir
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '1.3'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '1.3'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -98,6 +98,8 @@ files:
98
98
  - spec/images/gif.gif
99
99
  - spec/images/jpg.jpg
100
100
  - spec/images/png.png
101
+ - spec/matchers/image_similarity.rb
102
+ - spec/matchers/image_size.rb
101
103
  - spec/spec.html
102
104
  - spec/spec_helper.rb
103
105
  - spec/watir-get-image-content_spec.rb
@@ -122,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
122
124
  version: '0'
123
125
  requirements: []
124
126
  rubyforge_project:
125
- rubygems_version: 2.4.8
127
+ rubygems_version: 2.7.6
126
128
  signing_key:
127
129
  specification_version: 4
128
130
  summary: Get Watir::Image's content copy without external download
@@ -130,6 +132,8 @@ test_files:
130
132
  - spec/images/gif.gif
131
133
  - spec/images/jpg.jpg
132
134
  - spec/images/png.png
135
+ - spec/matchers/image_similarity.rb
136
+ - spec/matchers/image_size.rb
133
137
  - spec/spec.html
134
138
  - spec/spec_helper.rb
135
139
  - spec/watir-get-image-content_spec.rb