mirror of
https://github.com/teamcapybara/capybara.git
synced 2022-11-09 12:08:07 -05:00
Fix middleware request uri race condition
When writing a new Rails system test I ran into an issue where the browser would hang and not close, eventually failing the test due to pending requests. There were no clear pending requests and the requests mentioned were AJAX calls that should have been made several pages ago. I believe the cause is an AJAX call being cancelled almost immediately after it was initiated, but I'm not 100% positive. Code wise, it looks like the value of `env['REQUEST_URI']` that increments the counter is different from the `env['REQUEST_URI']` that's decremented in the `ensure` block. This resolves the issue by storing the `env['REQUEST_URI']` value in a variable so it will be consistent between counter calls.
This commit is contained in:
parent
476c8508a3
commit
772ddc831c
1 changed files with 4 additions and 2 deletions
|
@ -53,14 +53,16 @@ module Capybara
|
|||
if env['PATH_INFO'] == '/__identify__'
|
||||
[200, {}, [@app.object_id.to_s]]
|
||||
else
|
||||
@counter.increment(env['REQUEST_URI'])
|
||||
request_uri = env['REQUEST_URI']
|
||||
@counter.increment(request_uri)
|
||||
|
||||
begin
|
||||
@extended_app.call(env)
|
||||
rescue *@server_errors => e
|
||||
@error ||= e
|
||||
raise e
|
||||
ensure
|
||||
@counter.decrement(env['REQUEST_URI'])
|
||||
@counter.decrement(request_uri)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue