watir-get-image-content 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,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- OWJmNzYwYzMxNWVmYmQyNmI3NTU4MmY0MmQwMjNlYTc0NTk4ZGI3ZQ==
5
- data.tar.gz: !binary |-
6
- MTcxM2Y0ZThhMzNlNjdiYTA5NTI5NTQxNTIwZTczZjYxZmRiMzU4MA==
2
+ SHA1:
3
+ metadata.gz: 43bb1b35e4400b27b314fcd174b5a607b80a9bc2
4
+ data.tar.gz: f1cfc492382e8501f500b1fa90125b21b4a97446
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ZDU3NzBlNGIxM2JiZDQyMWQ4OThjNGVkYWZlOTY3YzRkNjhmZjEzMGEzZjdm
10
- ZWFjNmQyNDM1NzFmNjJiZTUxOWY5ZjdiMmFjMzQyNWVmNDcyODFiNTZlNGU1
11
- YjYxNDY3OTk3MGU1ZGFjZGU2ZDQ4YjlkMDAwMTcyMTIwNDM0OTI=
12
- data.tar.gz: !binary |-
13
- NTBiNGVkZTVkMWFiNmVjM2E0NmIzYzE2MzJlZWQ1M2ZkYmFkMzc5YTczMWFj
14
- MTAxNjdkMWMxNjAxMDVlYzIxYjg5ZjE2N2Y2ZTM3OTYwN2VmOWM5MDQ4NTU4
15
- NGE2MDQ5ODkxNGZlZjljZWMxNTQ4MWY1Njk2OWU1YzU1Y2FhZGU=
6
+ metadata.gz: 0b1354839cb32389cb2ee4dcf24c3733e0d234676c8d001efa41fcf86eedef774a8d10f8477fe9e6cb8fcf897e2b38040218f1bd78df12fe9de63a3a959929a4
7
+ data.tar.gz: f6d0ab56b4b6836ce7d0326c3932647add9bd113bbd5cfb266a5a64b55fea6601c135d89e5444aeaf5fee1e26aba0276c68f986de2f5b222c2d96666440f2f93
data/.gitignore CHANGED
@@ -15,4 +15,5 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
- .idea/
18
+ .idea/
19
+ .ruby-*
data/README.md CHANGED
@@ -26,6 +26,11 @@ browser.goto 'http://for_example.com/page_with_images'
26
26
 
27
27
  browser.image(:index, 1).to_png_base64
28
28
  browser.image(:alt, 'Alt text').to_png_base64
29
+ browser.image(:index, 1).to_jpg_base64
30
+ browser.image(:alt, 'Alt text').to_jpg_base64
31
+
32
+ File.write('png.png', browser.image(:index, 1).to_png)
33
+ File.write('jpg.jpg', browser.image(:index, 1).to_jpg)
29
34
  ```
30
35
 
31
36
  ## Contributing
@@ -1,18 +1,35 @@
1
1
  # encoding: utf-8
2
+
3
+ require 'base64'
4
+
2
5
  module Watir
3
6
  class Image
4
-
5
- def to_png_base64
7
+ def to_x_base64(target)
6
8
  assert_exists
7
- js = %q{var canvas = document.createElement("canvas");
9
+ js = %Q{var canvas = document.createElement("canvas");
8
10
  canvas.width = arguments[0].width;
9
11
  canvas.height = arguments[0].height;
10
12
  var ctx = canvas.getContext("2d");
11
13
  ctx.drawImage(arguments[0], 0, 0);
12
- var dataURL = canvas.toDataURL("image/png");
13
- return dataURL.replace(/^data:image\/(png|jpg|gif);base64,/, "");}
14
+ var dataURL = canvas.toDataURL("image/#{target}");
15
+ return dataURL.replace(/^data:image\\/(png|jpg|gif);base64,/, "");}
14
16
  driver.execute_script js, @element
15
17
  end
16
18
 
19
+ def to_png_base64
20
+ to_x_base64('png')
21
+ end
22
+
23
+ def to_jpg_base64
24
+ to_x_base64('jpg')
25
+ end
26
+
27
+ def to_png
28
+ Base64.decode64(self.to_png_base64)
29
+ end
30
+
31
+ def to_jpg
32
+ Base64.decode64(self.to_jpg_base64)
33
+ end
17
34
  end
18
- end
35
+ end
data/spec/spec.html CHANGED
@@ -6,4 +6,4 @@
6
6
  <img src="./images/jpg.jpg" alt="jpg"/>
7
7
  <img src="./images/png.png" alt="png"/>
8
8
  </body>
9
- </html>
9
+ </html>
data/spec/spec_helper.rb CHANGED
@@ -1,10 +1,30 @@
1
- require 'RMagick'
1
+ require 'rmagick'
2
2
  require 'rspec/expectations'
3
3
  require 'watir-get-image-content'
4
+ require 'rbconfig'
5
+
6
+ if RbConfig::CONFIG['host_os'] =~ /linux/
7
+ dir = '/usr/lib/chromium-browser/'
8
+ unless ENV['PATH'].include?(dir)
9
+ if File.exist?(dir)
10
+ ENV['PATH'] = "#{ENV['PATH']}#{File::PATH_SEPARATOR}#{dir}"
11
+ end
12
+ end
13
+ end
14
+
15
+ tmp = File.expand_path(File.join(__FILE__, %w(.. .. tmp)))
16
+ FileUtils.mkdir_p(tmp)
4
17
 
5
18
  RSpec.configure do |spec|
6
19
  spec.before(:all) do
7
- @browser = Watir::Browser.new
20
+ 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}"]
27
+ @browser = Watir::Browser.new :chrome, desired_capabilities: caps, args: args
8
28
  @browser.goto "file://#{Dir.pwd}/spec/spec.html"
9
29
  end
10
30
 
@@ -17,10 +37,27 @@ RSpec.configure do |spec|
17
37
  end
18
38
  end
19
39
 
20
- RSpec::Matchers.define :be_similar_to_file do |dst_file|
21
- match do |src_base64|
22
- src_img = Magick::Image.read_inline(src_base64)
23
- dst_img = Magick::Image.read(dst_file)
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
+
24
61
  @diff_img, @diff_metric = src_img[0].compare_channel(dst_img[0], Magick::MeanSquaredErrorMetric)
25
62
  @diff_metric <= @mse.to_f
26
63
  end
@@ -29,7 +66,7 @@ RSpec::Matchers.define :be_similar_to_file do |dst_file|
29
66
  @mse = mse
30
67
  end
31
68
 
32
- failure_message_for_should do |actual|
69
+ failure_message do |actual|
33
70
  "expected that mse #{@diff_metric} would be less or equal #{@mse.to_f}"
34
71
  end
35
- end
72
+ end
@@ -1,24 +1,63 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
 
3
+ describe 'watir-get-image-content' do
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))
11
+ end
12
+
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
23
+
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
27
+
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)
31
+ end
32
+ end
33
+
34
+ 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))
37
+ end
38
+
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
42
+
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)
46
+ end
47
+ end
3
48
 
4
- describe "watir-get-image-content" do
5
- describe "#to_png_base64" do
6
- it "return png image similar to the original png" do
7
- src_file = "#{Dir.pwd}/spec/images/png.png".sub("file://", '')
8
- enc_base64 = @browser.image(:alt, 'png').to_png_base64
9
- expect(enc_base64).to be_similar_to_file(src_file)
49
+ describe '#to_jpg' do
50
+ it 'from png' do
51
+ expect(@browser.image(:alt, 'png').to_jpg).to be_similar_to(File.join(Dir.pwd), %w(spec images png.png))
10
52
  end
11
53
 
12
- it "return png image similar to the original gif" do
13
- src_file = "#{Dir.pwd}/spec/images/gif.gif".sub("file://", '')
14
- enc_base64 = @browser.image(:alt, 'gif').to_png_base64
15
- expect(enc_base64).to be_similar_to_file(src_file)
54
+ it 'from gif' do
55
+ expect(@browser.image(:alt, 'gif').to_jpg).to be_similar_to(File.join(Dir.pwd), %w(spec images gif.gif))
16
56
  end
17
57
 
18
- it "return png image similar to the original jpg with mse <= 0.0000001" do
19
- src_file = "#{Dir.pwd}/spec/images/jpg.jpg".sub("file://", '')
20
- enc_base64 = @browser.image(:alt, 'jpg').to_png_base64
21
- expect(enc_base64).to be_similar_to_file(src_file).with_mse_less_then(0.0000001)
58
+ it 'from jpg' do
59
+ 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)
22
61
  end
23
62
  end
24
- end
63
+ 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.2"
7
+ spec.version = "0.0.3"
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}
@@ -22,5 +22,5 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency "bundler", "~> 1.3"
23
23
  spec.add_development_dependency "rake"
24
24
  spec.add_development_dependency "rspec"
25
- spec.add_development_dependency "rmagick", '2.13.2'
25
+ spec.add_development_dependency "rmagick"
26
26
  end
metadata CHANGED
@@ -1,85 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: watir-get-image-content
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
  - orangeudav
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-30 00:00:00.000000000 Z
11
+ date: 2016-10-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: watir-webdriver
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.3'
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
40
  version: '1.3'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ! '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ! '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ! '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ! '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rmagick
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: 2.13.2
75
+ version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: 2.13.2
82
+ version: '0'
83
83
  description: Get Watir::Image's content copy without external download
84
84
  email:
85
85
  - orangeudav@gmail.com
@@ -87,8 +87,8 @@ executables: []
87
87
  extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
- - .gitignore
91
- - .travis.yml
90
+ - ".gitignore"
91
+ - ".travis.yml"
92
92
  - Gemfile
93
93
  - LICENSE.txt
94
94
  - README.md
@@ -112,17 +112,17 @@ require_paths:
112
112
  - lib
113
113
  required_ruby_version: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ! '>='
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  required_rubygems_version: !ruby/object:Gem::Requirement
119
119
  requirements:
120
- - - ! '>='
120
+ - - ">="
121
121
  - !ruby/object:Gem::Version
122
122
  version: '0'
123
123
  requirements: []
124
124
  rubyforge_project:
125
- rubygems_version: 2.1.11
125
+ rubygems_version: 2.4.8
126
126
  signing_key:
127
127
  specification_version: 4
128
128
  summary: Get Watir::Image's content copy without external download