likadan 0.0.10 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 049ef4a07ae70c43e7279f77d800c423e381602a
4
- data.tar.gz: cae096cdc5663d6db1b3e94e239f463759623b77
3
+ metadata.gz: e2e0f6a6e6e21240adecd24471d2a8633a657332
4
+ data.tar.gz: 17d021b98744e745dcd915e2c00f04d44c812925
5
5
  SHA512:
6
- metadata.gz: 5dab2617bfcced27c302464093c433a11aca50f13a4370cd6f02b0b45b9a20e7cdc3c588b870e1dcf42ee1245a0b0f340c90d6e12381c7c0f241d80ac8150572
7
- data.tar.gz: d6628e5dcb20ea4f437951e6fd023b64778d80eaa558b9e047a1ed57d3d0fb45ce4b536015df713af1dff648e6767d425dea6a61e696176fcd1812c62fd76418
6
+ metadata.gz: e877633500eedfee6579a70a5df97a6e87698b105d7c31df4a30363165a9909ce091874eabb0e4e5d9d826d1b46b43d613818fb996da11c9e9f353f7fffe66d7
7
+ data.tar.gz: 234e8b43b05bff6fdf4a7d5af3650989ab6bb2b2e6179720c16590105017a710e0b40a6b25c0e798ca726019ce72456db2c386342e9e0be922234e5a8b277625
data/bin/likadan CHANGED
@@ -8,12 +8,10 @@ require 'fileutils'
8
8
  action = ARGV[0] || 'run'
9
9
  case action
10
10
  when 'run'
11
- Thread.new do # trivial example work thread
12
- begin
13
- require 'likadan_runner'
14
- ensure
15
- exit
16
- end
11
+ Thread.abort_on_exception = true
12
+ Thread.new do
13
+ require 'likadan_runner'
14
+ exit
17
15
  end
18
16
  require 'likadan_server'
19
17
 
@@ -28,8 +26,8 @@ when 'clean'
28
26
 
29
27
  when 'approve', 'reject'
30
28
  abort 'Missing example name' unless example_name = ARGV[1]
31
- abort 'Missing viewport width' unless width = ARGV[2]
32
- LikadanAction.new(example_name, width).send(action)
29
+ abort 'Missing viewport name' unless viewport_name = ARGV[2]
30
+ LikadanAction.new(example_name, viewport_name).send(action)
33
31
 
34
32
  when 'upload_diffs'
35
33
  # `upload_diffs` returns a URL to a static html file
@@ -9,7 +9,7 @@
9
9
 
10
10
  <% diff_images.each do |diff| %>
11
11
  <h3>
12
- <%= diff[:name] %> @ <%= diff[:width] %>
12
+ <%= diff[:name] %> @ <%= diff[:viewport] %>
13
13
  </h3>
14
14
  <p><img src="<%= diff[:url] %>"></p>
15
15
  <% end %>
@@ -2,15 +2,15 @@ require 'likadan_utils'
2
2
  require 'fileutils'
3
3
 
4
4
  class LikadanAction
5
- def initialize(example_name, width)
5
+ def initialize(example_name, viewport_name)
6
6
  @example_name = example_name
7
- @width = width
7
+ @viewport_name = viewport_name
8
8
  end
9
9
 
10
10
  def approve
11
- diff_path = LikadanUtils.path_to(@example_name, @width, 'diff.png')
12
- baseline_path = LikadanUtils.path_to(@example_name, @width, 'baseline.png')
13
- candidate_path = LikadanUtils.path_to(@example_name, @width, 'candidate.png')
11
+ diff_path = LikadanUtils.path_to(@example_name, @viewport_name, 'diff.png')
12
+ baseline_path = LikadanUtils.path_to(@example_name, @viewport_name, 'baseline.png')
13
+ candidate_path = LikadanUtils.path_to(@example_name, @viewport_name, 'candidate.png')
14
14
 
15
15
  FileUtils.rm(diff_path, force: true)
16
16
 
@@ -20,8 +20,8 @@ class LikadanAction
20
20
  end
21
21
 
22
22
  def reject
23
- diff_path = LikadanUtils.path_to(@example_name, @width, 'diff.png')
24
- candidate_path = LikadanUtils.path_to(@example_name, @width, 'candidate.png')
23
+ diff_path = LikadanUtils.path_to(@example_name, @viewport_name, 'diff.png')
24
+ candidate_path = LikadanUtils.path_to(@example_name, @viewport_name, 'candidate.png')
25
25
 
26
26
  FileUtils.rm(diff_path, force: true)
27
27
  FileUtils.rm(candidate_path, force: true)
@@ -9,27 +9,36 @@ require 'chunky_png'
9
9
  require 'likadan_utils'
10
10
  require 'fileutils'
11
11
 
12
+ def resolve_viewports(example)
13
+ configured_viewports = LikadanUtils.config['viewports']
14
+
15
+ (example['options']['viewports'] || [configured_viewports.first.first]).map do |viewport|
16
+ configured_viewports[viewport].merge('name' => viewport)
17
+ end
18
+ end
19
+
12
20
  driver = Selenium::WebDriver.for LikadanUtils.config['driver'].to_sym
13
21
  begin
14
22
  driver.navigate.to LikadanUtils.construct_url('/')
15
23
 
16
24
  while current = driver.execute_script('return window.likadan.next()') do
17
- current['viewportWidths'].each do |width|
25
+ resolve_viewports(current).each do |viewport|
18
26
  # Resize window to the right size before rendering
19
- driver.manage.window.resize_to(width, width)
27
+ driver.manage.window.resize_to(viewport['width'], viewport['height'])
20
28
 
21
29
  # Render the example
22
30
  rendered = driver.execute_script('return window.likadan.renderCurrent()')
23
31
  if error = rendered['error']
24
32
  puts <<-EOS
25
- Error while rendering "#{current['name']}" @#{width}px:
33
+ Error while rendering "#{current['name']}" @#{viewport['name']}:
26
34
  #{rendered['error']}
27
35
  Debug by pointing your browser to
28
36
  #{LikadanUtils.construct_url('/', name: current['name'])}
29
37
  EOS
30
38
  next
31
39
  end
32
- output_file = LikadanUtils.path_to(current['name'], width, 'candidate.png')
40
+ output_file = LikadanUtils.path_to(
41
+ current['name'], viewport['name'], 'candidate.png')
33
42
 
34
43
  # Create the folder structure if it doesn't already exist
35
44
  unless File.directory?(dirname = File.dirname(output_file))
@@ -45,10 +54,10 @@ begin
45
54
  rendered['height'])
46
55
  cropped.save(output_file)
47
56
 
48
- print "Checking \"#{current['name']}\" at #{width}px... "
57
+ print "Checking \"#{current['name']}\" at [#{viewport['name']}]... "
49
58
 
50
59
  # Run the diff if needed
51
- baseline_file = LikadanUtils.path_to(current['name'], width, 'baseline.png')
60
+ baseline_file = LikadanUtils.path_to(current['name'], viewport['name'], 'baseline.png')
52
61
 
53
62
  if File.exist? baseline_file
54
63
  comparison = Diffux::SnapshotComparer.new(
@@ -57,7 +66,7 @@ begin
57
66
  ).compare!
58
67
 
59
68
  if img = comparison[:diff_image]
60
- diff_output = LikadanUtils.path_to(current['name'], width, 'diff.png')
69
+ diff_output = LikadanUtils.path_to(current['name'], viewport['name'], 'diff.png')
61
70
  img.save(diff_output)
62
71
  puts "#{comparison[:diff_in_percent].round(1)}% (#{diff_output})"
63
72
  else
@@ -29,12 +29,12 @@ class LikadanServer < Sinatra::Base
29
29
  end
30
30
 
31
31
  post '/reject' do
32
- LikadanAction.new(params[:name], params[:width]).reject
32
+ LikadanAction.new(params[:name], params[:viewport]).reject
33
33
  redirect back
34
34
  end
35
35
 
36
36
  post '/approve' do
37
- LikadanAction.new(params[:name], params[:width]).approve
37
+ LikadanAction.new(params[:name], params[:viewport]).approve
38
38
  redirect back
39
39
  end
40
40
 
@@ -18,7 +18,7 @@ class LikadanUploader
18
18
  bucket.save(location: :us)
19
19
 
20
20
  diff_images = current_snapshots[:diffs].map do |diff|
21
- image = bucket.objects.build("#{diff[:name]}_#{diff[:width]}.png")
21
+ image = bucket.objects.build("#{diff[:name]}_#{diff[:viewport]}.png")
22
22
  image.content = open(diff[:file])
23
23
  image.content_type = 'image/png'
24
24
  image.save
data/lib/likadan_utils.rb CHANGED
@@ -9,6 +9,12 @@ class LikadanUtils
9
9
  'stylesheets' => [],
10
10
  'port' => 4567,
11
11
  'driver' => :firefox,
12
+ 'viewports' => {
13
+ 'desktop' => {
14
+ 'width' => 1024,
15
+ 'height' => 768
16
+ }
17
+ }
12
18
  }.merge(YAML.load(ERB.new(File.read(
13
19
  ENV['LIKADAN_CONFIG_FILE'] || '.likadan.yaml')).result))
14
20
  end
@@ -17,11 +23,11 @@ class LikadanUtils
17
23
  name.gsub(/[^a-zA-Z0-9\-_]/, '_')
18
24
  end
19
25
 
20
- def self.path_to(name, width, file_name)
26
+ def self.path_to(name, viewport_name, file_name)
21
27
  File.join(
22
28
  config['snapshots_folder'],
23
29
  normalize_name(name),
24
- "@#{width}",
30
+ "@#{viewport_name}",
25
31
  file_name
26
32
  )
27
33
  end
@@ -39,11 +45,11 @@ class LikadanUtils
39
45
 
40
46
  def self.current_snapshots
41
47
  prepare_file = lambda do |file|
42
- width_dir = File.expand_path('..', file)
43
- name_dir = File.expand_path('..', width_dir)
48
+ viewport_dir = File.expand_path('..', file)
49
+ name_dir = File.expand_path('..', viewport_dir)
44
50
  {
45
51
  name: File.basename(name_dir),
46
- width: File.basename(width_dir).sub('@', '').to_i,
52
+ viewport: File.basename(viewport_dir).sub('@', ''),
47
53
  file: file,
48
54
  }
49
55
  end
@@ -4,14 +4,11 @@ window.likadan = {
4
4
  currentExample: undefined,
5
5
  currentRenderedElement: undefined,
6
6
 
7
- define: function(name, func, viewportWidths, options) {
7
+ define: function(name, func, options) {
8
8
  this.defined.push({
9
9
  name: name,
10
10
  func: func,
11
- viewportWidths: viewportWidths || [1024],
12
- options: options || {
13
- snapshotEntireScreen: false
14
- }
11
+ options: options || {}
15
12
  });
16
13
  },
17
14
 
data/lib/views/review.erb CHANGED
@@ -16,16 +16,16 @@
16
16
  <h2>DIFFS</h2>
17
17
  <% @snapshots[:diffs].each do |diff| %>
18
18
  <h3>
19
- <%= diff[:name] %> @ <%= diff[:width] %>
19
+ <%= diff[:name] %> @ <%= diff[:viewport] %>
20
20
  </h3>
21
21
  <p><img src="/resource?file=<%= ERB::Util.url_encode(diff[:file]) %>"></p>
22
22
  <form style="display: inline-block"
23
- action="/approve?name=<%= diff[:name] %>&width=<%= diff[:width] %>"
23
+ action="/approve?name=<%= diff[:name] %>&viewport=<%= diff[:viewport] %>"
24
24
  method="POST">
25
25
  <button type="submit">Approve</button>
26
26
  </form>
27
27
  <form style="display: inline-block"
28
- action="/reject?name=<%= diff[:name] %>&width=<%= diff[:width] %>"
28
+ action="/reject?name=<%= diff[:name] %>&viewport=<%= diff[:viewport] %>"
29
29
  method="POST">
30
30
  <button type="submit">Reject</button>
31
31
  </form>
@@ -36,7 +36,7 @@
36
36
  <h2>BASELINES</h2>
37
37
  <% @snapshots[:baselines].each do |baseline| %>
38
38
  <h3>
39
- <%= baseline[:name] %> @ <%= baseline[:width] %>
39
+ <%= baseline[:name] %> @ <%= baseline[:viewport] %>
40
40
  </h3>
41
41
  <p><img src="/resource?file=<%= ERB::Util.url_encode(baseline[:file]) %>"></p>
42
42
  <% end %>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: likadan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henric Trotzig