diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 29d349177e86f4ca38b038646d2115d6ca1b96a2..ea9d3fddc4aa0cdf93f18db293d35eca0b7d5bc0 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -73,6 +73,8 @@ stages:
       - build_dist/meson-dist/*.tar.xz
     reports:
       junit: build_ci*/meson-logs/testlog.junit.xml
+  after_script:
+    - ci/fix-meson-junit.sh build_ci*/meson-logs/testlog.junit.xml
 
 archive:
   <<: *build
diff --git a/ci/fix-meson-junit.sh b/ci/fix-meson-junit.sh
new file mode 100755
index 0000000000000000000000000000000000000000..02cf4880b408e2244024c1f1024fbca2a9df5ecd
--- /dev/null
+++ b/ci/fix-meson-junit.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+sed 's|</testcase>|</testcase>\n|g' -i "$@"
+sed -e '/<failure \/>/,/<\/testcase>/s/<\(\/\?\)system-\(out\|err\)>/<\1failure>/g' \
+	-e 's/<failure \/>//g' \
+	-i "$@"