yordi_tests 0.1.7 → 0.1.8
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/.gitignore +1 -0
- data/lib/yordi_tests.rb +16 -7
- data/lib/yordi_tests/cli.rb +18 -12
- data/lib/yordi_tests/data_manager.rb +117 -97
- data/lib/yordi_tests/{local_store.rb → data_store.rb} +20 -3
- data/lib/yordi_tests/generators/report.html.erb +1 -1
- data/lib/yordi_tests/image_compare.rb +0 -1
- data/lib/yordi_tests/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4208c9db4dd2f22a7c88dce21e4f6250139efe13
|
4
|
+
data.tar.gz: 0a7442b43e80119ea70d342601566a4d298545a5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5fb1e59529a9fa1e73f6149f35d74a2afec07a1e91627226badd23b9f467a22c3706814740f6b84adaf4b835e1c4f61aae84a96c1af7edc55fa5e70ee5b6a715
|
7
|
+
data.tar.gz: b03cf1c995ddf5c78385eaad2d403deefb3b84cf3fbf436a8d1ab66fa25a99d5d430616eb1d21ee41b013594fde857da05fb277388e88b3c4d1c1fe8245933e6
|
data/.gitignore
CHANGED
data/lib/yordi_tests.rb
CHANGED
@@ -13,14 +13,22 @@ module YordiTests
|
|
13
13
|
|
14
14
|
|
15
15
|
YORDI_DIR = ENV['YORDI_DIR'].freeze || '.yordi_tests'.freeze
|
16
|
-
BENCHMARKS_PATH = YORDI_DIR
|
17
|
-
SCREENS_PATH = YORDI_DIR
|
18
|
-
CONFIG_FILE = YORDI_DIR
|
19
|
-
REPORT_FILE = YORDI_DIR
|
20
|
-
REPORT_HTML = YORDI_DIR
|
16
|
+
BENCHMARKS_PATH = File.join(YORDI_DIR, 'benchmarks').freeze
|
17
|
+
SCREENS_PATH = File.join(YORDI_DIR, 'screenshots').freeze
|
18
|
+
CONFIG_FILE = File.join(YORDI_DIR, 'config.json').freeze
|
19
|
+
REPORT_FILE = File.join(YORDI_DIR, 'report.json').freeze
|
20
|
+
REPORT_HTML = File.join(YORDI_DIR, 'report.html').freeze
|
21
|
+
|
22
|
+
# set default value
|
23
|
+
@client = Client
|
24
|
+
@verbose = true
|
21
25
|
|
22
26
|
module_function
|
23
27
|
|
28
|
+
def verbose=(v)
|
29
|
+
@verbose = v
|
30
|
+
end
|
31
|
+
|
24
32
|
def client=(v)
|
25
33
|
@client = v
|
26
34
|
end
|
@@ -29,8 +37,9 @@ module YordiTests
|
|
29
37
|
@client
|
30
38
|
end
|
31
39
|
|
32
|
-
|
33
|
-
|
40
|
+
def safe_puts(message)
|
41
|
+
puts message if @verbose
|
42
|
+
end
|
34
43
|
|
35
44
|
def new_client(apikey)
|
36
45
|
client = new
|
data/lib/yordi_tests/cli.rb
CHANGED
@@ -7,22 +7,21 @@ module YordiTests
|
|
7
7
|
|
8
8
|
desc 'init --api_key', 'Initializes a Yordi test directory at .yordi_tests relative to where you execute the command'
|
9
9
|
method_option :api_key, type: :string, aliases: '-k', desc: 'APIKEY from YordiTest.com if you want to sync results online'
|
10
|
+
method_option :force, type: :boolean, aliases: '-f', desc: 'Force re-initialization'
|
11
|
+
method_option :verbose, type: :boolean, default: false, aliases: '-v', desc: 'Suppress console output'
|
10
12
|
|
11
13
|
def init
|
12
|
-
|
13
|
-
|
14
|
+
YordiTests.verbose = options.verbose
|
15
|
+
YordiTests.safe_puts 'init'
|
16
|
+
|
17
|
+
if DataManager.store? && !options.force
|
14
18
|
puts 'Already initialized'
|
15
19
|
exit(1)
|
16
20
|
end
|
17
|
-
puts "Creating #{YORDI_DIR} directory"
|
18
|
-
DataManager.create_store
|
19
21
|
|
20
|
-
|
21
|
-
puts "Saving store #{CONFIG_FILE}"
|
22
|
-
DataManager.save_store store
|
22
|
+
DataManager.create_store(options.api_key)
|
23
23
|
|
24
24
|
return unless options.api_key
|
25
|
-
puts 'Fetching remote store.'
|
26
25
|
DataManager.fetch(true, true, nil)
|
27
26
|
end
|
28
27
|
|
@@ -34,16 +33,19 @@ module YordiTests
|
|
34
33
|
method_option :sync_failures, type: :boolean, default: false, aliases: '-f', desc: 'Push only failed screens to YordiTests.com for evaluation.'
|
35
34
|
method_option :filenames, type: :array, aliases: '-i', desc: 'Only test these specific files'
|
36
35
|
method_option :screens, type: :array, aliases: '-s', desc: 'Give the files a name other than there filename in the report (best used with -i option)'
|
36
|
+
method_option :verbose, type: :boolean, default: false, aliases: '-v', desc: 'Suppress console output'
|
37
37
|
|
38
38
|
def test(path_to_screens)
|
39
|
-
|
40
|
-
|
39
|
+
YordiTests.verbose = options.verbose
|
40
|
+
YordiTests.safe_puts "Testing #{path_to_screens} name: #{options.name}, clean_dir: #{options.clean_dir}, sync_all: #{options.sync_all}, sync_failures: #{options.sync_failures}, filenames: #{options.filenames}, screens: #{options.screens}"
|
41
41
|
DataManager.run_test(path_to_screens, options.name, options.clean_dir, options.sync_all, options.sync_failures, options.filenames, options.screens)
|
42
42
|
end
|
43
43
|
|
44
44
|
desc 'make_report', 'Regenerate a Yordi report based on json report'
|
45
45
|
|
46
|
+
method_option :verbose, type: :boolean, default: false, aliases: '-v', desc: 'Suppress console output'
|
46
47
|
def make_report
|
48
|
+
YordiTests.verbose = options.verbose
|
47
49
|
DataManager.generate_report
|
48
50
|
end
|
49
51
|
|
@@ -51,9 +53,11 @@ module YordiTests
|
|
51
53
|
method_option :benchmarks, type: :boolean, default: false, aliases: '-b', desc: 'Fetch benchmarks'
|
52
54
|
method_option :masks, type: :boolean, default: false, aliases: '-m', desc: 'Fetch masks'
|
53
55
|
method_option :screens, type: :array, aliases: '-s', desc: 'Only fetch items associated with this list of screen names'
|
56
|
+
method_option :verbose, type: :boolean, default: false, aliases: '-v', desc: 'Suppress console output'
|
54
57
|
|
55
58
|
def fetch
|
56
|
-
|
59
|
+
YordiTests.verbose = options.verbose
|
60
|
+
YordiTests.safe_puts "Fetching with options benchmarks: #{options.benchmarks}, masks: #{options.masks}, screens: #{options.screens}"
|
57
61
|
DataManager.fetch(options.benchmarks, options.masks, options.screens)
|
58
62
|
end
|
59
63
|
|
@@ -61,9 +65,11 @@ module YordiTests
|
|
61
65
|
method_option :benchmarks, type: :boolean, default: false, aliases: '-b', desc: 'Push benchmarks'
|
62
66
|
method_option :masks, type: :boolean, default: false, aliases: '-m', desc: 'Push masks'
|
63
67
|
method_option :screens, type: :array, aliases: '-s', desc: 'Only push items associated with this list of screen names'
|
68
|
+
method_option :verbose, type: :boolean, default: false, aliases: '-v', desc: 'Suppress console output'
|
64
69
|
|
65
70
|
def push(path_to_screens)
|
66
|
-
|
71
|
+
YordiTests.verbose = options.verbose
|
72
|
+
YordiTests.safe_puts "test #{path_to_screens}"
|
67
73
|
end
|
68
74
|
|
69
75
|
|
@@ -1,74 +1,89 @@
|
|
1
1
|
require 'yordi_tests'
|
2
|
-
require 'yordi_tests/
|
2
|
+
require 'yordi_tests/data_store'
|
3
3
|
require 'yordi_tests/image_compare'
|
4
4
|
require 'yordi_tests/generators/report'
|
5
5
|
module YordiTests
|
6
6
|
module DataManager
|
7
7
|
module_function
|
8
8
|
|
9
|
-
|
10
|
-
|
9
|
+
# Create Store
|
10
|
+
#
|
11
|
+
# Called during init process on the CLI
|
12
|
+
#
|
13
|
+
def create_store(apikey)
|
14
|
+
YordiTests.safe_puts "Initializing #{YORDI_DIR} "
|
15
|
+
verify_directories
|
16
|
+
store = {title: 'YordiTests', apikey: apikey, test_benchmarks: []}
|
17
|
+
YordiTests.safe_puts "Saving store #{CONFIG_FILE}"
|
18
|
+
save_store store
|
11
19
|
end
|
12
20
|
|
13
|
-
|
14
|
-
|
15
|
-
|
21
|
+
# Fetch
|
22
|
+
#
|
23
|
+
# used in the fetch command from the CLI
|
24
|
+
#
|
25
|
+
def fetch(get_benchmarks, get_masks, screens)
|
26
|
+
verify_directories
|
27
|
+
local_store = DataStore.new(read_store)
|
16
28
|
|
17
|
-
|
18
|
-
|
19
|
-
end
|
29
|
+
## no api key
|
30
|
+
return unless local_store.apikey
|
20
31
|
|
21
|
-
|
22
|
-
|
23
|
-
end
|
32
|
+
client = YordiTests.client
|
33
|
+
client.apikey = local_store.apikey
|
24
34
|
|
25
|
-
|
26
|
-
|
27
|
-
file = File.read path
|
28
|
-
JSON(file)
|
29
|
-
else
|
30
|
-
puts "No file at: #{path} did you call initialize this directory"
|
31
|
-
end
|
35
|
+
YordiTests.safe_puts 'Fetching remote store.'
|
36
|
+
remote_data = client.fetch_application
|
32
37
|
|
38
|
+
## no remote store
|
39
|
+
return unless remote_data
|
40
|
+
|
41
|
+
remote_store = DataStore.new(remote_data)
|
42
|
+
|
43
|
+
local_store.update_root_data(remote_store.title, remote_store.apikey)
|
44
|
+
replace_benchmarks(client, local_store, remote_store, screens) if get_benchmarks
|
45
|
+
replace_masks(local_store, remote_store, screens) if get_masks
|
46
|
+
|
47
|
+
save_store local_store.data
|
33
48
|
end
|
34
49
|
|
35
|
-
|
36
|
-
|
50
|
+
# Generate a report
|
51
|
+
#
|
52
|
+
# Used in the make_report command from the CLI
|
53
|
+
#
|
54
|
+
def generate_report
|
55
|
+
YordiTests::Generators::Report.start([REPORT_HTML, read_report])
|
37
56
|
end
|
38
57
|
|
39
|
-
#
|
58
|
+
# RunTest
|
59
|
+
#
|
60
|
+
# Used in the test command from the CLI
|
40
61
|
def run_test(path_to_screens, name, clean_dir, sync_all, sync_failures, filenames, screens)
|
41
|
-
|
62
|
+
verify_directories
|
63
|
+
store = DataStore.new(read_store)
|
42
64
|
if filenames
|
43
65
|
files = []
|
44
66
|
filenames.each do |filename|
|
45
|
-
files << path_to_screens
|
67
|
+
files << File.join(path_to_screens, filename)
|
46
68
|
end
|
47
69
|
else
|
48
|
-
files = Dir.glob(path_to_screens
|
70
|
+
files = Dir.glob(File.join(path_to_screens, '*.png')).sort
|
49
71
|
end
|
50
|
-
|
51
|
-
Dir.mkdir(BENCHMARKS_PATH) unless Dir.exist? BENCHMARKS_PATH
|
52
|
-
Dir.mkdir(SCREENS_PATH) unless Dir.exist? SCREENS_PATH
|
53
72
|
responses = []
|
54
73
|
files.each_with_index do |item, index|
|
55
|
-
|
56
|
-
screenname =
|
57
|
-
benchmark =
|
74
|
+
YordiTests.safe_puts "Testing #{item}"
|
75
|
+
screenname = !screens.nil? && screens.size > index ? screens[index] : File.basename(item, '.*')
|
76
|
+
benchmark = store.benchmark_by_screenname(screenname)
|
58
77
|
local_name = benchmark.nil? ? sanitize(screenname) + File.extname(item) : benchmark[LOCAL_FILENAME]
|
59
|
-
benchmark_path = BENCHMARKS_PATH
|
60
|
-
screenshot_path = SCREENS_PATH
|
78
|
+
benchmark_path = File.join(BENCHMARKS_PATH, local_name)
|
79
|
+
screenshot_path = File.join(SCREENS_PATH, local_name)
|
61
80
|
FileUtils.copy item, screenshot_path
|
62
81
|
if benchmark.nil?
|
63
82
|
FileUtils.copy item, benchmark_path
|
64
|
-
benchmark =
|
65
|
-
|
66
|
-
FILENAME => local_name,
|
67
|
-
LOCAL_FILENAME => local_name}
|
68
|
-
local_store.update_benchmark(benchmark)
|
69
|
-
save_store local_store.data
|
83
|
+
benchmark = store.add_benchmark(screenname, local_name)
|
84
|
+
save_store store.data
|
70
85
|
end
|
71
|
-
global_mask =
|
86
|
+
global_mask = store.get(MASKED_AREA)
|
72
87
|
screen_mask = benchmark.nil? ? nil : benchmark[MASKED_AREA]
|
73
88
|
response = ImageCompare.perform(benchmark_path, screenshot_path, global_mask, screen_mask)
|
74
89
|
response[SCREENNAME] = screenname
|
@@ -77,80 +92,80 @@ module YordiTests
|
|
77
92
|
File.delete item if clean_dir
|
78
93
|
end
|
79
94
|
report_hash = {name: name, tests: responses}
|
80
|
-
|
95
|
+
save_report(report_hash)
|
81
96
|
|
82
97
|
# sync with yorditests.com if desired
|
83
|
-
sync_with_yordi
|
98
|
+
sync_with_yordi store, sync_all, sync_failures if sync_all || sync_failures
|
84
99
|
generate_report
|
85
100
|
end
|
86
101
|
|
87
|
-
|
88
|
-
# generate report
|
89
|
-
YordiTests::Generators::Report.start([REPORT_HTML, read_report])
|
102
|
+
# helper functions
|
90
103
|
|
104
|
+
def store?
|
105
|
+
Dir.exist? YORDI_DIR
|
91
106
|
end
|
92
107
|
|
93
|
-
def
|
94
|
-
|
95
|
-
|
96
|
-
report = read_report
|
97
|
-
client = YordiTests.client
|
98
|
-
client.apikey = store.apikey if store.apikey
|
99
|
-
if !report.nil? && !report['tests'].empty?
|
100
|
-
reports = report['tests']
|
101
|
-
failures = 0
|
102
|
-
if sync_failures
|
103
|
-
reports.each do |item|
|
104
|
-
failures += 1 unless item['passed']
|
105
|
-
end
|
106
|
-
end
|
108
|
+
def read_store
|
109
|
+
read_json(CONFIG_FILE)
|
110
|
+
end
|
107
111
|
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
end
|
112
|
+
def read_report
|
113
|
+
read_json(REPORT_FILE)
|
114
|
+
end
|
115
|
+
|
116
|
+
def read_json(path)
|
117
|
+
if File.exist? path
|
118
|
+
file = File.read path
|
119
|
+
JSON(file)
|
120
|
+
else
|
121
|
+
YordiTests.safe_puts "No file at: #{path} did you call initialize this directory"
|
119
122
|
end
|
123
|
+
|
120
124
|
end
|
121
125
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
## no api key
|
126
|
-
return unless local_store.apikey
|
126
|
+
def save_report(store_hash)
|
127
|
+
save_data(REPORT_FILE, store_hash)
|
128
|
+
end
|
127
129
|
|
128
|
-
|
129
|
-
|
130
|
-
|
130
|
+
def save_store(store_hash)
|
131
|
+
save_data(CONFIG_FILE, store_hash)
|
132
|
+
end
|
131
133
|
|
132
|
-
|
133
|
-
|
134
|
+
def save_data(file_path, hash)
|
135
|
+
File.open(file_path, 'w') {|file| file.write(hash.to_json)}
|
136
|
+
end
|
134
137
|
|
135
|
-
remote_store = LocalStore.new(remote_data)
|
136
138
|
|
137
|
-
|
138
|
-
|
139
|
-
|
139
|
+
def sync_with_yordi(store, sync_all, sync_failures)
|
140
|
+
# sync with remote
|
141
|
+
return unless store.apikey
|
142
|
+
YordiTests.safe_puts 'Syncing with YordiTests'
|
143
|
+
report = read_report
|
144
|
+
return if report.nil? || report['tests'].empty?
|
145
|
+
reports = report['tests']
|
140
146
|
|
141
|
-
|
142
|
-
|
147
|
+
client = YordiTests.client
|
148
|
+
client.apikey = store.apikey
|
143
149
|
|
144
|
-
|
145
|
-
|
146
|
-
|
150
|
+
# filter out passed tests if failures syncing is on
|
151
|
+
if sync_failures && !sync_all
|
152
|
+
reports = reports.reject {|item| item['passed']}
|
153
|
+
end
|
154
|
+
|
155
|
+
return unless sync_all || !reports.empty?
|
156
|
+
|
157
|
+
client.start report['name']
|
158
|
+
reports.each do |item|
|
159
|
+
YordiTests.safe_puts "Uploading #{item[SCREENNAME]}"
|
160
|
+
benchmark = store.benchmark_by_screenname(item[SCREENNAME])
|
161
|
+
filename = File.join(SCREENS_PATH, benchmark[LOCAL_FILENAME])
|
162
|
+
client.upload filename, item[SCREENNAME]
|
163
|
+
end
|
164
|
+
client.stop
|
147
165
|
end
|
148
166
|
|
149
167
|
def replace_benchmarks(client, local_store, remote_store, screens)
|
150
|
-
|
151
|
-
screens = remote_store.all_screens unless screens
|
152
|
-
|
153
|
-
Dir.mkdir(BENCHMARKS_PATH) unless Dir.exist? BENCHMARKS_PATH
|
168
|
+
screens ||= remote_store.all_screens
|
154
169
|
|
155
170
|
screens.each do |screen|
|
156
171
|
benchmark = remote_store.benchmark_by_screenname(screen)
|
@@ -159,11 +174,11 @@ module YordiTests
|
|
159
174
|
benchmark[LOCAL_FILENAME] = sanitize(screen) + File.extname(benchmark[FILENAME])
|
160
175
|
|
161
176
|
# download benchmark
|
162
|
-
|
177
|
+
YordiTests.safe_puts "Downloading #{screen}"
|
163
178
|
benchmark_image = client.fetch_benchmark(screen)
|
164
179
|
|
165
180
|
# update store to reflex file name of benchmark
|
166
|
-
file_path =
|
181
|
+
file_path = File.join(BENCHMARKS_PATH, benchmark[LOCAL_FILENAME])
|
167
182
|
File.open(file_path, 'w') {|file| file.write(benchmark_image)}
|
168
183
|
local_store.update_benchmark(benchmark)
|
169
184
|
end
|
@@ -172,15 +187,20 @@ module YordiTests
|
|
172
187
|
def replace_masks(local_store, remote_store, screens)
|
173
188
|
# global mask
|
174
189
|
local_store.put(MASKED_AREA, remote_store.get(MASKED_AREA))
|
175
|
-
screens
|
190
|
+
screens ||= remote_store.all_screens
|
176
191
|
screens.each do |screen|
|
177
192
|
benchmark = remote_store.benchmark_by_screenname(screen)
|
178
193
|
# download benchmark
|
179
|
-
|
194
|
+
YordiTests.safe_puts "Update mask for #{screen}"
|
180
195
|
local_store.update_mask(benchmark) if benchmark
|
181
196
|
end
|
182
197
|
end
|
183
198
|
|
199
|
+
def verify_directories
|
200
|
+
Dir.mkdir(YORDI_DIR) unless Dir.exist? YORDI_DIR
|
201
|
+
Dir.mkdir(BENCHMARKS_PATH) unless Dir.exist? BENCHMARKS_PATH
|
202
|
+
Dir.mkdir(SCREENS_PATH) unless Dir.exist? SCREENS_PATH
|
203
|
+
end
|
184
204
|
|
185
205
|
def sanitize(filename)
|
186
206
|
# Remove any character that aren't 0-9, A-Z, or a-z
|
@@ -8,7 +8,7 @@ module YordiTests
|
|
8
8
|
LOCAL_FILENAME = 'local_filename'.freeze
|
9
9
|
TITLE = 'title'.freeze
|
10
10
|
|
11
|
-
class
|
11
|
+
class DataStore
|
12
12
|
|
13
13
|
def initialize(json_store)
|
14
14
|
@store = json_store
|
@@ -17,6 +17,9 @@ module YordiTests
|
|
17
17
|
def apikey
|
18
18
|
get(APIKEY)
|
19
19
|
end
|
20
|
+
def title
|
21
|
+
get(TITLE)
|
22
|
+
end
|
20
23
|
|
21
24
|
def data
|
22
25
|
@store
|
@@ -27,7 +30,8 @@ module YordiTests
|
|
27
30
|
end
|
28
31
|
|
29
32
|
def get(key)
|
30
|
-
@store[key]
|
33
|
+
return @store[key].dup unless @store[key].nil?
|
34
|
+
nil
|
31
35
|
end
|
32
36
|
|
33
37
|
def all_screens
|
@@ -37,6 +41,10 @@ module YordiTests
|
|
37
41
|
end
|
38
42
|
screens
|
39
43
|
end
|
44
|
+
def update_root_data(title, apikey)
|
45
|
+
put(TITLE, title)
|
46
|
+
put(APIKEY, apikey)
|
47
|
+
end
|
40
48
|
|
41
49
|
def update_benchmark(benchmark)
|
42
50
|
benchmark_pos = benchmark_pos_by_screenname(benchmark[SCREENNAME])
|
@@ -49,12 +57,21 @@ module YordiTests
|
|
49
57
|
end
|
50
58
|
end
|
51
59
|
|
60
|
+
def add_benchmark(screenname, local_name)
|
61
|
+
benchmark = {SCREENNAME => screenname,
|
62
|
+
MASKED_AREA => nil,
|
63
|
+
FILENAME => local_name,
|
64
|
+
LOCAL_FILENAME => local_name}
|
65
|
+
@store[BENCHMARKS] << benchmark.dup
|
66
|
+
benchmark
|
67
|
+
end
|
68
|
+
|
52
69
|
def update_mask(benchmark)
|
53
70
|
benchmark_pos = benchmark_pos_by_screenname(benchmark[SCREENNAME])
|
54
71
|
if benchmark_pos < 0
|
55
72
|
@store[BENCHMARKS] << benchmark.dup
|
56
73
|
else
|
57
|
-
@store[BENCHMARKS][benchmark_pos][MASKED_AREA] = benchmark[MASKED_AREA]
|
74
|
+
@store[BENCHMARKS][benchmark_pos][MASKED_AREA] = benchmark[MASKED_AREA].dup unless benchmark[MASKED_AREA].nil?
|
58
75
|
end
|
59
76
|
end
|
60
77
|
|
data/lib/yordi_tests/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yordi_tests
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian OQR
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-12-
|
11
|
+
date: 2017-12-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -115,10 +115,10 @@ files:
|
|
115
115
|
- lib/yordi_tests/cli.rb
|
116
116
|
- lib/yordi_tests/client.rb
|
117
117
|
- lib/yordi_tests/data_manager.rb
|
118
|
+
- lib/yordi_tests/data_store.rb
|
118
119
|
- lib/yordi_tests/generators/report.html.erb
|
119
120
|
- lib/yordi_tests/generators/report.rb
|
120
121
|
- lib/yordi_tests/image_compare.rb
|
121
|
-
- lib/yordi_tests/local_store.rb
|
122
122
|
- lib/yordi_tests/version.rb
|
123
123
|
- yordi_tests.gemspec
|
124
124
|
homepage: https://www.yorditests.com
|