[Feature request] Allow html to be saved on failiure for rspecs ran with rack_test driver

My goal is to have an rspec system spec run with rack_test and to save the html on failure to be able to investigate.

This is possible for selenium driver, but I can’t find a way to make it work for rack_test and I feel like I am missing something so I am suggesting this new feature.

I would imagine that it should be possible to go to spec/rails_helper.rb and define

RSpec.configure do |config|
  config.after(:each) do 
     save_html? # this does not work

In this way we can save the html of the page. The problem is the page.body at this stage is “”, because the method Capybara.reset_session! was called. And it is called here:

# frozen_string_literal: true

module ActionDispatch
  module SystemTesting
    module TestHelpers
      module SetupAndTeardown # :nodoc:
        def host!(host)
          ActiveSupport::Deprecation.warn \
            "ActionDispatch::SystemTestCase#host! is deprecated with no replacement. " \
            "Set Capybara.app_host directly or rely on Capybara's default host."

          Capybara.app_host = host

        def before_teardown

        def after_teardown

This means that the session is reset and only then the config(:after) in the spec/rails_helper is executed.

The call to take_failed_screenshot is

   44:         def take_failed_screenshot 
   45:           take_screenshot if failed? && supports_screenshot?
   46:         end

which checks if screenshot is supported

[128, 137] in /home/kireto/.rvm/gems/ruby-2.7.4/gems/actionpack-6.1.5/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rb
   128:           def failed?
   129:             !passed? && !skipped?
   130:           end
   132:           def supports_screenshot?
=> 133:             Capybara.current_driver != :rack_test
   134:           end
   135:       end
   136:     end
   137:   end

Because the driver is rack_test we naturally skip the rest. And after that the session is reset with Capybara.reset_session! and after that our config.after(:each) block is called and there is no longer a session and a page and the html can not be saved.

I understand that a screenshot can not be taken with the rack_test. That’s find. But the html can be saved?

What do you think about introducing a feature where at least the HTML of the page could be saved for an rspec ran with rack_test?