From 99d3058264d6fdfc847d01f2e481485afcfb117a Mon Sep 17 00:00:00 2001
From: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Date: Wed, 15 Dec 2021 08:24:16 +0100
Subject: [PATCH] Bug 29690: Add selenium test

---
 t/db_dependent/selenium/regressions.t | 36 ++++++++++++++++++++++++++-
 1 file changed, 35 insertions(+), 1 deletion(-)

diff --git a/t/db_dependent/selenium/regressions.t b/t/db_dependent/selenium/regressions.t
index ae2112f1cc3..f9e8cd380a6 100755
--- a/t/db_dependent/selenium/regressions.t
+++ b/t/db_dependent/selenium/regressions.t
@@ -20,7 +20,7 @@ use utf8;
 
 use C4::Context;
 
-use Test::More tests => 6;
+use Test::More tests => 7;
 use Test::MockModule;
 
 use C4::Context;
@@ -91,6 +91,40 @@ subtest 'OPAC - Bibliographic record detail page must contain the data-biblionum
     push @cleanup, $biblio;
 };
 
+subtest 'Bibliographic record detail page must not explode even with invalid metadata' => sub {
+    plan tests => 2;
+
+    my $builder = t::lib::TestBuilder->new;
+    my $patron = $builder->build_object({ class => 'Koha::Patrons', value => { flags => 0 }});
+
+    my $mainpage = $s->base_url . q|mainpage.pl|;
+    $driver->get($mainpage . q|?logout.x=1|);
+    like( $driver->get_title(), qr(Log in to Koha), );
+    $s->auth;
+
+    my ( $biblionumber, $biblioitemnumber ) = add_biblio();
+    my $biblio = Koha::Biblios->find($biblionumber);
+
+    # Note that there are several "non xml chars" in the control fields
+    my $invalid_data = qq{<?xml version="1.0" encoding="UTF-8"?>
+    <record
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"
+        xmlns="http://www.loc.gov/MARC21/slim">
+    <leader>00772nam0a2200277   4500</leader>
+    <controlfield tag="001">00aD000015937</controlfield>
+    <controlfield tag="004">00satmrnu0</controlfield>
+    <controlfield tag="008">00ar19881981bdkldan</controlfield>
+    </record>};
+    $biblio->metadata->metadata($invalid_data)->store();
+
+    $driver->get( $base_url . "/catalogue/detail.pl?biblionumber=$biblionumber" );
+
+    my $biberror = $driver->find_element('//span[@class="biberror"]')->get_text();
+    is( $biberror, "There is an error with this bibliographic record, the view may be degraded.");
+    push @cleanup, $biblio;
+};
+
 subtest 'Play sound on the circulation page' => sub {
     plan tests => 1;
 
-- 
2.25.1