capybara_test_helpers 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -1
- data/README.md +55 -331
- data/lib/capybara_test_helpers/selectors.rb +5 -0
- data/lib/capybara_test_helpers/version.rb +1 -1
- data/lib/generators/test_helper/test_helper_generator.rb +10 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b44cf8eaed214e39d9bd3078cf7d5144d8664df13619b95686dcfe77c9c44fa1
|
4
|
+
data.tar.gz: eba61f25b74ffd67e04e45504d7479ff10910b6a155428f94d7ed13aa70456d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d01e4d56cb7cf5fa40ab2f383ff902b6d343c02741fc4be0ac2217d12b22c0a882dc665f291f6988e9b1abd3fdd663f842aa57be250778c6140f65235527fb96
|
7
|
+
data.tar.gz: fc19367420ea452a08aaf2505cd85b74830823902a0de8696f77f6aec0a6cb9a77ea897ee11522b754f777f1c7e4590f3b3134b0094159801429472e562ef73e
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,8 @@
|
|
1
|
-
##
|
1
|
+
## Capybara Test Helpers 1.0.2 (2020-11-23) ##
|
2
|
+
|
3
|
+
* Add `aliases` DSL to define `SELECTORS`.
|
4
|
+
|
5
|
+
## Capybara Test Helpers 1.0.1 (2020-11-19) ##
|
2
6
|
|
3
7
|
* Add `has?` alias for `has_selector?`.
|
4
8
|
* Delegate `have` to the RSpec collection matcher when passing an Integer.
|
data/README.md
CHANGED
@@ -1,21 +1,6 @@
|
|
1
|
-
<h1 align="center">
|
2
|
-
Capybara Test Helpers
|
3
|
-
<p align="center">
|
4
|
-
<a href="https://github.com/ElMassimo/capybara_test_helpers/actions"><img alt="Build Status" src="https://github.com/ElMassimo/capybara_test_helpers/workflows/build/badge.svg"/></a>
|
5
|
-
<a href="https://codeclimate.com/github/ElMassimo/capybara_test_helpers"><img alt="Maintainability" src="https://codeclimate.com/github/ElMassimo/capybara_test_helpers/badges/gpa.svg"/></a>
|
6
|
-
<a href="https://codeclimate.com/github/ElMassimo/capybara_test_helpers"><img alt="Test Coverage" src="https://codeclimate.com/github/ElMassimo/capybara_test_helpers/badges/coverage.svg"/></a>
|
7
|
-
<a href="https://rubygems.org/gems/capybara_test_helpers"><img alt="Gem Version" src="https://img.shields.io/gem/v/capybara_test_helpers.svg?colorB=e9573f"/></a>
|
8
|
-
<a href="https://github.com/ElMassimo/capybara_test_helpers/blob/master/LICENSE.txt"><img alt="License" src="https://img.shields.io/badge/license-MIT-428F7E.svg"/></a>
|
9
|
-
</p>
|
10
|
-
</h1>
|
11
|
-
|
12
|
-
[__Capybara Test Helpers__](https://github.com/ElMassimo/capybara_test_helpers) is
|
13
|
-
an opinionated library built on top of [capybara], that encourages good testing
|
14
|
-
practices based on encapsulation and reuse.
|
15
|
-
|
16
|
-
Write tests that everyone can understand, and leverage your Ruby skills to keep them __easy to read and easy to change__.
|
17
|
-
|
18
1
|
[docs]: https://capybara-test-helpers.netlify.app/
|
2
|
+
[design patterns]: https://capybara-test-helpers.netlify.app/guide/advanced/design-patterns
|
3
|
+
[installation]: https://capybara-test-helpers.netlify.app/installation
|
19
4
|
[capybara]: https://github.com/teamcapybara/capybara
|
20
5
|
[capybara dsl]: https://github.com/teamcapybara/capybara#the-dsl
|
21
6
|
[capybara querying]: https://github.com/teamcapybara/capybara#querying
|
@@ -37,38 +22,36 @@ Write tests that everyone can understand, and leverage your Ruby skills to keep
|
|
37
22
|
[rails_integration]: https://github.com/ElMassimo/capybara_test_helpers/commit/c512e39987215e30227dad45e775480bc1348325
|
38
23
|
[cucumber_integration]: https://github.com/ElMassimo/capybara_test_helpers/commit/68e20cb40ba409c50f88f8b745eb908fb067a0aa
|
39
24
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
25
|
+
<h1 align="center">
|
26
|
+
Capybara Test Helpers
|
27
|
+
<p align="center">
|
28
|
+
<a href="https://github.com/ElMassimo/capybara_test_helpers/actions">
|
29
|
+
<img alt="Build Status" src="https://github.com/ElMassimo/capybara_test_helpers/workflows/build/badge.svg"/>
|
30
|
+
</a>
|
31
|
+
<a href="https://codeclimate.com/github/ElMassimo/capybara_test_helpers">
|
32
|
+
<img alt="Maintainability" src="https://codeclimate.com/github/ElMassimo/capybara_test_helpers/badges/gpa.svg"/>
|
33
|
+
</a>
|
34
|
+
<a href="https://codeclimate.com/github/ElMassimo/capybara_test_helpers">
|
35
|
+
<img alt="Test Coverage" src="https://codeclimate.com/github/ElMassimo/capybara_test_helpers/badges/coverage.svg"/>
|
36
|
+
</a>
|
37
|
+
<a href="https://rubygems.org/gems/capybara_test_helpers">
|
38
|
+
<img alt="Gem Version" src="https://img.shields.io/gem/v/capybara_test_helpers.svg?colorB=e9573f"/>
|
39
|
+
</a>
|
40
|
+
<a href="https://github.com/ElMassimo/capybara_test_helpers/blob/master/LICENSE.txt">
|
41
|
+
<img alt="License" src="https://img.shields.io/badge/license-MIT-428F7E.svg"/>
|
42
|
+
</a>
|
43
|
+
</p>
|
44
|
+
</h1>
|
55
45
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
dozens of tests, but __without clear guidelines__ it's hard to achieve good tests.
|
46
|
+
[__Capybara Test Helpers__](https://github.com/ElMassimo/capybara_test_helpers) is
|
47
|
+
an opinionated library built on top of [capybara], that encourages good testing
|
48
|
+
practices based on encapsulation and reuse.
|
60
49
|
|
61
|
-
|
62
|
-
that can be used to write better tests.
|
50
|
+
Write tests that everyone can understand, and leverage your Ruby skills to keep them __easy to read and easy to change__.
|
63
51
|
|
64
|
-
##
|
52
|
+
## Documentation 📖
|
65
53
|
|
66
|
-
|
67
|
-
- Powerful syntax for __assertions__ (without monkey patching)
|
68
|
-
- __Aliases__ for element locators to avoid repetition
|
69
|
-
- __Composability__: define interactions with your UI once, and [focus on the tests][testing robots] many times
|
70
|
-
- Dependency injection to make tests __predictable and robust__
|
71
|
-
- Full access to the __[Capybara DSL]__
|
54
|
+
[Visit the documentation website][docs] to check out the guides, API reference, and examples.
|
72
55
|
|
73
56
|
## Installation 💿
|
74
57
|
|
@@ -78,325 +61,66 @@ Add this line to your application's Gemfile:
|
|
78
61
|
gem 'capybara_test_helpers'
|
79
62
|
```
|
80
63
|
|
81
|
-
|
82
|
-
|
83
|
-
$ bundle install
|
84
|
-
|
85
|
-
### RSpec
|
86
|
-
|
87
|
-
To use with [RSpec], require the following in `spec_helper.rb`:
|
64
|
+
To use with [RSpec], add the following to your `spec_helper.rb`:
|
88
65
|
|
89
66
|
```ruby
|
90
67
|
require 'capybara_test_helpers/rspec'
|
91
68
|
```
|
92
69
|
|
93
|
-
|
94
|
-
|
95
|
-
If using Rails, make sure you [follow the setup in `rspec-rails`][rspec-rails] first.
|
96
|
-
|
97
|
-
You can run `rails g test_helper base` to create a base test helper and require
|
98
|
-
it as well so that other test helpers can extend it without manually requiring.
|
99
|
-
|
100
|
-
```ruby
|
101
|
-
# spec/rails_helper.rb
|
102
|
-
require 'capybara_test_helpers/rspec'
|
103
|
-
require Rails.root.join('test_helpers/base_test_helper')
|
104
|
-
```
|
105
|
-
|
106
|
-
[Check this example][rails_integration] to see how you can get started.
|
107
|
-
|
108
|
-
### Cucumber
|
109
|
-
|
110
|
-
To use with [Cucumber], require the following in `env.rb`:
|
70
|
+
To use with [Cucumber], add the following to your `support/env.rb`:
|
111
71
|
|
112
72
|
```ruby
|
113
73
|
require 'capybara_test_helpers/cucumber'
|
114
|
-
require Rails.root.join('test_helpers/base_test_helper')
|
115
74
|
```
|
116
75
|
|
117
|
-
|
118
|
-
|
119
|
-
That said, test helpers do provide [a nice way to share code](https://github.com/ElMassimo/capybara_test_helpers/blob/master/examples/rails_app/features/step_definitions/city_steps.rb) if you are migrating
|
120
|
-
from Cucumber to RSpec.
|
121
|
-
|
122
|
-
[Check this example][cucumber_integration] to see how you can get started.
|
76
|
+
Additional installation instructions are available in the [documentation website][installation].
|
123
77
|
|
124
|
-
##
|
78
|
+
## Quick Tour ⚡️
|
125
79
|
|
126
|
-
|
127
|
-
full access to the Capybara DSL.
|
80
|
+
Let's say we have a list of cities, and we want to test the _Edit_ functionality using [Capybara].
|
128
81
|
|
129
82
|
```ruby
|
130
|
-
|
131
|
-
|
83
|
+
scenario 'editing a city' do
|
84
|
+
visit('/cities')
|
132
85
|
|
133
|
-
|
134
|
-
|
135
|
-
el: 'table.cities',
|
86
|
+
within('.cities') {
|
87
|
+
find(:table_row, { 'Name' => 'NYC' }).click_on('Edit')
|
136
88
|
}
|
89
|
+
fill_in 'Name', with: 'New York City'
|
90
|
+
click_on('Update City')
|
137
91
|
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
end
|
142
|
-
|
143
|
-
# Actions: Encapsulate complex actions to provide a cleaner interface.
|
144
|
-
def add(**args)
|
145
|
-
click_on('New City')
|
146
|
-
save_city(**args)
|
147
|
-
yield(form) if block_given?
|
148
|
-
end
|
149
|
-
|
150
|
-
def edit(city, with:)
|
151
|
-
row_for(city).click_on('Edit')
|
152
|
-
save_city(**with)
|
153
|
-
end
|
154
|
-
|
155
|
-
def delete(city)
|
156
|
-
accept_confirm { row_for(city).click_on('Destroy') }
|
157
|
-
end
|
158
|
-
|
159
|
-
private \
|
160
|
-
def save_city(name:)
|
161
|
-
form.within {
|
162
|
-
fill_in 'Name', with: name
|
163
|
-
form.save
|
164
|
-
}
|
165
|
-
end
|
166
|
-
|
167
|
-
# Assertions: Check on element properties, used with `should` and `should_not`.
|
168
|
-
def have_city(name)
|
169
|
-
within { have(:table_row, { 'Name' => name }) }
|
170
|
-
end
|
171
|
-
|
172
|
-
# Background: Helpers to add/modify/delete data in the database or session.
|
173
|
-
def given_there_is_a_city(name)
|
174
|
-
City.create!(name: name)
|
175
|
-
end
|
176
|
-
end
|
177
|
-
```
|
178
|
-
|
179
|
-
When using Rails, you can generate a test helper by running:
|
180
|
-
|
181
|
-
$ rails g test_helper users
|
182
|
-
|
183
|
-
### Writing a Test with Helpers ✅
|
184
|
-
|
185
|
-
You can find [this working example](https://github.com/ElMassimo/capybara_test_helpers/blob/master/examples/rails_app/spec/system/cities_spec.rb) and more in the [example app] and the [Capybara tests][capybara_test_helpers_tests].
|
186
|
-
|
187
|
-
```ruby
|
188
|
-
require 'rails_helper'
|
189
|
-
|
190
|
-
RSpec.describe 'Cities', test_helpers: [:cities] do
|
191
|
-
let!(:nyc) { cities.given_there_is_a_city('NYC') }
|
192
|
-
|
193
|
-
before { cities.visit_page }
|
194
|
-
|
195
|
-
scenario 'valid inputs' do
|
196
|
-
cities.add(name: 'Minneapolis')
|
197
|
-
cities.should.have_city('Minneapolis')
|
198
|
-
end
|
199
|
-
|
200
|
-
scenario 'invalid inputs' do
|
201
|
-
cities.add(name: '') { |form|
|
202
|
-
form.should.have_error("Name can't be blank")
|
203
|
-
}
|
204
|
-
end
|
205
|
-
|
206
|
-
scenario 'editing a city' do
|
207
|
-
cities.edit(nyc, with: { name: 'New York City' })
|
208
|
-
cities.should_no_longer.have_city('NYC')
|
209
|
-
cities.should_now.have_city('New York City')
|
210
|
-
end
|
211
|
-
|
212
|
-
scenario 'deleting a city', screen_size: :phone do
|
213
|
-
cities.delete(nyc)
|
214
|
-
cities.should_no_longer.have_city('NYC')
|
215
|
-
end
|
216
|
-
end
|
217
|
-
```
|
218
|
-
|
219
|
-
To make the test helper available you can use the [`test_helpers` option][rspec_injection]
|
220
|
-
in a `describe`, `context` or `scenario` as seen above.
|
221
|
-
|
222
|
-
When using Cucumber, you may call [`use_test_helpers`][cucumber_injection] in the step definitions.
|
223
|
-
|
224
|
-
Finally, for test helpers that you expect to use very often, you can [`use_test_helpers`][rspec_global_injection] in an RSpec helper module to make them available globally.
|
225
|
-
|
226
|
-
## DSL 🛠
|
227
|
-
|
228
|
-
A [documentation website][docs] with the full API and examples is [now available][docs] :shipit:
|
229
|
-
|
230
|
-
Every single method in the [Capybara DSL] is available inside test helpers, as
|
231
|
-
well as the [built-in RSpec matchers][rspec matchers].
|
232
|
-
|
233
|
-
### Selectors 🔍
|
234
|
-
|
235
|
-
You can encapsulate locators for commonly used elements to avoid hardcoding them
|
236
|
-
in different tests.
|
237
|
-
|
238
|
-
As a result, if the UI changes there are less places that need to be updated in
|
239
|
-
the tests 😃
|
240
|
-
|
241
|
-
```ruby
|
242
|
-
class FormTestHelper < BaseTestHelper
|
243
|
-
SELECTORS = {
|
244
|
-
el: '.form',
|
245
|
-
error_summary: ['#error_explanation', visible: true],
|
246
|
-
name_input: [:fillable_field, 'Name'],
|
247
|
-
save_button: [:button, type: 'submit'],
|
92
|
+
within('.cities') {
|
93
|
+
expect(page).not_to have_selector(:table_row, { 'Name' => 'NYC' })
|
94
|
+
expect(page).to have_selector(:table_row, { 'Name' => 'New York City' })
|
248
95
|
}
|
96
|
+
end
|
249
97
|
```
|
250
98
|
|
251
|
-
|
252
|
-
|
253
|
-
```ruby
|
254
|
-
# Finding an element
|
255
|
-
form.find(:save_button, visible: false)
|
256
|
-
|
257
|
-
# Interacting with an element
|
258
|
-
form.fill_in(:name_input, with: 'Jane')
|
259
|
-
|
260
|
-
# Making an assertion
|
261
|
-
form.has_selector?(:error_summary, text: "Can't be blank")
|
262
|
-
```
|
263
|
-
|
264
|
-
#### Syntax Sugar
|
265
|
-
|
266
|
-
To avoid repetition, getters are available for every selector alias:
|
267
|
-
|
268
|
-
```ruby
|
269
|
-
form.find(:name_input)
|
270
|
-
# same as
|
271
|
-
form.name_input
|
272
|
-
|
273
|
-
form.find(:error_summary, text: "Can't be blank")
|
274
|
-
# same as
|
275
|
-
form.error_summary(text: "Can't be blank")
|
276
|
-
```
|
277
|
-
|
278
|
-
#### `:el` convention
|
279
|
-
|
280
|
-
By convention, `:el` is the top-level element of the component or page the test
|
281
|
-
helper is encapsulating, which will be used automatically when calling a
|
282
|
-
Capybara operation that requires a node, such as `click` or `value`.
|
283
|
-
|
284
|
-
```ruby
|
285
|
-
form.within { save_button.click }
|
286
|
-
# same as
|
287
|
-
form.within(:el) { save_button.click }
|
288
|
-
# same as
|
289
|
-
form.el.within { save_button.click }
|
290
|
-
```
|
291
|
-
|
292
|
-
### Assertions ☑️
|
293
|
-
|
294
|
-
You can use any of the [RSpec matchers provided by Capybara][capybara querying],
|
295
|
-
but the way to use them in test helpers is slightly different.
|
296
|
-
|
297
|
-
Before using an assertion, you must call [`should`][should] or [`should_not`][should_not], and then
|
298
|
-
chain the RSpec matcher or your own custom assertion.
|
299
|
-
|
300
|
-
```ruby
|
301
|
-
users.find(:table)
|
302
|
-
.should.have_selector(:table_row, ['Jane', 'Doe']
|
303
|
-
.should_not.have_selector(:table_row, ['John', 'Doe'])
|
304
|
-
```
|
305
|
-
|
306
|
-
#### Custom Assertions 🎩
|
99
|
+
Even though it gets the job done, it takes a while to understand what the test is trying to do.
|
307
100
|
|
308
|
-
|
309
|
-
which can be easily done by leveraging an existing assertion:
|
310
|
-
|
311
|
-
```ruby
|
312
|
-
class UsersTestHelper < BaseTestHelper
|
313
|
-
SELECTORS = {
|
314
|
-
list: 'table.users',
|
315
|
-
}
|
101
|
+
Without discipline these tests can become __hard to manage__ and require __frequent updating__.
|
316
102
|
|
317
|
-
|
318
|
-
def have_user(*names)
|
319
|
-
have(:table_row, names)
|
320
|
-
end
|
321
|
-
```
|
103
|
+
### Using Test Helpers
|
322
104
|
|
323
|
-
and
|
105
|
+
We can avoid the duplication and keep the [focus on the test][design patterns] instead of its
|
106
|
+
implementation by using [__test helpers__][docs].
|
324
107
|
|
325
108
|
```ruby
|
326
|
-
|
327
|
-
.
|
328
|
-
.should_not.have_user('John', 'Doe')
|
329
|
-
```
|
330
|
-
|
331
|
-
Notice that you don't need to define both the [positive and negative assertions],
|
332
|
-
they are both available because we are using an existing assertion.
|
333
|
-
|
334
|
-
#### Advanced Assertions ⚙️
|
109
|
+
scenario 'editing a city', test_helpers: [:cities] do
|
110
|
+
cities.visit_page
|
335
111
|
|
336
|
-
|
337
|
-
directly. Test helpers provide [`to_or` and `not_to` methods][positive and negative assertions] that you
|
338
|
-
can use to implement an assertion that you can use with `should` or `should_not`.
|
112
|
+
cities.edit('NYC', with: { name: 'New York City' })
|
339
113
|
|
340
|
-
|
341
|
-
|
342
|
-
# Getters: A convenient way to get related data or nested elements.
|
343
|
-
def fullscreen?
|
344
|
-
evaluate_script('!!(document.mozFullScreenElement || document.webkitFullscreenElement)')
|
345
|
-
end
|
346
|
-
|
347
|
-
# Assertions: Allow to check on element properties while keeping it DRY.
|
348
|
-
def be_fullscreen
|
349
|
-
expect(fullscreen?).to_or not_to, eq(true)
|
350
|
-
end
|
114
|
+
cities.should_no_longer.have_city('NYC')
|
115
|
+
cities.should_now.have_city('New York City')
|
351
116
|
end
|
352
|
-
|
353
|
-
current_page.should.be_fullscreen
|
354
|
-
current_page.should_not.be_fullscreen
|
355
|
-
```
|
356
|
-
|
357
|
-
You can make the assertion retry automatically until the Capybara timeout by
|
358
|
-
using `synchronize_expectation`:
|
359
|
-
|
360
|
-
```ruby
|
361
|
-
def be_fullscreen
|
362
|
-
synchronize_expectation {
|
363
|
-
expect(fullscreen?).to_or not_to, eq(true)
|
364
|
-
}
|
365
|
-
end
|
366
|
-
```
|
367
|
-
|
368
|
-
## Design 📐
|
369
|
-
|
370
|
-
This library is loosely based on the concepts of [Page Objects][page_objects] and [Testing Robots][testing_robots], with a healthy dose of [dependency injection](https://martinfowler.com/articles/injection.html).
|
371
|
-
|
372
|
-
Capybara has a great DSL, so the focus of this library is to build upon it, by
|
373
|
-
allowing you to create your own actions and assertions and call them just as
|
374
|
-
fluidly as you would call `find` or `has_content?`.
|
375
|
-
|
376
|
-
This library works best when encapsulating common UI patterns in separate helpers,
|
377
|
-
such as a `FormTestHelper` or a `DropdownTestHelper`, and then reusing them in
|
378
|
-
page-specific test helpers to make the test read more semantically.
|
379
|
-
|
380
|
-
## Formatting 📏
|
381
|
-
|
382
|
-
Regarding selectors, I highly recommend writing one attribute per line, sorting
|
383
|
-
them alphabetically (most editors can do it for you), and
|
384
|
-
[always using a trailing comma][trailing_commas].
|
385
|
-
|
386
|
-
```ruby
|
387
|
-
class DropdownTestHelper < BaseTestHelper
|
388
|
-
# Selectors: Semantic aliases for elements, a useful abstraction.
|
389
|
-
SELECTORS = {
|
390
|
-
el: '.dropdown',
|
391
|
-
toggle: '.dropdown-toggle',
|
392
|
-
}
|
393
117
|
```
|
394
118
|
|
395
|
-
|
119
|
+
Learn more about it in the [documentation website][docs].
|
396
120
|
|
397
121
|
## Special Thanks 🙏
|
398
122
|
|
399
|
-
This library wouldn't be the same without
|
123
|
+
This library wouldn't be the same without early validation from my colleagues, and numerous improvements and bugfixes they contributed to it. Thanks for the support 😃
|
400
124
|
|
401
125
|
- [capybara]: Solid library to write integration tests in Ruby.
|
402
126
|
|
@@ -40,6 +40,11 @@ module CapybaraTestHelpers::Selectors
|
|
40
40
|
end
|
41
41
|
|
42
42
|
module ClassMethods
|
43
|
+
# Public: Light wrapper as syntax sugar for defining SELECTORS.
|
44
|
+
def aliases(selectors = {})
|
45
|
+
const_set('SELECTORS', selectors)
|
46
|
+
end
|
47
|
+
|
43
48
|
# Public: Returns the available selectors for the test helper, or an empty
|
44
49
|
# Hash if selectors are not defined.
|
45
50
|
def selectors
|
@@ -5,16 +5,22 @@ require 'rails/generators/named_base'
|
|
5
5
|
|
6
6
|
# Internal: Generates a new test helper file in the appropriate directory.
|
7
7
|
class TestHelperGenerator < Rails::Generators::NamedBase
|
8
|
+
def base_helper?
|
9
|
+
file_name.to_s == 'base'
|
10
|
+
end
|
11
|
+
|
8
12
|
def create_helper_file
|
9
13
|
create_file("#{ CapybaraTestHelpers.config.helpers_paths.first }/#{ file_name }_test_helper.rb") {
|
10
14
|
<<~CAPYBARA_TEST_HELPER
|
11
15
|
# frozen_string_literal: true
|
12
16
|
|
13
|
-
class #{ file_name.camelize }TestHelper < #{
|
14
|
-
#
|
15
|
-
|
17
|
+
class #{ file_name.camelize }TestHelper < #{ base_helper? ? 'Capybara::TestHelper' : 'BaseTestHelper' }
|
18
|
+
# Aliases: Semantic aliases for locators, can be used in most DSL methods.
|
19
|
+
aliases(
|
20
|
+
#{ base_helper? ? '# Avoid defining :el here since it will be inherited by all helpers.' : "# el: '.#{ file_name.tr('_', '-') }'," }
|
21
|
+
)
|
16
22
|
|
17
|
-
#
|
23
|
+
# Finders: A convenient way to get related data or nested elements.
|
18
24
|
|
19
25
|
# Actions: Encapsulate complex actions to provide a cleaner interface.
|
20
26
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capybara_test_helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maximo Mussini
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-11-
|
11
|
+
date: 2020-11-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|