bucky-core 0.10.15 → 0.10.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +1 -1
- data/.rubocop.yml +4 -4
- data/Dockerfile +1 -0
- data/Dockerfile.dev +41 -0
- data/Dockerfile.system-test +23 -22
- data/README.md +2 -0
- data/docker-compose.dev-with-bm.yml +1 -1
- data/docker-compose.dev.yml +1 -1
- data/exe/bucky +16 -22
- data/lib/bucky/core/test_core/test_case_loader.rb +1 -2
- data/lib/bucky/core/test_core/test_class_generator.rb +4 -3
- data/lib/bucky/core/test_core/test_manager.rb +64 -8
- data/lib/bucky/test_equipment/test_case/abst_test_case.rb +7 -0
- data/lib/bucky/test_equipment/verifications/status_checker.rb +7 -4
- data/lib/bucky/version.rb +1 -1
- data/system_testing/test_bucky_project/services/service_a/pc/scenarios/linkstatus/pc_link_exclude_asterisk.yml +12 -0
- data/system_testing/test_bucky_project/services/service_a/pc/scenarios/linkstatus/pc_link_exclude_normal.yml +12 -0
- data/system_testing/test_bucky_project/services/service_a/pc/scenarios/linkstatus/pc_link_exclude_regex.yml +12 -0
- data/system_testing/test_specification.md +34 -17
- data/system_testing/testing_code/command.bats +4 -4
- data/system_testing/testing_code/e2e.bats +17 -17
- data/system_testing/testing_code/linkstatus.bats +24 -5
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d50742f901d8276de5e234afde280ec7692be426842f815647b192f31f6b90ab
|
4
|
+
data.tar.gz: e833afdea6d437f15eddade5331ac729139414c202bb86ac39c8d9f7128f557a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4fb55a0a3306935a41ecfde2004b3de2c1c3d8aacfdf18a62187b75296ea536af7a7bc622a224aa3cd494ebf6a4f90476dd61b6dc0e1fc83ecaef142521c5b3a
|
7
|
+
data.tar.gz: 660d128ae6ab97185df4eee3478dfb76f683f1d7e0d6386d8853b42bb2d7b6bb096ba36440536414902b632215452e4688177f59e2650ce46a38b24c57eb5058
|
data/.circleci/config.yml
CHANGED
@@ -27,7 +27,7 @@ jobs:
|
|
27
27
|
command: docker load -q -i ~/caches/images.tar
|
28
28
|
- run:
|
29
29
|
name: docker up
|
30
|
-
command: docker-compose -f docker-compose.system-test.yml up
|
30
|
+
command: docker-compose -f docker-compose.system-test.yml up -d
|
31
31
|
- run:
|
32
32
|
name: execute system testing
|
33
33
|
command: 'circleci tests glob system_testing/testing_code/*.bats | xargs -n 1 -I {} docker exec bucky-core bats "/bucky-core/"{} | circleci tests split'
|
data/.rubocop.yml
CHANGED
@@ -13,7 +13,7 @@ AllCops:
|
|
13
13
|
AbcSize:
|
14
14
|
Enabled: false
|
15
15
|
|
16
|
-
# Allow method prefix start with
|
16
|
+
# Allow method prefix start with 'set_' and 'get_'
|
17
17
|
AccessorMethodName:
|
18
18
|
Enabled: false
|
19
19
|
|
@@ -46,7 +46,7 @@ FrozenStringLiteralComment:
|
|
46
46
|
GlobalVars:
|
47
47
|
AllowedVariables: [$bucky_home_dir, $debug, $job_id, $round]
|
48
48
|
|
49
|
-
# Not allow using
|
49
|
+
# Not allow using '->' for multi-line lambdas.
|
50
50
|
Lambda:
|
51
51
|
Enabled: false
|
52
52
|
|
@@ -61,7 +61,7 @@ MethodLength:
|
|
61
61
|
Enabled: false
|
62
62
|
|
63
63
|
ModuleLength:
|
64
|
-
Max:
|
64
|
+
Max: 140
|
65
65
|
Exclude:
|
66
66
|
- 'spec/**/*.rb'
|
67
67
|
|
@@ -77,4 +77,4 @@ ClassLength:
|
|
77
77
|
|
78
78
|
Lint/UselessAccessModifier:
|
79
79
|
Exclude:
|
80
|
-
- 'example/**/*'
|
80
|
+
- 'example/**/*'
|
data/Dockerfile
CHANGED
data/Dockerfile.dev
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
FROM ruby:2.5.8-alpine
|
2
|
+
ENV LANG ja_JP.UTF-8
|
3
|
+
ENV PAGER busybox less
|
4
|
+
|
5
|
+
RUN apk update && \
|
6
|
+
apk upgrade && \
|
7
|
+
apk add --update\
|
8
|
+
bash \
|
9
|
+
build-base \
|
10
|
+
curl-dev \
|
11
|
+
iproute2-minimal \
|
12
|
+
git \
|
13
|
+
libxml2-dev \
|
14
|
+
libxslt-dev \
|
15
|
+
linux-headers \
|
16
|
+
mysql-dev \
|
17
|
+
openssh \
|
18
|
+
ruby-dev \
|
19
|
+
ruby-json \
|
20
|
+
tzdata \
|
21
|
+
yaml \
|
22
|
+
yaml-dev \
|
23
|
+
zlib-dev
|
24
|
+
|
25
|
+
ENV BC_DIR /bucky-core/
|
26
|
+
ENV PATH /bucky-core/exe/:$PATH
|
27
|
+
WORKDIR $BC_DIR
|
28
|
+
COPY . $BC_DIR
|
29
|
+
RUN \
|
30
|
+
gem install bundler -v 1.17.3 && \
|
31
|
+
echo 'gem: --no-document' >> ~/.gemrc && \
|
32
|
+
cp ~/.gemrc /etc/gemrc && \
|
33
|
+
chmod uog+r /etc/gemrc && \
|
34
|
+
bundle config --global build.nokogiri --use-system-libraries && \
|
35
|
+
bundle config --global jobs 4 && \
|
36
|
+
bundle install && \
|
37
|
+
rm -rf ~/.gem
|
38
|
+
|
39
|
+
WORKDIR /app
|
40
|
+
RUN chown -R nobody:nobody /app
|
41
|
+
USER nobody
|
data/Dockerfile.system-test
CHANGED
@@ -3,30 +3,31 @@ ENV LANG ja_JP.UTF-8
|
|
3
3
|
ENV PAGER busybox less
|
4
4
|
|
5
5
|
RUN apk update && \
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
6
|
+
apk upgrade && \
|
7
|
+
apk add --update\
|
8
|
+
bash \
|
9
|
+
build-base \
|
10
|
+
curl-dev \
|
11
|
+
git \
|
12
|
+
iproute2-minimal \
|
13
|
+
libxml2-dev \
|
14
|
+
libxslt-dev \
|
15
|
+
linux-headers \
|
16
|
+
mysql-dev \
|
17
|
+
openssh \
|
18
|
+
ruby-dev \
|
19
|
+
ruby-json \
|
20
|
+
tzdata \
|
21
|
+
yaml \
|
22
|
+
yaml-dev \
|
23
|
+
zlib-dev \
|
24
|
+
curl \
|
25
|
+
parallel
|
25
26
|
|
26
27
|
RUN git clone https://github.com/bats-core/bats-core.git /tmp/bats-core \
|
27
|
-
|
28
|
-
|
29
|
-
|
28
|
+
&& cd /tmp/bats-core \
|
29
|
+
&& ./install.sh /usr/local \
|
30
|
+
&& rm -rf /tmp/bats-core
|
30
31
|
|
31
32
|
ENV BC_DIR /bucky-core/
|
32
33
|
ENV PATH /bucky-core/exe/:$PATH
|
data/README.md
CHANGED
@@ -98,6 +98,7 @@ ENV_FOO=foo bucky run -t e2e -d
|
|
98
98
|
-r, --re_test_count RE_TEST_COUNT # How many round you run tests
|
99
99
|
-l, --label LABEL_NAME
|
100
100
|
-m, --link_check_max_times MAX_TIMES # Works only with which category is linkstatus
|
101
|
+
-o, --out JSON_OUTPUT_FILE_PATH # Output summary report by json
|
101
102
|
```
|
102
103
|
|
103
104
|
### Rerun test
|
@@ -212,6 +213,7 @@ test_category: linkstatus
|
|
212
213
|
exclude_urls:
|
213
214
|
- https://example.com/fuga/?hoge=1 # PERFECT MATCHING
|
214
215
|
- https://example.com/fuga/* # PARTIAL MATCHING
|
216
|
+
- /https://example.com/.*\.html/ # REGULAR EXPRESSION MATCHING
|
215
217
|
cases:
|
216
218
|
- case_name: test_code_1 # Suite filename + number
|
217
219
|
desc: status check for top page
|
data/docker-compose.dev.yml
CHANGED
data/exe/bucky
CHANGED
@@ -89,7 +89,9 @@ end
|
|
89
89
|
opts.on('-m', '--link_check_max_times') do |v|
|
90
90
|
test_cond[:link_check_max_times] = v.to_i
|
91
91
|
end
|
92
|
-
|
92
|
+
opts.on('-o', '--out JSON_OUTPUT_FILE_PATH') do |v|
|
93
|
+
test_cond[:out] = v
|
94
|
+
end
|
93
95
|
lint_cond = {}
|
94
96
|
opts.on('-C', '--category CATEGORY_NAME') do |v|
|
95
97
|
lint_cond[:lint_category] = v
|
@@ -124,42 +126,34 @@ def bucky_home?
|
|
124
126
|
File.exist?('.bucky_home')
|
125
127
|
end
|
126
128
|
|
127
|
-
|
128
|
-
gem_script_dir = __dir__
|
129
|
-
|
130
|
-
if ARGV == RUN_COMMAND
|
131
|
-
error_and_exit('Not bucky project dirctory here.') unless bucky_home?
|
132
|
-
|
133
|
-
$bucky_home_dir = Dir.pwd
|
129
|
+
def setup_test_cond(test_cond)
|
134
130
|
# Default conditions setting conditions setting
|
135
131
|
test_cond[:test_category] ||= 'e2e'
|
136
132
|
test_cond[:re_test_count] = test_cond[:re_test_count] ? test_cond[:re_test_count].to_i : 1
|
137
133
|
test_cond[:link_check_max_times] ||= 3
|
134
|
+
test_cond[:out] ||= 'report.json'
|
138
135
|
# Change to array e.g.--suite_id 1,2,3 -> :suite_id=>[1,2,3]
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
136
|
+
%i[suite_name case label xlabel device].each do |k|
|
137
|
+
test_cond[k] = test_cond[k].split(',') unless test_cond[k].nil?
|
138
|
+
end
|
139
|
+
test_cond
|
140
|
+
end
|
143
141
|
|
144
|
-
|
142
|
+
current_dir = Dir.pwd
|
143
|
+
gem_script_dir = __dir__
|
144
|
+
|
145
|
+
if ARGV[0].end_with? 'run'
|
146
|
+
error_and_exit('Not bucky project dirctory here.') unless bucky_home?
|
145
147
|
$bucky_home_dir = Dir.pwd
|
146
|
-
# Default conditions setting conditions setting
|
147
|
-
test_cond[:test_category] ||= 'e2e'
|
148
|
-
test_cond[:link_check_max_times] ||= 3
|
149
|
-
test_cond[:re_test_count] = test_cond[:re_test_count] ? test_cond[:re_test_count].to_i : 1
|
150
|
-
# Change to array e.g.--suite_id 1,2,3 -> :suite_id=>[1,2,3]
|
151
|
-
test_cond.each { |k, v| test_cond[k] = v.split(',') if v.instance_of?(String) }
|
152
148
|
require_relative '../lib/bucky/core/test_core/test_manager'
|
153
|
-
Bucky::Core::TestCore::TestManager.new(test_cond).
|
149
|
+
Bucky::Core::TestCore::TestManager.new(setup_test_cond(test_cond)).send(ARGV[0])
|
154
150
|
Bucky::Core::TestCore::ExitHandler.instance.bucky_exit
|
155
|
-
|
156
151
|
elsif ARGV == LINT_COMMAND
|
157
152
|
$bucky_home_dir = Dir.pwd
|
158
153
|
# Default conditions setting
|
159
154
|
lint_cond[:lint_category] ||= 'config'
|
160
155
|
require_relative '../lib/bucky/tools/lint'
|
161
156
|
Bucky::Tools::Lint.check(lint_cond[:lint_category])
|
162
|
-
|
163
157
|
elsif ARGV[0..0] == NEW_COMMAND
|
164
158
|
error_and_exit('No test app name.') if ARGV.length < 2
|
165
159
|
|
@@ -34,9 +34,8 @@ module Bucky
|
|
34
34
|
testcodes = []
|
35
35
|
service = (test_cond[:service] || ['*']).first
|
36
36
|
device = (test_cond[:device] || ['*']).first
|
37
|
-
category = (test_cond[:test_category] || ['*']).first
|
38
37
|
|
39
|
-
Dir.glob("#{$bucky_home_dir}/services/#{service}/#{device}/scenarios/#{
|
38
|
+
Dir.glob("#{$bucky_home_dir}/services/#{service}/#{device}/scenarios/#{test_cond[:test_category]}/*.yml").each do |testcode_file|
|
40
39
|
testcodes << load_testcode_in_file(testcode_file, test_cond)
|
41
40
|
end
|
42
41
|
# Delete nil element
|
@@ -46,7 +46,7 @@ module Bucky
|
|
46
46
|
end
|
47
47
|
|
48
48
|
# Genrate test class by test suite and test case data
|
49
|
-
def generate_test_class(data,
|
49
|
+
def generate_test_class(data: [], linkstatus_url_log: {}, w_pipe: {})
|
50
50
|
test_cond = @test_cond
|
51
51
|
# Common proccessing
|
52
52
|
# e.g.) TestSampleAppPcE2e1, TestSampleAppPcHttpstatus1
|
@@ -63,6 +63,7 @@ module Bucky
|
|
63
63
|
match_obj = /\Atest_(.+)\(.+::(Test.+)\)\z/.match(original_name)
|
64
64
|
"#{match_obj[1]}(#{match_obj[2]})"
|
65
65
|
end
|
66
|
+
define_method(:w_pipe, proc { w_pipe })
|
66
67
|
|
67
68
|
# Class structure is different for each test category
|
68
69
|
case data[:test_category]
|
@@ -74,8 +75,8 @@ module Bucky
|
|
74
75
|
define_method(method_name) do
|
75
76
|
puts "\n#{simple_test_class_name(name)}"
|
76
77
|
t_case[:urls].each do |url|
|
77
|
-
|
78
|
-
|
78
|
+
linkstatus_check_args = { url: url, device: data[:suite][:device], exclude_urls: data[:suite][:exclude_urls], link_check_max_times: test_cond[:link_check_max_times], url_log: linkstatus_url_log }
|
79
|
+
linkstatus_check(linkstatus_check_args)
|
79
80
|
end
|
80
81
|
end
|
81
82
|
)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'json'
|
4
4
|
require_relative '../test_core/test_case_loader'
|
5
5
|
require_relative '../../utils/config'
|
6
6
|
require_relative './test_class_generator'
|
@@ -26,6 +26,8 @@ module Bucky
|
|
26
26
|
# If child process dead, available workers increase
|
27
27
|
Signal.trap('CLD') { available_workers += 1 }
|
28
28
|
|
29
|
+
r_pipe, w_pipe = IO.pipe
|
30
|
+
|
29
31
|
data_set.each do |data|
|
30
32
|
# Wait until worker is available and handle exit code from previous process
|
31
33
|
unless available_workers.positive?
|
@@ -34,28 +36,51 @@ module Bucky
|
|
34
36
|
end
|
35
37
|
# Workers decrease when start working
|
36
38
|
available_workers -= 1
|
37
|
-
fork { block.call(data) }
|
39
|
+
fork { block.call(data, w_pipe) }
|
38
40
|
end
|
39
41
|
# Handle all exit code in waitall
|
40
42
|
Process.waitall.each do |child|
|
41
43
|
Bucky::Core::TestCore::ExitHandler.instance.raise unless child[1].exitstatus.zero?
|
42
44
|
end
|
45
|
+
|
46
|
+
w_pipe.close
|
47
|
+
results_set = collect_results_set(r_pipe)
|
48
|
+
r_pipe.close
|
49
|
+
|
50
|
+
results_set
|
43
51
|
end
|
44
52
|
|
45
53
|
def parallel_distribute_into_workers(data_set, max_processes, &block)
|
46
54
|
# Group the data by remainder of index
|
47
55
|
data_set_grouped = data_set.group_by.with_index { |_elem, index| index % max_processes }
|
56
|
+
r_pipe, w_pipe = IO.pipe
|
48
57
|
# Use 'values' method to get only hash's key into an array
|
49
58
|
data_set_grouped.values.each do |data_for_pre_worker|
|
50
59
|
# Number of child process is equal to max_processes (or equal to data_set length when data_set length is less than max_processes)
|
51
60
|
fork do
|
52
|
-
data_for_pre_worker.each { |data| block.call(data) }
|
61
|
+
data_for_pre_worker.each { |data| block.call(data, w_pipe) }
|
53
62
|
end
|
54
63
|
end
|
55
64
|
# Handle all exit code in waitall
|
56
65
|
Process.waitall.each do |child|
|
57
66
|
Bucky::Core::TestCore::ExitHandler.instance.raise unless child[1].exitstatus.zero?
|
58
67
|
end
|
68
|
+
|
69
|
+
w_pipe.close
|
70
|
+
results_set = collect_results_set(r_pipe)
|
71
|
+
r_pipe.close
|
72
|
+
|
73
|
+
results_set
|
74
|
+
end
|
75
|
+
|
76
|
+
def collect_results_set(r_pipe)
|
77
|
+
results_set = {}
|
78
|
+
r_pipe.each_line do |line|
|
79
|
+
r = JSON.parse(line)
|
80
|
+
results_set[r['test_class_name']] = r
|
81
|
+
end
|
82
|
+
|
83
|
+
results_set
|
59
84
|
end
|
60
85
|
end
|
61
86
|
|
@@ -69,6 +94,20 @@ module Bucky
|
|
69
94
|
@tdo = Bucky::Core::Database::TestDataOperator.new
|
70
95
|
@start_time = Time.now
|
71
96
|
$job_id = @tdo.save_job_record_and_get_job_id(@start_time, @test_cond[:command_and_option])
|
97
|
+
@json_report = {
|
98
|
+
summary: {
|
99
|
+
cases_count: 0,
|
100
|
+
success_count: 0,
|
101
|
+
failure_count: 0,
|
102
|
+
job_id: $job_id,
|
103
|
+
test_category: test_cond[:test_category],
|
104
|
+
device: test_cond[:device],
|
105
|
+
labels: test_cond[:label],
|
106
|
+
exclude_labels: test_cond[:xlabel],
|
107
|
+
rerun_job_id: test_cond[:job],
|
108
|
+
round_count: 0
|
109
|
+
}
|
110
|
+
}
|
72
111
|
end
|
73
112
|
|
74
113
|
def run
|
@@ -102,25 +141,42 @@ module Bucky
|
|
102
141
|
e2e_parallel_num = Bucky::Utils::Config.instance[:e2e_parallel_num]
|
103
142
|
linkstatus_parallel_num = Bucky::Utils::Config.instance[:linkstatus_parallel_num]
|
104
143
|
tcg = Bucky::Core::TestCore::TestClassGenerator.new(@test_cond)
|
105
|
-
case @test_cond[:test_category]
|
106
|
-
when 'e2e' then parallel_new_worker_each(test_suite_data, e2e_parallel_num) { |data| tcg.generate_test_class(data) }
|
144
|
+
case @test_cond[:test_category]
|
145
|
+
when 'e2e' then results_set = parallel_new_worker_each(test_suite_data, e2e_parallel_num) { |data, w_pipe| tcg.generate_test_class(data: data, w_pipe: w_pipe) }
|
107
146
|
when 'linkstatus' then
|
108
|
-
|
109
|
-
parallel_distribute_into_workers(test_suite_data, linkstatus_parallel_num) { |data| tcg.generate_test_class(data,
|
147
|
+
linkstatus_url_log = {}
|
148
|
+
results_set = parallel_distribute_into_workers(test_suite_data, linkstatus_parallel_num) { |data, w_pipe| tcg.generate_test_class(data: data, linkstatus_url_log: linkstatus_url_log, w_pipe: w_pipe) }
|
110
149
|
end
|
150
|
+
|
151
|
+
results_set
|
111
152
|
end
|
112
153
|
|
113
154
|
def execute_test
|
155
|
+
results_set = {}
|
114
156
|
@re_test_count.times do |i|
|
115
157
|
Bucky::Core::TestCore::ExitHandler.instance.reset
|
116
158
|
$round = i + 1
|
159
|
+
@json_report[:summary][:round_count] = $round
|
117
160
|
test_suite_data = load_test_suites
|
118
|
-
do_test_suites(test_suite_data)
|
161
|
+
results_set = do_test_suites(test_suite_data)
|
119
162
|
@test_cond[:re_test_cond] = @tdo.get_ng_test_cases_at_last_execution(
|
120
163
|
is_error: 1, job_id: $job_id, round: $round
|
121
164
|
)
|
122
165
|
break if @test_cond[:re_test_cond].empty?
|
123
166
|
end
|
167
|
+
|
168
|
+
return unless @test_cond[:out]
|
169
|
+
|
170
|
+
results_set.each do |_class_name, res|
|
171
|
+
@json_report[:summary][:cases_count] += res['cases_count']
|
172
|
+
@json_report[:summary][:success_count] += res['success_count']
|
173
|
+
@json_report[:summary][:failure_count] += res['failure_count']
|
174
|
+
end
|
175
|
+
|
176
|
+
File.open(@test_cond[:out], 'w') do |f|
|
177
|
+
f.puts(@json_report.to_json)
|
178
|
+
puts "\nSave report : #{@test_cond[:out]}\n"
|
179
|
+
end
|
124
180
|
end
|
125
181
|
end
|
126
182
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'test/unit'
|
4
|
+
require 'json'
|
4
5
|
require_relative '../../core/test_core/test_result'
|
5
6
|
|
6
7
|
module Bucky
|
@@ -25,6 +26,12 @@ module Bucky
|
|
25
26
|
def run(result)
|
26
27
|
super
|
27
28
|
@@this_result.result = result unless $debug
|
29
|
+
w_pipe.puts({
|
30
|
+
test_class_name: self.class.name,
|
31
|
+
cases_count: result.run_count,
|
32
|
+
success_count: result.pass_count,
|
33
|
+
failure_count: result.run_count - result.pass_count
|
34
|
+
}.to_json)
|
28
35
|
end
|
29
36
|
|
30
37
|
def setup
|
@@ -62,7 +62,7 @@ module Bucky
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
-
def
|
65
|
+
def linkstatus_check(args)
|
66
66
|
url = args[:url]
|
67
67
|
device = args[:device]
|
68
68
|
exclude_urls = args[:exclude_urls]
|
@@ -133,9 +133,12 @@ module Bucky
|
|
133
133
|
|
134
134
|
# Exclude url if it has "*" in the last of it
|
135
135
|
exclude_urls.each do |ex_url|
|
136
|
-
|
137
|
-
|
138
|
-
|
136
|
+
if ex_url.end_with?('*')
|
137
|
+
excluded_links.delete_if { |l| l.start_with?(ex_url.delete('*')) }
|
138
|
+
elsif ex_url.start_with?('/') && ex_url.end_with?('/')
|
139
|
+
ex_url.delete_prefix!('/').delete_suffix!('/')
|
140
|
+
excluded_links.delete_if { |l| l.match(/#{ex_url}/) }
|
141
|
+
end
|
139
142
|
end
|
140
143
|
|
141
144
|
excluded_links
|
data/lib/bucky/version.rb
CHANGED
@@ -0,0 +1,12 @@
|
|
1
|
+
desc: pc linkstatus test suites
|
2
|
+
device: pc
|
3
|
+
service: service_a
|
4
|
+
priority: high
|
5
|
+
test_category: linkstatus
|
6
|
+
exclude_urls:
|
7
|
+
- http://bucky.net/test*
|
8
|
+
cases:
|
9
|
+
- case_name: pc_link_exclude_asterisk_1
|
10
|
+
desc: pc linkstatus test 1
|
11
|
+
urls:
|
12
|
+
- http://bucky.net
|
@@ -0,0 +1,12 @@
|
|
1
|
+
desc: pc linkstatus test suites
|
2
|
+
device: pc
|
3
|
+
service: service_a
|
4
|
+
priority: high
|
5
|
+
test_category: linkstatus
|
6
|
+
exclude_urls:
|
7
|
+
- http://bucky.net/test_page.html
|
8
|
+
cases:
|
9
|
+
- case_name: pc_link_exclude_normal_1
|
10
|
+
desc: pc linkstatus test 1
|
11
|
+
urls:
|
12
|
+
- http://bucky.net
|
@@ -0,0 +1,12 @@
|
|
1
|
+
desc: pc linkstatus test suites
|
2
|
+
device: pc
|
3
|
+
service: service_a
|
4
|
+
priority: high
|
5
|
+
test_category: linkstatus
|
6
|
+
exclude_urls:
|
7
|
+
- /http://bucky.net/.*_page.*/
|
8
|
+
cases:
|
9
|
+
- case_name: pc_link_exclude_regex_1
|
10
|
+
desc: pc linkstatus test 1
|
11
|
+
urls:
|
12
|
+
- http://bucky.net
|
@@ -11,9 +11,13 @@ docker-compose -f docker-compose.system-test.yml down
|
|
11
11
|
```
|
12
12
|
|
13
13
|
# Test case specification
|
14
|
+
|
14
15
|
※ Only Japanese now.
|
16
|
+
|
15
17
|
※ テストケースNo.はbatsのケース説明部分に記載し、対応づけを行う
|
16
18
|
|
19
|
+
## E2Eテスト実行機能
|
20
|
+
|
17
21
|
| テスト条件 | テスト観点 | テストケース<br/>No. | テストケース | テスト手順 | 期待結果 |
|
18
22
|
|:--|:--|--:|:--|:--|:--|
|
19
23
|
| E2Eテスト実行機能 | Operateが正常に実行できるか<br/>・シナリオコードに実装されたOperateが実行できること<br/>・clickして遷移できること ※1種類のOperateができればOK<br/>ページタイトルで遷移したことを確認する | 1 | goを実行し正常に実行されること | 1. bucky run -t e2e -d -D pc -c pc_e2e_1<br/>- 以下シナリオファイル内の処理 -<br/>2. goメソッド実行 (http://bucky.net)<br/>3. assert_titleメソッド実行 | goメソッドを実行後にページ遷移されていること<br/>(assert_titleメソッドの結果がOKであることを出力される文字列で判断) |
|
@@ -25,20 +29,33 @@ docker-compose -f docker-compose.system-test.yml down
|
|
25
29
|
| | setup/teardown_eachが正常に動作するか | 7 | setup_eachでgoを実行し正常に実行されること | 1. bucky run -t e2e -d -D pc -c setup_each_pc_e2e_1<br/>- 以下シナリオファイル内の処理 -<br/>2. setup内でgoメソッド実行 (http://bucky.net)<br/>3. testcase内でassert_titleメソッド実行 | goメソッドを実行後にページ遷移されていること<br/>(assert_titleメソッドの結果がOKであることを出力される文字列で判断) |
|
26
30
|
| | | 8 | teardown_eachでgoを実行し正常に実行されること | 1. bucky run -t e2e -d -D pc -c teardown_each_pc_e2e_1<br/>- 以下シナリオファイル内の処理 -<br/>2. teardown内でgoメソッド実行 (http://bucky.net)<br/>3. testcase内でassert_titleメソッド実行 | 例外が発生していないこと(終了後のステータスが0であること)<br/>→ 「0 failures, 0 errors」 と表示されること |
|
27
31
|
| | | 9 | setup_each/teardownを実行するケースを複数ケース続けて実行して正常に動作すること | 1. bucky run -t e2e -d -D pc -c setup_teardown_each_pc_e2e_1,setup_teardown_each_pc_e2e_2 <br/>- 以下シナリオファイル内の処理 -<br/>2. setup内でgoメソッド実行 (http://bucky.net)<br/>3. assert_titleメソッド実行<br/>4. testcase内でteardown内でgoメソッド実行 (http://bucky.net)<br/>5. setup内でgoメソッド実行 (http://bucky.net)<br/>6. testcase内でassert_titleメソッド実行<br/>7. teardown内でgoメソッド実行 (http://bucky.net) | 例外が発生していないこと(終了後のステータスが0であること)<br/>→ 「0 failures, 0 errors」 と表示されること |
|
28
|
-
|
|
29
|
-
| |
|
30
|
-
| |
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
| | | 17 |
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
|
40
|
-
|
41
|
-
|
|
42
|
-
| |
|
43
|
-
|
|
44
|
-
| | |
|
32
|
+
| whenを使用しての実行時の動き | 出力されるメッセージに click が含まれるか<br/>例外が発生していないこと(終了後のステータスが0であること)<br/>→ 「0 failures, 0 errors」 と表示されること | 10 | 条件指定をしたテスト実行で不具合なくprocが実行されること | 1. STAGE=development bucky run -d -D -pc -c pc_e2e_4<br/>- 以下シナリオファイル内の処理 -<br/>2. goメソッド実行 (http://bucky.net)<br/>2. whenを使ったclickメソッド実行 | 例外が発生していないこと(終了後のステータスが0であること)<br/>→ 「0 failures, 0 errors」 と表示されること |
|
33
|
+
| | 出力されるメッセージに click が含まれないこと(終了後のステータスが0であること) | 11 | 条件指定をしないテスト実行で該当のprocが実行されないこと | 1. bucky run -d -D -pc -c pc_e2e_4<br/>- 以下シナリオファイル内の処理 -<br/>2. goメソッド実行 (http://bucky.net)<br/>2. whenを使ったclickメソッドは実行されない | 例外が発生していないこと(終了後のステータスが0であること)<br/>→ 「click」 が表示されないこと |
|
34
|
+
| | | 12 | 違う条件を指定したテスト実行で該当のprocが実行されないこと | 1. STAGE=staging bucky run -d -D -pc -c pc_e2e_4<br/>- 以下シナリオファイル内の処理 -<br/>2. goメソッド実行 (http://bucky.net)<br/>2. whenを使ったclickメソッドは実行されない | 例外が発生していないこと(終了後のステータスが0であること)<br/>→ 「click」 が表示されないこと |
|
35
|
+
| 複数パーツ取得・選択機能 | Partファイルで複数取得、番号指定でエレメントが取得できること | 13 | CSSセレクタで指定したエレメントの2つ目の要素をクリックできること | 1. bucky run -t e2e -d -D pc -c pc_e2e_5<br/>- 以下シナリオファイル内の処理 -<br/>2. goメソッド実行 (http://bucky.net)<br/>2. assert_textメソッド実行 | 終了後のステータスが0であること<br/>→ 「0 failures, 0 errors」 と表示されること |
|
36
|
+
| PageObjectでのWebElement取得 | PageObjectファイルからパーツ(WebElement)が取得できること | 14 | PageObjectファイルからパーツ名でWebElementが取得できること | 1. bucky run -t e2e -d -D pc -c pc_e2e_6<br/>- 以下シナリオファイル内の処理 -<br/>2. goメソッド実行 (http://bucky.net)<br/>2. PageObjectメソッド click_single_element | 終了後のステータスが0であること<br/>→ 「0 failures, 0 errors」 と表示されること |
|
37
|
+
| | | 15 | PageObjectファイルからパーツ名[数字]でWebElementが取得できること | 1. bucky run -t e2e -d -D pc -c pc_e2e_7<br/>- 以下シナリオファイル内の処理 -<br/>2. goメソッド実行 (http://bucky.net)<br/>2. PageObjectメソッド click_multiple_element | 終了後のステータスが0であること<br/>→ 「0 failures, 0 errors」 と表示されること |
|
38
|
+
| VerificationでのWebElement取得 | Verificationファイルからパーツ(WebElement)が取得できること | 16 | Verificationファイルからパーツ名でWebElementが取得できること | 1. bucky run -t e2e -d -D pc -c pc_e2e_8<br/>- 以下シナリオファイル内の処理 -<br/>2. goメソッド実行 (http://bucky.net)<br/>2. Verificationメソッド click_single_element | 終了後のステータスが0であること<br/>→ 「0 failures, 0 errors」 と表示されること |
|
39
|
+
| | | 17 | Verificationファイルからパーツ名[数字]でWebElementが取得できること | 1. bucky run -t e2e -d -D pc -c pc_e2e_9<br/>- 以下シナリオファイル内の処理 -<br/>2. goメソッド実行 (http://bucky.net)<br/>2. Verificationメソッド click_multiple_element | 終了後のステータスが0であること<br/>→ 「0 failures, 0 errors」 と表示されること |
|
40
|
+
|
41
|
+
## Linkstatusテスト実行機能
|
42
|
+
|
43
|
+
| テスト条件 | テスト観点 | テストケース<br/>No. | テストケース | テスト手順 | 期待結果 |
|
44
|
+
|:--|:--|--:|:--|:--|:--|
|
45
|
+
| LinkStatusテスト実行機能 | 起点URLの検証が正しく実施できるか | 1 | linkstatusを実行し、起点URLが検証されること | 1. bucky run -t linkstatus -d -D pc -c pc_link_1<br/>2. http://bucky.net に対してhttpリクエストチェック実行 | 出力に http://bucky.net が含まれること |
|
46
|
+
| | ページ内のリンクの検証が正しく実施できるか | 2 | linkstatusを実行し、起点ページ内のリンクが検証されること | 1. bucky run -t linkstatus -d -D pc -c pc_link_1<br/>2. http://bucky.net に対してhttpリクエストチェック実行<br/>3. http://bucky.net/test_page.html に対してLinkチェック実行 | 出力に http://bucky.net/test_page.htmlが含まれること |
|
47
|
+
| | 各デバイス(PC/SP)のUAで正常に実行できるか | 3 | デバイスPCでlinkstatusを実行し、正常に動作すること | 1. bucky run -t linkstatus -d -D pc -c pc_link_1<br/>2. http://bucky.net に対してhttpリクエストチェック実行<br/>3. http://bucky.net/test_page.html に対してLinkチェック実行 | 終了後のステータスが0であること<br/>→ 「0 failures, 0 errors」 と表示されること |
|
48
|
+
| | | 4 | linkstatusNGテストを実行し、正常に動作すること | 1. bucky run -t linkstatus -d -D pc -c pc_link_2<br/>2. http://bucky-error.net に対してhttpリクエストチェック実行 | 終了後のステータスが1であること |
|
49
|
+
| | | 5 | デバイスSPでlinkstatusを実行し、正常に動作すること | 1. bucky run -t linkstatus -d -D sp -c sp_link_1<br/>2. http://bucky.net に対してhttpリクエストチェック実行<br/>3. http://bucky.net/test_page.html チェック実行 | 終了後のステータスが0であること<br/>→ 「0 failures, 0 errors」 と表示されること |
|
50
|
+
| | | 6 | 通常のURL除外機能が正常に動作すること | 1. bucky run -t linkstatus -d -D pc -c pc_link_exclude_normal_1<br/>2. http://bucky.net に対してhttpリクエストチェック実行<br/>3. http://bucky.net/test_page.html チェック実行 | 終了後のステータスが0であること<br/>→ 出力に http://bucky.net/test_page.htmlが含まれないこと |
|
51
|
+
| | | 7 | アスタリスクを含むURL除外機能が正常に動作すること | 1. bucky run -t linkstatus -d -D pc -c pc_link_exclude_asterisk_1<br/>2. http://bucky.net に対してhttpリクエストチェック実行<br/>3. http://bucky.net/test_page.html チェック実行 | 終了後のステータスが0であること<br/>→ 出力に http://bucky.net/test_page.htmlが含まれないこと |
|
52
|
+
| | | 8 | 正規表現によるURL除外機能が正常に動作すること | 1. bucky run -t linkstatus -d -D pc -c pc_link_exclude_regex_1<br/>2. http://bucky.net に対してhttpリクエストチェック実行<br/>3. http://bucky.net/test_page.html チェック実行 | 終了後のステータスが0であること<br/>→ 出力に http://bucky.net/test_page.htmlが含まれないこと |
|
53
|
+
|
54
|
+
## Buckyコマンド実行機能
|
55
|
+
|
56
|
+
| テスト条件 | テスト観点 | テストケース<br/>No. | テストケース | テスト手順 | 期待結果 |
|
57
|
+
|:--|:--|--:|:--|:--|:--|
|
58
|
+
| テスト用のプロジェクト作成機能 | 下記の構造のディレクトリ、ファイルが生成されること<br/>(./template/new 以下の内容)<br/>.<br/>├── config<br/>│ ├── bucky_config.yml<br/>│ ├── e2e_config.yml<br/>│ ├── for_spec<br/>│ │ └── test.yml<br/>│ ├── linkstatus_config.yml<br/>│ └── test_db_config.yml<br/>├── services<br/>│ └── README.md<br/>└── system<br/>├── evidences<br/>│ ├── README.md<br/>│ └── screen_shots<br/>│ └── README.md<br/>└── logs<br/>└── README.md | 1 | newコマンド実行後に期待通りのファイル、ディレクトリが作成されていること | 1. bucky new test_project | 対象ディレクトリとファイルが存在していること |
|
59
|
+
| ページオブジェクト・パーツファイル作成機能 | 指定のサービス名、デバイスのディレクトリ以下に指定のページ名で.rbファイルと.ymlファイルが生成されること | 2 | make serviceコマンド実行後に期待通りのファイルが作成されていること | 1. (事前条件) bucky new test_project<br/>2. bucky make service test_service | 対象ディレクトリとファイルが存在していること |
|
60
|
+
| | | 3 | make pageコマンド実行後に期待通りのファイルが作成されていること | 1. (事前条件) bucky new test_project<br/>2. (事前条件) bucky make service test_service<br/>3. bucky make page test_page | 対象ディレクトリとファイルが存在していること |
|
61
|
+
| 未定義コマンド実行時の動き | 出力されるメッセージに Invalid command error. が含まれるか<br/>終了ステータスが 0 以外になるか | 4 | 未定義コマンド実行後にエラー終了すること | 1. bucky hoge fuga | 終了後のステータスが0以外であること |
|
@@ -13,19 +13,19 @@ teardown() {
|
|
13
13
|
rm -rf /tmp/$BUCKY_PROJECT_NAME
|
14
14
|
}
|
15
15
|
|
16
|
-
@test "#
|
16
|
+
@test "[command] #1 After executing 'new' command, expected files and directories are created" {
|
17
17
|
run diff /bucky-core/template/new/ /tmp/$BUCKY_PROJECT_NAME
|
18
18
|
[ $status -eq 0 ]
|
19
19
|
}
|
20
20
|
|
21
|
-
@test "#
|
21
|
+
@test "[command] #2 After executing 'make service' command, expected directory is created" {
|
22
22
|
cd /tmp/$BUCKY_PROJECT_NAME
|
23
23
|
bucky make service $TEST_SERVICE
|
24
24
|
run ls /tmp/$BUCKY_PROJECT_NAME/services/$TEST_SERVICE
|
25
25
|
[ $status -eq 0 ]
|
26
26
|
}
|
27
27
|
|
28
|
-
@test "#
|
28
|
+
@test "[command] #3 After executing 'make page' command, expected page and parts file are created" {
|
29
29
|
cd /tmp/$BUCKY_PROJECT_NAME
|
30
30
|
bucky make service $TEST_SERVICE
|
31
31
|
bucky make page test_page --service $TEST_SERVICE --device pc
|
@@ -35,7 +35,7 @@ teardown() {
|
|
35
35
|
[ $status -eq 0 ]
|
36
36
|
}
|
37
37
|
|
38
|
-
@test "#
|
38
|
+
@test "[command] #4 After executing undefined command, show error message and exit" {
|
39
39
|
cd /tmp/$BUCKY_PROJECT_NAME
|
40
40
|
run bucky hoge fuga
|
41
41
|
[ $(expr "$output" : ".*Invalid command error.*") -ne 0 ]
|
@@ -4,99 +4,99 @@ setup() {
|
|
4
4
|
cd /bucky-core/system_testing/test_bucky_project
|
5
5
|
}
|
6
6
|
|
7
|
-
@test "#01 After executing e2e operate go, results have no failures nor errors" {
|
7
|
+
@test "[e2e] #01 After executing e2e operate go, results have no failures nor errors" {
|
8
8
|
run bucky run -t e2e -d -D pc -c pc_e2e_1
|
9
9
|
[ $(expr "$output" : ".*0 failures, 0 errors,.*") -ne 0 ]
|
10
10
|
}
|
11
11
|
|
12
|
-
@test "#02 After executing e2e verify assert_title, results contain verify words, no failures/errors and exit code is 0" {
|
12
|
+
@test "[e2e] #02 After executing e2e verify assert_title, results contain verify words, no failures/errors and exit code is 0" {
|
13
13
|
run bucky run -t e2e -d -D pc -c pc_e2e_1
|
14
14
|
[ $status -eq 0 ]
|
15
15
|
[ $(expr "$output" : ".*:verify.*assert_title.*") -ne 0 ]
|
16
16
|
[ $(expr "$output" : ".*0 failures, 0 errors,.*") -ne 0 ]
|
17
17
|
}
|
18
18
|
|
19
|
-
@test "#03 After executing e2e verify assert_title, results contain verify words and 1 failure and exit code is 1" {
|
19
|
+
@test "[e2e] #03 After executing e2e verify assert_title, results contain verify words and 1 failure and exit code is 1" {
|
20
20
|
run bucky run -t e2e -d -D pc -c pc_e2e_2
|
21
21
|
[ $status -eq 1 ]
|
22
22
|
[ $(expr "$output" : ".*:verify.*assert_title.*") -ne 0 ]
|
23
23
|
[ $(expr "$output" : ".*1 failures.*") -ne 0 ]
|
24
24
|
}
|
25
25
|
|
26
|
-
@test "#04 After executing e2e on pc , results contain 'Linux' and no failures/errors." {
|
26
|
+
@test "[e2e] #04 After executing e2e on pc , results contain 'Linux' and no failures/errors." {
|
27
27
|
run bucky run -t e2e -d -D pc -c pc_e2e_3
|
28
28
|
[ $(expr "$output" : ".*Linux.*") -ne 0 ]
|
29
29
|
[ $(expr "$output" : ".*0 failures, 0 errors,.*") -ne 0 ]
|
30
30
|
}
|
31
31
|
|
32
|
-
@test "#05 After executing e2e on sp , results contain 'iPhone' and no failures/errors." {
|
32
|
+
@test "[e2e] #05 After executing e2e on sp , results contain 'iPhone' and no failures/errors." {
|
33
33
|
run bucky run -t e2e -d -D sp -c sp_e2e_1
|
34
34
|
[ $(expr "$output" : ".*iPhone.*") -ne 0 ]
|
35
35
|
[ $(expr "$output" : ".*0 failures, 0 errors,.*") -ne 0 ]
|
36
36
|
}
|
37
37
|
|
38
|
-
@test "#06 After executing e2e on tablet , results contain 'iPad' and no failures/errors." {
|
38
|
+
@test "[e2e] #06 After executing e2e on tablet , results contain 'iPad' and no failures/errors." {
|
39
39
|
run bucky run -t e2e -d -D tablet -c tablet_e2e_1
|
40
40
|
[ $(expr "$output" : ".*iPad.*") -ne 0 ]
|
41
41
|
[ $(expr "$output" : ".*0 failures, 0 errors,.*") -ne 0 ]
|
42
42
|
}
|
43
43
|
|
44
|
-
@test "#07 After executing e2e operate go with setup each, results have no failures nor errors" {
|
44
|
+
@test "[e2e] #07 After executing e2e operate go with setup each, results have no failures nor errors" {
|
45
45
|
run bucky run -d -c setup_each_pc_e2e_1
|
46
46
|
[ $(expr "$output" : ".*0 failures, 0 errors,.*") -ne 0 ]
|
47
47
|
}
|
48
48
|
|
49
|
-
@test "#08 After executing e2e operate go with teardown each, results have no failures nor errors" {
|
49
|
+
@test "[e2e] #08 After executing e2e operate go with teardown each, results have no failures nor errors" {
|
50
50
|
run bucky run -d -c teardown_each_pc_e2e_1
|
51
51
|
[ $(expr "$output" : ".*0 failures, 0 errors,.*") -ne 0 ]
|
52
52
|
}
|
53
53
|
|
54
|
-
@test "#09 When setup and teardown is added, multiple test cases execute normally, results have no failures nor errors" {
|
54
|
+
@test "[e2e] #09 When setup and teardown is added, multiple test cases execute normally, results have no failures nor errors" {
|
55
55
|
run bucky run -d -s setup_teardown_each_pc_e2e
|
56
56
|
[ $(expr "$output" : ".*0 failures, 0 errors,.*") -ne 0 ]
|
57
57
|
}
|
58
58
|
|
59
|
-
@test "#
|
59
|
+
@test "[e2e] #10 When 'when condition' is added, results have no failures nor errors" {
|
60
60
|
export STAGE=development
|
61
61
|
run bucky run -t e2e -d -D pc -c pc_e2e_4
|
62
62
|
[ $(expr "$output" : ".*click.*") -ne 0 ]
|
63
63
|
[ $(expr "$output" : ".*0 failures, 0 errors,.*") -ne 0 ]
|
64
64
|
}
|
65
65
|
|
66
|
-
@test "#
|
66
|
+
@test "[e2e] #11 When 'when condition' is not added, results have no click procedure" {
|
67
67
|
run bucky run -t e2e -d -D pc -c pc_e2e_4
|
68
68
|
[ $(expr "$output" : ".*click.*") -eq 0 ]
|
69
69
|
[ $(expr "$output" : ".*0 failures, 0 errors,.*") -ne 0 ]
|
70
70
|
}
|
71
71
|
|
72
|
-
@test "#
|
72
|
+
@test "[e2e] #12 When 'different when condition' is added, results have no click procedure" {
|
73
73
|
export STAGE=staging
|
74
74
|
run bucky run -t e2e -d -D pc -c pc_e2e_4
|
75
75
|
[ $(expr "$output" : ".*click.*") -eq 0 ]
|
76
76
|
[ $(expr "$output" : ".*0 failures, 0 errors,.*") -ne 0 ]
|
77
77
|
}
|
78
78
|
|
79
|
-
@test "#
|
79
|
+
@test "[e2e] #13 When click second element from scenario, results have no failures nor errors" {
|
80
80
|
run bucky run -t e2e -d -D pc -c pc_e2e_5
|
81
81
|
[ $(expr "$output" : ".*0 failures, 0 errors,.*") -ne 0 ]
|
82
82
|
}
|
83
83
|
|
84
|
-
@test "#
|
84
|
+
@test "[e2e] #14 When click element from PageObject file, results have no failures nor errors" {
|
85
85
|
run bucky run -t e2e -d -D pc -c pc_e2e_6
|
86
86
|
[ $(expr "$output" : ".*0 failures, 0 errors,.*") -ne 0 ]
|
87
87
|
}
|
88
88
|
|
89
|
-
@test "#
|
89
|
+
@test "[e2e] #15 When click second element from PageObject file, results have no failures nor errors" {
|
90
90
|
run bucky run -t e2e -d -D pc -c pc_e2e_7
|
91
91
|
[ $(expr "$output" : ".*0 failures, 0 errors,.*") -ne 0 ]
|
92
92
|
}
|
93
93
|
|
94
|
-
@test "#
|
94
|
+
@test "[e2e] #16 When click element from Verification file, results have no failures nor errors" {
|
95
95
|
run bucky run -t e2e -d -D pc -c pc_e2e_8
|
96
96
|
[ $(expr "$output" : ".*0 failures, 0 errors,.*") -ne 0 ]
|
97
97
|
}
|
98
98
|
|
99
|
-
@test "#
|
99
|
+
@test "[e2e] #17 When click second element from Verification file, results have no failures nor errors" {
|
100
100
|
run bucky run -t e2e -d -D pc -c pc_e2e_9
|
101
101
|
[ $(expr "$output" : ".*0 failures, 0 errors,.*") -ne 0 ]
|
102
102
|
}
|
@@ -4,25 +4,44 @@ setup() {
|
|
4
4
|
cd /bucky-core/system_testing/test_bucky_project
|
5
5
|
}
|
6
6
|
|
7
|
-
@test "#
|
7
|
+
@test "[linkstatus] #1, #3 After executing linkstatus on pc, results contain target base url, no failures/errors and exit code is 0." {
|
8
8
|
run bucky run -t linkstatus -d -D pc -c pc_link_1
|
9
9
|
[ $status -eq 0 ]
|
10
10
|
[ $(expr "$output" : ".*http://bucky\.net.*") -ne 0 ]
|
11
11
|
[ $(expr "$output" : ".*0 failures, 0 errors,.*") -ne 0 ]
|
12
12
|
}
|
13
13
|
|
14
|
-
@test "#
|
14
|
+
@test "[linkstatus] #2 After executing linkstatus on pc, results contain target link url and no failures/errors." {
|
15
15
|
run bucky run -t linkstatus -d -D pc -c pc_link_1
|
16
16
|
[ $(expr "$output" : ".*http://bucky\.net/test_page.html.*") -ne 0 ]
|
17
17
|
[ $(expr "$output" : ".*0 failures, 0 errors,.*") -ne 0 ]
|
18
18
|
}
|
19
19
|
|
20
|
-
@test "#
|
20
|
+
@test "[linkstatus] #4 After executing linkstatus failed test, exit code is 1" {
|
21
21
|
run bucky run -t linkstatus -d -D pc -c pc_link_2
|
22
22
|
[ $status -eq 1 ]
|
23
23
|
}
|
24
24
|
|
25
|
-
@test "#
|
25
|
+
@test "[linkstatus] #5 After executing linkstatus on sp, results have no failures nor errors" {
|
26
26
|
run bucky run -t linkstatus -d -D sp -c sp_link_1
|
27
27
|
[ $(expr "$output" : ".*0 failures, 0 errors,.*") -ne 0 ]
|
28
|
-
}
|
28
|
+
}
|
29
|
+
|
30
|
+
@test "[linkstatus] #6 After executing linkstatus with excluding by normal, results not contain target link url and no failures/errors." {
|
31
|
+
run bucky run -t linkstatus -d -D pc -c pc_link_exclude_normal_1
|
32
|
+
[ $status -eq 0 ]
|
33
|
+
[ $(expr "$output" : ".*http://bucky\.net/test_page.html.*") -eq 0 ]
|
34
|
+
}
|
35
|
+
|
36
|
+
@test "[linkstatus] #7 After executing linkstatus with excluding by asterisk, results not contain target link url and no failures/errors." {
|
37
|
+
run bucky run -t linkstatus -d -D pc -c pc_link_exclude_asterisk_1
|
38
|
+
[ $status -eq 0 ]
|
39
|
+
[ $(expr "$output" : ".*http://bucky\.net/test_page.html.*") -eq 0 ]
|
40
|
+
}
|
41
|
+
|
42
|
+
@test "[linkstatus] #8 After executing linkstatus with excluding by regex, results not contain target link url and no failures/errors." {
|
43
|
+
run bucky run -t linkstatus -d -D pc -c pc_link_exclude_regex_1
|
44
|
+
[ $status -eq 0 ]
|
45
|
+
[ $(expr "$output" : ".*http://bucky\.net/test_page.html.*") -eq 0 ]
|
46
|
+
}
|
47
|
+
|
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
|
+
version: 0.10.18
|
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:
|
16
|
+
date: 2022-05-23 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: awesome_print
|
@@ -330,6 +330,7 @@ files:
|
|
330
330
|
- ".rubocop.yml"
|
331
331
|
- ".rubocop_todo.yml"
|
332
332
|
- Dockerfile
|
333
|
+
- Dockerfile.dev
|
333
334
|
- Dockerfile.system-test
|
334
335
|
- Gemfile
|
335
336
|
- Gemfile.lock
|
@@ -425,6 +426,9 @@ files:
|
|
425
426
|
- system_testing/test_bucky_project/services/service_a/pc/scenarios/e2e/setup_teardown_each_pc_e2e.yml
|
426
427
|
- system_testing/test_bucky_project/services/service_a/pc/scenarios/e2e/teardown_each_pc_e2e.yml
|
427
428
|
- system_testing/test_bucky_project/services/service_a/pc/scenarios/linkstatus/pc_link.yml
|
429
|
+
- system_testing/test_bucky_project/services/service_a/pc/scenarios/linkstatus/pc_link_exclude_asterisk.yml
|
430
|
+
- system_testing/test_bucky_project/services/service_a/pc/scenarios/linkstatus/pc_link_exclude_normal.yml
|
431
|
+
- system_testing/test_bucky_project/services/service_a/pc/scenarios/linkstatus/pc_link_exclude_regex.yml
|
428
432
|
- system_testing/test_bucky_project/services/service_a/pc/verifications/index.rb
|
429
433
|
- system_testing/test_bucky_project/services/service_a/sp/pageobject/index.rb
|
430
434
|
- system_testing/test_bucky_project/services/service_a/sp/parts/index.yml
|