flick 0.4.3 → 0.4.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +5 -1
- data/bin/flick +58 -1
- data/flick.gemspec +4 -2
- data/lib/flick.rb +9 -1
- data/lib/flick/applitools.rb +38 -0
- data/lib/flick/screenshot.rb +8 -2
- data/lib/flick/version.rb +1 -1
- metadata +35 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60d13cf15fcb434c0b80b607bb2c2738ccbb75bb
|
4
|
+
data.tar.gz: c42fade179a5c818b199265388bc2461c65fbc64
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6cede6e57d25d167777303ca2e60b70b71407ffe98f7c436816999356fd562fef50426928e9a0c3cbea40a7486ef4b34c4bc7ec5291484da69c6debd568c8c59
|
7
|
+
data.tar.gz: 145947a4e3c90f17505c5a7ad88c5945c1dd76c6d5a7c1439a781bd6e83e0ffe4f5acc882d3e87d64cbbc345203494b8e4adb4136968c37694a6c4c5fd038d01
|
data/README.md
CHANGED
@@ -90,7 +90,8 @@ Usage:
|
|
90
90
|
manager Manage apps on devices
|
91
91
|
screenshot Take a screenshot
|
92
92
|
video Record video
|
93
|
-
vitals Android Only! Get apps and device vitals - App Memory Used, App CPU %. System Stats: (User, System, IQW, IRQ)
|
93
|
+
vitals Android Only! Get apps and device vitals - App Memory Used, App CPU %. System Stats: (User, System, IQW, IRQ)
|
94
|
+
applitools Validte image with Applitools
|
94
95
|
|
95
96
|
GLOBAL OPTIONS:
|
96
97
|
|
@@ -132,6 +133,9 @@ Usage:
|
|
132
133
|
$ flick vitals --help
|
133
134
|
$ flick vitals -p android -n com.awsome-package.name
|
134
135
|
|
136
|
+
$ flick applitools --help
|
137
|
+
$ flick flick applitools -p android --appName Twitter --testName Messages
|
138
|
+
|
135
139
|
##Demo
|
136
140
|
<img src="https://www.dropbox.com/s/9be37gc1c2dlxa6/flick-demo.gif?raw=1" width="600">
|
137
141
|
|
data/bin/flick
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require_relative '../lib/flick'
|
3
3
|
require 'commander/import'
|
4
|
+
require 'digest'
|
4
5
|
|
5
|
-
program :version, '0.4.
|
6
|
+
program :version, '0.4.4'
|
6
7
|
program :description, 'A CLI to capture screenshots, video, logs, and device info for Android (Devices & Emulators) and iOS (Devices).'
|
7
8
|
|
8
9
|
command :video do |c|
|
@@ -50,6 +51,62 @@ command :screenshot do |c|
|
|
50
51
|
end
|
51
52
|
end
|
52
53
|
|
54
|
+
command :applitools do |c|
|
55
|
+
c.syntax = 'flick applitools [options]'
|
56
|
+
c.summary = 'Validte image with Applitools'
|
57
|
+
c.description = c.summary
|
58
|
+
c.example 'description', "flick applitools -p android --appName Twitter --testName Messages"
|
59
|
+
c.option '-p', '--platform PLATFORM', String, 'Set platform: android or ios'
|
60
|
+
c.option '-u', '--udid UDID', String, 'Set device UDID.'
|
61
|
+
c.option '-o', '--outdir OUTDIR', String, "Set output directory. Default: #{Dir.pwd}"
|
62
|
+
c.option '-k', '--keep', "Keep image after capture. Default: false"
|
63
|
+
c.option '--appName appName', String, "Set your App Name. Example: --appName Twitter. Default is the platform value"
|
64
|
+
c.option '--testName testName', String, "Set Test Name. Example: --testName 'Home View'"
|
65
|
+
c.option '--autoSave autoSave', String, "Automatically save failed tests."
|
66
|
+
c.option '--apiKey apiKey', String, "Applitools API Key"
|
67
|
+
c.option '--showLogs showLogs', String, "Display Applitools Logs"
|
68
|
+
c.option '--matchLevel matchLevel', String, "Set match level to one of 'strict, layout, or content'. Default: strict"
|
69
|
+
c.option '--server Server', String, "Set Applitools server url. Default: https://eyes.applitools.com"
|
70
|
+
c.option '--proxy Proxy', String, "Set proxy address"
|
71
|
+
c.option '--baseline Baseline', String, "Set your baseline name"
|
72
|
+
c.option '--batchName BatchName', String, "Set your batch (folder) name"
|
73
|
+
c.option '--batchId BatchId', String, "Set a batch ID. Flick, by default creates a unique batch ID based on the platform and appName values"
|
74
|
+
#These will be added later...
|
75
|
+
# c.option '--hostApp', String, "Set Host-app identifier for the screens under test"
|
76
|
+
# c.option '--baseline', String, "Set baseline name"
|
77
|
+
# c.option '--branch', String, "Set branch name"
|
78
|
+
# c.option '--hostOs', String, "Set OS identifier for the screens under test"
|
79
|
+
# c.option '--parentBranch', String, "Set parent branch name, optional when working with branches"
|
80
|
+
c.action do |args, options|
|
81
|
+
options.default \
|
82
|
+
:outdir => Dir.pwd,
|
83
|
+
:keep => false,
|
84
|
+
:matchLevel => 'strict',
|
85
|
+
:server => 'https://eyes.applitools.com',
|
86
|
+
:showLogs => false,
|
87
|
+
:apiKey => ENV['APPLITOOLS_API_KEY'],
|
88
|
+
:appName => options.platform,
|
89
|
+
:baseline => nil,
|
90
|
+
:batchName => options.appName,
|
91
|
+
:batchId => Digest::MD5.hexdigest("#{options.platform.downcase}-#{options.appName.downcase}").scan(/\d/).join('')
|
92
|
+
|
93
|
+
[:testName, :apiKey].each do |o|
|
94
|
+
if options.default[o].nil?
|
95
|
+
puts "\n--#{o.to_s} is required... Please set it before running!\n".red
|
96
|
+
abort
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
match_levels = ['strict', 'layout', 'content']
|
101
|
+
unless match_levels.include? options.matchLevel
|
102
|
+
puts "You entered an incorrect match level. Please choose any of these: #{match_levels}"
|
103
|
+
abort
|
104
|
+
end
|
105
|
+
|
106
|
+
Applitoolz.new(options.default).upload_to_applitools
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
53
110
|
command :log do |c|
|
54
111
|
c.syntax = 'flick log [options]'
|
55
112
|
c.summary = 'Get device log output'
|
data/flick.gemspec
CHANGED
@@ -30,12 +30,14 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.add_development_dependency "rspec", '~> 3.4', '>= 3.4.0'
|
31
31
|
spec.add_dependency "parallel", '~> 1.6', '>= 1.6.2'
|
32
32
|
spec.add_dependency "colorize", "~> 0.8.1"
|
33
|
-
spec.add_dependency "commander"
|
34
|
-
spec.add_dependency "json"
|
33
|
+
spec.add_dependency "commander"
|
34
|
+
spec.add_dependency "json"
|
35
35
|
spec.add_dependency "wannabe_bool", "~> 0.5.0"
|
36
36
|
spec.add_dependency "awesome_print", '~> 1.6', '>= 1.6.1'
|
37
37
|
spec.add_dependency "os", "~> 0.9.6"
|
38
38
|
spec.add_dependency "sys-proctable", '~> 1.1', '>= 1.1.1'
|
39
39
|
spec.add_dependency "apktools", '~> 0.7.1', '>= 0.7.1'
|
40
40
|
spec.add_dependency "ffi"
|
41
|
+
spec.add_dependency "eyes_images"
|
42
|
+
spec.add_dependency "pry"
|
41
43
|
end
|
data/lib/flick.rb
CHANGED
@@ -8,6 +8,13 @@ require 'tempfile'
|
|
8
8
|
require 'sys/proctable'
|
9
9
|
require 'apktools/apkxml'
|
10
10
|
require 'open3'
|
11
|
+
require 'eyes_images'
|
12
|
+
require 'pry'
|
13
|
+
require 'openssl'
|
14
|
+
original_verbose = $VERBOSE
|
15
|
+
$VERBOSE = nil
|
16
|
+
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
|
17
|
+
$VERBOSE = original_verbose
|
11
18
|
|
12
19
|
require "flick/version"
|
13
20
|
require_relative "./flick/android"
|
@@ -20,4 +27,5 @@ require_relative "./flick/simple_daemon"
|
|
20
27
|
require_relative "./flick/system"
|
21
28
|
require_relative "./flick/video"
|
22
29
|
require_relative "./flick/manager"
|
23
|
-
require_relative "./flick/vitals"
|
30
|
+
require_relative "./flick/vitals"
|
31
|
+
require_relative "./flick/applitools"
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'date'
|
2
|
+
|
3
|
+
class Applitoolz
|
4
|
+
|
5
|
+
attr_accessor :platform, :driver, :eyes, :app_name, :test_name, :keep
|
6
|
+
|
7
|
+
def initialize options
|
8
|
+
self.platform = options[:platform]
|
9
|
+
self.driver = Screenshot.new options
|
10
|
+
self.eyes = Applitools::Images::Eyes.new
|
11
|
+
eyes.api_key = options[:apiKey]
|
12
|
+
eyes.server_url = options[:server]
|
13
|
+
eyes.log_handler = Logger.new(STDOUT) if options[:showLogs]
|
14
|
+
eyes.proxy = Applitools::Connectivity::Proxy.new options[:proxy] if options[:proxy]
|
15
|
+
eyes.match_level = options[:matchLevel].downcase.to_sym
|
16
|
+
eyes.baseline_name = options[:baseline]
|
17
|
+
self.app_name = options[:appName]
|
18
|
+
self.test_name = options[:testName]
|
19
|
+
batch_info = Applitools::BatchInfo.new(options[:batchName])
|
20
|
+
batch_info.id = options[:batchId] #Date.today.to_time.to_i
|
21
|
+
eyes.batch = batch_info
|
22
|
+
self.keep = options[:keep]
|
23
|
+
end
|
24
|
+
|
25
|
+
def upload_to_applitools
|
26
|
+
image_info = driver.screenshot
|
27
|
+
eyes.test(app_name: app_name, test_name: test_name) do
|
28
|
+
eyes.check_image(image_path: image_info[:path], tag: image_info[:udid])
|
29
|
+
remove_image image_info[:path] unless keep
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def remove_image image
|
36
|
+
File.delete image if File.exists? image
|
37
|
+
end
|
38
|
+
end
|
data/lib/flick/screenshot.rb
CHANGED
@@ -5,7 +5,7 @@ class Screenshot
|
|
5
5
|
def initialize options
|
6
6
|
Flick::Checker.platform options[:platform]
|
7
7
|
self.platform = options[:platform]
|
8
|
-
case
|
8
|
+
case platform
|
9
9
|
when "ios"
|
10
10
|
options[:todir] = options[:outdir]
|
11
11
|
self.driver = Flick::Ios.new options
|
@@ -16,9 +16,15 @@ class Screenshot
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def screenshot
|
19
|
-
puts "Saving to #{driver.outdir}/#{driver.name}.png"
|
20
19
|
driver.screenshot driver.name
|
21
20
|
driver.pull_file "#{driver.dir_name}/#{driver.name}.png", driver.outdir if android
|
21
|
+
if File.exists? "#{driver.outdir}/#{driver.name}.png"
|
22
|
+
puts "Saved image to: #{driver.outdir}/#{driver.name}.png"
|
23
|
+
return { path: "#{driver.outdir}/#{driver.name}.png", udid: driver.udid }
|
24
|
+
else
|
25
|
+
puts "\nThere appears to be an issue capturing the #{platform} image. Run flick with --trace for more details.\n".red
|
26
|
+
abort
|
27
|
+
end
|
22
28
|
end
|
23
29
|
|
24
30
|
private
|
data/lib/flick/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flick
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -96,42 +96,30 @@ dependencies:
|
|
96
96
|
name: commander
|
97
97
|
requirement: !ruby/object:Gem::Requirement
|
98
98
|
requirements:
|
99
|
-
- - "~>"
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version: '4.4'
|
102
99
|
- - ">="
|
103
100
|
- !ruby/object:Gem::Version
|
104
|
-
version:
|
101
|
+
version: '0'
|
105
102
|
type: :runtime
|
106
103
|
prerelease: false
|
107
104
|
version_requirements: !ruby/object:Gem::Requirement
|
108
105
|
requirements:
|
109
|
-
- - "~>"
|
110
|
-
- !ruby/object:Gem::Version
|
111
|
-
version: '4.4'
|
112
106
|
- - ">="
|
113
107
|
- !ruby/object:Gem::Version
|
114
|
-
version:
|
108
|
+
version: '0'
|
115
109
|
- !ruby/object:Gem::Dependency
|
116
110
|
name: json
|
117
111
|
requirement: !ruby/object:Gem::Requirement
|
118
112
|
requirements:
|
119
|
-
- - "~>"
|
120
|
-
- !ruby/object:Gem::Version
|
121
|
-
version: '1.8'
|
122
113
|
- - ">="
|
123
114
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
115
|
+
version: '0'
|
125
116
|
type: :runtime
|
126
117
|
prerelease: false
|
127
118
|
version_requirements: !ruby/object:Gem::Requirement
|
128
119
|
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '1.8'
|
132
120
|
- - ">="
|
133
121
|
- !ruby/object:Gem::Version
|
134
|
-
version:
|
122
|
+
version: '0'
|
135
123
|
- !ruby/object:Gem::Dependency
|
136
124
|
name: wannabe_bool
|
137
125
|
requirement: !ruby/object:Gem::Requirement
|
@@ -234,6 +222,34 @@ dependencies:
|
|
234
222
|
- - ">="
|
235
223
|
- !ruby/object:Gem::Version
|
236
224
|
version: '0'
|
225
|
+
- !ruby/object:Gem::Dependency
|
226
|
+
name: eyes_images
|
227
|
+
requirement: !ruby/object:Gem::Requirement
|
228
|
+
requirements:
|
229
|
+
- - ">="
|
230
|
+
- !ruby/object:Gem::Version
|
231
|
+
version: '0'
|
232
|
+
type: :runtime
|
233
|
+
prerelease: false
|
234
|
+
version_requirements: !ruby/object:Gem::Requirement
|
235
|
+
requirements:
|
236
|
+
- - ">="
|
237
|
+
- !ruby/object:Gem::Version
|
238
|
+
version: '0'
|
239
|
+
- !ruby/object:Gem::Dependency
|
240
|
+
name: pry
|
241
|
+
requirement: !ruby/object:Gem::Requirement
|
242
|
+
requirements:
|
243
|
+
- - ">="
|
244
|
+
- !ruby/object:Gem::Version
|
245
|
+
version: '0'
|
246
|
+
type: :runtime
|
247
|
+
prerelease: false
|
248
|
+
version_requirements: !ruby/object:Gem::Requirement
|
249
|
+
requirements:
|
250
|
+
- - ">="
|
251
|
+
- !ruby/object:Gem::Version
|
252
|
+
version: '0'
|
237
253
|
description: A CLI with helpful QA tools for iOS and Android from the command line
|
238
254
|
email:
|
239
255
|
- justin.ison@gmail.com
|
@@ -256,6 +272,7 @@ files:
|
|
256
272
|
- flick.gemspec
|
257
273
|
- lib/flick.rb
|
258
274
|
- lib/flick/android.rb
|
275
|
+
- lib/flick/applitools.rb
|
259
276
|
- lib/flick/checker.rb
|
260
277
|
- lib/flick/info.rb
|
261
278
|
- lib/flick/ios.rb
|