Skip to content

Link checker CI passes despite broken links on master #2217

@ihabadham

Description

@ihabadham

Summary

The markdown link checker CI workflow passes in ~5 seconds despite master having 21+ broken GitHub URLs that return HTTP 404.

Evidence

Broken URLs on master (all return 404)

https://github.com/shakacode/react_on_rails/blob/master/lib/generators/react_on_rails/install_generator.rb
https://github.com/shakacode/react_on_rails/blob/master/spec/dummy/config/shakapacker.yml
https://github.com/shakacode/react_on_rails/tree/master/spec/dummy
https://github.com/shakacode/react_on_rails/tree/master/lib/react_on_rails/controller.rb
... (21+ total)

These should be prefixed with react_on_rails/ after the monorepo restructure in PR #2114.

Local vs CI behavior

Environment Time Result
Local (npx markdown-link-check) ~4 minutes ❌ Finds 404 errors correctly
CI (GitHub Actions) ~5 seconds ✅ "All links are good!"

Timeline

CI Run Comparison

Failed run (Nov 16) - Run #19398864335

  • find command took 96-99 seconds
  • Found error: ERROR: 1 dead links found in docs/api-reference/configuration-deprecated.md !

Recent "successful" run on master - Run #20147672041

  • find command took only 5 seconds
  • Reports "All links are good!" despite 21+ broken URLs

Local verification

# This returns 404
curl -sI "https://github.com/shakacode/react_on_rails/blob/master/lib/generators/react_on_rails/install_generator.rb" | head -1
# HTTP/2 404

# Local tool catches it
npx markdown-link-check docs/api-reference/redux-store-api.md --config .github/markdown-link-check-config.json
# ERROR: 4 dead links found!

Root Cause Theory

Something changed in the GitHub Actions environment between Nov 16 and Nov 24 that causes the Docker container running markdown-link-check to complete almost instantly (~5 seconds for 102 files) without making actual HTTP requests.

The 5-second completion time is impossible if network requests are being made - each external link check takes 0.5-1 second minimum.

Workflow Configuration

.github/workflows/check-markdown-links.yml:

  • Uses Wandalen/[email protected] wrapper
  • Wraps tcort/github-action-markdown-link-check@a800ad5f1c35bf61987946fd31c15726a1c9f2ba
  • Config file: .github/markdown-link-check-config.json

Impact

The link checker CI is not functioning as a safety net - broken links can merge to master undetected.

Possible Solutions

  1. Investigate why Docker container isn't making HTTP requests
  2. Switch to a different link checker (e.g., Linkspector recommended in the deprecation notice)
  3. Add verbose logging to diagnose the issue
  4. Test without the wretry.action wrapper

Related

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions