Skip to content

Flaky spec at uses_questionnaire_templates.rb (templates) - Timing out #10543

@ahukkanen

Description

@ahukkanen

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

Failed run

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions