testcentricity_web 4.1.5 → 4.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +18 -0
- data/.simplecov +5 -0
- data/CHANGELOG.md +14 -0
- data/Gemfile.lock +59 -1
- data/README.md +14 -6
- data/Rakefile +37 -1
- data/config/cucumber.yml +150 -0
- data/docker-compose-v3.yml +48 -0
- data/features/basic_test_page_css.feature +24 -0
- data/features/basic_test_page_xpath.feature +24 -0
- data/features/step_definitions/generic_steps.rb.rb +37 -0
- data/features/support/env.rb +43 -0
- data/features/support/hooks.rb +245 -0
- data/features/support/pages/basic_css_test_page.rb +49 -0
- data/features/support/pages/basic_test_page.rb +238 -0
- data/features/support/pages/basic_xpath_test_page.rb +49 -0
- data/features/support/pages/media_page.rb +11 -0
- data/features/support/world_pages.rb +15 -0
- data/lib/testcentricity_web/data_objects/environment.rb +4 -0
- data/lib/testcentricity_web/version.rb +1 -1
- data/lib/testcentricity_web/web_core/page_object.rb +13 -6
- data/lib/testcentricity_web/web_core/page_objects_helper.rb +41 -8
- data/lib/testcentricity_web/web_core/page_section.rb +1 -16
- data/lib/testcentricity_web/web_elements/select_list.rb +11 -3
- data/lib/testcentricity_web/web_elements/ui_elements_helper.rb +13 -0
- data/reports/.keep +1 -0
- data/test_site/basic_test_page.html +240 -0
- data/test_site/images/Granny.jpg +0 -0
- data/test_site/images/Wilder.jpg +0 -0
- data/test_site/images/You_Betcha.jpg +0 -0
- data/test_site/media/MP4_small.mp4 +0 -0
- data/test_site/media/MPS_sample.mp3 +0 -0
- data/test_site/media_page.html +33 -0
- data/testcentricity_web.gemspec +5 -0
- metadata +104 -4
- data/test_site/test_page.html +0 -11
@@ -6,6 +6,26 @@ module TestCentricity
|
|
6
6
|
include Capybara::Node::Matchers
|
7
7
|
include Test::Unit::Assertions
|
8
8
|
|
9
|
+
attr_accessor :locator_type
|
10
|
+
|
11
|
+
XPATH_SELECTORS = ['//', '[@', '[contains(']
|
12
|
+
CSS_SELECTORS = ['#', ':nth-child(', ':first-child', ':last-child', ':nth-of-type(', ':first-of-type', ':last-of-type', '^=', '$=', '*=', ':contains(']
|
13
|
+
|
14
|
+
def set_locator_type(locator = nil)
|
15
|
+
locator = @locator if locator.nil?
|
16
|
+
is_xpath = XPATH_SELECTORS.any? { |selector| locator.include?(selector) }
|
17
|
+
is_css = CSS_SELECTORS.any? { |selector| locator.include?(selector) }
|
18
|
+
@locator_type = if is_xpath && !is_css
|
19
|
+
:xpath
|
20
|
+
elsif is_css && !is_xpath
|
21
|
+
:css
|
22
|
+
elsif !is_css && !is_xpath
|
23
|
+
:css
|
24
|
+
else
|
25
|
+
:css
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
9
29
|
# Define a trait for this page or section object.
|
10
30
|
#
|
11
31
|
# @param trait_name [Symbol] name of trait (as a symbol)
|
@@ -31,6 +51,8 @@ module TestCentricity
|
|
31
51
|
ui_object.get_attribute(:name)
|
32
52
|
when :title
|
33
53
|
ui_object.title
|
54
|
+
when :secure
|
55
|
+
ui_object.secure?
|
34
56
|
when :exists
|
35
57
|
ui_object.exists?
|
36
58
|
when :enabled
|
@@ -63,6 +85,8 @@ module TestCentricity
|
|
63
85
|
ui_object.indeterminate?
|
64
86
|
when :value, :caption
|
65
87
|
ui_object.get_value
|
88
|
+
when :required
|
89
|
+
ui_object.required?
|
66
90
|
when :maxlength
|
67
91
|
ui_object.get_max_length
|
68
92
|
when :rowcount
|
@@ -241,8 +265,11 @@ module TestCentricity
|
|
241
265
|
end
|
242
266
|
|
243
267
|
# Populate the specified UI elements on this page or section object with the associated data from a Hash passed as an
|
244
|
-
# argument. Data values must be in the form of a String for textfield and
|
245
|
-
# buttons, data must either be a Boolean or a String that evaluates to a Boolean value (Yes, No, 1, 0, true,
|
268
|
+
# argument. Data values must be in the form of a String for textfield, selectlist, and filefield controls. For checkbox
|
269
|
+
# and radio buttons, data must either be a Boolean or a String that evaluates to a Boolean value (Yes, No, 1, 0, true,
|
270
|
+
# false). For range controls, data must be an Integer. For input(type='color') color picker controls, which are specified
|
271
|
+
# as a textfield, data must be in the form of a hex color String. For section objects, data values must be a String, and
|
272
|
+
# the section object must have a set method defined.
|
246
273
|
#
|
247
274
|
# The optional wait_time parameter is used to specify the time (in seconds) to wait for each UI element to become
|
248
275
|
# visible before entering the associated data value. This option is useful in situations where entering data, or
|
@@ -285,14 +312,20 @@ module TestCentricity
|
|
285
312
|
check_state = data_param.is_a?(String) ? data_param.to_bool : data_param
|
286
313
|
data_field.set_selected_state(check_state)
|
287
314
|
when :textfield
|
288
|
-
data_field.
|
289
|
-
|
290
|
-
|
291
|
-
data_field.
|
292
|
-
data_field.
|
315
|
+
if data_field.get_attribute(:type) == 'color'
|
316
|
+
data_field.set(data_param)
|
317
|
+
else
|
318
|
+
data_field.set("#{data_param}\t")
|
319
|
+
if integrity_check && data_field.get_value != data_param
|
320
|
+
data_field.set('')
|
321
|
+
data_field.send_keys(data_param)
|
322
|
+
data_field.send_keys(:tab)
|
323
|
+
end
|
293
324
|
end
|
294
|
-
when :section
|
325
|
+
when :section, :range
|
295
326
|
data_field.set(data_param)
|
327
|
+
when :filefield
|
328
|
+
data_field.file_upload(data_param)
|
296
329
|
end
|
297
330
|
end
|
298
331
|
end
|
@@ -5,10 +5,6 @@ module TestCentricity
|
|
5
5
|
attr_accessor :parent
|
6
6
|
attr_accessor :parent_list
|
7
7
|
attr_accessor :list_index
|
8
|
-
attr_accessor :locator_type
|
9
|
-
|
10
|
-
XPATH_SELECTORS = ['//', '[@', '[contains(']
|
11
|
-
CSS_SELECTORS = ['#', ':nth-child(', ':first-child', ':last-child', ':nth-of-type(', ':first-of-type', ':last-of-type', '^=', '$=', '*=', ':contains(']
|
12
8
|
|
13
9
|
def initialize(name, parent, locator, context)
|
14
10
|
@name = name
|
@@ -17,18 +13,7 @@ module TestCentricity
|
|
17
13
|
@context = context
|
18
14
|
@parent_list = nil
|
19
15
|
@list_index = nil
|
20
|
-
|
21
|
-
is_xpath = XPATH_SELECTORS.any? { |selector| @locator.include?(selector) }
|
22
|
-
is_css = CSS_SELECTORS.any? { |selector| @locator.include?(selector) }
|
23
|
-
@locator_type = if is_xpath && !is_css
|
24
|
-
:xpath
|
25
|
-
elsif is_css && !is_xpath
|
26
|
-
:css
|
27
|
-
elsif !is_css && !is_xpath
|
28
|
-
:css
|
29
|
-
else
|
30
|
-
:css
|
31
|
-
end
|
16
|
+
set_locator_type
|
32
17
|
end
|
33
18
|
|
34
19
|
def get_locator
|
@@ -246,15 +246,23 @@ module TestCentricity
|
|
246
246
|
def get_selected_option
|
247
247
|
@base_object, = find_element
|
248
248
|
object_not_found_exception(@base_object, nil)
|
249
|
-
trigger_list
|
249
|
+
trigger_list unless @options_list.nil?
|
250
250
|
selection = if @base_object.first(:css, @list_item, minimum: 0, wait: 1, visible: :all)
|
251
251
|
@base_object.first(:css, @selected_item, wait: 1, visible: :all).text
|
252
252
|
elsif @base_object.first(:css, @selected_item, minimum: 0, wait: 1, visible: :all)
|
253
253
|
@base_object.first(:css, @selected_item, visible: :all).text
|
254
|
+
elsif @base_object.first('option[selected]', minimum: 0, wait: 1, visible: :all)
|
255
|
+
@base_object.first('option[selected]', wait: 1, visible: :all).text
|
254
256
|
else
|
255
|
-
|
257
|
+
index = get_attribute(:selectedIndex).to_i
|
258
|
+
if index >= 0
|
259
|
+
options = get_options
|
260
|
+
options[index]
|
261
|
+
else
|
262
|
+
''
|
263
|
+
end
|
256
264
|
end
|
257
|
-
trigger_list
|
265
|
+
trigger_list unless @options_list.nil?
|
258
266
|
selection
|
259
267
|
end
|
260
268
|
|
@@ -264,6 +264,19 @@ module TestCentricity
|
|
264
264
|
obj.disabled?
|
265
265
|
end
|
266
266
|
|
267
|
+
# Is UI object's required attribute set?
|
268
|
+
#
|
269
|
+
# @return [Boolean]
|
270
|
+
# @example
|
271
|
+
# first_name_field.required?
|
272
|
+
#
|
273
|
+
def required?
|
274
|
+
obj, type = find_element
|
275
|
+
object_not_found_exception(obj, type)
|
276
|
+
state = get_attribute(:required)
|
277
|
+
state.boolean? ? state : state == 'true'
|
278
|
+
end
|
279
|
+
|
267
280
|
# Is UI object obscured (not currently in viewport and not clickable)?
|
268
281
|
#
|
269
282
|
# @return [Boolean]
|
data/reports/.keep
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Placeholder file to allow the reports folder to be saved to repository. This folder is required for Jenkins test jobs using the Cucumber Reporting plug-in.
|
@@ -0,0 +1,240 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8">
|
5
|
+
<title>Basic HTML Form</title>
|
6
|
+
<style>
|
7
|
+
table {
|
8
|
+
font-family: arial, sans-serif;
|
9
|
+
font-size: 15px;
|
10
|
+
border-collapse: collapse;
|
11
|
+
width: 85%;
|
12
|
+
}
|
13
|
+
td, th {
|
14
|
+
border: 1px solid #dddddd;
|
15
|
+
text-align: left;
|
16
|
+
padding: 8px;
|
17
|
+
}
|
18
|
+
</style>
|
19
|
+
</head>
|
20
|
+
<body>
|
21
|
+
<div class="page-body">
|
22
|
+
<h1>Basic HTML Form Example</h1>
|
23
|
+
<div class="centered">
|
24
|
+
<form name="HTMLFormElements" id="HTMLFormElements">
|
25
|
+
<table border="1" cellpadding="5">
|
26
|
+
<tr>
|
27
|
+
<td>
|
28
|
+
<table>
|
29
|
+
<label id="inputs">Inputs:</label>
|
30
|
+
<tbody>
|
31
|
+
<tr>
|
32
|
+
<td>
|
33
|
+
<label for="username">Username:</label>
|
34
|
+
<input type="text" id="username" name="username" placeholder="User name" required>
|
35
|
+
</td>
|
36
|
+
<td>
|
37
|
+
<label for="password">Password:</label>
|
38
|
+
<input type="password" id="password" name="password" placeholder="Password" required>
|
39
|
+
</td>
|
40
|
+
<td>
|
41
|
+
<label for="maxlength">Max Length:</label>
|
42
|
+
<input type="text" id="maxlength" name="maxlength" placeholder="up to 64 characters" maxlength="64">
|
43
|
+
</td>
|
44
|
+
</tr>
|
45
|
+
<tr>
|
46
|
+
<td>
|
47
|
+
<label for="readonly">Read Only:</label>
|
48
|
+
<input type="text" id="readonly" name="readonly" value="I am a read only text field" readonly>
|
49
|
+
</td>
|
50
|
+
<td>
|
51
|
+
<label for="number-field">Number:</label>
|
52
|
+
<input id="number-field" type="number" name="number" min="10" max="1024" step="1" value="41">
|
53
|
+
</td>
|
54
|
+
<td>
|
55
|
+
<label for="color-picker">Color: </label>
|
56
|
+
<input id="color-picker" type="color" name="color">
|
57
|
+
</td>
|
58
|
+
</tr>
|
59
|
+
<tr>
|
60
|
+
<td>
|
61
|
+
<label for="slider">Range: </label>
|
62
|
+
<input id="slider" type="range" name="slider" min="0" max="50">
|
63
|
+
</td>
|
64
|
+
<td>
|
65
|
+
</td>
|
66
|
+
<td>
|
67
|
+
</td>
|
68
|
+
</tr>
|
69
|
+
</tbody>
|
70
|
+
</table>
|
71
|
+
</td>
|
72
|
+
</tr>
|
73
|
+
|
74
|
+
|
75
|
+
<tr>
|
76
|
+
<td>
|
77
|
+
<label for="comments">TextArea:</label>
|
78
|
+
<textarea id="comments" name="comments" cols="80" rows="3"></textarea>
|
79
|
+
</td>
|
80
|
+
</tr>
|
81
|
+
|
82
|
+
<tr>
|
83
|
+
<td>
|
84
|
+
<label for="filename">Filename:</label>
|
85
|
+
<input type="file" id="filename" name="filename" size="35">
|
86
|
+
</td>
|
87
|
+
</tr>
|
88
|
+
|
89
|
+
<tr>
|
90
|
+
<td>
|
91
|
+
<label id="checkboxes">Checkbox Items:</label>
|
92
|
+
<input type="checkbox" id="check1" name="checkboxes[]" value="cb1" />Checkbox 1
|
93
|
+
<input type="checkbox" id="check2" name="checkboxes[]" value="cb2" />Checkbox 2
|
94
|
+
<input type="checkbox" id="check3" name="checkboxes[]" value="cb3" />Checkbox 3
|
95
|
+
<input type="checkbox" id="check4" name="checkboxes[]" value="cb4" disabled/>Checkbox 4
|
96
|
+
</td>
|
97
|
+
</tr>
|
98
|
+
|
99
|
+
<tr>
|
100
|
+
<td>
|
101
|
+
<label id="radios">Radio Items:</label>
|
102
|
+
<input type="radio" id="radio1" name="radioval" value="rd1" />radio 1
|
103
|
+
<input type="radio" id="radio2" name="radioval" value="rd2" />radio 2
|
104
|
+
<input type="radio" id="radio3" name="radioval" value="rd3" />radio 3
|
105
|
+
<input type="radio" id="radio4" name="radioval" value="rd4" disabled/>radio 4
|
106
|
+
</td>
|
107
|
+
</tr>
|
108
|
+
|
109
|
+
<tr>
|
110
|
+
<td>
|
111
|
+
<label for="multipleselect">Multiple Select Values:</label>
|
112
|
+
<select multiple="multiple" id="multipleselect" name="multipleselect" size="4">
|
113
|
+
<option value="ms1">Selection Item 1</option>
|
114
|
+
<option value="ms2">Selection Item 2</option>
|
115
|
+
<option value="ms3">Selection Item 3</option>
|
116
|
+
<option value="ms4">Selection Item 4</option>
|
117
|
+
</select>
|
118
|
+
</td>
|
119
|
+
</tr>
|
120
|
+
|
121
|
+
<tr>
|
122
|
+
<td>
|
123
|
+
<label for="dropdown">Dropdown:</label>
|
124
|
+
<select id="dropdown" name="dropdown">
|
125
|
+
<option value="dd1">Drop Down Item 1</option>
|
126
|
+
<option value="dd2">Drop Down Item 2</option>
|
127
|
+
<option value="dd3">Drop Down Item 3</option>
|
128
|
+
<option value="dd4">Drop Down Item 4</option>
|
129
|
+
<option value="dd5">Drop Down Item 5</option>
|
130
|
+
<option value="dd6">Drop Down Item 6</option>
|
131
|
+
</select>
|
132
|
+
</td>
|
133
|
+
</tr>
|
134
|
+
|
135
|
+
<tr>
|
136
|
+
<td>
|
137
|
+
<label for="table">Table:</label>
|
138
|
+
<table id="table">
|
139
|
+
<thead>
|
140
|
+
<tr>
|
141
|
+
<th>Company</th>
|
142
|
+
<th>Contact</th>
|
143
|
+
<th>Country</th>
|
144
|
+
</tr>
|
145
|
+
</thead>
|
146
|
+
<tbody>
|
147
|
+
<tr>
|
148
|
+
<td>Alfreds Futterkiste</td>
|
149
|
+
<td>Maria Anders</td>
|
150
|
+
<td>Germany</td>
|
151
|
+
</tr>
|
152
|
+
<tr>
|
153
|
+
<td>Centro comercial Moctezuma</td>
|
154
|
+
<td>Francisco Chang</td>
|
155
|
+
<td>Mexico</td>
|
156
|
+
</tr>
|
157
|
+
<tr>
|
158
|
+
<td>Ernst Handel</td>
|
159
|
+
<td>Roland Mendel</td>
|
160
|
+
<td>Austria</td>
|
161
|
+
</tr>
|
162
|
+
<tr>
|
163
|
+
<td>Island Trading</td>
|
164
|
+
<td>Helen Bennett</td>
|
165
|
+
<td>UK</td>
|
166
|
+
</tr>
|
167
|
+
</tbody>
|
168
|
+
</table>
|
169
|
+
</td>
|
170
|
+
</tr>
|
171
|
+
|
172
|
+
<tr>
|
173
|
+
<td>
|
174
|
+
<table>
|
175
|
+
<label id="images">Images:</label>
|
176
|
+
<tbody>
|
177
|
+
<tr>
|
178
|
+
<td>
|
179
|
+
<img id="image1" src="images/Wilder.jpg" alt="It's alive" style="width:225px;height:225px;">
|
180
|
+
</td>
|
181
|
+
<td>
|
182
|
+
<img id="image2" src="images/You_Betcha.jpg" alt="You Betcha" style="width:225px;height:225px;">
|
183
|
+
</td>
|
184
|
+
<td>
|
185
|
+
<img id="image3" src="wrongname.gif" alt="A broken image" style="width:225px;height:225px;">
|
186
|
+
</td>
|
187
|
+
</tr>
|
188
|
+
</tbody>
|
189
|
+
</table>
|
190
|
+
</td>
|
191
|
+
</tr>
|
192
|
+
|
193
|
+
|
194
|
+
|
195
|
+
<!-- <tr>-->
|
196
|
+
<!-- <td>-->
|
197
|
+
<!-- <div class="form-label">-->
|
198
|
+
<!-- <label for="date-picker">Date: </label>-->
|
199
|
+
<!-- <input id="date-picker" type="date" name="date">-->
|
200
|
+
<!-- </div>-->
|
201
|
+
<!-- </td>-->
|
202
|
+
<!-- </tr>-->
|
203
|
+
<!-- <tr>-->
|
204
|
+
<!-- <td>-->
|
205
|
+
<!-- <div class="form-label">-->
|
206
|
+
<!-- <label for="date-time-picker">Local date time:</label>-->
|
207
|
+
<!-- <input id="date-time-picker" type="datetime-local" name="datetime" value="2018-01-01T01:01">-->
|
208
|
+
<!-- </div>-->
|
209
|
+
<!-- </td>-->
|
210
|
+
<!-- </tr>-->
|
211
|
+
<!-- <tr>-->
|
212
|
+
<!-- <td>-->
|
213
|
+
<!-- <div class="form-label">-->
|
214
|
+
<!-- <label for="email-field">Email: </label>-->
|
215
|
+
<!-- <input id="email-field" type="email" name="email" value="bob@mailinator.com">-->
|
216
|
+
<!-- </div>-->
|
217
|
+
<!-- </td>-->
|
218
|
+
<!-- </tr>-->
|
219
|
+
<!-- <tr>-->
|
220
|
+
<!-- <td>-->
|
221
|
+
<!-- <div class="form-label">-->
|
222
|
+
<!-- <label for="month-field">Month: </label>-->
|
223
|
+
<!-- <input id="month-field" type="month" name="month">-->
|
224
|
+
<!-- </div>-->
|
225
|
+
<!-- </td>-->
|
226
|
+
<!-- </tr>-->
|
227
|
+
|
228
|
+
|
229
|
+
<tr>
|
230
|
+
<td>
|
231
|
+
<input type="reset" id="cancel" name="cancel" value="Cancel" class="styled-click-button">
|
232
|
+
<input type="submit" id="submit" name="submit" value="Submit" class="styled-click-button">
|
233
|
+
</td>
|
234
|
+
</tr>
|
235
|
+
</table>
|
236
|
+
</form>
|
237
|
+
</div>
|
238
|
+
</div>
|
239
|
+
</body>
|
240
|
+
</html>
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,33 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8">
|
5
|
+
<title>Media Page</title>
|
6
|
+
<style>
|
7
|
+
table {
|
8
|
+
font-family: arial, sans-serif;
|
9
|
+
font-size: 15px;
|
10
|
+
border-collapse: collapse;
|
11
|
+
width: 85%;
|
12
|
+
}
|
13
|
+
td, th {
|
14
|
+
border: 1px solid #dddddd;
|
15
|
+
text-align: left;
|
16
|
+
padding: 8px;
|
17
|
+
}
|
18
|
+
</style>
|
19
|
+
</head>
|
20
|
+
<body>
|
21
|
+
<div class="media-page-body">
|
22
|
+
<h1>Media Page</h1>
|
23
|
+
<video id="video_player" width="400" controls>
|
24
|
+
<source src="media/MP4_small.mp4" type="video/mp4">
|
25
|
+
</video>
|
26
|
+
|
27
|
+
<audio id="audio_player" controls>
|
28
|
+
<source src="media/MPS_sample.mp3" type="audio/mp3">
|
29
|
+
</audio>
|
30
|
+
|
31
|
+
</div>
|
32
|
+
</body>
|
33
|
+
</html>
|
data/testcentricity_web.gemspec
CHANGED
@@ -29,6 +29,11 @@ Gem::Specification.new do |spec|
|
|
29
29
|
|
30
30
|
spec.add_development_dependency 'bundler'
|
31
31
|
spec.add_development_dependency 'rake'
|
32
|
+
spec.add_development_dependency 'cucumber'
|
33
|
+
spec.add_development_dependency 'appium_capybara'
|
34
|
+
spec.add_development_dependency 'parallel_tests'
|
35
|
+
spec.add_development_dependency 'require_all'
|
36
|
+
spec.add_development_dependency 'simplecov', ['~> 0.18']
|
32
37
|
|
33
38
|
spec.add_runtime_dependency 'appium_lib'
|
34
39
|
spec.add_runtime_dependency 'browserstack-local'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: testcentricity_web
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.1.
|
4
|
+
version: 4.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- A.J. Mrozinski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-03-
|
11
|
+
date: 2022-03-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -38,6 +38,76 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: cucumber
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: appium_capybara
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: parallel_tests
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: require_all
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: simplecov
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0.18'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0.18'
|
41
111
|
- !ruby/object:Gem::Dependency
|
42
112
|
name: appium_lib
|
43
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -254,6 +324,7 @@ files:
|
|
254
324
|
- ".idea/vcs.xml"
|
255
325
|
- ".rspec"
|
256
326
|
- ".rubocop.yml"
|
327
|
+
- ".simplecov"
|
257
328
|
- ".yardopts"
|
258
329
|
- CHANGELOG.md
|
259
330
|
- CODE_OF_CONDUCT.md
|
@@ -262,6 +333,18 @@ files:
|
|
262
333
|
- LICENSE.md
|
263
334
|
- README.md
|
264
335
|
- Rakefile
|
336
|
+
- config/cucumber.yml
|
337
|
+
- docker-compose-v3.yml
|
338
|
+
- features/basic_test_page_css.feature
|
339
|
+
- features/basic_test_page_xpath.feature
|
340
|
+
- features/step_definitions/generic_steps.rb.rb
|
341
|
+
- features/support/env.rb
|
342
|
+
- features/support/hooks.rb
|
343
|
+
- features/support/pages/basic_css_test_page.rb
|
344
|
+
- features/support/pages/basic_test_page.rb
|
345
|
+
- features/support/pages/basic_xpath_test_page.rb
|
346
|
+
- features/support/pages/media_page.rb
|
347
|
+
- features/support/world_pages.rb
|
265
348
|
- lib/devices/devices.yml
|
266
349
|
- lib/testcentricity_web.rb
|
267
350
|
- lib/testcentricity_web/appium_server.rb
|
@@ -294,7 +377,14 @@ files:
|
|
294
377
|
- lib/testcentricity_web/web_elements/ui_elements_helper.rb
|
295
378
|
- lib/testcentricity_web/web_elements/video.rb
|
296
379
|
- lib/testcentricity_web/world_extensions.rb
|
297
|
-
-
|
380
|
+
- reports/.keep
|
381
|
+
- test_site/basic_test_page.html
|
382
|
+
- test_site/images/Granny.jpg
|
383
|
+
- test_site/images/Wilder.jpg
|
384
|
+
- test_site/images/You_Betcha.jpg
|
385
|
+
- test_site/media/MP4_small.mp4
|
386
|
+
- test_site/media/MPS_sample.mp3
|
387
|
+
- test_site/media_page.html
|
298
388
|
- testcentricity_web.gemspec
|
299
389
|
homepage: ''
|
300
390
|
licenses:
|
@@ -321,4 +411,14 @@ signing_key:
|
|
321
411
|
specification_version: 4
|
322
412
|
summary: A Page Object and Data Object Model Framework for desktop and mobile web
|
323
413
|
testing
|
324
|
-
test_files:
|
414
|
+
test_files:
|
415
|
+
- features/basic_test_page_css.feature
|
416
|
+
- features/basic_test_page_xpath.feature
|
417
|
+
- features/step_definitions/generic_steps.rb.rb
|
418
|
+
- features/support/env.rb
|
419
|
+
- features/support/hooks.rb
|
420
|
+
- features/support/pages/basic_css_test_page.rb
|
421
|
+
- features/support/pages/basic_test_page.rb
|
422
|
+
- features/support/pages/basic_xpath_test_page.rb
|
423
|
+
- features/support/pages/media_page.rb
|
424
|
+
- features/support/world_pages.rb
|