testcentricity_web 3.2.21 → 3.3.0

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: aa65a9fd864b32c3b3b83f570ae9a6990d6b2072b75935fcf8489e26ff5cb759
4
- data.tar.gz: da08a618537d5dc3930c3c5740d5a05a73dab8a017ad497cec4aa154956d162d
3
+ metadata.gz: a3d97b7e502a92925e73d36a13871155d113fa873cc6edc8832adf0036435d65
4
+ data.tar.gz: 98ae195b6766c2872d548d07b9b79f7b028132815afd2e84f947e0f3d4b22fa2
5
5
  SHA512:
6
- metadata.gz: 2d6968587d9580dea196021b2b4631b690393b4300883c3e036a5df215ae8f679e1f51bdda1c38f2aa7a221f374ee0bdc400fe7f9a7db4e31a8bcac9675b84ef
7
- data.tar.gz: a6ff4c34c5260f4bd8dbaef959635ff79723587e2de0498255a749593778536e867264e8fab13e97dfcf315b9fca4cc711e1d77c1feb277738d2defcba8db305
6
+ metadata.gz: c01dcd0570c1af0b58f86c15dacc86cdd99caccc5f0f5bd750f9dbc1875447860cb30204939071468078426a3823ffc12a6ef9936d858509e2e471492be07b8a
7
+ data.tar.gz: ed1919d60dfef160d4e59a2b40a3405dfd08b0632930f69ea2a0e068fcc51210d01fd003a549ec377929feae3de03463ac4754b47df3fcda317cc02018f70569
data/CHANGELOG.md CHANGED
@@ -2,6 +2,30 @@
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
4
 
5
+ ## [3.3.0] - 14-MAR-2021
6
+
7
+ ### Fixed
8
+ * `WebDriverConnect.initialize_web_driver` method now correctly sets local Chrome browser Download directory when running
9
+ with headless Chrome.
10
+
11
+ ## [3.2.25] - 11-MAR-2021
12
+
13
+ ### Added
14
+ * Added `String.titlecase` method.
15
+
16
+ ## [3.2.23] - 11-FEB-2021
17
+
18
+ ### Changed
19
+ * Updated `PageObject.verify_ui_states` and `PageSection.verify_ui_states` methods to allow `:translate_upcase`,
20
+ `:translate_downcase`, `:translate_capitalize`, and `:translate_titlecase` conversions to fall back to `:en` default
21
+ locale if translated strings are missing from the current locale specified in `I18n.locale`.
22
+
23
+ ## [3.2.22] - 09-FEB-2021
24
+
25
+ ### Fixed
26
+ * Updated `PageObject.verify_ui_states` and `PageSection.verify_ui_states` methods to correctly handle `:translate_upcase`,
27
+ `:translate_downcase`, `:translate_capitalize`, and `:translate_titlecase` conversions for Arrays of `String`.
28
+
5
29
  ## [3.2.21] - 04-FEB-2021
6
30
 
7
31
  ### Changed
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- testcentricity_web (3.2.21)
4
+ testcentricity_web (3.3.0)
5
5
  appium_lib
6
6
  browserstack-local
7
7
  capybara (>= 3.1, < 4)
@@ -21,58 +21,58 @@ GEM
21
21
  specs:
22
22
  addressable (2.7.0)
23
23
  public_suffix (>= 2.0.2, < 5.0)
24
- appium_lib (10.6.0)
25
- appium_lib_core (~> 3.3)
24
+ appium_lib (11.2.0)
25
+ appium_lib_core (~> 4.1)
26
26
  nokogiri (~> 1.8, >= 1.8.1)
27
27
  tomlrb (~> 1.1)
28
- appium_lib_core (3.10.0)
29
- faye-websocket (~> 0.10.0)
28
+ appium_lib_core (4.4.1)
29
+ faye-websocket (~> 0.11.0)
30
30
  selenium-webdriver (~> 3.14, >= 3.14.1)
31
31
  axiom-types (0.1.1)
32
32
  descendants_tracker (~> 0.0.4)
33
33
  ice_nine (~> 0.11.0)
34
34
  thread_safe (~> 0.3, >= 0.3.1)
35
35
  browserstack-local (1.3.0)
36
- capybara (3.32.2)
36
+ capybara (3.35.3)
37
37
  addressable
38
38
  mini_mime (>= 0.1.3)
39
39
  nokogiri (~> 1.8)
40
40
  rack (>= 1.6.0)
41
41
  rack-test (>= 0.6.3)
42
- regexp_parser (~> 1.5)
42
+ regexp_parser (>= 1.5, < 3.0)
43
43
  xpath (~> 3.2)
44
44
  childprocess (0.9.0)
45
45
  ffi (~> 1.0, >= 1.0.11)
46
46
  chronic (0.10.2)
47
47
  coercible (1.0.0)
48
48
  descendants_tracker (~> 0.0.1)
49
- concurrent-ruby (1.1.6)
49
+ concurrent-ruby (1.1.8)
50
50
  descendants_tracker (0.0.4)
51
51
  thread_safe (~> 0.3, >= 0.3.1)
52
52
  equalizer (0.0.11)
53
53
  eventmachine (1.2.7)
54
- faker (2.12.0)
54
+ faker (2.16.0)
55
55
  i18n (>= 1.6, < 2)
56
- faye-websocket (0.10.9)
56
+ faye-websocket (0.11.0)
57
57
  eventmachine (>= 0.12.0)
58
58
  websocket-driver (>= 0.5.1)
59
- ffi (1.13.1)
60
- i18n (1.8.3)
59
+ ffi (1.15.0)
60
+ i18n (1.8.9)
61
61
  concurrent-ruby (~> 1.0)
62
62
  ice_nine (0.11.2)
63
63
  mini_mime (1.0.2)
64
- mini_portile2 (2.4.0)
65
- nokogiri (1.10.9)
66
- mini_portile2 (~> 2.4.0)
67
- os (1.1.0)
68
- power_assert (1.2.0)
69
- public_suffix (4.0.5)
64
+ nokogiri (1.11.2-x86_64-darwin)
65
+ racc (~> 1.4)
66
+ os (1.1.1)
67
+ power_assert (2.0.0)
68
+ public_suffix (4.0.6)
69
+ racc (1.5.2)
70
70
  rack (2.2.3)
71
71
  rack-test (1.1.0)
72
72
  rack (>= 1.0, < 3)
73
73
  rake (13.0.1)
74
74
  redcarpet (3.5.0)
75
- regexp_parser (1.7.1)
75
+ regexp_parser (2.1.1)
76
76
  ruby-ole (1.2.12.2)
77
77
  rubyzip (2.3.0)
78
78
  selenium-webdriver (3.142.7)
@@ -80,7 +80,7 @@ GEM
80
80
  rubyzip (>= 1.2.2)
81
81
  spreadsheet (1.1.7)
82
82
  ruby-ole (>= 1.0)
83
- test-unit (3.3.6)
83
+ test-unit (3.4.0)
84
84
  power_assert
85
85
  thread_safe (0.3.6)
86
86
  tomlrb (1.3.0)
@@ -89,11 +89,11 @@ GEM
89
89
  coercible (~> 1.0)
90
90
  descendants_tracker (~> 0.0, >= 0.0.3)
91
91
  equalizer (~> 0.0, >= 0.0.9)
92
- webdrivers (4.4.1)
92
+ webdrivers (4.6.0)
93
93
  nokogiri (~> 1.6)
94
94
  rubyzip (>= 1.3.0)
95
95
  selenium-webdriver (>= 3.0, < 4.0)
96
- websocket-driver (0.7.2)
96
+ websocket-driver (0.7.3)
97
97
  websocket-extensions (>= 0.1.0)
98
98
  websocket-extensions (0.1.5)
99
99
  xpath (3.2.0)
@@ -36,11 +36,14 @@ module TestCentricity
36
36
  attr_accessor :device_name
37
37
  attr_accessor :device_type
38
38
  attr_accessor :device_os
39
+ attr_accessor :device_os_version
39
40
  attr_accessor :device_orientation
40
41
  attr_accessor :platform
41
42
  attr_accessor :driver
42
43
  attr_accessor :grid
43
44
  attr_accessor :tunneling
45
+ attr_accessor :locale
46
+ attr_accessor :language
44
47
 
45
48
  attr_accessor :parallel
46
49
  attr_accessor :process_num
@@ -58,8 +61,12 @@ module TestCentricity
58
61
  attr_accessor :user_id
59
62
  attr_accessor :password
60
63
  attr_accessor :append
64
+ attr_accessor :app_id
65
+ attr_accessor :api_key
61
66
  attr_accessor :option1
62
67
  attr_accessor :option2
68
+ attr_accessor :option3
69
+ attr_accessor :option4
63
70
  attr_accessor :dns
64
71
  attr_accessor :db_username
65
72
  attr_accessor :db_password
@@ -71,12 +78,18 @@ module TestCentricity
71
78
  @user_id = data['USER_ID']
72
79
  @password = data['PASSWORD']
73
80
  @append = data['APPEND']
81
+ @app_id = data['APP_ID']
82
+ @api_key = data['API_KEY']
74
83
  @option1 = data['OPTIONAL_1']
75
84
  @option2 = data['OPTIONAL_2']
85
+ @option3 = data['OPTIONAL_3']
86
+ @option4 = data['OPTIONAL_4']
76
87
  @dns = data['DNS']
77
88
  @db_username = data['DB_USERNAME']
78
89
  @db_password = data['DB_PASSWORD']
79
90
  @a11y_standard = ENV['ACCESSIBILITY_STANDARD'] || 'best-practice'
91
+ @locale = ENV['LOCALE'] || 'en'
92
+ @language = ENV['LANGUAGE'] || 'English'
80
93
 
81
94
  super
82
95
  end
@@ -205,6 +218,14 @@ module TestCentricity
205
218
  @device_os
206
219
  end
207
220
 
221
+ def self.device_os_version=(version)
222
+ @device_os_version = version
223
+ end
224
+
225
+ def self.device_os_version
226
+ @device_os_version
227
+ end
228
+
208
229
  def self.is_ios?
209
230
  @device_os == :ios
210
231
  end
@@ -245,6 +266,22 @@ module TestCentricity
245
266
  @tunneling
246
267
  end
247
268
 
269
+ def self.language=(language)
270
+ @language = language
271
+ end
272
+
273
+ def self.language
274
+ @language
275
+ end
276
+
277
+ def self.locale=(locale)
278
+ @locale = locale
279
+ end
280
+
281
+ def self.locale
282
+ @locale
283
+ end
284
+
248
285
  def self.platform=(platform)
249
286
  @platform = platform
250
287
  end
@@ -305,13 +342,13 @@ module TestCentricity
305
342
  report_header = "\n<b><u>TEST ENVIRONMENT</u>:</b> #{ENV['TEST_ENVIRONMENT']}\n"\
306
343
  " <b>Browser:</b>\t #{Environ.browser.capitalize}\n"
307
344
  report_header = "#{report_header} <b>Device:</b>\t\t #{Environ.device_name}\n" if Environ.device_name
308
- report_header = "#{report_header} <b>Device OS:</b>\t #{Environ.device_os}\n" if Environ.device_os
345
+ report_header = "#{report_header} <b>Device OS:</b>\t #{Environ.device_os} #{Environ.device_os_version}\n" if Environ.device_os
309
346
  report_header = "#{report_header} <b>Device type:</b>\t #{Environ.device_type}\n" if Environ.device_type
310
347
  report_header = "#{report_header} <b>Driver:</b>\t\t #{Environ.driver}\n" if Environ.driver
311
348
  report_header = "#{report_header} <b>Grid:</b>\t\t #{Environ.grid}\n" if Environ.grid
312
349
  report_header = "#{report_header} <b>OS:</b>\t\t\t #{Environ.os}\n" if Environ.os
313
- report_header = "#{report_header} <b>Locale:</b>\t\t #{ENV['LOCALE']}\n" if ENV['LOCALE']
314
- report_header = "#{report_header} <b>Language:</b>\t #{ENV['LANGUAGE']}\n" if ENV['LANGUAGE']
350
+ report_header = "#{report_header} <b>Locale:</b>\t\t #{Environ.locale}\n" if Environ.locale
351
+ report_header = "#{report_header} <b>Language:</b>\t #{Environ.language}\n" if Environ.language
315
352
  report_header = "#{report_header} <b>Country:</b>\t #{ENV['COUNTRY']}\n" if ENV['COUNTRY']
316
353
  report_header = "#{report_header} <b>WCAG Accessibility Standard:</b>\t #{ENV['ACCESSIBILITY_STANDARD']}\n" if ENV['ACCESSIBILITY_STANDARD']
317
354
  "#{report_header}\n\n"
@@ -76,20 +76,31 @@ module TestCentricity
76
76
  expected = expected.downcase
77
77
  enqueue_exception("#{error_msg} be like '#{value}' but found '#{actual}'") unless actual_like.include?(expected)
78
78
  when :translate
79
- expected = I18n.t(value)
79
+ expected = translate(value)
80
80
  enqueue_assert_equal(expected, actual, error_msg)
81
81
  when :translate_upcase
82
- expected = I18n.t(value).upcase
82
+ expected = translate(value)
83
+ expected = expected.is_a?(Array) ? expected.map(&:upcase) : expected.upcase
83
84
  enqueue_assert_equal(expected, actual, error_msg)
84
85
  when :translate_downcase
85
- expected = I18n.t(value).downcase
86
+ expected = translate(value)
87
+ expected = expected.is_a?(Array) ? expected.map(&:downcase) : expected.downcase
86
88
  enqueue_assert_equal(expected, actual, error_msg)
87
89
  when :translate_capitalize
88
- expected = I18n.t(value).capitalize
90
+ expected = translate(value)
91
+ expected = expected.is_a?(Array) ? expected.map(&:capitalize) : expected.capitalize
89
92
  enqueue_assert_equal(expected, actual, error_msg)
90
93
  when :translate_titlecase
91
- expected = I18n.t(value)
92
- expected = "#{expected.split.each{ |expected| expected.capitalize! }.join(' ')}"
94
+ expected = translate(value)
95
+ expected = if expected.is_a?(Array)
96
+ result = []
97
+ expected.each do |item|
98
+ result.push("#{item.split.each{ |item| item.capitalize! }.join(' ')}")
99
+ end
100
+ result
101
+ else
102
+ "#{expected.split.each{ |expected| expected.capitalize! }.join(' ')}"
103
+ end
93
104
  enqueue_assert_equal(expected, actual, error_msg)
94
105
  end
95
106
  end
@@ -126,6 +137,29 @@ module TestCentricity
126
137
  screen_shot = {path: path, filename: filename}
127
138
  Environ.save_screen_shot(screen_shot)
128
139
  end
140
+
141
+ def self.translate(*args, **opts)
142
+ opts[:locale] ||= I18n.locale
143
+ opts[:raise] = true
144
+ I18n.translate(*args, **opts)
145
+ rescue I18n::MissingTranslationData => err
146
+ puts err
147
+ opts[:locale] = :en
148
+
149
+ # fallback to en if the translation is missing. If the translation isn't
150
+ # in en, then raise again.
151
+ disable_enforce_available_locales do
152
+ I18n.translate(*args, **opts)
153
+ end
154
+ end
155
+
156
+ def self.disable_enforce_available_locales
157
+ saved_enforce_available_locales = I18n.enforce_available_locales
158
+ I18n.enforce_available_locales = false
159
+ yield
160
+ ensure
161
+ I18n.enforce_available_locales = saved_enforce_available_locales
162
+ end
129
163
  end
130
164
 
131
165
 
@@ -34,6 +34,10 @@ class String
34
34
  end
35
35
  end
36
36
 
37
+ def titlecase
38
+ "#{self.split.each{ |text| text.capitalize! }.join(' ')}"
39
+ end
40
+
37
41
  def is_int?
38
42
  Integer(self) && true rescue false
39
43
  end
@@ -1,3 +1,3 @@
1
1
  module TestCentricityWeb
2
- VERSION = '3.2.21'
2
+ VERSION = '3.3.0'
3
3
  end
@@ -127,18 +127,19 @@ module TestCentricity
127
127
  def self.initialize_appium
128
128
  Environ.platform = :mobile
129
129
  Environ.device_name = ENV['APP_DEVICE']
130
- Environ.device_os = ENV['APP_PLATFORM_NAME']
130
+ Environ.device_os = ENV['APP_PLATFORM_NAME'].downcase.to_sym
131
131
  Environ.device_type = ENV['DEVICE_TYPE'] if ENV['DEVICE_TYPE']
132
+ Environ.device_os_version = ENV['APP_VERSION']
132
133
  Environ.device_orientation = ENV['ORIENTATION'] if ENV['ORIENTATION']
133
134
  Capybara.default_driver = :appium
134
135
  endpoint = 'http://localhost:4723/wd/hub'
135
136
  desired_capabilities = {
136
- platformName: ENV['APP_PLATFORM_NAME'],
137
- platformVersion: ENV['APP_VERSION'],
137
+ platformName: Environ.device_os,
138
+ platformVersion: Environ.device_os_version,
138
139
  browserName: ENV['APP_BROWSER'],
139
- deviceName: ENV['APP_DEVICE']
140
+ deviceName: Environ.device_name
140
141
  }
141
- desired_capabilities[:avd] = ENV['APP_DEVICE'] if ENV['APP_PLATFORM_NAME'].downcase.to_sym == :android
142
+ desired_capabilities[:avd] = ENV['APP_DEVICE'] if Environ.device_os == :android
142
143
  desired_capabilities[:automationName] = ENV['AUTOMATION_ENGINE'] if ENV['AUTOMATION_ENGINE']
143
144
  if ENV['UDID']
144
145
  Environ.device = :device
@@ -148,30 +149,45 @@ module TestCentricity
148
149
  desired_capabilities[:xcodeSigningId] = ENV['TEAM_NAME'] if ENV['TEAM_NAME']
149
150
  else
150
151
  Environ.device = :simulator
151
- desired_capabilities[:orientation] = ENV['ORIENTATION'].upcase if ENV['ORIENTATION']
152
+ desired_capabilities[:orientation] = Environ.device_orientation.upcase if Environ.device_orientation
152
153
  if Environ.device_os == :ios
153
- desired_capabilities[:language] = ENV['LANGUAGE'] if ENV['LANGUAGE']
154
- desired_capabilities[:locale] = ENV['LOCALE'].gsub('-', '_') if ENV['LOCALE']
154
+ desired_capabilities[:language] = Environ.language if Environ.language
155
+ desired_capabilities[:locale] = Environ.locale.gsub('-', '_') if Environ.locale
155
156
  end
156
157
  end
157
158
  desired_capabilities[:safariIgnoreFraudWarning] = ENV['APP_IGNORE_FRAUD_WARNING'] if ENV['APP_IGNORE_FRAUD_WARNING']
158
159
  desired_capabilities[:safariInitialUrl] = ENV['APP_INITIAL_URL'] if ENV['APP_INITIAL_URL']
159
160
  desired_capabilities[:safariAllowPopups] = ENV['APP_ALLOW_POPUPS'] if ENV['APP_ALLOW_POPUPS']
161
+
162
+ desired_capabilities[:autoAcceptAlerts] = ENV['AUTO_ACCEPT_ALERTS'] if ENV['AUTO_ACCEPT_ALERTS']
163
+ desired_capabilities[:autoDismissAlerts] = ENV['AUTO_DISMISS_ALERTS'] if ENV['AUTO_DISMISS_ALERTS']
164
+ desired_capabilities[:isHeadless] = ENV['HEADLESS'] if ENV['HEADLESS']
165
+
160
166
  desired_capabilities[:newCommandTimeout] = ENV['NEW_COMMAND_TIMEOUT'] if ENV['NEW_COMMAND_TIMEOUT']
161
167
  desired_capabilities[:noReset] = ENV['APP_NO_RESET'] if ENV['APP_NO_RESET']
162
168
  desired_capabilities[:fullReset] = ENV['APP_FULL_RESET'] if ENV['APP_FULL_RESET']
163
169
  desired_capabilities[:webkitDebugProxyPort] = ENV['WEBKIT_DEBUG_PROXY_PORT'] if ENV['WEBKIT_DEBUG_PROXY_PORT']
164
170
  desired_capabilities[:webDriverAgentUrl] = ENV['WEBDRIVER_AGENT_URL'] if ENV['WEBDRIVER_AGENT_URL']
165
- desired_capabilities[:wdaLocalPort] = ENV['WDA_LOCAL_PORT'] if ENV['WDA_LOCAL_PORT']
166
171
  desired_capabilities[:usePrebuiltWDA] = ENV['USE_PREBUILT_WDA'] if ENV['USE_PREBUILT_WDA']
167
172
  desired_capabilities[:useNewWDA] = ENV['USE_NEW_WDA'] if ENV['USE_NEW_WDA']
168
173
  desired_capabilities[:chromedriverExecutable] = ENV['CHROMEDRIVER_EXECUTABLE'] if ENV['CHROMEDRIVER_EXECUTABLE']
174
+ # set wdaLocalPort (iOS) or systemPort (Android) if PARALLEL_PORT is true
175
+ if ENV['PARALLEL'] && ENV['PARALLEL_PORT']
176
+ if Environ.device_os == :ios
177
+ desired_capabilities[:wdaLocalPort] = 8100 + ENV['TEST_ENV_NUMBER'].to_i
178
+ else
179
+ desired_capabilities[:systemPort] = 8200 + ENV['TEST_ENV_NUMBER'].to_i
180
+ end
181
+ else
182
+ desired_capabilities[:wdaLocalPort] = ENV['WDA_LOCAL_PORT'] if ENV['WDA_LOCAL_PORT']
183
+ desired_capabilities[:systemPort] = ENV['SYSTEM_PORT'] if ENV['SYSTEM_PORT']
184
+ end
169
185
 
170
186
  Capybara.register_driver :appium do |app|
171
187
  appium_lib_options = { server_url: endpoint }
172
188
  all_options = {
173
- appium_lib: appium_lib_options,
174
- caps: desired_capabilities
189
+ appium_lib: appium_lib_options,
190
+ caps: desired_capabilities
175
191
  }
176
192
  Appium::Capybara::Driver.new app, all_options
177
193
  end
@@ -224,21 +240,22 @@ module TestCentricity
224
240
  options.args << '--headless' if browser == :firefox_headless
225
241
  Capybara::Selenium::Driver.new(app, browser: :firefox, options: options)
226
242
  when :chrome, :chrome_headless
227
- if browser == :chrome
228
- options = Selenium::WebDriver::Chrome::Options.new
229
- prefs = {
230
- prompt_for_download: false,
231
- directory_upgrade: true,
232
- default_directory: @downloads_path
233
- }
234
- options.add_preference(:download, prefs)
235
- else
236
- options = Selenium::WebDriver::Chrome::Options.new(args: %w[headless disable-gpu no-sandbox])
237
- end
243
+ options = Selenium::WebDriver::Chrome::Options.new
244
+ prefs = {
245
+ prompt_for_download: false,
246
+ directory_upgrade: true,
247
+ default_directory: @downloads_path
248
+ }
249
+ options.add_preference(:download, prefs)
238
250
  options.add_argument('--disable-infobars')
239
251
  options.add_argument("--lang=#{ENV['LOCALE']}") if ENV['LOCALE']
240
- Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
241
- else
252
+ if browser == :chrome_headless
253
+ options.add_argument('--headless')
254
+ options.add_argument('--disable-gpu')
255
+ options.add_argument('--no-sandbox')
256
+ end
257
+
258
+ Capybara::Selenium::Driver.new(app, browser: :chrome, options: options) else
242
259
  if ENV['HOST_BROWSER'] && ENV['HOST_BROWSER'].downcase.to_sym == :chrome
243
260
  user_agent = Browsers.mobile_device_agent(ENV['WEB_BROWSER'])
244
261
  options = Selenium::WebDriver::Chrome::Options.new
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: testcentricity_web
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.21
4
+ version: 3.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - A.J. Mrozinski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-04 00:00:00.000000000 Z
11
+ date: 2021-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler