diff --git a/app/views/sources/_test_resource_error.html.erb b/app/views/sources/_test_resource_error.html.erb
new file mode 100644
index 000000000..29ca25bf7
--- /dev/null
+++ b/app/views/sources/_test_resource_error.html.erb
@@ -0,0 +1,9 @@
+
+
<%= "#{t('sources.testing.error.title')} (#{resource_type})" %>
+
+
<%= t('sources.testing.error.input_data') %>
+
<%= JSON.pretty_generate(resource_params) %>
+
<%= "#{t('sources.testing.error.message')} #{exception.message}" %>
+
<%= exception.backtrace.first(3).join('
').html_safe %>
+
+
diff --git a/app/views/sources/_test_results.html.erb b/app/views/sources/_test_results.html.erb
index b3c0eb54d..3e22d5011 100644
--- a/app/views/sources/_test_results.html.erb
+++ b/app/views/sources/_test_results.html.erb
@@ -28,9 +28,17 @@
Showing <%= pluralize(sample.count, 'sample') %>
<% end %>
<% sample.each do |resource_params| %>
- <% resource = Source.get_test_resource(type, resource_params, user: User.get_default_user,
- content_provider: @content_provider) %>
- <%= render partial: 'sources/test_resource', locals: { resource: resource, resource_params: resource_params } %>
+ <% begin %>
+ <% resource = Source.get_test_resource(type, resource_params, user: User.get_default_user,
+ content_provider: @content_provider) %>
+ <%= render partial: 'sources/test_resource', locals: { resource: resource,
+ resource_params: resource_params } %>
+ <% rescue StandardError => e %>
+ <%= render partial: 'sources/test_resource_error',
+ locals: { resource_params: resource_params,
+ resource_type: type,
+ exception: e } %>
+ <% end %>
<% end %>
<% end %>
<% end %>
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 727d7ca70..fa871b1f6 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -818,6 +818,11 @@ en:
filters: Filters
allow_list: Allow List
block_list: Block List
+ testing:
+ error:
+ title: "Error rendering test ingestion!"
+ input_data: "Input data:"
+ message: "Error message:"
prompts:
default_language: 'Select a default language...'
scraper: