bucky-core 0.10.4 → 0.10.9

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
- SHA1:
3
- metadata.gz: e3db572b6f3e84c8b087f6377fb6555870d7939a
4
- data.tar.gz: 3e89f508f717f428f1d04e33e849fc21ddf0d1dd
2
+ SHA256:
3
+ metadata.gz: 87798700e382a4c439f45d87da578cc073315d924bfbf6a32e5a59c1606d0bf0
4
+ data.tar.gz: 2d043e90b4229a3078527a146e7831f8e5900ef790f036735e15c26bfe9dc300
5
5
  SHA512:
6
- metadata.gz: a64215cd06c5bf53ce5d9f8d00c9c10c89ba1dbfdac12586223904c4f5c2e332323935545e37c46b36a1ca9d8360b693770dd803dc1c314a6c584a60c2fe4f5a
7
- data.tar.gz: a9d1771ad211ba033b3f49c15d59d1f60405f82c053ae29fe1a59d3eac2dce8559ee55de3444ddb69b6d83c3d75a8260a906ae44c686e9bb84a0adf19e6fc364
6
+ metadata.gz: a62d52ae9c9fedf15ea941623b3b5a33fc1188e8cc887b63e17bbee4e7ea12b370a3c23c5e060249486661b9693a77d9b4c6b166c12af1d0e241152bc035c86a
7
+ data.tar.gz: bfd263087f691afe417cccb52403f70ccf7aa3a9a3962192e55718668f521a89af5e9f14624654d2a56977e59b6b61b206992254a7db74b73fc33c51a4145a86
data/.circleci/config.yml CHANGED
@@ -37,7 +37,7 @@ jobs:
37
37
  unit_test:
38
38
  working_directory: ~/bucky-core
39
39
  docker:
40
- - image: circleci/ruby:2.4.2-node
40
+ - image: circleci/ruby:2.5.8
41
41
  environment:
42
42
  CC_TEST_REPORTER_ID: fd7bd9d517bdf8953c4d4803ca4ad7539d12d5c760048b8daf80cbc7d54fb262
43
43
  steps:
@@ -62,7 +62,7 @@ jobs:
62
62
  ./cc-test-reporter after-build --coverage-input-type simplecov --exit-code $?
63
63
  static_code_analysis:
64
64
  docker:
65
- - image: circleci/ruby:2.4.2-node
65
+ - image: circleci/ruby:2.5.8
66
66
  steps:
67
67
  - checkout
68
68
  - type: cache-restore
@@ -77,7 +77,7 @@ jobs:
77
77
  path: report.html
78
78
  publish_to_rubygems:
79
79
  docker:
80
- - image: circleci/ruby:2.4.1
80
+ - image: circleci/ruby:2.5.8
81
81
  steps:
82
82
  - add_ssh_keys:
83
83
  finerprints:
data/.rubocop.yml CHANGED
@@ -8,7 +8,7 @@ AllCops:
8
8
  - 'template/**/*'
9
9
  - 'tmp/**/*'
10
10
  - 'vendor/**/*'
11
- TargetRubyVersion: 2.4
11
+ TargetRubyVersion: 2.5
12
12
 
13
13
  AbcSize:
14
14
  Enabled: false
@@ -61,7 +61,7 @@ MethodLength:
61
61
  Enabled: false
62
62
 
63
63
  ModuleLength:
64
- Max: 120
64
+ Max: 130
65
65
  Exclude:
66
66
  - 'spec/**/*.rb'
67
67
 
data/Dockerfile CHANGED
@@ -1,4 +1,4 @@
1
- FROM ruby:2.4.2-alpine
1
+ FROM ruby:2.5.8-alpine
2
2
  ENV LANG ja_JP.UTF-8
3
3
  ENV PAGER busybox less
4
4
 
@@ -22,6 +22,7 @@ RUN apk update && \
22
22
  zlib-dev
23
23
 
24
24
  ENV BC_DIR /bucky-core/
25
+ ENV PATH /bucky-core/exe/:$PATH
25
26
  WORKDIR $BC_DIR
26
27
  COPY . $BC_DIR
27
28
 
@@ -1,4 +1,4 @@
1
- FROM ruby:2.4.2-alpine
1
+ FROM ruby:2.5.8-alpine
2
2
  ENV LANG ja_JP.UTF-8
3
3
  ENV PAGER busybox less
4
4
 
@@ -29,6 +29,7 @@ RUN git clone https://github.com/bats-core/bats-core.git /tmp/bats-core \
29
29
  && rm -rf /tmp/bats-core
30
30
 
31
31
  ENV BC_DIR /bucky-core/
32
+ ENV PATH /bucky-core/exe/:$PATH
32
33
  WORKDIR $BC_DIR
33
34
  COPY . $BC_DIR
34
35
 
data/Gemfile.lock CHANGED
@@ -1,11 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bucky-core (0.10.3)
4
+ bucky-core (0.10.7)
5
5
  addressable (~> 2.5)
6
6
  color_echo (~> 3.1)
7
- json (~> 2.1)
8
- nokogiri (~> 1.10.4)
7
+ json (~> 2.3.0)
8
+ nokogiri (~> 1.11.1)
9
9
  parallel (~> 1.11)
10
10
  ruby-mysql (~> 2.9)
11
11
  selenium-webdriver (~> 3.142)
@@ -18,54 +18,56 @@ GEM
18
18
  addressable (2.7.0)
19
19
  public_suffix (>= 2.0.2, < 5.0)
20
20
  ansi (1.5.0)
21
- ast (2.4.0)
21
+ ast (2.4.1)
22
22
  awesome_print (1.8.0)
23
23
  binding_of_caller (0.8.0)
24
24
  debug_inspector (>= 0.0.1)
25
- byebug (9.1.0)
25
+ byebug (11.1.3)
26
26
  childprocess (3.0.0)
27
- coderay (1.1.2)
27
+ coderay (1.1.3)
28
28
  color_echo (3.1.1)
29
- debug_inspector (0.0.3)
30
- diff-lcs (1.3)
29
+ debug_inspector (1.0.0)
30
+ diff-lcs (1.4.4)
31
31
  docile (1.1.5)
32
32
  hirb (0.7.3)
33
- jaro_winkler (1.5.2)
34
- json (2.1.0)
35
- method_source (0.9.0)
36
- mini_portile2 (2.4.0)
37
- nokogiri (1.10.9)
38
- mini_portile2 (~> 2.4.0)
39
- parallel (1.12.1)
40
- parser (2.6.3.0)
41
- ast (~> 2.4.0)
42
- power_assert (1.1.6)
43
- pry (0.11.3)
44
- coderay (~> 1.1.0)
45
- method_source (~> 0.9.0)
46
- pry-byebug (3.5.1)
47
- byebug (~> 9.1)
48
- pry (~> 0.10)
49
- pry-stack_explorer (0.4.9.2)
50
- binding_of_caller (>= 0.7)
51
- pry (>= 0.9.11)
52
- public_suffix (4.0.3)
33
+ jaro_winkler (1.5.4)
34
+ json (2.3.1)
35
+ method_source (1.0.0)
36
+ mini_portile2 (2.5.0)
37
+ nokogiri (1.11.1)
38
+ mini_portile2 (~> 2.5.0)
39
+ racc (~> 1.4)
40
+ parallel (1.20.1)
41
+ parser (3.0.0.0)
42
+ ast (~> 2.4.1)
43
+ power_assert (1.2.0)
44
+ pry (0.13.1)
45
+ coderay (~> 1.1)
46
+ method_source (~> 1.0)
47
+ pry-byebug (3.9.0)
48
+ byebug (~> 11.0)
49
+ pry (~> 0.13.0)
50
+ pry-stack_explorer (0.4.13)
51
+ binding_of_caller (~> 0.7)
52
+ pry (~> 0.13)
53
+ public_suffix (4.0.6)
54
+ racc (1.5.2)
53
55
  rainbow (3.0.0)
54
- rake (13.0.1)
55
- rspec (3.7.0)
56
- rspec-core (~> 3.7.0)
57
- rspec-expectations (~> 3.7.0)
58
- rspec-mocks (~> 3.7.0)
59
- rspec-core (3.7.1)
60
- rspec-support (~> 3.7.0)
61
- rspec-expectations (3.7.0)
56
+ rake (13.0.3)
57
+ rspec (3.10.0)
58
+ rspec-core (~> 3.10.0)
59
+ rspec-expectations (~> 3.10.0)
60
+ rspec-mocks (~> 3.10.0)
61
+ rspec-core (3.10.1)
62
+ rspec-support (~> 3.10.0)
63
+ rspec-expectations (3.10.1)
62
64
  diff-lcs (>= 1.2.0, < 2.0)
63
- rspec-support (~> 3.7.0)
64
- rspec-mocks (3.7.0)
65
+ rspec-support (~> 3.10.0)
66
+ rspec-mocks (3.10.1)
65
67
  diff-lcs (>= 1.2.0, < 2.0)
66
- rspec-support (~> 3.7.0)
67
- rspec-support (3.7.0)
68
- rspec_junit_formatter (0.3.0)
68
+ rspec-support (~> 3.10.0)
69
+ rspec-support (3.10.1)
70
+ rspec_junit_formatter (0.4.1)
69
71
  rspec-core (>= 2, < 4, != 2.12.0)
70
72
  rubocop (0.68.1)
71
73
  jaro_winkler (~> 1.5.1)
@@ -75,8 +77,8 @@ GEM
75
77
  ruby-progressbar (~> 1.7)
76
78
  unicode-display_width (>= 1.4.0, < 1.6)
77
79
  ruby-mysql (2.9.14)
78
- ruby-progressbar (1.10.0)
79
- rubyzip (2.2.0)
80
+ ruby-progressbar (1.11.0)
81
+ rubyzip (2.3.0)
80
82
  selenium-webdriver (3.142.7)
81
83
  childprocess (>= 0.5, < 4.0)
82
84
  rubyzip (>= 1.2.2)
@@ -90,7 +92,7 @@ GEM
90
92
  hirb
91
93
  simplecov
92
94
  simplecov-html (0.10.2)
93
- test-unit (3.3.5)
95
+ test-unit (3.3.9)
94
96
  power_assert
95
97
  unicode-display_width (1.5.0)
96
98
 
@@ -108,7 +110,8 @@ DEPENDENCIES
108
110
  rake (~> 13)
109
111
  rspec (~> 3.6)
110
112
  rspec_junit_formatter (~> 0.3)
111
- rubocop (~> 0.63)
113
+ rubocop (~> 0.68.1)
114
+ simplecov (~> 0.15.1)
112
115
  simplecov-console (~> 0.4.2)
113
116
 
114
117
  BUNDLED WITH
data/bucky-core.gemspec CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |spec|
16
16
 
17
17
  When working with Bucky-management, Bucky-core can also record test results. You can make test results visualization by using Bucky-management.
18
18
  DESCRIPTION
19
- spec.required_ruby_version = '>= 2.4.2'
19
+ spec.required_ruby_version = '>= 2.5'
20
20
  spec.homepage = 'https://github.com/lifull-dev/bucky-core'
21
21
  spec.license = 'Apache License 2.0'
22
22
 
@@ -36,13 +36,14 @@ Gem::Specification.new do |spec|
36
36
  spec.add_development_dependency 'rake', '~> 13'
37
37
  spec.add_development_dependency 'rspec', '~> 3.6'
38
38
  spec.add_development_dependency 'rspec_junit_formatter', '~> 0.3'
39
- spec.add_development_dependency 'rubocop', '~> 0.63'
39
+ spec.add_development_dependency 'rubocop', '~> 0.68.1'
40
+ spec.add_development_dependency 'simplecov', '~> 0.15.1'
40
41
  spec.add_development_dependency 'simplecov-console', '~> 0.4.2'
41
42
 
42
43
  spec.add_runtime_dependency 'addressable', '~> 2.5'
43
44
  spec.add_runtime_dependency 'color_echo', '~> 3.1'
44
- spec.add_runtime_dependency 'json', '~> 2.1'
45
- spec.add_runtime_dependency 'nokogiri', '~> 1.10.4'
45
+ spec.add_runtime_dependency 'json', '~> 2.3.0'
46
+ spec.add_runtime_dependency 'nokogiri', '~> 1.11.1'
46
47
  spec.add_runtime_dependency 'parallel', '~> 1.11'
47
48
  spec.add_runtime_dependency 'ruby-mysql', '~> 2.9'
48
49
  spec.add_runtime_dependency 'selenium-webdriver', '~> 3.142'
@@ -8,6 +8,9 @@ services:
8
8
  volumes:
9
9
  - .:/bucky-core
10
10
  tty: true
11
+ depends_on:
12
+ - chrome
13
+ - web
11
14
  chrome:
12
15
  container_name: bucky-chrome
13
16
  image: selenium/standalone-chrome-debug:3.141.59-oxygen
data/exe/bucky CHANGED
@@ -83,6 +83,9 @@ end
83
83
  opts.on('-l', '--label LABEL_NAME') do |v|
84
84
  test_cond[:label] = v
85
85
  end
86
+ opts.on('--xl', '--exclude_label EXCLUDE_LABEL_NAME') do |v|
87
+ test_cond[:xlabel] = v
88
+ end
86
89
  opts.on('-m', '--link_check_max_times') do |v|
87
90
  test_cond[:link_check_max_times] = v.to_i
88
91
  end
@@ -148,6 +148,11 @@ module Bucky
148
148
  suite[:cases].delete_if { |c| c[:labels].nil? }
149
149
  suite[:cases].delete_if { |c| !(test_cond[:label].sort - [c[:labels]].flatten.sort).empty? }
150
150
  end
151
+ # Exclude by label
152
+ if test_cond.key? :xlabel
153
+ # Delete test case that have specify label
154
+ suite[:cases].delete_if { |c| (test_cond[:xlabel].sort - [c[:labels]].flatten.sort).empty? }
155
+ end
151
156
  # If there is no option, do nothing.
152
157
  return suite unless test_cond.key? :case
153
158
 
@@ -34,7 +34,11 @@ module Bucky
34
34
  # If number of requests is over redirect limit
35
35
  return { error_message: "\n[Redirect Error] #{url} is redirected more than #{REDIRECT_LIMIT}" } if redirect_count > REDIRECT_LIMIT
36
36
 
37
- check_result = check_log_and_get_response(url, device, link_check_max_times, url_log)
37
+ begin
38
+ check_result = check_log_and_get_response(url, device, link_check_max_times, url_log)
39
+ rescue Net::ReadTimeout => e
40
+ return { error_message: "#{e.message} Please check this url: #{url}" }
41
+ end
38
42
  # If result include response continue to check, else return result
39
43
  !check_result.key?(:response) ? (return check_result) : response = check_result[:response]
40
44
 
@@ -46,13 +50,8 @@ module Bucky
46
50
  puts " #{url} ... [#{response.code}:OK]"
47
51
  { entity: response.entity }
48
52
  when /3[0-9]{2}/
49
- fqdn = url[%r{^(https?:\/\/([a-zA-Z0-9\-_.]+))}]
50
- redirect_url = response['location']
51
- # Add fqdn if location doesn't include fqdn
52
- redirect_url = fqdn << redirect_url unless redirect_url.include?('http')
53
- puts " #{url} ... redirect to #{redirect_url} [#{response.code}:RD]"
54
- http_status_check_args = { url: redirect_url, device: device, link_check_max_times: link_check_max_times, url_log: url_log, redirect_count: redirect_count + 1, redirect_url_list: redirect_url_list }
55
- http_status_check(http_status_check_args)
53
+ http_status_check_args = { url: url, device: device, link_check_max_times: link_check_max_times, url_log: url_log, redirect_count: redirect_count + 1, redirect_url_list: redirect_url_list }
54
+ redirect_and_http_status_check(response, http_status_check_args)
56
55
  when /(4|5)[0-9]{2}/
57
56
  url_log[url][:error_message] = "[Status Error] http status returned #{response.code}.\ncheck this url: #{redirect_url_list.join(' -> ')}"
58
57
  puts " #{url} ... [#{response.code}:NG]"
@@ -82,12 +81,12 @@ module Bucky
82
81
  # Check base url
83
82
  http_status_check_args = { url: url, device: device, link_check_max_times: link_check_max_times, url_log: url_log, redirect_count: 0, redirect_url_list: [] }
84
83
  base_response = http_status_check(http_status_check_args)
85
- assert_nil(base_response[:error_message], "Response of base URL is incorrect.\n#{base_response[:error_message]}")
84
+ raise Test::Unit::AssertionFailedError, "Response of base URL is incorrect.\n#{base_response[:error_message]}" unless base_response[:error_message].nil?
86
85
 
87
86
  # Collect links
88
87
  links_args = { base_url: base_url, base_fqdn: base_fqdn, url_reg: url_reg, only_same_fqdn: only_same_fqdn, entity: base_response[:entity] }
89
88
  links = make_target_links(links_args)
90
- links = exclude(links, exclude_urls) unless exclude_urls.nil?
89
+ links = exclude(links, exclude_urls)
91
90
 
92
91
  errors = []
93
92
  Parallel.each(links.uniq, in_threads: Bucky::Utils::Config.instance[:linkstatus_thread_num]) do |link|
@@ -96,7 +95,7 @@ module Bucky
96
95
  link_response = http_status_check(http_status_check_args)
97
96
  errors << link_response[:error_message] if link_response[:error_message]
98
97
  end
99
- assert_empty(errors, errors.join("\n"))
98
+ raise Test::Unit::AssertionFailedError, errors.join("\n") unless errors.empty?
100
99
  end
101
100
 
102
101
  def make_target_links(args)
@@ -109,7 +108,7 @@ module Bucky
109
108
  doc = Nokogiri::HTML.parse(entity)
110
109
  links = []
111
110
  doc.xpath('//a').each do |node|
112
- href = node.attr('href')
111
+ href = node.attr('href')&.split(' ')&.first # Patch for nokogiri's bug
113
112
  next if exclude_href?(href)
114
113
 
115
114
  # Add fqdn if href doesn't include fqdn
@@ -128,6 +127,8 @@ module Bucky
128
127
 
129
128
  # Exclude non test target url
130
129
  def exclude(links, exclude_urls)
130
+ return links if exclude_urls.nil?
131
+
131
132
  excluded_links = links - exclude_urls
132
133
 
133
134
  # Exclude url if it has "*" in the last of it
@@ -178,6 +179,16 @@ module Bucky
178
179
  href.insert(0, '/') unless href.match(%r{^/|^#})
179
180
  base_url + href
180
181
  end
182
+
183
+ def redirect_and_http_status_check(response, http_status_check_args)
184
+ fqdn = http_status_check_args[:url][%r{^(https?:\/\/([a-zA-Z0-9\-_.]+))}]
185
+ redirect_url = response['location']
186
+ # Add fqdn if location doesn't include fqdn
187
+ redirect_url = fqdn << redirect_url unless redirect_url.include?('http')
188
+ puts " #{http_status_check_args[:url]} ... redirect to #{redirect_url} [#{response.code}:RD]"
189
+ http_status_check_args[:url] = redirect_url
190
+ http_status_check(http_status_check_args)
191
+ end
181
192
  end
182
193
  end
183
194
  end
data/lib/bucky/version.rb CHANGED
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Bucky
4
4
  module Version
5
- VERSION = '0.10.4'
5
+ VERSION = '0.10.9'
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  :selenium_ip: 'docker_host_ip' # Default selenium ip. please set ip or 'docker_host_ip'. ip route | awk 'NR==1 {print $3}'
2
2
  :selenium_port: '4444' # Default selenium port
3
3
  :browser: :chrome # Only chrome
4
- :headless: false
4
+ :headless: true
5
5
  :e2e_parallel_num: 1
6
6
  :sp_device_name: :iphone
7
7
  :tablet_device_name: :ipad
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'bucky/test_equipment/pageobject/base_pageobject'
3
+ require '/bucky-core/lib/bucky/test_equipment/pageobject/base_pageobject'
4
4
  module Services
5
5
  module ServiceA
6
6
  module Pc
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'bucky/test_equipment/verifications/e2e_verification'
3
+ require '/bucky-core/lib/bucky/test_equipment/verifications/e2e_verification'
4
4
  module Services
5
5
  module ServiceA
6
6
  module Pc
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'bucky/test_equipment/pageobject/base_pageobject'
3
+ require '/bucky-core/lib/bucky/test_equipment/pageobject/base_pageobject'
4
4
 
5
5
  module Services
6
6
  module ServiceA
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'bucky/test_equipment/pageobject/base_pageobject'
3
+ require '/bucky-core/lib/bucky/test_equipment/pageobject/base_pageobject'
4
4
 
5
5
  module Services
6
6
  module ServiceA
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bucky-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.4
4
+ version: 0.10.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - NaotoKishino
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: exe
15
15
  cert_chain: []
16
- date: 2020-03-16 00:00:00.000000000 Z
16
+ date: 2021-02-09 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: awesome_print
@@ -147,14 +147,28 @@ dependencies:
147
147
  requirements:
148
148
  - - "~>"
149
149
  - !ruby/object:Gem::Version
150
- version: '0.63'
150
+ version: 0.68.1
151
151
  type: :development
152
152
  prerelease: false
153
153
  version_requirements: !ruby/object:Gem::Requirement
154
154
  requirements:
155
155
  - - "~>"
156
156
  - !ruby/object:Gem::Version
157
- version: '0.63'
157
+ version: 0.68.1
158
+ - !ruby/object:Gem::Dependency
159
+ name: simplecov
160
+ requirement: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - "~>"
163
+ - !ruby/object:Gem::Version
164
+ version: 0.15.1
165
+ type: :development
166
+ prerelease: false
167
+ version_requirements: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - "~>"
170
+ - !ruby/object:Gem::Version
171
+ version: 0.15.1
158
172
  - !ruby/object:Gem::Dependency
159
173
  name: simplecov-console
160
174
  requirement: !ruby/object:Gem::Requirement
@@ -203,28 +217,28 @@ dependencies:
203
217
  requirements:
204
218
  - - "~>"
205
219
  - !ruby/object:Gem::Version
206
- version: '2.1'
220
+ version: 2.3.0
207
221
  type: :runtime
208
222
  prerelease: false
209
223
  version_requirements: !ruby/object:Gem::Requirement
210
224
  requirements:
211
225
  - - "~>"
212
226
  - !ruby/object:Gem::Version
213
- version: '2.1'
227
+ version: 2.3.0
214
228
  - !ruby/object:Gem::Dependency
215
229
  name: nokogiri
216
230
  requirement: !ruby/object:Gem::Requirement
217
231
  requirements:
218
232
  - - "~>"
219
233
  - !ruby/object:Gem::Version
220
- version: 1.10.4
234
+ version: 1.11.1
221
235
  type: :runtime
222
236
  prerelease: false
223
237
  version_requirements: !ruby/object:Gem::Requirement
224
238
  requirements:
225
239
  - - "~>"
226
240
  - !ruby/object:Gem::Version
227
- version: 1.10.4
241
+ version: 1.11.1
228
242
  - !ruby/object:Gem::Dependency
229
243
  name: parallel
230
244
  requirement: !ruby/object:Gem::Requirement
@@ -453,15 +467,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
453
467
  requirements:
454
468
  - - ">="
455
469
  - !ruby/object:Gem::Version
456
- version: 2.4.2
470
+ version: '2.5'
457
471
  required_rubygems_version: !ruby/object:Gem::Requirement
458
472
  requirements:
459
473
  - - ">="
460
474
  - !ruby/object:Gem::Version
461
475
  version: '0'
462
476
  requirements: []
463
- rubyforge_project:
464
- rubygems_version: 2.6.13
477
+ rubygems_version: 3.0.3
465
478
  signing_key:
466
479
  specification_version: 4
467
480
  summary: System testing framework for web application.