bucky-core 0.9.2 → 0.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.circleci/config.yml +30 -9
- data/.circleci/deploy_to_rubygems.sh +14 -0
- data/.circleci/setup_rubygems.sh +3 -0
- data/.codeclimate.yml +4 -4
- data/.rubocop.yml +5 -1
- data/Dockerfile +1 -1
- data/Dockerfile.system-test +1 -1
- data/Gemfile.lock +8 -10
- data/README.md +2 -1
- data/bucky-core.gemspec +1 -1
- data/example/README.md +2 -1
- data/example/bucky-management/.bucky_home +2 -0
- data/example/bucky-management/README.md +55 -0
- data/example/bucky-management/config/bucky_config.yml +6 -0
- data/example/bucky-management/config/e2e_config.yml +14 -0
- data/example/bucky-management/config/linkstatus_config.yml +3 -0
- data/example/bucky-management/config/test_db_config.yml +8 -0
- data/example/bucky-management/services/README.md +1 -0
- data/example/bucky-management/services/bucky_example/pc/pageobject/github_search_list.rb +22 -0
- data/example/bucky-management/services/bucky_example/pc/pageobject/github_top.rb +22 -0
- data/example/bucky-management/services/bucky_example/pc/parts/github_search_list.yml +3 -0
- data/example/bucky-management/services/bucky_example/pc/parts/github_top.yml +6 -0
- data/example/bucky-management/services/bucky_example/pc/scenarios/e2e/search_and_assert.yml +39 -0
- data/example/bucky-management/services/bucky_example/pc/scenarios/linkstatus/github_top.yml +16 -0
- data/example/bucky-management/system/evidences/README.md +1 -0
- data/example/bucky-management/system/evidences/screen_shots/README.md +1 -0
- data/example/bucky-management/system/logs/README.md +1 -0
- data/example/hands-on/README.md +2 -2
- data/example/hands-on/config/e2e_config.yml +1 -2
- data/example/hands-on/services/bucky_hands_on/pc/pageobject/github_search_list.rb +0 -1
- data/example/hands-on/services/bucky_hands_on/pc/pageobject/github_top.rb +0 -1
- data/example/hands-on/services/bucky_hands_on/pc/scenarios/e2e/search_and_asseret.yml +1 -1
- data/lib/bucky/core/test_core/test_case_loader.rb +2 -2
- data/lib/bucky/core/test_core/test_class_generator.rb +0 -1
- data/lib/bucky/test_equipment/selenium_handler/webdriver_handler.rb +4 -4
- data/lib/bucky/test_equipment/test_case/e2e_test_case.rb +0 -7
- data/lib/bucky/tools/lint.rb +6 -5
- data/lib/bucky/utils/config.rb +10 -10
- data/lib/bucky/version.rb +1 -1
- data/system_testing/test_bucky_project/config/e2e_config.yml +1 -2
- data/template/make_page/pc/pageobject/sample_page.rb +0 -1
- data/template/make_page/sp/pageobject/sample_page.rb +0 -1
- data/template/make_page/tablet/pageobject/sample_page.rb +0 -1
- data/template/new/config/e2e_config.yml +1 -2
- metadata +23 -6
- data/lib/bucky/test_equipment/verifications/js_error_checker.rb +0 -23
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b538925ad0af273023e4bf5cec8ebdc5ea4b6cb3
|
|
4
|
+
data.tar.gz: 60b32a3055197e1e94f4d2c327d3ebee6f5d9570
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 88839d270a89265a649b8d1d5b51963cc03bc93456b5a532107e914a00e2116202f4cb65e7c9e15f87d9bcd1cb535f2e413587aabe6af855d3f18c598128f7a9
|
|
7
|
+
data.tar.gz: 61396fa09407f2e94ef6b0bd62245840ee450a0535c298cd51f8f8aa9d7cf380e1487551d8f04b783adc9f00dd360822348b23c9904717d2a98bb10c15e94740
|
data/.circleci/config.yml
CHANGED
|
@@ -16,19 +16,19 @@ jobs:
|
|
|
16
16
|
unit_test:
|
|
17
17
|
working_directory: ~/bucky-core
|
|
18
18
|
docker:
|
|
19
|
-
- image: circleci/ruby:2.4.
|
|
19
|
+
- image: circleci/ruby:2.4.2-node
|
|
20
20
|
environment:
|
|
21
|
-
CC_TEST_REPORTER_ID:
|
|
21
|
+
CC_TEST_REPORTER_ID: fd7bd9d517bdf8953c4d4803ca4ad7539d12d5c760048b8daf80cbc7d54fb262
|
|
22
22
|
steps:
|
|
23
23
|
- checkout
|
|
24
24
|
- type: cache-restore
|
|
25
|
-
key:
|
|
25
|
+
key: unit-test-{{ checksum "Gemfile.lock" }}
|
|
26
26
|
- run: bundle install --path vendor/bundle
|
|
27
27
|
- type: cache-save
|
|
28
|
-
key:
|
|
28
|
+
key: unit-test-{{ checksum "Gemfile.lock" }}
|
|
29
29
|
paths:
|
|
30
30
|
- vendor/bundle
|
|
31
|
-
|
|
31
|
+
# Download test-reporter
|
|
32
32
|
- run:
|
|
33
33
|
name: Setup Code Climate test-reporter
|
|
34
34
|
command: |
|
|
@@ -41,20 +41,33 @@ jobs:
|
|
|
41
41
|
./cc-test-reporter after-build --coverage-input-type simplecov --exit-code $?
|
|
42
42
|
syntax_check:
|
|
43
43
|
docker:
|
|
44
|
-
- image: circleci/ruby:2.4.
|
|
44
|
+
- image: circleci/ruby:2.4.2-node
|
|
45
45
|
steps:
|
|
46
46
|
- checkout
|
|
47
47
|
- type: cache-restore
|
|
48
|
-
key:
|
|
48
|
+
key: syntax-check-{{ checksum "Gemfile.lock" }}
|
|
49
49
|
- run: bundle install --path vendor/bundle
|
|
50
50
|
- type: cache-save
|
|
51
|
-
key:
|
|
51
|
+
key: syntax-check-{{ checksum "Gemfile.lock" }}
|
|
52
52
|
paths:
|
|
53
53
|
- vendor/bundle
|
|
54
54
|
- run: bundle exec rubocop -f html --out report.html
|
|
55
55
|
- store_artifacts:
|
|
56
56
|
path: report.html
|
|
57
|
-
|
|
57
|
+
publish:
|
|
58
|
+
docker:
|
|
59
|
+
- image: circleci/ruby:2.4.1
|
|
60
|
+
steps:
|
|
61
|
+
- add_ssh_keys:
|
|
62
|
+
finerprints:
|
|
63
|
+
- "6a:f3:d3:b5:a5:da:ce:e0:9f:22:f8:4a:2f:51:67:2b"
|
|
64
|
+
- checkout
|
|
65
|
+
- run:
|
|
66
|
+
name: Setup Rubygems
|
|
67
|
+
command: bash .circleci/setup_rubygems.sh
|
|
68
|
+
- run:
|
|
69
|
+
name: Update vresion.rb and publish on RubyGems
|
|
70
|
+
command: bash .circleci/deploy_to_rubygems.sh
|
|
58
71
|
workflows:
|
|
59
72
|
version: 2
|
|
60
73
|
test:
|
|
@@ -64,3 +77,11 @@ workflows:
|
|
|
64
77
|
lint:
|
|
65
78
|
jobs:
|
|
66
79
|
- syntax_check
|
|
80
|
+
deploy:
|
|
81
|
+
jobs:
|
|
82
|
+
- publish:
|
|
83
|
+
filters:
|
|
84
|
+
tags:
|
|
85
|
+
only: /^v[0-9]{1,}(\.[0-9]{1,}){2}$/
|
|
86
|
+
branches:
|
|
87
|
+
ignore: /.*/
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
VERSION=$(git describe --tags | sed -e 's/^v//')
|
|
2
|
+
git config user.email "bucky-operator@users.noreply.github.com"
|
|
3
|
+
git config user.name "bucky-operator"
|
|
4
|
+
# Update version.rb
|
|
5
|
+
sed -i '' -e "s/VERSION = '[0-9]\{1,\}.[0-9]\{1,\}.[0-9]\{1,\}'/VERSION = '$VERSION'/" lib/bucky/version.rb
|
|
6
|
+
git diff
|
|
7
|
+
git checkout master
|
|
8
|
+
git add lib/bucky/version.rb
|
|
9
|
+
git commit -m "Version $VERSION"
|
|
10
|
+
# Build and release gem
|
|
11
|
+
gem build bucky-core.gemspec
|
|
12
|
+
gem push "bucky-core-$VERSION.gem"
|
|
13
|
+
# Push to master
|
|
14
|
+
git push origin master
|
data/.codeclimate.yml
CHANGED
|
@@ -40,9 +40,9 @@ checks:
|
|
|
40
40
|
enabled: true
|
|
41
41
|
config:
|
|
42
42
|
threshold: #language-specific defaults. overrides affect all languages.
|
|
43
|
-
plugins:
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
# plugins:
|
|
44
|
+
# rubocop: # run by CircleCI
|
|
45
|
+
# enabled: true
|
|
46
|
+
# channel: rubocop-0-58
|
|
47
47
|
exclude_patterns:
|
|
48
48
|
- "spec/"
|
data/.rubocop.yml
CHANGED
|
@@ -8,7 +8,7 @@ AllCops:
|
|
|
8
8
|
- 'template/**/*'
|
|
9
9
|
- 'tmp/**/*'
|
|
10
10
|
- 'vendor/**/*'
|
|
11
|
-
TargetRubyVersion: 2.
|
|
11
|
+
TargetRubyVersion: 2.4
|
|
12
12
|
|
|
13
13
|
AbcSize:
|
|
14
14
|
Enabled: false
|
|
@@ -74,3 +74,7 @@ UselessAssignment:
|
|
|
74
74
|
|
|
75
75
|
ClassLength:
|
|
76
76
|
Max: 110
|
|
77
|
+
|
|
78
|
+
Lint/UselessAccessModifier:
|
|
79
|
+
Exclude:
|
|
80
|
+
- 'example/**/*'
|
data/Dockerfile
CHANGED
data/Dockerfile.system-test
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -29,17 +29,16 @@ GEM
|
|
|
29
29
|
docile (1.1.5)
|
|
30
30
|
ffi (1.10.0)
|
|
31
31
|
hirb (0.7.3)
|
|
32
|
-
jaro_winkler (1.5.
|
|
32
|
+
jaro_winkler (1.5.2)
|
|
33
33
|
json (2.1.0)
|
|
34
34
|
method_source (0.9.0)
|
|
35
35
|
mini_portile2 (2.4.0)
|
|
36
36
|
nokogiri (1.10.1)
|
|
37
37
|
mini_portile2 (~> 2.4.0)
|
|
38
38
|
parallel (1.12.1)
|
|
39
|
-
parser (2.
|
|
39
|
+
parser (2.6.3.0)
|
|
40
40
|
ast (~> 2.4.0)
|
|
41
41
|
power_assert (1.1.3)
|
|
42
|
-
powerpack (0.1.2)
|
|
43
42
|
pry (0.11.3)
|
|
44
43
|
coderay (~> 1.1.0)
|
|
45
44
|
method_source (~> 0.9.0)
|
|
@@ -66,16 +65,15 @@ GEM
|
|
|
66
65
|
rspec-support (3.7.0)
|
|
67
66
|
rspec_junit_formatter (0.3.0)
|
|
68
67
|
rspec-core (>= 2, < 4, != 2.12.0)
|
|
69
|
-
rubocop (0.
|
|
68
|
+
rubocop (0.68.1)
|
|
70
69
|
jaro_winkler (~> 1.5.1)
|
|
71
70
|
parallel (~> 1.10)
|
|
72
71
|
parser (>= 2.5, != 2.5.1.1)
|
|
73
|
-
powerpack (~> 0.1)
|
|
74
72
|
rainbow (>= 2.2.2, < 4.0)
|
|
75
73
|
ruby-progressbar (~> 1.7)
|
|
76
|
-
unicode-display_width (
|
|
74
|
+
unicode-display_width (>= 1.4.0, < 1.6)
|
|
77
75
|
ruby-mysql (2.9.14)
|
|
78
|
-
ruby-progressbar (1.
|
|
76
|
+
ruby-progressbar (1.10.0)
|
|
79
77
|
rubyzip (1.2.2)
|
|
80
78
|
selenium-webdriver (3.141.0)
|
|
81
79
|
childprocess (~> 0.5)
|
|
@@ -92,7 +90,7 @@ GEM
|
|
|
92
90
|
simplecov-html (0.10.2)
|
|
93
91
|
test-unit (3.3.0)
|
|
94
92
|
power_assert
|
|
95
|
-
unicode-display_width (1.
|
|
93
|
+
unicode-display_width (1.5.0)
|
|
96
94
|
|
|
97
95
|
PLATFORMS
|
|
98
96
|
ruby
|
|
@@ -108,8 +106,8 @@ DEPENDENCIES
|
|
|
108
106
|
rake (~> 12)
|
|
109
107
|
rspec (~> 3.6)
|
|
110
108
|
rspec_junit_formatter (~> 0.3)
|
|
111
|
-
rubocop (~> 0.
|
|
109
|
+
rubocop (~> 0.63)
|
|
112
110
|
simplecov-console (~> 0.4.2)
|
|
113
111
|
|
|
114
112
|
BUNDLED WITH
|
|
115
|
-
1.17.
|
|
113
|
+
1.17.3
|
data/README.md
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# Bucky-Core
|
|
2
|
+
[](https://circleci.com/gh/lifull-dev/bucky-core/tree/master) [](https://codeclimate.com/github/lifull-dev/bucky-core/maintainability) [](https://codeclimate.com/github/lifull-dev/bucky-core/test_coverage)
|
|
2
3
|
|
|
3
4
|
## Overview
|
|
4
5
|
Bucky-core can run test code which is written in YAML. End-to-End test (working with Selenium) and Linkstatus test (HTTP status check) are supported in default. Page object model pattern and page based element management is the main concept in Bucky-core. You can create scenarios and execute it easily by using Bucky-core.
|
|
@@ -12,7 +13,7 @@ When working with [Bucky-management](https://github.com/lifull-dev/bucky-managem
|
|
|
12
13
|
* Support test code in YAML
|
|
13
14
|
* Multiple browser supported (currently only Chrome is supported)
|
|
14
15
|
* Customizable test categories
|
|
15
|
-
* [Default] E2E: E2E (End to End) tests
|
|
16
|
+
* [Default] E2E: E2E (End to End) tests
|
|
16
17
|
* [Default] Linkstatus: http status code check in web page
|
|
17
18
|
* Making test report with [Bucky-management](https://github.com/lifull-dev/bucky-management)
|
|
18
19
|
|
data/bucky-core.gemspec
CHANGED
|
@@ -36,7 +36,7 @@ Gem::Specification.new do |spec|
|
|
|
36
36
|
spec.add_development_dependency 'rake', '~> 12'
|
|
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.
|
|
39
|
+
spec.add_development_dependency 'rubocop', '~> 0.63'
|
|
40
40
|
spec.add_development_dependency 'simplecov-console', '~> 0.4.2'
|
|
41
41
|
|
|
42
42
|
spec.add_runtime_dependency 'color_echo', '~> 3.1'
|
data/example/README.md
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
## You can check the example code in each directory
|
|
2
|
-
* [hands-on](https://github.com/lifull-dev/bucky-core/blob/master/example/hands-on)
|
|
2
|
+
* [hands-on](https://github.com/lifull-dev/bucky-core/blob/master/example/hands-on)
|
|
3
|
+
* [bcuky-management](https://github.com/lifull-dev/bucky-core/blob/master/example/bucky-management)
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Bucky-management
|
|
2
|
+
|
|
3
|
+
## What is this example doing
|
|
4
|
+
This example will show you how to connect to Bucky-management and how to get test report automatically.
|
|
5
|
+
|
|
6
|
+
## Before starting
|
|
7
|
+
Start Bucky-management with docker-compose.yml.
|
|
8
|
+
See [READEME](https://github.com/lifull-dev/bucky-management) in Bucky-management if you start it at first time.
|
|
9
|
+
```bash
|
|
10
|
+
# Execute this command in Bucky-management directory
|
|
11
|
+
docker-compose -f docker-compose.yml up --build -d
|
|
12
|
+
```
|
|
13
|
+
## 1. Move to you test project directory
|
|
14
|
+
- You can see how to make test project in [example/hands-on](https://github.com/lifull-dev/bucky-core/tree/master/example/hands-on)
|
|
15
|
+
```bash
|
|
16
|
+
# In this example, you can just stay in example/bucky-management
|
|
17
|
+
cd {test project name}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## 2. Sets connect information to DB
|
|
21
|
+
- Use default value as following if you didn't change anything in Bucky-management's docker-compose.yml
|
|
22
|
+
- Database name is according to what you set in RAILS_ENV when startup Bcuky-management
|
|
23
|
+
```
|
|
24
|
+
## config/test_db_config.yml ##
|
|
25
|
+
|
|
26
|
+
:test_db:
|
|
27
|
+
:bucky_test:
|
|
28
|
+
:username: root
|
|
29
|
+
:password: password
|
|
30
|
+
:database: bucky_test # When $RAILS_ENV=test
|
|
31
|
+
:host: 127.0.0.1
|
|
32
|
+
:port: 3306
|
|
33
|
+
:adapter: :mysql
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## 3. Execute test case without -d option
|
|
37
|
+
It will save test result into DB executing without debug option.
|
|
38
|
+
```bash
|
|
39
|
+
# These test case is already made. You can just execute them in example/bucky-management
|
|
40
|
+
bucky run -t e2e -D pc -c search_and_assert_1
|
|
41
|
+
bucky run -t linkstatus -D pc -c github_top_1
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## 4. Check your test report
|
|
45
|
+
Open your browser http://localhost
|
|
46
|
+
|
|
47
|
+
You will see two result shown in top page.
|
|
48
|
+
|
|
49
|
+
## At last
|
|
50
|
+
Congratulations!! You have just made your test report.
|
|
51
|
+
|
|
52
|
+
There are lots of information shown in reports.
|
|
53
|
+
It shows more information in each report's detail, e.g. pass rate, NG cases name, NG error message and so on.
|
|
54
|
+
|
|
55
|
+
Enjoy your test with Bucky!!
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
:selenium_ip: localhost # Default selenium ip. please set ip or 'docker_host_ip'. ip route | awk 'NR==1 {print $3}'
|
|
2
|
+
:selenium_port: '4444' # Default selenium port
|
|
3
|
+
:browser: :chrome # Only chrome
|
|
4
|
+
:headless: false
|
|
5
|
+
:sp_device_name: :iphone
|
|
6
|
+
:tablet_device_name: :ipad
|
|
7
|
+
:device_name_on_chrome:
|
|
8
|
+
:iphone: 'iPhone X'
|
|
9
|
+
:android: 'Galaxy S5'
|
|
10
|
+
:ipad: 'iPad'
|
|
11
|
+
:user_agent: 'E2ETest (X11; Linux x86_64)'
|
|
12
|
+
:driver_read_timeout: 60 # sec
|
|
13
|
+
:driver_open_timeout: 60 # sec
|
|
14
|
+
:find_element_timeout: 10 # sec
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
for services page and parts objects.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'bucky/test_equipment/pageobject/base_pageobject'
|
|
4
|
+
module Services
|
|
5
|
+
module BuckyExample
|
|
6
|
+
module Pc
|
|
7
|
+
module PageObject
|
|
8
|
+
class GithubSearchList < Bucky::TestEquipment::PageObject::BasePageObject
|
|
9
|
+
protected
|
|
10
|
+
|
|
11
|
+
# Add some user operations for this page
|
|
12
|
+
# Sample ====================
|
|
13
|
+
# @param [Hash] args
|
|
14
|
+
# def search_freeword(**args)
|
|
15
|
+
# freeword_form.send_keys(args[:word])
|
|
16
|
+
# freeword_form.submit
|
|
17
|
+
# end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'bucky/test_equipment/pageobject/base_pageobject'
|
|
4
|
+
module Services
|
|
5
|
+
module BuckyExample
|
|
6
|
+
module Pc
|
|
7
|
+
module PageObject
|
|
8
|
+
class GithubTop < Bucky::TestEquipment::PageObject::BasePageObject
|
|
9
|
+
protected
|
|
10
|
+
|
|
11
|
+
# Add some user operations for this page
|
|
12
|
+
# Sample ====================
|
|
13
|
+
# @param [Hash] args
|
|
14
|
+
# def search_freeword(**args)
|
|
15
|
+
# freeword_form.send_keys(args[:word])
|
|
16
|
+
# freeword_form.submit
|
|
17
|
+
# end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Describe for this test suite
|
|
2
|
+
desc: search in github and check page transition
|
|
3
|
+
device: pc
|
|
4
|
+
service: bucky_example
|
|
5
|
+
priority: high
|
|
6
|
+
test_category: e2e
|
|
7
|
+
labels:
|
|
8
|
+
- example
|
|
9
|
+
cases:
|
|
10
|
+
# You should create test case name as {test suite name + _ + number}
|
|
11
|
+
- case_name: search_and_assert_1
|
|
12
|
+
func: transition
|
|
13
|
+
desc: Should able to search bucky-core in github, and move to bucky-core page.
|
|
14
|
+
# Procedures to do in this case
|
|
15
|
+
procs:
|
|
16
|
+
- proc: Open github top page
|
|
17
|
+
exec:
|
|
18
|
+
operate: go
|
|
19
|
+
url: https://github.com/
|
|
20
|
+
- proc: Input 'bucky-core' in search bar
|
|
21
|
+
exec:
|
|
22
|
+
operate: input
|
|
23
|
+
page: github_top
|
|
24
|
+
part: search_bar
|
|
25
|
+
word: 'bucky-core'
|
|
26
|
+
- proc: Click search result
|
|
27
|
+
exec:
|
|
28
|
+
operate: click
|
|
29
|
+
page: github_top
|
|
30
|
+
part: search_resault
|
|
31
|
+
- proc: Click target result
|
|
32
|
+
exec:
|
|
33
|
+
operate: click
|
|
34
|
+
page: github_search_list
|
|
35
|
+
part: bucky_core_a_tag
|
|
36
|
+
- proc: assert_text
|
|
37
|
+
exec:
|
|
38
|
+
verify: assert_title
|
|
39
|
+
expect: 'GitHub - lifull-dev/bucky-core: System testing framework for web application.'
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Describe for this test suite
|
|
2
|
+
desc: Check all a tag in githib top
|
|
3
|
+
device: pc
|
|
4
|
+
service: bucky_example
|
|
5
|
+
priority: high
|
|
6
|
+
test_category: linkstatus
|
|
7
|
+
labels:
|
|
8
|
+
- example
|
|
9
|
+
# You can exclude url that you don't want to check
|
|
10
|
+
exclude_urls:
|
|
11
|
+
- https://github.com/customer-stories/*
|
|
12
|
+
cases:
|
|
13
|
+
- case_name: github_top_1
|
|
14
|
+
desc: Check github top
|
|
15
|
+
urls:
|
|
16
|
+
- https://github.com/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
for save evidence directory.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
for save screen shots directory.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
for save logs directory.
|
data/example/hands-on/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Hands-on
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## What is this example doing
|
|
4
4
|
It will show you how to create a project, service, page and some test code using Bucky command.
|
|
5
5
|
And will show you how to execute these test code.
|
|
6
6
|
|
|
@@ -148,7 +148,7 @@ cases:
|
|
|
148
148
|
- proc: assert_text
|
|
149
149
|
exec:
|
|
150
150
|
verify: assert_title
|
|
151
|
-
expect: 'GitHub - lifull-dev/bucky-core:
|
|
151
|
+
expect: 'GitHub - lifull-dev/bucky-core: System testing framework for web application.'
|
|
152
152
|
```
|
|
153
153
|
## 6. Create test code in Linkstatus category
|
|
154
154
|
* This step can't be done by Bucky command
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
:selenium_ip: localhost # 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
5
|
:sp_device_name: :iphone
|
|
5
6
|
:tablet_device_name: :ipad
|
|
6
7
|
:device_name_on_chrome:
|
|
@@ -8,8 +9,6 @@
|
|
|
8
9
|
:android: 'Galaxy S5'
|
|
9
10
|
:ipad: 'iPad'
|
|
10
11
|
:user_agent: 'E2ETest (X11; Linux x86_64)'
|
|
11
|
-
:js_error_check: true
|
|
12
|
-
:js_error_collector_path: '/var/lib/selenium/ChromeJSErrorCollector-master/extension' # https://github.com/dharrya/ChromeJSErrorCollector
|
|
13
12
|
:driver_read_timeout: 60 # sec
|
|
14
13
|
:driver_open_timeout: 60 # sec
|
|
15
14
|
:find_element_timeout: 10 # sec
|
|
@@ -8,7 +8,7 @@ labels:
|
|
|
8
8
|
- example
|
|
9
9
|
cases:
|
|
10
10
|
# You should create test case name as {test suite name + _ + number}
|
|
11
|
-
- case_name:
|
|
11
|
+
- case_name: search_and_assert_1
|
|
12
12
|
func: transition
|
|
13
13
|
desc: Should able to search bucky-core in github, and move to bucky-core page.
|
|
14
14
|
# Procedures to do in this case
|
|
@@ -49,14 +49,14 @@ module Bucky
|
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
def set_chrome_option(device_type)
|
|
52
|
-
chrome_options = { '
|
|
52
|
+
chrome_options = { 'chromeOptions' => { args: [] } }
|
|
53
53
|
unless device_type == 'pc'
|
|
54
54
|
device_type = "#{device_type}_device_name".to_sym
|
|
55
55
|
mobile_emulation = { 'deviceName' => @@config[:device_name_on_chrome][@@config[device_type]] }
|
|
56
|
-
chrome_options['
|
|
56
|
+
chrome_options['chromeOptions']['mobileEmulation'] = mobile_emulation
|
|
57
57
|
end
|
|
58
|
-
chrome_options['
|
|
59
|
-
chrome_options['
|
|
58
|
+
chrome_options['chromeOptions'][:args] << "--user-agent=#{@@config[:user_agent]}" if @@config[:user_agent]
|
|
59
|
+
chrome_options['chromeOptions'][:args] << '--headless' if @@config[:headless]
|
|
60
60
|
|
|
61
61
|
Selenium::WebDriver::Remote::Capabilities.chrome(chrome_options)
|
|
62
62
|
end
|
|
@@ -5,7 +5,6 @@ require_relative './abst_test_case'
|
|
|
5
5
|
require_relative '../user_operation/user_operator'
|
|
6
6
|
require_relative '../pageobject/pages'
|
|
7
7
|
require_relative '../selenium_handler/webdriver_handler'
|
|
8
|
-
require_relative '../verifications/js_error_checker'
|
|
9
8
|
require_relative '../verifications/service_verifications'
|
|
10
9
|
|
|
11
10
|
module Bucky
|
|
@@ -13,7 +12,6 @@ module Bucky
|
|
|
13
12
|
module TestCase
|
|
14
13
|
class E2eTestCase < Bucky::TestEquipment::TestCase::AbstTestCase
|
|
15
14
|
include Bucky::TestEquipment::SeleniumHandler::WebdriverHandler
|
|
16
|
-
include Bucky::TestEquipment::Verifications::JsErrorChecker
|
|
17
15
|
|
|
18
16
|
TEST_CATEGORY = 'e2e'
|
|
19
17
|
|
|
@@ -50,11 +48,6 @@ module Bucky
|
|
|
50
48
|
@user_operator.send(op_args[:operate], method_name, op_args)
|
|
51
49
|
end
|
|
52
50
|
|
|
53
|
-
# Check javascript error
|
|
54
|
-
def check_js_error
|
|
55
|
-
assert_no_js_error(@driver) if @@config[:js_error_check]
|
|
56
|
-
end
|
|
57
|
-
|
|
58
51
|
def setup
|
|
59
52
|
super
|
|
60
53
|
t_equip_setup
|
data/lib/bucky/tools/lint.rb
CHANGED
|
@@ -8,7 +8,7 @@ module Bucky
|
|
|
8
8
|
class << self
|
|
9
9
|
include Bucky::Utils::YamlLoad
|
|
10
10
|
@@config_dir = "#{$bucky_home_dir}/config/**/*yml"
|
|
11
|
-
@@rule_config_dir =
|
|
11
|
+
@@rule_config_dir = File.expand_path('../../../template/new/config', __dir__) + '/*yml'
|
|
12
12
|
|
|
13
13
|
def check(category)
|
|
14
14
|
method = "check_#{category}".to_sym
|
|
@@ -18,9 +18,9 @@ module Bucky
|
|
|
18
18
|
# If you want to add new category, please make new method
|
|
19
19
|
def check_config
|
|
20
20
|
data = merge_yaml_data(@@config_dir)
|
|
21
|
-
rule_data = merge_yaml_data(@@rule_config_dir)
|
|
21
|
+
@rule_data = merge_yaml_data(@@rule_config_dir)
|
|
22
22
|
actual = make_key_chain(data)
|
|
23
|
-
expect = make_key_chain(rule_data)
|
|
23
|
+
expect = make_key_chain(@rule_data)
|
|
24
24
|
diff = diff_arr(expect, actual)
|
|
25
25
|
make_message(diff)
|
|
26
26
|
end
|
|
@@ -41,9 +41,10 @@ module Bucky
|
|
|
41
41
|
if diff.empty?
|
|
42
42
|
puts "\e[32mok\e[0m"
|
|
43
43
|
else
|
|
44
|
-
puts "\e[31m[ERROR] The following configures are undefined."
|
|
44
|
+
puts "\e[31m[ERROR] The following configures are undefined. Tests can still be executed with default value automatically."
|
|
45
45
|
diff.each do |key|
|
|
46
|
-
puts "- #{key}
|
|
46
|
+
puts "- #{key}"
|
|
47
|
+
puts "{#{key}: #{@rule_data[:"#{key}"]}}\e[0m"
|
|
47
48
|
end
|
|
48
49
|
end
|
|
49
50
|
end
|
data/lib/bucky/utils/config.rb
CHANGED
|
@@ -10,31 +10,31 @@ module Bucky
|
|
|
10
10
|
include Singleton
|
|
11
11
|
@@dir = "#{$bucky_home_dir}/config/**/*yml"
|
|
12
12
|
|
|
13
|
+
attr_reader :data
|
|
13
14
|
# @param [String] *.yml or hoge/fuga.yml
|
|
14
15
|
def initialize
|
|
15
16
|
@data = {}
|
|
16
17
|
@resources = []
|
|
18
|
+
@default_config_dir = File.expand_path('../../../template/new/config', __dir__)
|
|
17
19
|
|
|
18
20
|
# Read from a file of shallow hierarchy, then overwrite it if there is same key in deep hierarchy
|
|
19
21
|
file_sort_hierarchy(@@dir).each do |file|
|
|
22
|
+
file_name = file.split('/').last
|
|
20
23
|
data = load_yaml(file)
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
default_config_data = load_yaml(@default_config_dir + '/' + file_name)
|
|
25
|
+
next if data.empty?
|
|
26
|
+
|
|
27
|
+
data = default_config_data.merge(data)
|
|
28
|
+
@data = @data.merge(data)
|
|
29
|
+
@resources << file
|
|
25
30
|
end
|
|
26
31
|
|
|
27
32
|
set_selenium_ip
|
|
28
33
|
end
|
|
29
34
|
|
|
30
|
-
# @return [Hash] loaded data
|
|
31
|
-
def data
|
|
32
|
-
@data || {}
|
|
33
|
-
end
|
|
34
|
-
|
|
35
35
|
# Get data by []
|
|
36
36
|
def [](column)
|
|
37
|
-
return data[column] if data.key?(column)
|
|
37
|
+
return @data[column] if @data.key?(column)
|
|
38
38
|
|
|
39
39
|
# If there is no key, raise exeption
|
|
40
40
|
raise "Undefined Config : #{column}\nKey doesn't match in config file. Please check config file in config/*"
|
data/lib/bucky/version.rb
CHANGED
|
@@ -1,6 +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
5
|
:sp_device_name: :iphone
|
|
5
6
|
:tablet_device_name: :ipad
|
|
6
7
|
:device_name_on_chrome:
|
|
@@ -8,8 +9,6 @@
|
|
|
8
9
|
:android: 'Galaxy S5'
|
|
9
10
|
:ipad: 'iPad'
|
|
10
11
|
:user_agent: 'E2ETest (X11; Linux x86_64)'
|
|
11
|
-
:js_error_check: true
|
|
12
|
-
:js_error_collector_path: '/var/lib/selenium/ChromeJSErrorCollector-master/extension' # https://github.com/dharrya/ChromeJSErrorCollector
|
|
13
12
|
:driver_read_timeout: 60 # sec
|
|
14
13
|
:driver_open_timeout: 60 # sec
|
|
15
14
|
:find_element_timeout: 10 # sec
|
|
@@ -1,6 +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
5
|
:sp_device_name: :iphone
|
|
5
6
|
:tablet_device_name: :ipad
|
|
6
7
|
:device_name_on_chrome:
|
|
@@ -8,8 +9,6 @@
|
|
|
8
9
|
:android: 'Galaxy S5'
|
|
9
10
|
:ipad: 'iPad'
|
|
10
11
|
:user_agent: 'E2ETest (X11; Linux x86_64)'
|
|
11
|
-
:js_error_check: true
|
|
12
|
-
:js_error_collector_path: '/var/lib/selenium/ChromeJSErrorCollector-master/extension' # https://github.com/dharrya/ChromeJSErrorCollector
|
|
13
12
|
:driver_read_timeout: 60 # sec
|
|
14
13
|
:driver_open_timeout: 60 # sec
|
|
15
14
|
:find_element_timeout: 10 # sec
|
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.9.
|
|
4
|
+
version: 0.9.4
|
|
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: 2019-
|
|
16
|
+
date: 2019-05-15 00:00:00.000000000 Z
|
|
17
17
|
dependencies:
|
|
18
18
|
- !ruby/object:Gem::Dependency
|
|
19
19
|
name: awesome_print
|
|
@@ -147,14 +147,14 @@ dependencies:
|
|
|
147
147
|
requirements:
|
|
148
148
|
- - "~>"
|
|
149
149
|
- !ruby/object:Gem::Version
|
|
150
|
-
version: '0.
|
|
150
|
+
version: '0.63'
|
|
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.
|
|
157
|
+
version: '0.63'
|
|
158
158
|
- !ruby/object:Gem::Dependency
|
|
159
159
|
name: simplecov-console
|
|
160
160
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -293,6 +293,8 @@ extensions: []
|
|
|
293
293
|
extra_rdoc_files: []
|
|
294
294
|
files:
|
|
295
295
|
- ".circleci/config.yml"
|
|
296
|
+
- ".circleci/deploy_to_rubygems.sh"
|
|
297
|
+
- ".circleci/setup_rubygems.sh"
|
|
296
298
|
- ".codeclimate.yml"
|
|
297
299
|
- ".dockerignore"
|
|
298
300
|
- ".gitignore"
|
|
@@ -317,6 +319,22 @@ files:
|
|
|
317
319
|
- docker/nginx/public/index.html
|
|
318
320
|
- docker/nginx/public/test_page.html
|
|
319
321
|
- example/README.md
|
|
322
|
+
- example/bucky-management/.bucky_home
|
|
323
|
+
- example/bucky-management/README.md
|
|
324
|
+
- example/bucky-management/config/bucky_config.yml
|
|
325
|
+
- example/bucky-management/config/e2e_config.yml
|
|
326
|
+
- example/bucky-management/config/linkstatus_config.yml
|
|
327
|
+
- example/bucky-management/config/test_db_config.yml
|
|
328
|
+
- example/bucky-management/services/README.md
|
|
329
|
+
- example/bucky-management/services/bucky_example/pc/pageobject/github_search_list.rb
|
|
330
|
+
- example/bucky-management/services/bucky_example/pc/pageobject/github_top.rb
|
|
331
|
+
- example/bucky-management/services/bucky_example/pc/parts/github_search_list.yml
|
|
332
|
+
- example/bucky-management/services/bucky_example/pc/parts/github_top.yml
|
|
333
|
+
- example/bucky-management/services/bucky_example/pc/scenarios/e2e/search_and_assert.yml
|
|
334
|
+
- example/bucky-management/services/bucky_example/pc/scenarios/linkstatus/github_top.yml
|
|
335
|
+
- example/bucky-management/system/evidences/README.md
|
|
336
|
+
- example/bucky-management/system/evidences/screen_shots/README.md
|
|
337
|
+
- example/bucky-management/system/logs/README.md
|
|
320
338
|
- example/hands-on/.bucky_home
|
|
321
339
|
- example/hands-on/README.md
|
|
322
340
|
- example/hands-on/config/bucky_config.yml
|
|
@@ -355,7 +373,6 @@ files:
|
|
|
355
373
|
- lib/bucky/test_equipment/user_operation/user_operator.rb
|
|
356
374
|
- lib/bucky/test_equipment/verifications/abst_verification.rb
|
|
357
375
|
- lib/bucky/test_equipment/verifications/e2e_verification.rb
|
|
358
|
-
- lib/bucky/test_equipment/verifications/js_error_checker.rb
|
|
359
376
|
- lib/bucky/test_equipment/verifications/service_verifications.rb
|
|
360
377
|
- lib/bucky/test_equipment/verifications/status_checker.rb
|
|
361
378
|
- lib/bucky/tools/lint.rb
|
|
@@ -427,7 +444,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
427
444
|
version: '0'
|
|
428
445
|
requirements: []
|
|
429
446
|
rubyforge_project:
|
|
430
|
-
rubygems_version: 2.
|
|
447
|
+
rubygems_version: 2.6.13
|
|
431
448
|
signing_key:
|
|
432
449
|
specification_version: 4
|
|
433
450
|
summary: System testing framework for web application.
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'test/unit'
|
|
4
|
-
|
|
5
|
-
module Bucky
|
|
6
|
-
module TestEquipment
|
|
7
|
-
module Verifications
|
|
8
|
-
module JsErrorChecker
|
|
9
|
-
include Test::Unit::Assertions
|
|
10
|
-
|
|
11
|
-
# Check Javascript Error in page
|
|
12
|
-
# @param [Webdriver] driver
|
|
13
|
-
def assert_no_js_error(driver)
|
|
14
|
-
js_errors = driver.execute_script(
|
|
15
|
-
'return window.JSErrorCollector_errors ? window.JSErrorCollector_errors.pump() : []'
|
|
16
|
-
)
|
|
17
|
-
# Empty is ok
|
|
18
|
-
assert_empty(js_errors, '[JS Error]')
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|