diff --git a/lib/rails/controller/testing.rb b/lib/rails/controller/testing.rb index 45a2b27..d62c89c 100644 --- a/lib/rails/controller/testing.rb +++ b/lib/rails/controller/testing.rb @@ -2,6 +2,7 @@ require 'rails/controller/testing/test_process' require 'rails/controller/testing/integration' require 'rails/controller/testing/template_assertions' +require 'rails/controller/testing/instrument_determine_template' module Rails module Controller @@ -18,6 +19,12 @@ def self.install include Rails::Controller::Testing::TestProcess end + if ActiveSupport::VERSION::MAJOR >= 6 + ActiveSupport.on_load(:action_view) do + ActionView::TemplateRenderer.prepend(InstrumentDetermineTemplate) + end + end + ActiveSupport.on_load(:action_view_test_case) do include Rails::Controller::Testing::TemplateAssertions end diff --git a/lib/rails/controller/testing/instrument_determine_template.rb b/lib/rails/controller/testing/instrument_determine_template.rb new file mode 100644 index 0000000..951971a --- /dev/null +++ b/lib/rails/controller/testing/instrument_determine_template.rb @@ -0,0 +1,18 @@ +module Rails + module Controller + module Testing + module InstrumentDetermineTemplate + def determine_template(options) + super.tap do |template| + if template.is_a?(ActionView::Template::RawFile) + ActiveSupport::Notifications.instrument( + "!render_template.action_view", + { virtual_path: nil, identifier: template.identifier } + ) + end + end + end + end + end + end +end