chrome_diff 0.1.0 → 0.1.1

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
  SHA256:
3
- metadata.gz: 63efaa6953d427032ff166c99839064311cfd6d7febbc34b66ec377975f1e991
4
- data.tar.gz: a46a9b426140b30d78b14a3093ef6c4df5a4ce445e13d76477f8f8ffafb21005
3
+ metadata.gz: 3327e0ea798894487c578c34d28051b76114b70b7e5ee252bf64198b05ba8648
4
+ data.tar.gz: 768b97a67bf46f6605f7326ab55c49cb74ae3b7a6865f977f3d9d9b23e5b9ba8
5
5
  SHA512:
6
- metadata.gz: 16a7ab5574bbf3a177b47a796d82fedcfbfbd81eeea47a9064eda41d654b901099c3f999e546070b1fb1c61f7be27d9cb93254324a8fd34a77ba6d9a6860f990
7
- data.tar.gz: 5da408f12b623dc122ec685dd48982323243edc3ef9c8d628b6299606a424cf404ef743f7e4374f53fa6bccd27cfeb5e69b08722490977898f5830361c3607d6
6
+ metadata.gz: 75d32c8b2be65dde34e8fb5b586cc7da1e905d043b4a0fa85c11b85bd6578593226558a2ed03e586d6e66facd2761bf65a46baf60acf01b7c7ce2f3e2c81dd86
7
+ data.tar.gz: 3e7ca23b4f697b5a837adc18fc2e9c2a7ab2721de07146350c145e216830087787955408650d134212c6a81df09d5f59e20cf47a9b6d315f920fb90f775df614
@@ -0,0 +1,36 @@
1
+ name: Ruby
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+ branches: [ master ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ ruby: [ '2.6', '2.7' ]
15
+
16
+ steps:
17
+ - uses: actions/checkout@v2
18
+ - name: Set up Ruby
19
+ uses: ruby/setup-ruby@v1
20
+ with:
21
+ ruby-version: ${{ matrix.ruby }}
22
+
23
+ - name: Cache dependencies
24
+ uses: actions/cache@v2
25
+ with:
26
+ path: vendor/bundle
27
+ key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
28
+ restore-keys: |
29
+ ${{ runner.os }}-gems-
30
+ - name: Install dependencies with cache
31
+ run: |
32
+ bundle config path vendor/bundle
33
+ bundle install --jobs 4 --retry 3
34
+
35
+ - name: Run tests
36
+ run: bundle exec rspec
data/README.md CHANGED
@@ -1,7 +1,10 @@
1
1
  # ChromeDiff
2
+ [![Gem Version](https://badge.fury.io/rb/chrome_diff.svg)](https://badge.fury.io/rb/chrome_diff)
2
3
 
3
4
  Visual diff tool powered by headless chrome.
4
5
 
6
+ This tool controls Chrome by [Chrome DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/) based on [Ferrum](https://github.com/rubycdp/ferrum).
7
+
5
8
  ## Installation
6
9
 
7
10
  ```console
@@ -14,11 +17,52 @@ $ gem install chrome_diff
14
17
 
15
18
  ## Usage
16
19
 
20
+ ### Command-line
17
21
  ```console
18
22
  $ chrome-diff -f "https://google.com/?q=hello" -t "https://google.com/?q=world"
19
23
  There are some diffefences (1.44%): diff.png
20
24
  ```
21
25
 
26
+ #### Options
27
+
28
+ ```console
29
+ Usage: chrome-diff [options]
30
+ -f, --from-url [FROM_URL] From url
31
+ -t, --to-url [TO_URL] To url
32
+ -o, --output [OUTPUT] Output file
33
+ -w, --width [WIDTH] Window width (default 800)
34
+ -h, --height [HEIGHT] Window height (default 600)
35
+ -q, --quiet Quiet mode
36
+ --threshold [THRESHOLD] Threshold percent (default 1%)
37
+ --debug Debug mode (default false)
38
+ --no-output Don't output diff file
39
+ --full-screenshot Capture full screenshot
40
+ ```
41
+
42
+ ### As library
43
+
44
+ ```ruby
45
+ session = ChromeDiff::Session.new
46
+ session.compare("https://example.com/", "https://www.google.com/")
47
+ ```
48
+
49
+ #### Customize
50
+
51
+ ```ruby
52
+ session = ChromeDiff::Session.new(width: 800, height: 600, timeout: 5, debug: false)
53
+ session.compare(from_url: from_url, to_url: to_url, output: "diff.png", threshold: 1, full_screenshot: false)
54
+ ```
55
+
56
+ - `width`: window width (default 800px)
57
+ - `height`: window height (default 600px)
58
+ - `timeout`: browser timeout (default 5 seconds)
59
+ - `debug`: debug mode (default false)
60
+ - `from_url`: from url (required)
61
+ - `to_url`: to url (required)
62
+ - `output`: output diff image (default diff.png)
63
+ - `threshold`: threshold percent (default 1%)
64
+ - `full_screenshot`: take full screenshot (default false)
65
+
22
66
  ## Contributing
23
67
 
24
68
  Bug reports and pull requests are welcome on GitHub at https://github.com/hogelog/chrome_diff.
@@ -10,7 +10,7 @@ module ChromeDiff
10
10
  output: "diff.png",
11
11
  width: 800,
12
12
  height: 600,
13
- fuzz: 1,
13
+ threshold: 1,
14
14
  timeout: 5,
15
15
  }
16
16
 
@@ -29,7 +29,7 @@ module ChromeDiff
29
29
  parser.on("-w [WIDTH]", "--width", "Window width (default 800)") {|v| opts[:width] = v.to_i }
30
30
  parser.on("-h [HEIGHT]", "--height", "Window height (default 600)") {|v| opts[:height] = v.to_i }
31
31
  parser.on("-q", "--quiet", "Quiet mode") {|v| opts[:quiet] = v }
32
- parser.on("--fuzz [FUZZ]", "Fuzz factor percent (default 5%)") {|v| opts[:fuzz] = v.to_f }
32
+ parser.on("--threshold [THRESHOLD]", "Threshold percent (default 1%)") {|v| opts[:threshold] = v.to_f }
33
33
  parser.on("--debug", "Debug mode (default false)") {|v| opts[:debug] = !!v }
34
34
  parser.on("--no-output", "Don't output diff file") {|v| opts[:output] = v }
35
35
  parser.on("--full-screenshot", "Capture full screenshot") {|v| opts[:full_screenshot] = !!v }
@@ -9,16 +9,16 @@ module ChromeDiff
9
9
  class CompareStatus
10
10
  attr_reader :status, :diff, :diff_percent
11
11
 
12
- def initialize(status, stderr, width, height, fuzz)
12
+ def initialize(status, stderr, width, height, threshold)
13
13
  @status = status
14
- @fuzz = fuzz
14
+ @threshold = threshold
15
15
 
16
16
  @diff = stderr.to_f.to_i
17
17
  @diff_percent = @diff.to_f / width / height * 100
18
18
  end
19
19
 
20
20
  def success?
21
- @diff_percent <= @fuzz
21
+ @diff_percent <= @threshold
22
22
  end
23
23
  end
24
24
 
@@ -47,8 +47,8 @@ module ChromeDiff
47
47
  @browser.resize(width: @width, height: @height)
48
48
  end
49
49
 
50
- def compare(from_url:, to_url:, output:, fuzz: nil, full_screenshot: nil)
51
- fuzz ||= ChromeDiff::DEFAULT_OPTIONS[:fuzz]
50
+ def compare(from_url:, to_url:, output:, threshold: nil, full_screenshot: nil)
51
+ threshold ||= ChromeDiff::DEFAULT_OPTIONS[:threshold]
52
52
  result = nil
53
53
  Dir.mktmpdir do |tmpdir|
54
54
  from_file = File.join(tmpdir, "from.png")
@@ -59,7 +59,7 @@ module ChromeDiff
59
59
  screenshot(to_url, to_file, full_screenshot)
60
60
 
61
61
  _stdout, stderr, status = Open3.capture3("compare", "-metric", "AE", from_file, to_file, diff_file)
62
- result = CompareStatus.new(status, stderr, @width, @height, fuzz)
62
+ result = CompareStatus.new(status, stderr, @width, @height, threshold)
63
63
 
64
64
  File.rename(diff_file, output) if output
65
65
  end
@@ -1,3 +1,3 @@
1
1
  module ChromeDiff
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chrome_diff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - hogelog
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-31 00:00:00.000000000 Z
11
+ date: 2020-11-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ferrum
@@ -74,6 +74,7 @@ executables:
74
74
  extensions: []
75
75
  extra_rdoc_files: []
76
76
  files:
77
+ - ".github/workflows/ruby.yml"
77
78
  - ".gitignore"
78
79
  - ".keep"
79
80
  - ".rspec"