mirror of
https://github.com/discourse/discourse.git
synced 2025-05-29 11:48:08 +08:00

A system test in `system/search_spec.rb` was failing with the following error frequently on CI: ``` Failure/Error: expect(search_page).to have_heading_text("Search") expected `#<PageObjects::Pages::Search:0x00007fb9fcd3f028>.has_heading_text?("Search")` to be truthy, got false [Screenshot Image]: /__w/discourse/discourse/tmp/capybara/failures_r_spec_example_groups_search_when_using_full_page_search_on_mobile_works_and_clears_search_page_state_912.png ~~~~~~~ JS LOGS ~~~~~~~ (no logs) ~~~~~ END JS LOGS ~~~~~ ./spec/system/search_spec.rb:42:in `block (3 levels) in <main>' ./spec/rails_helper.rb:619:in `block (3 levels) in <top (required)>' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/benchmark-0.4.0/lib/benchmark.rb:304:in `measure' ./spec/rails_helper.rb:619:in `block (2 levels) in <top (required)>' ./spec/rails_helper.rb:580:in `block (3 levels) in <top (required)>' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/timeout-0.4.3/lib/timeout.rb:185:in `block in timeout' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/timeout-0.4.3/lib/timeout.rb:192:in `timeout' ./spec/rails_helper.rb:570:in `block (2 levels) in <top (required)>' ./spec/rails_helper.rb:527:in `block (2 levels) in <top (required)>' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/webmock-3.25.1/lib/webmock/rspec.rb:39:in `block (2 levels) in <top (required)>' ``` The failure screenshot shows that the "user" is on the homepage even though we have already clicked the search icon and ensured that the user can see the search container. I suspect there is some sort of race condition here since Capybara executes clicks in quick sucession where we clicked on both the homepage logo and the search icon. It may be possible that Ember redirected the user to the search page first before the browser was able to finish navigating the user to the `/` href. ### Reviewer notes Test flaked in https://github.com/discourse/discourse/actions/runs/14085443789/job/39448197089 with the following failure screenshot: 