diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8a69757411f6f82577f981d3b6189c2023e058da..8e694e4aad448868a211bfc5d7cae308d1c1d15e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -448,13 +448,16 @@ karma:
   <<: *except-docs
   variables:
     BABEL_ENV: "coverage"
+    DEBUG: "true"
   script:
     - bundle exec rake karma
   coverage: '/^Statements *: (\d+\.\d+%)/'
   artifacts:
     name: coverage-javascript
     expire_in: 31d
+    when: always
     paths:
+    - chrome_debug.log
     - coverage-javascript/
 
 coverage:
diff --git a/config/karma.config.js b/config/karma.config.js
index ecbd7d4e3e8f5c8dc66e4a9f8de3dee75de2c50b..978850e5d709b5adcefc069a2fdfb3f69101d2f1 100644
--- a/config/karma.config.js
+++ b/config/karma.config.js
@@ -21,14 +21,16 @@ module.exports = function(config) {
 
   var karmaConfig = {
     basePath: ROOT_PATH,
-    browsers: ['ChromeHeadlessNoSandbox'],
+    browsers: ['ChromeHeadlessCustom'],
     customLaunchers: {
-      ChromeHeadlessNoSandbox: {
+      ChromeHeadlessCustom: {
         base: 'ChromeHeadless',
-        // chrome cannot run in sandboxed mode inside a docker container unless it is run with
-        // escalated kernel privileges: docker run --cap-add=CAP_SYS_ADMIN
-        flags: ['--no-sandbox'],
-        displayName: 'Chrome'
+        displayName: 'Chrome',
+        flags: [
+          // chrome cannot run in sandboxed mode inside a docker container unless it is run with
+          // escalated kernel privileges (e.g. docker run --cap-add=CAP_SYS_ADMIN)
+          '--no-sandbox',
+        ],
       }
     },
     frameworks: ['jasmine'],
@@ -54,5 +56,14 @@ module.exports = function(config) {
     };
   }
 
+  if (process.env.DEBUG) {
+    karmaConfig.logLevel = config.LOG_DEBUG;
+    process.env.CHROME_LOG_FILE = process.env.CHROME_LOG_FILE || 'chrome_debug.log';
+  }
+
+  if (process.env.CHROME_LOG_FILE) {
+    karmaConfig.customLaunchers.ChromeHeadlessCustom.flags.push('--enable-logging', '--v=1');
+  }
+
   config.set(karmaConfig);
 };