regressy_common 1.4.0 → 1.4.1

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
2
  SHA256:
3
- metadata.gz: 4b33becacb91404c4b74cba4b84a17bb8af239ea70205faa1177539f34e1e8de
4
- data.tar.gz: 5508f6f630780ed103b7692acd9bccd8cccfbc21358b2dd594c1b72df8d44872
3
+ metadata.gz: c08038e6fb8863b06fc9d27438c8f3dee51a81ed7207d14f5541d4ef772d2722
4
+ data.tar.gz: ff7a4f43f7a7df2b55852c08e1b5c73e44fc26ad3105773ffd63805edb441aae
5
5
  SHA512:
6
- metadata.gz: e11891a7e83fcde8c3b0a0bb8c4d7ca3300ccb23efca04657c083fa4a6e8449bad53a96bd1ad2627285e03879d6e289903db3ec51f62815a082a49ed709b1b22
7
- data.tar.gz: 2350e4dedc1a4336ec6de5ed0d531f3677f853389f4e5b3052bbba7a7fcf5290d99733f2c3b77085a6c2d3815c3568adc8b70d2e39800c23ec1328530f9f2c5d
6
+ metadata.gz: a0bbfe572699a1bfa37cd1be4028d1b14d15233786296302f12951f01456e14d417ac8049ce16e8e0e5aa60e98565f8794e01bb666a72a3dde45bc25041c7f54
7
+ data.tar.gz: 9a7017a75b8e7bd7843589c5bbb6e6275e0fdde060d570b1cd6e1c27baee7a360bfcee40ab325bcdd54d68e54af3fa56a351a2daae907c431cfcca2ea5fcf313
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- regressy_common (1.4.0)
4
+ regressy_common (1.4.1)
5
5
  activesupport (~> 6.0.1)
6
6
  appium_lib (~> 10.5.0)
7
7
  httpclient (~> 2.8.3)
data/README.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # RegressyCommon
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/regressy_common`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ RegressyCommonは、[Regressy](https://regressy.fluxware.jp)でe2eテストを構築するためのライブラリです。
4
4
 
5
- TODO: Delete this and the text above, and describe your gem
5
+ Ruby言語とtest-unitフレームワークを利用して、e2eテストを構築します。
6
6
 
7
- ## Installation
7
+ ## インストール
8
8
 
9
- Add this line to your application's Gemfile:
9
+ Gemfileに追加し、bundleを実行します。
10
10
 
11
11
  ```ruby
12
12
  gem 'regressy_common'
@@ -20,9 +20,180 @@ Or install it yourself as:
20
20
 
21
21
  $ gem install regressy_common
22
22
 
23
- ## Usage
23
+ ## 使い方
24
+
25
+ RegressyCommonは、ページオブジェクトモデルに基づくe2eテスト構築を支援するライブラリです。
26
+
27
+ ページオブジェクト、テストセット、テストスイートでテスト全体を構成します。
28
+
29
+ ### ディレクトリ構成
30
+
31
+ ディレクトリ構成の例を以下に示します。
32
+
33
+ ```
34
+ your-e2e-project
35
+ ├── app
36
+ │ ├── pages # ここにページオブジェクトを格納します。
37
+ │ ├── test_sets # ここにテストセットを格納します。
38
+ │ ├── test_suites # ここにテストスイートを格納します。
39
+ │ :
40
+ └── config
41
+ ```
42
+
43
+ - ページオブジェクト: テスト対象サイトのページに対応するオブジェクト。
44
+ 1ページに対して1オブジェクトが対応します。
45
+ - テストセット: 関連した一連のテストの集合。
46
+ test-unit における TestCaseに相当。
47
+ ここで定義したテストからページオブジェクトを操作し、テストを実行します。
48
+ - テストスイート: 関連した一連のテストセットの集合。
49
+ ここで定義したテストスイートから、関連するテストセットを操作します。
50
+
51
+ ## ページオブジェクト
52
+
53
+ - ページを司るオブジェクトです。
54
+ - テスト対象のサイトを構成する1ページに対して1オブジェクトを定義します。
55
+ - 以下にページオブジェクトの基底クラスを例示します。
56
+
57
+ ```ruby
58
+ require 'test/unit'
59
+ require 'regressy_common'
60
+ module Pages
61
+ class Base
62
+ include Test::Unit::Assertions
63
+ include RegressyCommon::Checker
64
+ include RegressyCommon::Clicker
65
+ include RegressyCommon::Sender
66
+ include RegressyCommon::Selector
67
+
68
+ def initialize(test_case)
69
+ @test_case = test_case
70
+ @driver = test_case.driver
71
+ @target_host = test_case.target_host
72
+ end
73
+
74
+ def logger
75
+ RegressyCommon::Utils::StandardLogger.instance
76
+ end
77
+
78
+ def take_snap(tag=nil)
79
+ tag ||= %(#{self.class.name}##{caller_locations(1).first.label})
80
+ RegressyCommon::SnapShot.new(@driver, tag).take_and_store
81
+ end
82
+
83
+ def set_window_size
84
+ @driver.manage.window.resize_to(1600, 1024)
85
+ end
86
+
87
+ def access_to_target_page
88
+ @driver.get(page_url)
89
+ assert_element_exists(:xpath, xpath_page_title)
90
+ end
91
+
92
+ protected
93
+
94
+ def page_url
95
+ raise "should implement this method"
96
+ end
97
+ def xpath_page_title
98
+ raise "should implement this method"
99
+ end
100
+ end
101
+ end
102
+ ```
103
+
104
+ - そして、基底クラスを継承するページクラス。
105
+
106
+ ```ruby
107
+ require 'pages/base'
108
+ class Pages::Index < Pages::Base
109
+
110
+ def execute_search(word)
111
+ assert_element_present(:xpath, xpath_search_input )
112
+ send_keys(:xpath, xpath_search_input, word)
113
+ retry_click(:xpath, xpath_search_submit)
114
+ assert_element_present(:xpath, xpath_search_result)
115
+ end
116
+
117
+ protected
118
+
119
+ def page_url
120
+ %(#{@test_case.target_host}/)
121
+ end
122
+ def xpath_page_title
123
+ %(//title[contains(text(), "Yahoo! JAPAN")])
124
+ end
125
+ def xpath_search_input
126
+ %(//input[@type="search"])
127
+ end
128
+ def xpath_search_submit
129
+ %(//button[@type="submit"])
130
+ end
131
+ def xpath_search_result
132
+ %(//a[contains(@href, "regressy")])
133
+ end
134
+ end
135
+ ```
136
+
137
+ ## テストセット
138
+
139
+ - テストの例。
140
+ ```ruby
141
+ require 'regressy_common'
142
+ require 'pages/index'
143
+ class SampleTest < RegressyCommon::TestSets::Base
144
+ def setup
145
+ @target_host = 'https://yahoo.co.jp'
146
+ super
147
+ end
148
+ def test_01_search
149
+ index_page = Pages::Index.new(self)
150
+ index_page.access_to_target_page
151
+ index_page.take_snap
152
+
153
+ index_page.execute_search("regressy")
154
+ end
155
+ end
156
+ ```
157
+
158
+ ## テストスイート
159
+
160
+ - テストスイートの例。
161
+ ```
162
+ require 'test/unit'
163
+ require 'test/unit/testsuite'
164
+ require 'test/unit/ui/console/testrunner'
165
+ require 'test_sets/sample_test'
166
+
167
+ regression_test = Test::Unit::TestSuite.new("regression test")
168
+ regression_test << SampleTest.suite # default local chrome
169
+ regression_test << SampleTest.suite_with_capability(:local_firefox)
170
+
171
+ Test::Unit::UI::Console::TestRunner.run(regression_test)
172
+ ```
173
+ ここで、ブラウザの種類を指定します。
174
+
175
+ ## テストの実行
176
+
177
+ ```
178
+ # ruby app/test_suites/regression_test.rb
179
+ Loaded suite regression test
180
+ Started
181
+ ..
182
+ Finished in 33.660497466 seconds.
183
+ -----------------------------------------------------------------------------------------------------------------------
184
+ 2 tests, 8 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
185
+ 100% passed
186
+ -----------------------------------------------------------------------------------------------------------------------
187
+ 0.06 tests/s, 0.24 assertions/s
188
+ ```
189
+
190
+ ## ページオブジェクトで使用する共通機能
191
+
192
+ - checker
193
+ - clicker
194
+ - sender
195
+ - selector
24
196
 
25
- TODO: Write usage instructions here
26
197
 
27
198
  ## Development
28
199
 
@@ -2,7 +2,7 @@ require "logger"
2
2
  module RegressyCommon
3
3
  module Utils
4
4
  module StandardLogger
5
- @@logger = Logger.new(STDOUT)
5
+ @@logger ||= Logger.new(STDOUT)
6
6
  def self.instance
7
7
  @@logger
8
8
  end
@@ -1,3 +1,3 @@
1
1
  module RegressyCommon
2
- VERSION = "1.4.0"
2
+ VERSION = "1.4.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: regressy_common
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - info@fluxware.co.jp
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-12-17 00:00:00.000000000 Z
11
+ date: 2019-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpclient