Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Test: Trigger CI to check flaky Turbo/Stimulus test #664

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
justin808 wants to merge 1 commit into master
base: master
Choose a base branch
Loading
from add-trailing-newlines-ts

Conversation

Copy link
Member

@justin808 justin808 commented Oct 2, 2025
edited
Loading

Summary

This is a test PR to trigger CI and investigate the flaky test failure in spec/stimulus/turbo_spec.rb:20.

Issue

The test "shows inline form when Inline Form link is clicked" is failing intermittently with:

expected `#<Capybara::Session>.has_css?(".form-inline")` to be truthy, got false

This appears to be a timing/race condition where the .form-inline CSS class isn't appearing quickly enough after clicking the link.

Action

Re-running CI to see if this is a flaky test or a real regression.

🤖 Generated with Claude Code


This change is Reviewable

This is a test commit to re-run CI and check if the failing
spec/stimulus/turbo_spec.rb:20 test passes on re-run.
The test failure appears to be a timing issue with the Turbo/Stimulus
interaction where the .form-inline CSS class isn't appearing quickly enough.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Copy link

github-actions bot commented Oct 2, 2025

🚀 Quick Review App Commands

Welcome! Here are the commands you can use in this PR:

/deploy-review-app

Deploy your PR branch for testing

/delete-review-app

Remove the review app when done

/help

Show detailed instructions, environment setup, and configuration options.


Copy link

claude bot commented Oct 2, 2025

PR Review: Test Commit to Trigger CI

Overview

This PR is a test commit designed to re-run CI and investigate the flaky test in spec/stimulus/turbo_spec.rb:20. The PR contains no code changes, which is appropriate for its stated purpose.

Analysis

Purpose Assessment: ✅ Good

  • The PR correctly identifies this as a test commit to investigate intermittent test failures
  • The approach of re-running CI to verify if the test is flaky is reasonable

Issue Identified: ⚠️ Timing/Race Condition
After reviewing the test and related code, the flaky test failure appears to be a legitimate timing issue:

Root Cause Analysis:

  1. Test Location: spec/stimulus/turbo_spec.rb:20-23

    it "shows inline form when Inline Form link is clicked" do
     click_link("Inline Form")
     expect(page).to have_css(".form-inline")
    end
  2. The Problem:

    • The test clicks "Inline Form" link which triggers a Turbo Frame request to /comments/inline_form
    • The controller (app/controllers/comments_controller.rb:95-100) renders the partial comments/turbo/_inline_form.html.erb
    • The partial has the CSS class on line 7: class: "form-inline flex flex-col lg:flex-row flex-wrap gap-4"
    • The test expects the .form-inline class to be present immediately after clicking
    • No explicit wait is configured - the test relies on Capybara's default wait time
  3. Configuration Issues:

    • spec/rails_helper.rb doesn't configure Capybara.default_max_wait_time
    • Capybara's default wait time is 2 seconds, which may be insufficient under CI load
    • No retry logic or explicit waits are used for Turbo Frame loading

Recommendations

1. Fix the Flaky Test (Priority: High)

Add explicit wait configuration in spec/rails_helper.rb:

# Around line 78, add:
Capybara.default_max_wait_time = 5 # Increase from default 2 seconds

2. Alternative: Add Test-Specific Wait (Priority: Medium)

If the global timeout is too aggressive, add a test-specific wait:

it "shows inline form when Inline Form link is clicked" do
 click_link("Inline Form")
 expect(page).to have_css(".form-inline", wait: 5)
end

3. Consider Turbo-Specific Helpers (Priority: Low)

For better Turbo Frame testing, consider waiting for the frame to finish loading:

it "shows inline form when Inline Form link is clicked" do
 click_link("Inline Form")
 # Wait for turbo frame to finish loading
 expect(page).to have_selector('turbo-frame[id="form_tabs"]:not([busy])', visible: false)
 expect(page).to have_css(".form-inline")
end

4. Review Other Similar Tests (Priority: Medium)

The other tab-switching tests (lines 15-18, 25-29) may have similar issues but might be passing due to:

  • have_no_css assertions being more lenient
  • Different timing characteristics

Consider applying consistent wait strategies across all tab-switching tests.

Additional Observations

Test Quality:

  • ✅ Tests use appropriate Capybara matchers
  • ✅ Tests are well-organized and descriptive
  • ⚠️ Tests lack explicit waits for asynchronous operations (Turbo Frames)

Code Quality (Related Files):

  • ✅ Controller is clean and follows Rails conventions
  • ✅ Stimulus controller properly handles form validation and ActionCable
  • ✅ ERB templates use proper Turbo Frame tags
  • ⚠️ No console error handling in Stimulus controller (non-critical)

Security: ✅ No concerns

  • Strong parameters properly configured (comment_params)
  • No XSS vulnerabilities identified

Performance: ✅ No concerns for this test commit

Test Coverage: ⚠️ The flaky test reduces confidence in CI

  • Once fixed, coverage should be adequate for the Turbo/Stimulus integration

Verdict

This PR successfully serves its purpose of triggering CI to investigate the flaky test. However, the underlying issue is a real timing/race condition that should be fixed rather than just re-running CI and hoping it passes.

Suggested Next Steps:

  1. Close this PR (or merge if it passes, since there are no code changes)
  2. Create a new PR implementing one of the recommended fixes above
  3. Monitor the new PR's CI runs to verify the fix resolves the flakiness

🤖 Review generated with Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Reviewers
No reviews
Assignees
No one assigned
Labels
None yet
Projects
None yet
Milestone
No milestone
Development

Successfully merging this pull request may close these issues.

1 participant

AltStyle によって変換されたページ (->オリジナル) /