Our test helper monkey-patches SimpleCov::Formatter::HTMLFormatter#output_path to nest the HTML report under build/coverage/html, because SimpleCov hardcodes the HTML output directory to SimpleCov.coverage_path with no config option (as of simplecov 0.22.0 / simplecov-html 0.13.2).
Upstream has fixed this in simplecov-ruby/simplecov#1165 ("Simplify formatter architecture", merged 2026-05-04), which adds an output_dir: keyword to the formatter constructor. It is merged but not yet released — the latest release is still 0.22.0.
Action: once SimpleCov ships a release newer than 0.22.0, drop the monkey-patch and pass output_dir: 'build/coverage/html' to HTMLFormatter.new instead. Note that release is a breaking refactor (HTML report becomes a client-side JS app, simplecov-html folded into core, config DSL deprecations), so the upgrade is more than just removing the patch.
Our test helper monkey-patches
SimpleCov::Formatter::HTMLFormatter#output_pathto nest the HTML report underbuild/coverage/html, because SimpleCov hardcodes the HTML output directory toSimpleCov.coverage_pathwith no config option (as of simplecov 0.22.0 / simplecov-html 0.13.2).Upstream has fixed this in simplecov-ruby/simplecov#1165 ("Simplify formatter architecture", merged 2026-05-04), which adds an
output_dir:keyword to the formatter constructor. It is merged but not yet released — the latest release is still 0.22.0.Action: once SimpleCov ships a release newer than 0.22.0, drop the monkey-patch and pass
output_dir: 'build/coverage/html'toHTMLFormatter.newinstead. Note that release is a breaking refactor (HTML report becomes a client-side JS app,simplecov-htmlfolded into core, config DSL deprecations), so the upgrade is more than just removing the patch.