• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In
Warning: This build has drifted.
The coverage report for this pull request build may be inaccurate because its base commit is no longer the HEAD of its target branch.
This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

    • Learn more: For more information on this, see Tracking coverage changes for pull request builds.
    • Fix now: For a quick fix, rebase this PR at GitHub. Your next report should be accurate.
    • Prevent going forward: To avoid this issue with future PRs, see these Recommended CI Configurations.
New Repo Setting:
INCLUDE COVERAGE % WITH WARNINGS ABOUT DRIFTED BUILDS?

Enabling this setting will include a (potentially inaccurate) coverage % with warning messages in status updates for drifted builds.

Adjust setting

ukeeper / ukeeper-readability / 24303853945
80%
master: 78%

Build:
Build:
LAST BUILD BRANCH: dependabot/go_modules/go-modules-updates-0b36ab2f83
DEFAULT BRANCH: master
Ran 12 Apr 2026 09:49AM UTC
Jobs 1
Files 9
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

12 Apr 2026 09:43AM UTC coverage: 78.004% (+0.9%) from 77.118%
24303853945

Pull #73

github

paskal
feat: add per-rule and global Cloudflare routing, 429 retries

HTTP retriever stays the default. Cloudflare is now opt-in at two levels:

- per-rule: new Rule.UseCloudflare field (checkbox in rule editor UI)
  routes requests for that domain through Cloudflare Browser Rendering
- global: --cf-route-all / CF_ROUTE_ALL flag (default false) routes every
  request through Cloudflare

UReadability.pickRetriever(rule) picks: CFRouteAll > rule.UseCloudflare >
default HTTP. extractWithRules now resolves the rule once upfront and
shares it between routing and getContent (was looked up twice).

CloudflareRetriever retries on HTTP 429 with exponential backoff (base 11s,
max 2 retries by default → worst-case 33s of backoff), honours Retry-After
header, and aborts immediately on caller context cancel. MaxRetries=-1
disables retries.

Added WriteTimeout=150s on the HTTP server — was previously unset, allowing
handlers to run forever. 150s covers the worst-case CF path (up to ~123s).
Pull Request #73: Modularise URL retrieval with Cloudflare Browser Rendering support

206 of 248 new or added lines in 5 files covered. (83.06%)

1 existing line in 1 file now uncovered.

766 of 982 relevant lines covered (78.0%)

9.36 hits per line

Uncovered Changes

Lines Coverage ∆ File
26
83.33
extractor/retriever.go
14
71.88
-17.31% main.go
1
89.15
3.99% extractor/readability.go
1
88.06
0.0% extractor/text.go

Coverage Regressions

Lines Coverage ∆ File
1
89.15
3.99% extractor/readability.go
Jobs
ID Job ID Ran Files Coverage
1 24303853945.1 12 Apr 2026 09:49AM UTC 9
78.0
GitHub Action Run
Source Files on build 24303853945
  • Tree
  • List 9
  • Changed 5
  • Source Changed 0
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Pull Request #73
  • PR Base - master (#23716907620)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc