watir-get-image-content 0.0.2 → 0.0.3

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