chromedriver-screenshot 0.1.0 → 0.2.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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e8949dcc7abef43f974d2e8dd41c40bef9de894c
4
- data.tar.gz: 6dad23dcb2761771d2d2521a6f473c8773102e19
3
+ metadata.gz: ed2fea94711ca61c6493f3315b94a564c131a369
4
+ data.tar.gz: ade737daf2cb7581b4607c8a458eaaf16be1dbf3
5
5
  SHA512:
6
- metadata.gz: b652922889a53a17ac7af928a5856fdf6e59057789bf0e9f2a5537e1f7afb52c2bd821a946dbd0699517d6936ca548c162098fb2b98a43d389cc0afab493ed7b
7
- data.tar.gz: 3e0253c1cc6cc8812424031ef05cad4b86b26bc40279c5fdc3753b6a8a5c64230c60ed0705c70d0194829b979e8cac9a01e911af200a21264a1e603466d84f12
6
+ metadata.gz: 0522136064864d376bcba2419a0293e9c0ed1f88e4864deb4271ab6a91f11a6a6f22d752931161c210c1deb693749e6d185af70a96d67bc8744ff284560b073d
7
+ data.tar.gz: db1de86bd34809916432db4c6a97788a94283f64887146547f47d2a4862bc4e85f27e789d11fc3501cab15815d84e5374d44867864a127a7a0390965b48b078e
data/CHANGELOG.md ADDED
@@ -0,0 +1,13 @@
1
+ ## 0.2.3 (October 23, 2015)
2
+
3
+ Features:
4
+ - Can use `ChromedriverScreenshot.take_full_screenshot=` to revert to original screenshot behavior (helpful when actively writing tests)
5
+
6
+ Performance:
7
+ - Use `:fast_rgb` ChunkyPNG preset to more quickly encode the canvas (~99% decrease in encoding runtime)
8
+ - Return original screenshot when stitching tiles for single-row or single-column pages (~40% decrease in encoding runtime)
9
+
10
+ ## 0.1.0 (June 26, 2015)
11
+
12
+ Features:
13
+ - Initial release
data/README.md CHANGED
@@ -2,8 +2,13 @@
2
2
  Full page screenshots for Chrome in Selenium WebDriver
3
3
 
4
4
  # Usage
5
- Simply require the gem after requiring selenium-webdriver or any dependent DSL (ex. watir)
6
- chromedriver-screenshot will snip the page into separate sections, take screenshots of each individual section, and then stitch them together to create a screenshot of the page in its entirety.
5
+ Simply require the gem. Whenever you take a screenshot, chromedriver-screenshot will snip the page into separate sections,
6
+ take screenshots of each individual section, and then stitch them together to create a screenshot of the page in its entirety.
7
+
8
+ # Configs
9
+ You can switch to the old screenshot behavior by changing the `take_full_screenshots` config:
10
+
11
+ ChromedriverScreenshot.take_full_screenshots = false
7
12
 
8
13
  # Known issues:
9
14
  0. Screenshots on Retina displays quadruple in size because Apple is a piece of shit. As a result, screenshots are cropped incorrectly.
@@ -16,6 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.require_paths = ["lib"]
17
17
 
18
18
  s.add_dependency "oily_png", "~> 1.2"
19
+ s.add_dependency "selenium-webdriver", "~> 2.0"
19
20
 
20
21
  s.add_development_dependency "rspec", "~> 3.2"
21
22
  end
@@ -3,18 +3,32 @@ require 'chromedriver-screenshot/row'
3
3
  require 'chromedriver-screenshot/tile'
4
4
  require 'chromedriver-screenshot/platforms'
5
5
  require "oily_png"
6
+ require 'selenium-webdriver'
6
7
 
7
- # really bad monkeypatching. fix this.
8
+ module ChromedriverScreenshot
9
+ class << self
10
+ attr_writer :take_full_screenshots
11
+
12
+ def take_full_screenshots
13
+ @take_full_screenshots = true if @take_full_screenshots.nil?
14
+ @take_full_screenshots
15
+ end
16
+ end
17
+ end
18
+
19
+ # really bad monkeypatching. fix this
8
20
  module Selenium
9
21
  module WebDriver
10
22
  module Remote
11
23
  class Bridge
12
24
  alias_method :window_screenshot, :getScreenshot
13
25
  def getScreenshot
14
- if browser == :chrome
26
+ if browser == :chrome && ChromedriverScreenshot.take_full_screenshots
15
27
  ChromedriverScreenshot::Platforms.create_platform(self)
16
- page = ChromedriverScreenshot::Page.new
17
- page.full_screenshot
28
+
29
+ screenshot = ChromedriverScreenshot::Page.new.full_screenshot
30
+ blob = screenshot.to_blob(:fast_rgb) # optimized for opaque images; greatly reduces runtime
31
+ Base64::encode64(blob)
18
32
  else
19
33
  window_screenshot
20
34
  end
@@ -7,6 +7,9 @@ module ChromedriverScreenshot
7
7
 
8
8
  def full_screenshot
9
9
  rows = @rows.map { |row| row.screenshot }
10
+
11
+ return rows.first if rows.size == 1 # don't need to process w/ Chunky
12
+
10
13
  page_height = rows.inject(0) do |height, row|
11
14
  height += row.height
12
15
  end
@@ -23,7 +26,7 @@ module ChromedriverScreenshot
23
26
  image_row += row.height
24
27
  end
25
28
 
26
- Base64::encode64(screenshot.to_blob)
29
+ screenshot
27
30
  end
28
31
 
29
32
  private
@@ -12,6 +12,8 @@ module ChromedriverScreenshot
12
12
  def screenshot
13
13
  tiles = @tiles.map { |tile| tile.screenshot }
14
14
 
15
+ return tiles.first if tiles.count == 1
16
+
15
17
  row_width = tiles.inject(0) do |width, tile|
16
18
  width += tile.width
17
19
  end
@@ -1,3 +1,3 @@
1
1
  module ChromedriverScreenshot
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chromedriver-screenshot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean MacGahan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-26 00:00:00.000000000 Z
11
+ date: 2015-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oily_png
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: selenium-webdriver
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rspec
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -46,6 +60,7 @@ extra_rdoc_files: []
46
60
  files:
47
61
  - ".gitignore"
48
62
  - ".rspec"
63
+ - CHANGELOG.md
49
64
  - Gemfile
50
65
  - LICENSE
51
66
  - README.md