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 +4 -4
- data/CHANGELOG.md +13 -0
- data/README.md +7 -2
- data/chromedriver-screenshot.gemspec +1 -0
- data/lib/chromedriver-screenshot.rb +18 -4
- data/lib/chromedriver-screenshot/page.rb +4 -1
- data/lib/chromedriver-screenshot/row.rb +2 -0
- data/lib/chromedriver-screenshot/version.rb +1 -1
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed2fea94711ca61c6493f3315b94a564c131a369
|
4
|
+
data.tar.gz: ade737daf2cb7581b4607c8a458eaaf16be1dbf3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
6
|
-
|
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.
|
@@ -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
|
-
|
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
|
-
|
17
|
-
|
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
|
-
|
29
|
+
screenshot
|
27
30
|
end
|
28
31
|
|
29
32
|
private
|
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.
|
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-
|
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
|