Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
gitlab-ce
Commits
0d4eb312
Commit
0d4eb312
authored
Jun 14, 2015
by
Robert Speicher
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add `allowing_for_delay` helper method for feature specs
cherry-picked
parent
f323b8c4
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
41 additions
and
6 deletions
+41
-6
spec/features/profiles/preferences_spec.rb
spec/features/profiles/preferences_spec.rb
+8
-6
spec/support/capybara.rb
spec/support/capybara.rb
+33
-0
No files found.
spec/features/profiles/preferences_spec.rb
View file @
0d4eb312
...
...
@@ -21,9 +21,10 @@ describe 'Profile > Preferences' do
it
'updates their preference'
do
choose
"user_theme_id_
#{
theme
.
id
}
"
visit
page
.
current_path
expect
(
page
).
to
have_checked_field
(
"user_theme_id_
#{
theme
.
id
}
"
)
allowing_for_delay
do
visit
page
.
current_path
expect
(
page
).
to
have_checked_field
(
"user_theme_id_
#{
theme
.
id
}
"
)
end
end
it
'reflects the changes immediately'
do
...
...
@@ -46,9 +47,10 @@ describe 'Profile > Preferences' do
it
'updates their preference'
do
choose
'user_color_scheme_id_5'
visit
page
.
current_path
expect
(
page
).
to
have_checked_field
(
'user_color_scheme_id_5'
)
allowing_for_delay
do
visit
page
.
current_path
expect
(
page
).
to
have_checked_field
(
'user_color_scheme_id_5'
)
end
end
end
...
...
spec/support/capybara.rb
View file @
0d4eb312
...
...
@@ -19,3 +19,36 @@ unless ENV['CI'] || ENV['CI_SERVER']
# Keep only the screenshots generated from the last failing test suite
Capybara
::
Screenshot
.
prune_strategy
=
:keep_last_run
end
module
CapybaraHelpers
# Execute a block a certain number of times before considering it a failure
#
# The given block is called, and if it raises a `Capybara::ExpectationNotMet`
# error, we wait `interval` seconds and then try again, until `retries` is
# met.
#
# This allows for better handling of timing-sensitive expectations in a
# sketchy CI environment, for example.
#
# interval - Delay between retries in seconds (default: 0.5)
# retries - Number of times to execute before failing (default: 5)
def
allowing_for_delay
(
interval:
0.5
,
retries:
5
)
tries
=
0
begin
yield
rescue
Capybara
::
ExpectationNotMet
=>
ex
if
tries
<=
retries
tries
+=
1
sleep
interval
retry
else
raise
ex
end
end
end
end
RSpec
.
configure
do
|
config
|
config
.
include
CapybaraHelpers
,
type: :feature
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment