spreewald 0.5.5 → 0.5.6
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.
data/README.md
CHANGED
@@ -35,6 +35,12 @@ Spreewald's web steps are all aware that you might run them with a Selenium/Capy
|
|
35
35
|
|
36
36
|
This is done by rerunning any assertions until they suceed or a timeout is reached.
|
37
37
|
|
38
|
+
We consider a couple of potential exceptions as "retriable", including
|
39
|
+
Capybara::ElementNotFound, (R)Spec::Expectations::ExpectationNotMetError, Capybara::Poltergeist::ClickFailed
|
40
|
+
|
41
|
+
You can add your own error class with
|
42
|
+
ToleranceForSeleniumSyncIssues::RETRY_ERRORS << 'MyCustomError'
|
43
|
+
|
38
44
|
You can achieve this in your own steps by wrapping them inside a `patiently do` block, like
|
39
45
|
|
40
46
|
Then /^I should see "([^\"]*)" in the HTML$/ do |text|
|
@@ -425,6 +431,16 @@ deprecation notice. Decide for yourself whether you want to use them:
|
|
425
431
|
Click on some text that might not be a link
|
426
432
|
|
427
433
|
|
434
|
+
* **Then "..." should link to "..."/**
|
435
|
+
|
436
|
+
Use this step to check external links.
|
437
|
+
|
438
|
+
Example:
|
439
|
+
|
440
|
+
Then "Sponsor" should link to "http://makandra.com"
|
441
|
+
|
442
|
+
|
443
|
+
|
428
444
|
* **Then I should (not )?see an element "..."**
|
429
445
|
|
430
446
|
Example:
|
data/lib/spreewald/web_steps.rb
CHANGED
@@ -442,6 +442,19 @@ When /^I click on "([^\"]+)"$/ do |text|
|
|
442
442
|
end
|
443
443
|
end
|
444
444
|
|
445
|
+
# Use this step to check external links.
|
446
|
+
#
|
447
|
+
# Example:
|
448
|
+
#
|
449
|
+
# Then "Sponsor" should link to "http://makandra.com"
|
450
|
+
#
|
451
|
+
Then /^"([^"]*)" should link to "([^"]*)"$/ do |link_label, target|
|
452
|
+
patiently do
|
453
|
+
link = find_link(link_label)
|
454
|
+
link[:href].should =~ /#{Regexp.escape target}$/
|
455
|
+
end
|
456
|
+
end
|
457
|
+
|
445
458
|
# Example:
|
446
459
|
#
|
447
460
|
# Then I should see an element ".page .container"
|
@@ -1,6 +1,8 @@
|
|
1
1
|
# coding: UTF-8
|
2
2
|
|
3
3
|
module ToleranceForSeleniumSyncIssues
|
4
|
+
RETRY_ERRORS = %w[Capybara::ElementNotFound Spec::Expectations::ExpectationNotMetError RSpec::Expectations::ExpectationNotMetError Capybara::Poltergeist::ClickFailed]
|
5
|
+
|
4
6
|
# This is similiar but not entirely the same as Capybara::Node::Base#wait_until or Capybara::Session#wait_until
|
5
7
|
def patiently(seconds=Capybara.default_wait_time, &block)
|
6
8
|
old_wait_time = Capybara.default_wait_time
|
@@ -10,7 +12,8 @@ module ToleranceForSeleniumSyncIssues
|
|
10
12
|
start_time = Time.now
|
11
13
|
begin
|
12
14
|
block.call
|
13
|
-
rescue => e
|
15
|
+
rescue Exception => e
|
16
|
+
raise e unless RETRY_ERRORS.include?(e.class.name)
|
14
17
|
raise e if (Time.now - start_time) >= seconds
|
15
18
|
sleep(0.05)
|
16
19
|
raise Capybara::FrozenInTime, "time appears to be frozen, Capybara does not work with libraries which freeze time, consider using time travelling instead" if Time.now == start_time
|
metadata
CHANGED
@@ -1,72 +1,75 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: spreewald
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 7
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 5
|
9
|
+
- 6
|
10
|
+
version: 0.5.6
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Tobias Kraze
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
17
|
+
|
18
|
+
date: 2013-03-15 00:00:00 +01:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
15
22
|
name: cucumber-rails
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ! '>='
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '0'
|
22
|
-
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
none: false
|
34
|
-
requirements:
|
35
|
-
- - ! '>='
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: '0'
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
version: "0"
|
38
33
|
type: :runtime
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: cucumber
|
39
37
|
prerelease: false
|
40
|
-
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
39
|
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - ! '>='
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '0'
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
44
|
+
segments:
|
45
|
+
- 0
|
46
|
+
version: "0"
|
54
47
|
type: :runtime
|
48
|
+
version_requirements: *id002
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: capybara
|
55
51
|
prerelease: false
|
56
|
-
|
52
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
57
53
|
none: false
|
58
|
-
requirements:
|
59
|
-
- -
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
hash: 3
|
58
|
+
segments:
|
59
|
+
- 0
|
60
|
+
version: "0"
|
61
|
+
type: :runtime
|
62
|
+
version_requirements: *id003
|
63
|
+
description: A collection of cucumber steps we use in our projects, including steps to check HTML, tables, emails and some utility methods.
|
64
|
+
email:
|
65
65
|
- tobias@kraze.eu
|
66
66
|
executables: []
|
67
|
+
|
67
68
|
extensions: []
|
69
|
+
|
68
70
|
extra_rdoc_files: []
|
69
|
-
|
71
|
+
|
72
|
+
files:
|
70
73
|
- .gitignore
|
71
74
|
- Gemfile
|
72
75
|
- LICENSE
|
@@ -90,28 +93,39 @@ files:
|
|
90
93
|
- lib/spreewald_support/version.rb
|
91
94
|
- spreewald.gemspec
|
92
95
|
- support/documentation_generator.rb
|
96
|
+
has_rdoc: true
|
93
97
|
homepage: https://github.com/makandra/spreewald
|
94
98
|
licenses: []
|
99
|
+
|
95
100
|
post_install_message:
|
96
101
|
rdoc_options: []
|
97
|
-
|
102
|
+
|
103
|
+
require_paths:
|
98
104
|
- lib
|
99
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
105
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
100
106
|
none: false
|
101
|
-
requirements:
|
102
|
-
- -
|
103
|
-
- !ruby/object:Gem::Version
|
104
|
-
|
105
|
-
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
hash: 3
|
111
|
+
segments:
|
112
|
+
- 0
|
113
|
+
version: "0"
|
114
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
115
|
none: false
|
107
|
-
requirements:
|
108
|
-
- -
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
|
116
|
+
requirements:
|
117
|
+
- - ">="
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
hash: 3
|
120
|
+
segments:
|
121
|
+
- 0
|
122
|
+
version: "0"
|
111
123
|
requirements: []
|
124
|
+
|
112
125
|
rubyforge_project:
|
113
|
-
rubygems_version: 1.
|
126
|
+
rubygems_version: 1.3.9.5
|
114
127
|
signing_key:
|
115
128
|
specification_version: 3
|
116
129
|
summary: Collection of useful cucumber steps.
|
117
130
|
test_files: []
|
131
|
+
|