Describe the bug
The template specs related to surveys seem to be timing out occasionally:
https://github.com/decidim/decidim/actions/runs/4403760043/jobs/7712532367
This is a shared example provided by the decidim-templates module:
https://github.com/decidim/decidim/blob/0a73269cc371e2147e837795bc465a57e2c9a25e/decidim-templates/lib/decidim/templates/test/shared_examples/uses_questionnaire_templates.rb
Used in decidim-surveys specs:
|
it_behaves_like "uses questionnaire templates", :survey |
To Reproduce
Run this command until you will see a timeout, i.e. the command is running for an infinite amount of time:
$ cd decidim-surveys
$ for i in {1..20} ; do bundle exec rspec spec/system/admin_manages_surveys_spec.rb -e "uses questionnaire templates apply a template copies the template data to the questionnaire on submit" || break ; done
You should see it timing out if you repeat this spec enough many times. And by this I mean that the spec keeps running infinitely and never ends.
Expected behavior
This spec should not time out.
Screenshots

Stacktrace
At CI:
Randomized with seed 5433
1st Try error in /home/runner/work/decidim/decidim/decidim-templates/lib/decidim/templates/test/shared_examples/uses_questionnaire_templates.rb:99:
Net::ReadTimeout
Net::ReadTimeout
Net::ReadTimeout
Requests did not finish in 60 seconds: ["/admin/templates/questionnaire_templates/preview.js?id=1", "/admin/templates/questionnaire_templates/apply?questionnaire_id=169&url=http%3A%2F%2F218.lvh.me%3A5244%2Fadmin%2Fparticipatory_processes%2Fexercitationem-et-218%2Fcomponents%2F51%2Fmanage%2F"]
RSpec::Retry: 2nd try /home/runner/work/decidim/decidim/decidim-templates/lib/decidim/templates/test/shared_examples/uses_questionnaire_templates.rb:99
Error: The operation was canceled.
Locally:
Admin manages surveys
behaves like uses questionnaire templates
apply a template
copies the template data to the questionnaire on submit (FAILED - 1)
Failures:
1) Admin manages surveys behaves like uses questionnaire templates apply a template copies the template data to the questionnaire on submit
Got 0 failures and 4 other errors:
Shared Example Group: "uses questionnaire templates" called from ./spec/system/admin_manages_surveys_spec.rb:124
1.1) Failure/Error: @io.to_io.wait_readable(@read_timeout) or raise Net::ReadTimeout
Net::ReadTimeout:
Net::ReadTimeout
# /path/to/decidim/decidim-templates/lib/decidim/templates/test/shared_examples/uses_questionnaire_templates.rb:95:in `block (4 levels) in <main>'
# /path/to/decidim/decidim-templates/lib/decidim/templates/test/shared_examples/uses_questionnaire_templates.rb:94:in `block (3 levels) in <main>'
1.2) Failure/Error: @io.to_io.wait_readable(@read_timeout) or raise Net::ReadTimeout
Net::ReadTimeout:
Net::ReadTimeout
# <internal:kernel>:90:in `tap'
1.3) Failure/Error: @io.to_io.wait_readable(@read_timeout) or raise Net::ReadTimeout
Net::ReadTimeout:
Net::ReadTimeout
# /path/to/decidim/decidim-dev/lib/decidim/dev/test/rspec_support/capybara.rb:153:in `block (2 levels) in <main>'
1.4) Failure/Error: raise "Requests did not finish in 60 seconds: #{middleware.pending_requests}" if timer.expired?
RuntimeError:
Requests did not finish in 60 seconds: ["/admin/templates/questionnaire_templates/preview.js?id=187", "/admin/templates/questionnaire_templates/apply?questionnaire_id=1520&url=http%3A%2F%2F1.lvh.me%3A5203%2Fadmin%2Fparticipatory_processes%2Ftemporibus-sequi-1%2Fcomponents%2F227%2Fmanage%2F"]
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/capybara-3.37.1/lib/capybara/server.rb:66:in `wait_for_pending_requests'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/capybara-3.37.1/lib/capybara/session.rb:133:in `reset!'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/capybara-3.37.1/lib/capybara.rb:326:in `block in reset_sessions!'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/capybara-3.37.1/lib/capybara.rb:326:in `reverse_each'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/capybara-3.37.1/lib/capybara.rb:326:in `reset_sessions!'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/capybara-3.37.1/lib/capybara/rspec.rb:20:in `block (2 levels) in <main>'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example.rb:457:in `instance_exec'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example.rb:457:in `instance_exec'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/hooks.rb:372:in `run'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/hooks.rb:529:in `block in run_owned_hooks_for'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/hooks.rb:528:in `each'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/hooks.rb:528:in `run_owned_hooks_for'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/hooks.rb:615:in `block in run_example_hooks_for'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/hooks.rb:614:in `each'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/hooks.rb:614:in `run_example_hooks_for'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/hooks.rb:485:in `run'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example.rb:518:in `run_after_example'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example.rb:283:in `block in run'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example.rb:511:in `block in with_around_and_singleton_context_hooks'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example.rb:468:in `block in with_around_example_hooks'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/hooks.rb:486:in `block in run'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/hooks.rb:626:in `block in run_around_example_hooks_for'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example.rb:352:in `call'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-rails-4.1.2/lib/rspec/rails/adapters.rb:75:in `block (2 levels) in <module:MinitestLifecycleAdapter>'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example.rb:457:in `instance_exec'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example.rb:457:in `instance_exec'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/hooks.rb:390:in `execute_with'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/hooks.rb:628:in `block (2 levels) in run_around_example_hooks_for'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example.rb:352:in `call'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/webmock-3.14.0/lib/webmock/rspec.rb:37:in `block (2 levels) in <main>'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example.rb:457:in `instance_exec'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example.rb:457:in `instance_exec'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/hooks.rb:390:in `execute_with'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/hooks.rb:628:in `block (2 levels) in run_around_example_hooks_for'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example.rb:352:in `call'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/hooks.rb:629:in `run_around_example_hooks_for'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/hooks.rb:486:in `run'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example.rb:468:in `with_around_example_hooks'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example.rb:511:in `with_around_and_singleton_context_hooks'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example.rb:259:in `run'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example_group.rb:646:in `block in run_examples'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example_group.rb:642:in `map'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example_group.rb:642:in `run_examples'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example_group.rb:607:in `run'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example_group.rb:608:in `block in run'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example_group.rb:608:in `map'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example_group.rb:608:in `run'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example_group.rb:608:in `block in run'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example_group.rb:608:in `map'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/example_group.rb:608:in `run'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/runner.rb:121:in `block (3 levels) in run_specs'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/runner.rb:121:in `map'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/runner.rb:121:in `block (2 levels) in run_specs'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/configuration.rb:2068:in `with_suite_hooks'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/runner.rb:116:in `block in run_specs'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/reporter.rb:74:in `report'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/runner.rb:115:in `run_specs'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/runner.rb:89:in `run'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/runner.rb:71:in `run'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/lib/rspec/core/runner.rb:45:in `invoke'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/rspec-core-3.11.0/exe/rspec:4:in `<top (required)>'
# /path/to/.rbenv/versions/3.1.1/bin/rspec:25:in `load'
# /path/to/.rbenv/versions/3.1.1/bin/rspec:25:in `<top (required)>'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/site_ruby/3.1.0/bundler/cli/exec.rb:58:in `load'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/site_ruby/3.1.0/bundler/cli/exec.rb:58:in `kernel_load'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/site_ruby/3.1.0/bundler/cli/exec.rb:23:in `run'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/site_ruby/3.1.0/bundler/cli.rb:491:in `exec'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/site_ruby/3.1.0/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/site_ruby/3.1.0/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/site_ruby/3.1.0/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/site_ruby/3.1.0/bundler/cli.rb:34:in `dispatch'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/site_ruby/3.1.0/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/site_ruby/3.1.0/bundler/cli.rb:28:in `start'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/bundler-2.4.6/exe/bundle:45:in `block in <top (required)>'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/site_ruby/3.1.0/bundler/friendly_errors.rb:117:in `with_friendly_errors'
# /path/to/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/bundler-2.4.6/exe/bundle:33:in `<top (required)>'
# /path/to/.rbenv/versions/3.1.1/bin/bundle:25:in `load'
# /path/to/.rbenv/versions/3.1.1/bin/bundle:25:in `<main>'
#
# Showing full backtrace because every line was filtered out.
# See docs for RSpec::Configuration#backtrace_exclusion_patterns and
# RSpec::Configuration#backtrace_inclusion_patterns for more information.
Extra data
- Decidim Version:
develop
- Decidim installation: CI and local
Additional context
No response
Describe the bug
The template specs related to surveys seem to be timing out occasionally:
https://github.com/decidim/decidim/actions/runs/4403760043/jobs/7712532367
This is a shared example provided by the
decidim-templatesmodule:https://github.com/decidim/decidim/blob/0a73269cc371e2147e837795bc465a57e2c9a25e/decidim-templates/lib/decidim/templates/test/shared_examples/uses_questionnaire_templates.rb
Used in
decidim-surveysspecs:decidim/decidim-surveys/spec/system/admin_manages_surveys_spec.rb
Line 124 in 0a73269
To Reproduce
Run this command until you will see a timeout, i.e. the command is running for an infinite amount of time:
You should see it timing out if you repeat this spec enough many times. And by this I mean that the spec keeps running infinitely and never ends.
Expected behavior
This spec should not time out.
Screenshots
Stacktrace
At CI:
Locally:
Extra data
developAdditional context
No response