spreewald 2.1.3 → 2.2.0
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 +5 -5
- data/CHANGELOG.md +4 -0
- data/README.md +86 -70
- data/lib/spreewald/web_steps.rb +117 -113
- data/lib/spreewald_support/version.rb +1 -1
- data/tests/rails-4_capybara-3/Gemfile.lock +1 -1
- data/tests/shared/app/views/static_pages/links.html.haml +5 -0
- data/tests/shared/features/shared/web_steps.feature +9 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c6344c3e67a52d140623e262f62163db7c50d4c8
|
4
|
+
data.tar.gz: 615431258c8bacd8e28459adf8726987226cb348
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d831672bf55cb2b5cdc5fb239dfbc1ac494092e00dc518d8d868513f615416d84dd96b2ea49ac7f1fd9c0f5792c402c9ee36812bdb74aaf25532b5870405ba2b
|
7
|
+
data.tar.gz: dd374015482e0fa3403e4d18ee4885635db1d6295e7f2f2c2626bac6acc4804d0c9cbdce6a41a0d56b08bd4046f13032173dce5b49a6de9cb34c38cc61c22ebb
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file.
|
|
3
3
|
|
4
4
|
This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
5
5
|
|
6
|
+
## 2.2.0
|
7
|
+
- Add a new step `I should( not)? see a link labeled "STRING"`.
|
8
|
+
- Refer to Capybara 3's new flag `Capybara.default_normalize_ws = true` in the READNE,
|
9
|
+
|
6
10
|
## 2.1.3
|
7
11
|
The `I should(not )? see /REGEXP/` step no longer refuses slashes as part of the regular expression. You can thus match full domains and more.
|
8
12
|
|
data/README.md
CHANGED
@@ -83,6 +83,17 @@ More info [here](https://makandracards.com/makandra/12139-waiting-for-page-load-
|
|
83
83
|
Thanks to [cucumber_priority](https://github.com/makandra/cucumber_priority) you can override any step definition from Spreewald with your own pattern. Cucumber will not raise `Cucumber::Ambiguous` if your custom steps collide with a Spreewald step.
|
84
84
|
|
85
85
|
|
86
|
+
## A note on Capybara 3
|
87
|
+
|
88
|
+
If you are upgrading from Capybara 2 to Capybara 3, you might [see failing tests](https://github.com/makandra/spreewald/issues/95) with Spreewald steps like `I should see`. This is caused by a breaking change in [Capybara's Finders](https://www.rubydoc.info/github/jnicklas/capybara/Capybara/Node/Finders) that accept a `:text` option. To activate Capybara 2 behavior globally in your project, enable this flag:
|
89
|
+
|
90
|
+
```ruby
|
91
|
+
Capybara.default_normalize_ws = true
|
92
|
+
````
|
93
|
+
|
94
|
+
This will affect all Spreewald steps that are using Capybara's `:text` option.
|
95
|
+
|
96
|
+
|
86
97
|
## Contributing
|
87
98
|
|
88
99
|
### Testing
|
@@ -390,6 +401,81 @@ deprecation notice. Decide for yourself whether you want to use them:
|
|
390
401
|
* **Then I should not see /.../**
|
391
402
|
|
392
403
|
|
404
|
+
* **Then I should( not)? see a field "..."**
|
405
|
+
|
406
|
+
Checks for the existance of an input field (given its id or label)
|
407
|
+
|
408
|
+
|
409
|
+
* **Then I should( not)? see the (number|amount) ([\-\d,\.]+)( ...)?**
|
410
|
+
|
411
|
+
Use this step to test for a number or money amount instead of a simple `Then I should see`
|
412
|
+
|
413
|
+
Checks for an unexpected minus sign, correct decimal places etc.
|
414
|
+
|
415
|
+
See [here](https://makandracards.com/makandra/1225-test-that-a-number-or-money-amount-is-shown-with-cucumber) for details
|
416
|
+
|
417
|
+
|
418
|
+
* **Then I should see '...'**
|
419
|
+
|
420
|
+
Like `Then I should see`, but with single instead of double quotes. In case
|
421
|
+
the expected string contains quotes as well.
|
422
|
+
|
423
|
+
|
424
|
+
* **Then I should see "..." in the HTML**
|
425
|
+
|
426
|
+
Check that the raw HTML contains a string
|
427
|
+
|
428
|
+
|
429
|
+
* **Then I should not see "..." in the HTML**
|
430
|
+
|
431
|
+
|
432
|
+
* **Then I should see an error**
|
433
|
+
|
434
|
+
Checks that status code is 400..599
|
435
|
+
|
436
|
+
|
437
|
+
* **Then I should (not )?see (an|the) element "..."**
|
438
|
+
|
439
|
+
Check that an element with the given selector is present on the page.
|
440
|
+
|
441
|
+
Example:
|
442
|
+
|
443
|
+
Then I should see an element ".panel"
|
444
|
+
Then I should see the element ".panel"
|
445
|
+
Then I should not see an element ".sidebar"
|
446
|
+
Then I should not see the element ".sidebar"
|
447
|
+
|
448
|
+
|
449
|
+
* **Then I should (not )?see (an|the) element for ...**
|
450
|
+
|
451
|
+
Check that an element with the given [selector alias](https://github.com/makandra/spreewald/blob/master/examples/selectors.rb) is present on the page.
|
452
|
+
|
453
|
+
Example:
|
454
|
+
|
455
|
+
Then I should see an element for the panel
|
456
|
+
Then I should see the element for the panel
|
457
|
+
Then I should not see an element for the sidebar
|
458
|
+
Then I should not see the element for the sidebar
|
459
|
+
|
460
|
+
|
461
|
+
* **Then I should see in this order:?**
|
462
|
+
|
463
|
+
Checks that these strings are rendered in the given order in a single line or in multiple lines
|
464
|
+
|
465
|
+
Example:
|
466
|
+
|
467
|
+
Then I should see in this order:
|
468
|
+
| Alpha Group |
|
469
|
+
| Augsburg |
|
470
|
+
| Berlin |
|
471
|
+
| Beta Group |
|
472
|
+
|
473
|
+
|
474
|
+
* **Then I should( not)? see a link labeled "..."**
|
475
|
+
|
476
|
+
Checks that the page contains a link with a given text or title attribute.
|
477
|
+
|
478
|
+
|
393
479
|
* **Then the "..." field should (not )?contain "..."**
|
394
480
|
|
395
481
|
Checks that an input field contains some value (allowing * as wildcard character)
|
@@ -444,20 +530,6 @@ deprecation notice. Decide for yourself whether you want to use them:
|
|
444
530
|
Open the current Capybara page using the `launchy` or `capybara_screenshot` gem
|
445
531
|
|
446
532
|
|
447
|
-
* **Then I should( not)? see a field "..."**
|
448
|
-
|
449
|
-
Checks for the existance of an input field (given its id or label)
|
450
|
-
|
451
|
-
|
452
|
-
* **Then I should( not)? see the (number|amount) ([\-\d,\.]+)( ...)?**
|
453
|
-
|
454
|
-
Use this step to test for a number or money amount instead of a simple `Then I should see`
|
455
|
-
|
456
|
-
Checks for an unexpected minus sign, correct decimal places etc.
|
457
|
-
|
458
|
-
See [here](https://makandracards.com/makandra/1225-test-that-a-number-or-money-amount-is-shown-with-cucumber) for details
|
459
|
-
|
460
|
-
|
461
533
|
* **Then I should get a response with content-type "..."**
|
462
534
|
|
463
535
|
Checks `Content-Type` HTTP header
|
@@ -483,25 +555,6 @@ deprecation notice. Decide for yourself whether you want to use them:
|
|
483
555
|
Checks for the presence of an option in a select
|
484
556
|
|
485
557
|
|
486
|
-
* **Then I should see '...'**
|
487
|
-
|
488
|
-
Like `Then I should see`, but with single instead of double quotes. In case
|
489
|
-
the expected string contains quotes as well.
|
490
|
-
|
491
|
-
|
492
|
-
* **Then I should see "..." in the HTML**
|
493
|
-
|
494
|
-
Check that the raw HTML contains a string
|
495
|
-
|
496
|
-
|
497
|
-
* **Then I should not see "..." in the HTML**
|
498
|
-
|
499
|
-
|
500
|
-
* **Then I should see an error**
|
501
|
-
|
502
|
-
Checks that status code is 400..599
|
503
|
-
|
504
|
-
|
505
558
|
* **Then the window should be titled "..."**
|
506
559
|
|
507
560
|
|
@@ -568,30 +621,6 @@ deprecation notice. Decide for yourself whether you want to use them:
|
|
568
621
|
got: "http://makandra.com/" (using =~)
|
569
622
|
|
570
623
|
|
571
|
-
* **Then I should (not )?see (an|the) element "..."**
|
572
|
-
|
573
|
-
Check that an element with the given selector is present on the page.
|
574
|
-
|
575
|
-
Example:
|
576
|
-
|
577
|
-
Then I should see an element ".panel"
|
578
|
-
Then I should see the element ".panel"
|
579
|
-
Then I should not see an element ".sidebar"
|
580
|
-
Then I should not see the element ".sidebar"
|
581
|
-
|
582
|
-
|
583
|
-
* **Then I should (not )?see (an|the) element for ...**
|
584
|
-
|
585
|
-
Check that an element with the given [selector alias](https://github.com/makandra/spreewald/blob/master/examples/selectors.rb) is present on the page.
|
586
|
-
|
587
|
-
Example:
|
588
|
-
|
589
|
-
Then I should see an element for the panel
|
590
|
-
Then I should see the element for the panel
|
591
|
-
Then I should not see an element for the sidebar
|
592
|
-
Then I should not see the element for the sidebar
|
593
|
-
|
594
|
-
|
595
624
|
* **Then I should get a text response**
|
596
625
|
|
597
626
|
Checks that the result has content type `text/plain`
|
@@ -625,19 +654,6 @@ deprecation notice. Decide for yourself whether you want to use them:
|
|
625
654
|
* **When I switch to the new tab**
|
626
655
|
|
627
656
|
|
628
|
-
* **Then I should see in this order:?**
|
629
|
-
|
630
|
-
Checks that these strings are rendered in the given order in a single line or in multiple lines
|
631
|
-
|
632
|
-
Example:
|
633
|
-
|
634
|
-
Then I should see in this order:
|
635
|
-
| Alpha Group |
|
636
|
-
| Augsburg |
|
637
|
-
| Berlin |
|
638
|
-
| Beta Group |
|
639
|
-
|
640
|
-
|
641
657
|
* **Then the "..." (field|button|checkbox) should( not)? be disabled**
|
642
658
|
|
643
659
|
Tests that an input or button with the given label is disabled.
|
data/lib/spreewald/web_steps.rb
CHANGED
@@ -195,6 +195,123 @@ Then /^(?:|I )should not see \/(.*)\/$/ do |regexp|
|
|
195
195
|
end
|
196
196
|
end.overridable
|
197
197
|
|
198
|
+
# Checks for the existance of an input field (given its id or label)
|
199
|
+
Then /^I should( not)? see a field "([^"]*)"$/ do |negate, name|
|
200
|
+
expectation = negate ? :not_to : :to
|
201
|
+
patiently do
|
202
|
+
begin
|
203
|
+
# In old Capybaras find_field returns nil, so we assign it to `field`
|
204
|
+
field = find_field(name)
|
205
|
+
rescue Capybara::ElementNotFound
|
206
|
+
# In Capybara 0.4+ #find_field raises an error instead of returning nil
|
207
|
+
# We must explicitely reset the field variable from a previous patiently iteration
|
208
|
+
field = nil
|
209
|
+
end
|
210
|
+
expect(field).send(expectation, be_present)
|
211
|
+
end
|
212
|
+
end.overridable
|
213
|
+
|
214
|
+
# Use this step to test for a number or money amount instead of a simple `Then I should see`
|
215
|
+
#
|
216
|
+
# Checks for an unexpected minus sign, correct decimal places etc.
|
217
|
+
#
|
218
|
+
# See [here](https://makandracards.com/makandra/1225-test-that-a-number-or-money-amount-is-shown-with-cucumber) for details
|
219
|
+
Then /^I should( not)? see the (?:number|amount) ([\-\d,\.]+)(?: (.*?))?$/ do |negate, amount, unit|
|
220
|
+
no_minus = amount.starts_with?('-') ? '' : '[^\\-]'
|
221
|
+
nbsp = " "
|
222
|
+
regexp = Regexp.new(no_minus + "\\b" + Regexp.quote(amount) + (unit ? "( |#{nbsp}| )(#{unit}|#{Regexp.quote(HTMLEntities.new.encode(unit, :named))})" :"\\b"))
|
223
|
+
expectation = negate ? :not_to : :to
|
224
|
+
patiently do
|
225
|
+
expect(page.body).send(expectation, match(regexp))
|
226
|
+
end
|
227
|
+
end.overridable
|
228
|
+
|
229
|
+
# Like `Then I should see`, but with single instead of double quotes. In case
|
230
|
+
# the expected string contains quotes as well.
|
231
|
+
Then /^(?:|I )should see '([^']*)'$/ do |text|
|
232
|
+
patiently do
|
233
|
+
expect(page).to have_content(text)
|
234
|
+
end
|
235
|
+
end.overridable
|
236
|
+
|
237
|
+
# Check that the raw HTML contains a string
|
238
|
+
Then /^I should see "([^\"]*)" in the HTML$/ do |text|
|
239
|
+
patiently do
|
240
|
+
expect(page.body).to include(text)
|
241
|
+
end
|
242
|
+
end.overridable
|
243
|
+
|
244
|
+
Then /^I should not see "([^\"]*)" in the HTML$/ do |text|
|
245
|
+
patiently do
|
246
|
+
expect(page.body).not_to include(text)
|
247
|
+
end
|
248
|
+
end.overridable
|
249
|
+
|
250
|
+
# Checks that status code is 400..599
|
251
|
+
Then /^I should see an error$/ do
|
252
|
+
expect((400 .. 599)).to include(page.status_code)
|
253
|
+
end.overridable
|
254
|
+
|
255
|
+
# Check that an element with the given selector is present on the page.
|
256
|
+
#
|
257
|
+
# Example:
|
258
|
+
#
|
259
|
+
# Then I should see an element ".panel"
|
260
|
+
# Then I should see the element ".panel"
|
261
|
+
# Then I should not see an element ".sidebar"
|
262
|
+
# Then I should not see the element ".sidebar"
|
263
|
+
Then /^I should (not )?see (?:an|the) element "([^"]+)"$/ do |negate, selector|
|
264
|
+
expectation = negate ? :not_to : :to
|
265
|
+
patiently do
|
266
|
+
expect(page).send(expectation, have_css(selector))
|
267
|
+
end
|
268
|
+
end.overridable
|
269
|
+
|
270
|
+
# Check that an element with the given [selector alias](https://github.com/makandra/spreewald/blob/master/examples/selectors.rb) is present on the page.
|
271
|
+
#
|
272
|
+
# Example:
|
273
|
+
#
|
274
|
+
# Then I should see an element for the panel
|
275
|
+
# Then I should see the element for the panel
|
276
|
+
# Then I should not see an element for the sidebar
|
277
|
+
# Then I should not see the element for the sidebar
|
278
|
+
Then /^I should (not )?see (?:an|the) element for (.*?)$/ do |negate, locator|
|
279
|
+
expectation = negate ? :not_to : :to
|
280
|
+
selector = _selector_for(locator)
|
281
|
+
patiently do
|
282
|
+
expect(page).send(expectation, have_selector(*selector))
|
283
|
+
end
|
284
|
+
end.overridable(:priority => -5) # priority must be lower than the "within" step
|
285
|
+
|
286
|
+
# Checks that these strings are rendered in the given order in a single line or in multiple lines
|
287
|
+
#
|
288
|
+
# Example:
|
289
|
+
#
|
290
|
+
# Then I should see in this order:
|
291
|
+
# | Alpha Group |
|
292
|
+
# | Augsburg |
|
293
|
+
# | Berlin |
|
294
|
+
# | Beta Group |
|
295
|
+
Then /^I should see in this order:?$/ do |text|
|
296
|
+
if text.is_a?(String)
|
297
|
+
lines = text.split(/\n/)
|
298
|
+
else
|
299
|
+
lines = text.raw.flatten
|
300
|
+
end
|
301
|
+
lines = lines.collect { |line| line.gsub(/\s+/, ' ')}.collect(&:strip).reject(&:blank?)
|
302
|
+
pattern = lines.collect(&Regexp.method(:quote)).join('.*?')
|
303
|
+
pattern = Regexp.compile(pattern)
|
304
|
+
patiently do
|
305
|
+
expect(page.text.gsub(/\s+/, ' ')).to match(pattern)
|
306
|
+
end
|
307
|
+
end.overridable
|
308
|
+
|
309
|
+
# Checks that the page contains a link with a given text or title attribute.
|
310
|
+
Then /^I should( not)? see a link labeled "([^"]*)"$/ do |negate, label|
|
311
|
+
expectation = negate ? :not_to : :to
|
312
|
+
link = page.first('a', :text => label, minimum: 0) || page.first(%(a[title="#{label}"]), minimum: 0)
|
313
|
+
expect(link).send(expectation, be_present)
|
314
|
+
end
|
198
315
|
|
199
316
|
# Checks that an input field contains some value (allowing * as wildcard character)
|
200
317
|
Then /^the "([^"]*)" field should (not )?contain "([^"]*)"$/ do |label, negate, expected_string|
|
@@ -326,38 +443,6 @@ Then /^show me the page$/ do
|
|
326
443
|
end.overridable
|
327
444
|
|
328
445
|
|
329
|
-
# Checks for the existance of an input field (given its id or label)
|
330
|
-
Then /^I should( not)? see a field "([^"]*)"$/ do |negate, name|
|
331
|
-
expectation = negate ? :not_to : :to
|
332
|
-
patiently do
|
333
|
-
begin
|
334
|
-
# In old Capybaras find_field returns nil, so we assign it to `field`
|
335
|
-
field = find_field(name)
|
336
|
-
rescue Capybara::ElementNotFound
|
337
|
-
# In Capybara 0.4+ #find_field raises an error instead of returning nil
|
338
|
-
# We must explicitely reset the field variable from a previous patiently iteration
|
339
|
-
field = nil
|
340
|
-
end
|
341
|
-
expect(field).send(expectation, be_present)
|
342
|
-
end
|
343
|
-
end.overridable
|
344
|
-
|
345
|
-
|
346
|
-
# Use this step to test for a number or money amount instead of a simple `Then I should see`
|
347
|
-
#
|
348
|
-
# Checks for an unexpected minus sign, correct decimal places etc.
|
349
|
-
#
|
350
|
-
# See [here](https://makandracards.com/makandra/1225-test-that-a-number-or-money-amount-is-shown-with-cucumber) for details
|
351
|
-
Then /^I should( not)? see the (?:number|amount) ([\-\d,\.]+)(?: (.*?))?$/ do |negate, amount, unit|
|
352
|
-
no_minus = amount.starts_with?('-') ? '' : '[^\\-]'
|
353
|
-
nbsp = " "
|
354
|
-
regexp = Regexp.new(no_minus + "\\b" + Regexp.quote(amount) + (unit ? "( |#{nbsp}| )(#{unit}|#{Regexp.quote(HTMLEntities.new.encode(unit, :named))})" :"\\b"))
|
355
|
-
expectation = negate ? :not_to : :to
|
356
|
-
patiently do
|
357
|
-
expect(page.body).send(expectation, match(regexp))
|
358
|
-
end
|
359
|
-
end.overridable
|
360
|
-
|
361
446
|
# Checks `Content-Type` HTTP header
|
362
447
|
Then /^I should get a response with content-type "([^\"]*)"$/ do |expected_content_type|
|
363
448
|
expect(page.response_headers['Content-Type']).to match /\A#{Regexp.quote(expected_content_type)}($|;)/
|
@@ -406,32 +491,6 @@ Then /^"([^"]*)" should( not)? be an option for "([^"]*)"$/ do |value, negate, f
|
|
406
491
|
end
|
407
492
|
end.overridable
|
408
493
|
|
409
|
-
# Like `Then I should see`, but with single instead of double quotes. In case
|
410
|
-
# the expected string contains quotes as well.
|
411
|
-
Then /^(?:|I )should see '([^']*)'$/ do |text|
|
412
|
-
patiently do
|
413
|
-
expect(page).to have_content(text)
|
414
|
-
end
|
415
|
-
end.overridable
|
416
|
-
|
417
|
-
# Check that the raw HTML contains a string
|
418
|
-
Then /^I should see "([^\"]*)" in the HTML$/ do |text|
|
419
|
-
patiently do
|
420
|
-
expect(page.body).to include(text)
|
421
|
-
end
|
422
|
-
end.overridable
|
423
|
-
|
424
|
-
Then /^I should not see "([^\"]*)" in the HTML$/ do |text|
|
425
|
-
patiently do
|
426
|
-
expect(page.body).not_to include(text)
|
427
|
-
end
|
428
|
-
end.overridable
|
429
|
-
|
430
|
-
# Checks that status code is 400..599
|
431
|
-
Then /^I should see an error$/ do
|
432
|
-
expect((400 .. 599)).to include(page.status_code)
|
433
|
-
end.overridable
|
434
|
-
|
435
494
|
Then /^the window should be titled "([^"]*)"$/ do |title|
|
436
495
|
patiently do
|
437
496
|
expect(pag).to have_css('title', :text => title)
|
@@ -531,38 +590,6 @@ Then /^"([^"]*)" should link to "([^"]*)"$/ do |link_label, target|
|
|
531
590
|
end
|
532
591
|
end.overridable
|
533
592
|
|
534
|
-
# Check that an element with the given selector is present on the page.
|
535
|
-
#
|
536
|
-
# Example:
|
537
|
-
#
|
538
|
-
# Then I should see an element ".panel"
|
539
|
-
# Then I should see the element ".panel"
|
540
|
-
# Then I should not see an element ".sidebar"
|
541
|
-
# Then I should not see the element ".sidebar"
|
542
|
-
Then /^I should (not )?see (?:an|the) element "([^"]+)"$/ do |negate, selector|
|
543
|
-
expectation = negate ? :not_to : :to
|
544
|
-
patiently do
|
545
|
-
expect(page).send(expectation, have_css(selector))
|
546
|
-
end
|
547
|
-
end.overridable
|
548
|
-
|
549
|
-
# Check that an element with the given [selector alias](https://github.com/makandra/spreewald/blob/master/examples/selectors.rb) is present on the page.
|
550
|
-
#
|
551
|
-
# Example:
|
552
|
-
#
|
553
|
-
# Then I should see an element for the panel
|
554
|
-
# Then I should see the element for the panel
|
555
|
-
# Then I should not see an element for the sidebar
|
556
|
-
# Then I should not see the element for the sidebar
|
557
|
-
Then /^I should (not )?see (?:an|the) element for (.*?)$/ do |negate, locator|
|
558
|
-
expectation = negate ? :not_to : :to
|
559
|
-
selector = _selector_for(locator)
|
560
|
-
patiently do
|
561
|
-
expect(page).send(expectation, have_selector(*selector))
|
562
|
-
end
|
563
|
-
end.overridable(:priority => -5) # priority must be lower than the "within" step
|
564
|
-
|
565
|
-
|
566
593
|
# Checks that the result has content type `text/plain`
|
567
594
|
Then /^I should get a text response$/ do
|
568
595
|
step 'I should get a response with content-type "text/plain"'
|
@@ -625,29 +652,6 @@ When /^I switch to the new tab$/ do
|
|
625
652
|
end
|
626
653
|
end.overridable
|
627
654
|
|
628
|
-
# Checks that these strings are rendered in the given order in a single line or in multiple lines
|
629
|
-
#
|
630
|
-
# Example:
|
631
|
-
#
|
632
|
-
# Then I should see in this order:
|
633
|
-
# | Alpha Group |
|
634
|
-
# | Augsburg |
|
635
|
-
# | Berlin |
|
636
|
-
# | Beta Group |
|
637
|
-
Then /^I should see in this order:?$/ do |text|
|
638
|
-
if text.is_a?(String)
|
639
|
-
lines = text.split(/\n/)
|
640
|
-
else
|
641
|
-
lines = text.raw.flatten
|
642
|
-
end
|
643
|
-
lines = lines.collect { |line| line.gsub(/\s+/, ' ')}.collect(&:strip).reject(&:blank?)
|
644
|
-
pattern = lines.collect(&Regexp.method(:quote)).join('.*?')
|
645
|
-
pattern = Regexp.compile(pattern)
|
646
|
-
patiently do
|
647
|
-
expect(page.text.gsub(/\s+/, ' ')).to match(pattern)
|
648
|
-
end
|
649
|
-
end.overridable
|
650
|
-
|
651
655
|
# Tests that an input or button with the given label is disabled.
|
652
656
|
Then /^the "([^\"]*)" (field|button|checkbox) should( not)? be disabled$/ do |label, kind, negate|
|
653
657
|
if kind == 'field' || kind == 'checkbox'
|
@@ -244,3 +244,12 @@ Feature: Web steps
|
|
244
244
|
Scenario: /^I should get a download with filename "([^\"]*)"$/
|
245
245
|
When I go to "/downloads/spreadsheet"
|
246
246
|
Then I should get a download with filename "test.ods"
|
247
|
+
|
248
|
+
|
249
|
+
Scenario: /^I should( not)? see a link labeled "([^"]*)"$/
|
250
|
+
When I am on "/static_pages/links"
|
251
|
+
Then I should see a link labeled "First visible link"
|
252
|
+
And I should see a link labeled "First visible link" within ".nested-link"
|
253
|
+
And I should see a link labeled "Also matches via the title attribute"
|
254
|
+
But I should not see a link labeled "Nonexistent Link"
|
255
|
+
And I should not see a link labeled "First visible link" within ".unrelated-element"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spreewald
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tobias Kraze
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-06-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cucumber
|
@@ -283,6 +283,7 @@ files:
|
|
283
283
|
- tests/shared/app/views/static_pages/click_on.html.haml
|
284
284
|
- tests/shared/app/views/static_pages/home.html.haml
|
285
285
|
- tests/shared/app/views/static_pages/link_to_home.html.haml
|
286
|
+
- tests/shared/app/views/static_pages/links.html.haml
|
286
287
|
- tests/shared/app/views/static_pages/overridden.html.haml
|
287
288
|
- tests/shared/app/views/static_pages/see_element.html.haml
|
288
289
|
- tests/shared/app/views/static_pages/visibility.html.haml
|
@@ -326,7 +327,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
326
327
|
version: '0'
|
327
328
|
requirements: []
|
328
329
|
rubyforge_project:
|
329
|
-
rubygems_version: 2.
|
330
|
+
rubygems_version: 2.6.14.3
|
330
331
|
signing_key:
|
331
332
|
specification_version: 4
|
332
333
|
summary: Collection of useful cucumber steps.
|
@@ -437,6 +438,7 @@ test_files:
|
|
437
438
|
- tests/shared/app/views/static_pages/click_on.html.haml
|
438
439
|
- tests/shared/app/views/static_pages/home.html.haml
|
439
440
|
- tests/shared/app/views/static_pages/link_to_home.html.haml
|
441
|
+
- tests/shared/app/views/static_pages/links.html.haml
|
440
442
|
- tests/shared/app/views/static_pages/overridden.html.haml
|
441
443
|
- tests/shared/app/views/static_pages/see_element.html.haml
|
442
444
|
- tests/shared/app/views/static_pages/visibility.html.haml
|