flick 0.4.3 → 0.4.4
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/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
|