diff --git a/karma.common.conf.js b/karma.common.conf.js
new file mode 100644
index 0000000000000000000000000000000000000000..bcb684b3071282a1645e6ccf4e2c186d4aad7198
--- /dev/null
+++ b/karma.common.conf.js
@@ -0,0 +1,28 @@
+// Trick to use the auto-downloaded puppeteer chrome binary
+process.env.CHROME_BIN = require('puppeteer').executablePath();
+
+module.exports = function(config) {
+    config.set({
+      basePath: 'dist',
+      frameworks: ['mocha'],
+      client: {
+        mocha: {
+          ui: 'tdd',
+        },
+      },
+      files: [
+        {pattern: './*.js', included: true, watched: true, served: true, type: 'module'},
+        {pattern: './**/*', included: false, watched: true, served: true},
+      ],
+      autoWatch: true,
+      browsers: ['ChromeHeadlessNoSandbox', 'FirefoxHeadless'],
+      customLaunchers: {
+        ChromeHeadlessNoSandbox: {
+          base: 'ChromeHeadless',
+          flags: ['--no-sandbox']
+        }
+      },
+      singleRun: false,
+      logLevel: config.LOG_ERROR
+    });
+}
\ No newline at end of file
diff --git a/packages/app-shell/karma.conf.js b/packages/app-shell/karma.conf.js
index f9cda6ad8cd84ec117f224be7da7c534b48b0490..ca038af2286e2ad631f1c58d7216fbe4054e4199 100644
--- a/packages/app-shell/karma.conf.js
+++ b/packages/app-shell/karma.conf.js
@@ -1,28 +1 @@
-// Trick to use the auto-downloaded puppeteer chrome binary
-process.env.CHROME_BIN = require('puppeteer').executablePath();
-
-module.exports = function(config) {
-  config.set({
-    basePath: 'dist',
-    frameworks: ['mocha'],
-    client: {
-      mocha: {
-        ui: 'tdd',
-      },
-    },
-    files: [
-      {pattern: './*.js', included: true, watched: true, served: true, type: 'module'},
-      {pattern: './**/*', included: false, watched: true, served: true},
-    ],
-    autoWatch: true,
-    browsers: ['ChromeHeadlessNoSandbox', 'FirefoxHeadless'],
-    customLaunchers: {
-      ChromeHeadlessNoSandbox: {
-        base: 'ChromeHeadless',
-        flags: ['--no-sandbox']
-      }
-    },
-    singleRun: false,
-    logLevel: config.LOG_ERROR
-  });
-}
+module.exports = require('../../karma.common.conf.js');
diff --git a/packages/auth/karma.conf.js b/packages/auth/karma.conf.js
index f9cda6ad8cd84ec117f224be7da7c534b48b0490..ca038af2286e2ad631f1c58d7216fbe4054e4199 100644
--- a/packages/auth/karma.conf.js
+++ b/packages/auth/karma.conf.js
@@ -1,28 +1 @@
-// Trick to use the auto-downloaded puppeteer chrome binary
-process.env.CHROME_BIN = require('puppeteer').executablePath();
-
-module.exports = function(config) {
-  config.set({
-    basePath: 'dist',
-    frameworks: ['mocha'],
-    client: {
-      mocha: {
-        ui: 'tdd',
-      },
-    },
-    files: [
-      {pattern: './*.js', included: true, watched: true, served: true, type: 'module'},
-      {pattern: './**/*', included: false, watched: true, served: true},
-    ],
-    autoWatch: true,
-    browsers: ['ChromeHeadlessNoSandbox', 'FirefoxHeadless'],
-    customLaunchers: {
-      ChromeHeadlessNoSandbox: {
-        base: 'ChromeHeadless',
-        flags: ['--no-sandbox']
-      }
-    },
-    singleRun: false,
-    logLevel: config.LOG_ERROR
-  });
-}
+module.exports = require('../../karma.common.conf.js');
diff --git a/packages/check-in-place-select/karma.conf.js b/packages/check-in-place-select/karma.conf.js
index f9cda6ad8cd84ec117f224be7da7c534b48b0490..ca038af2286e2ad631f1c58d7216fbe4054e4199 100644
--- a/packages/check-in-place-select/karma.conf.js
+++ b/packages/check-in-place-select/karma.conf.js
@@ -1,28 +1 @@
-// Trick to use the auto-downloaded puppeteer chrome binary
-process.env.CHROME_BIN = require('puppeteer').executablePath();
-
-module.exports = function(config) {
-  config.set({
-    basePath: 'dist',
-    frameworks: ['mocha'],
-    client: {
-      mocha: {
-        ui: 'tdd',
-      },
-    },
-    files: [
-      {pattern: './*.js', included: true, watched: true, served: true, type: 'module'},
-      {pattern: './**/*', included: false, watched: true, served: true},
-    ],
-    autoWatch: true,
-    browsers: ['ChromeHeadlessNoSandbox', 'FirefoxHeadless'],
-    customLaunchers: {
-      ChromeHeadlessNoSandbox: {
-        base: 'ChromeHeadless',
-        flags: ['--no-sandbox']
-      }
-    },
-    singleRun: false,
-    logLevel: config.LOG_ERROR
-  });
-}
+module.exports = require('../../karma.common.conf.js');
diff --git a/packages/common/karma.conf.js b/packages/common/karma.conf.js
index f9cda6ad8cd84ec117f224be7da7c534b48b0490..ca038af2286e2ad631f1c58d7216fbe4054e4199 100644
--- a/packages/common/karma.conf.js
+++ b/packages/common/karma.conf.js
@@ -1,28 +1 @@
-// Trick to use the auto-downloaded puppeteer chrome binary
-process.env.CHROME_BIN = require('puppeteer').executablePath();
-
-module.exports = function(config) {
-  config.set({
-    basePath: 'dist',
-    frameworks: ['mocha'],
-    client: {
-      mocha: {
-        ui: 'tdd',
-      },
-    },
-    files: [
-      {pattern: './*.js', included: true, watched: true, served: true, type: 'module'},
-      {pattern: './**/*', included: false, watched: true, served: true},
-    ],
-    autoWatch: true,
-    browsers: ['ChromeHeadlessNoSandbox', 'FirefoxHeadless'],
-    customLaunchers: {
-      ChromeHeadlessNoSandbox: {
-        base: 'ChromeHeadless',
-        flags: ['--no-sandbox']
-      }
-    },
-    singleRun: false,
-    logLevel: config.LOG_ERROR
-  });
-}
+module.exports = require('../../karma.common.conf.js');
diff --git a/packages/data-table-view/karma.conf.js b/packages/data-table-view/karma.conf.js
index b6731e5705b9b7419fa3831747c0a3feb0bfd074..ca038af2286e2ad631f1c58d7216fbe4054e4199 100644
--- a/packages/data-table-view/karma.conf.js
+++ b/packages/data-table-view/karma.conf.js
@@ -1,28 +1 @@
-// Trick to use the auto-downloaded puppeteer chrome binary
-process.env.CHROME_BIN = require('puppeteer').executablePath();
-
-module.exports = function(config) {
-  config.set({
-    basePath: 'dist',
-    frameworks: ['mocha'],
-    client: {
-      mocha: {
-        ui: 'tdd',
-      },
-    },
-    files: [
-      {pattern: './*.js', included: true, watched: true, served: true, type: 'module'},
-      {pattern: './**/*', included: false, watched: true, served: true},
-    ],
-    autoWatch: true,
-    browsers: ['ChromeHeadlessNoSandbox'],
-    customLaunchers: {
-      ChromeHeadlessNoSandbox: {
-        base: 'ChromeHeadless',
-        flags: ['--no-sandbox']
-      }
-    },
-    singleRun: false,
-    logLevel: config.LOG_ERROR
-  });
-}
+module.exports = require('../../karma.common.conf.js');
diff --git a/packages/file-handling/karma.conf.js b/packages/file-handling/karma.conf.js
index f9cda6ad8cd84ec117f224be7da7c534b48b0490..ca038af2286e2ad631f1c58d7216fbe4054e4199 100644
--- a/packages/file-handling/karma.conf.js
+++ b/packages/file-handling/karma.conf.js
@@ -1,28 +1 @@
-// Trick to use the auto-downloaded puppeteer chrome binary
-process.env.CHROME_BIN = require('puppeteer').executablePath();
-
-module.exports = function(config) {
-  config.set({
-    basePath: 'dist',
-    frameworks: ['mocha'],
-    client: {
-      mocha: {
-        ui: 'tdd',
-      },
-    },
-    files: [
-      {pattern: './*.js', included: true, watched: true, served: true, type: 'module'},
-      {pattern: './**/*', included: false, watched: true, served: true},
-    ],
-    autoWatch: true,
-    browsers: ['ChromeHeadlessNoSandbox', 'FirefoxHeadless'],
-    customLaunchers: {
-      ChromeHeadlessNoSandbox: {
-        base: 'ChromeHeadless',
-        flags: ['--no-sandbox']
-      }
-    },
-    singleRun: false,
-    logLevel: config.LOG_ERROR
-  });
-}
+module.exports = require('../../karma.common.conf.js');
diff --git a/packages/knowledge-base-web-page-element-view/karma.conf.js b/packages/knowledge-base-web-page-element-view/karma.conf.js
index f9cda6ad8cd84ec117f224be7da7c534b48b0490..ca038af2286e2ad631f1c58d7216fbe4054e4199 100644
--- a/packages/knowledge-base-web-page-element-view/karma.conf.js
+++ b/packages/knowledge-base-web-page-element-view/karma.conf.js
@@ -1,28 +1 @@
-// Trick to use the auto-downloaded puppeteer chrome binary
-process.env.CHROME_BIN = require('puppeteer').executablePath();
-
-module.exports = function(config) {
-  config.set({
-    basePath: 'dist',
-    frameworks: ['mocha'],
-    client: {
-      mocha: {
-        ui: 'tdd',
-      },
-    },
-    files: [
-      {pattern: './*.js', included: true, watched: true, served: true, type: 'module'},
-      {pattern: './**/*', included: false, watched: true, served: true},
-    ],
-    autoWatch: true,
-    browsers: ['ChromeHeadlessNoSandbox', 'FirefoxHeadless'],
-    customLaunchers: {
-      ChromeHeadlessNoSandbox: {
-        base: 'ChromeHeadless',
-        flags: ['--no-sandbox']
-      }
-    },
-    singleRun: false,
-    logLevel: config.LOG_ERROR
-  });
-}
+module.exports = require('../../karma.common.conf.js');
diff --git a/packages/language-select/karma.conf.js b/packages/language-select/karma.conf.js
index f9cda6ad8cd84ec117f224be7da7c534b48b0490..ca038af2286e2ad631f1c58d7216fbe4054e4199 100644
--- a/packages/language-select/karma.conf.js
+++ b/packages/language-select/karma.conf.js
@@ -1,28 +1 @@
-// Trick to use the auto-downloaded puppeteer chrome binary
-process.env.CHROME_BIN = require('puppeteer').executablePath();
-
-module.exports = function(config) {
-  config.set({
-    basePath: 'dist',
-    frameworks: ['mocha'],
-    client: {
-      mocha: {
-        ui: 'tdd',
-      },
-    },
-    files: [
-      {pattern: './*.js', included: true, watched: true, served: true, type: 'module'},
-      {pattern: './**/*', included: false, watched: true, served: true},
-    ],
-    autoWatch: true,
-    browsers: ['ChromeHeadlessNoSandbox', 'FirefoxHeadless'],
-    customLaunchers: {
-      ChromeHeadlessNoSandbox: {
-        base: 'ChromeHeadless',
-        flags: ['--no-sandbox']
-      }
-    },
-    singleRun: false,
-    logLevel: config.LOG_ERROR
-  });
-}
+module.exports = require('../../karma.common.conf.js');
diff --git a/packages/matomo/karma.conf.js b/packages/matomo/karma.conf.js
index f9cda6ad8cd84ec117f224be7da7c534b48b0490..ca038af2286e2ad631f1c58d7216fbe4054e4199 100644
--- a/packages/matomo/karma.conf.js
+++ b/packages/matomo/karma.conf.js
@@ -1,28 +1 @@
-// Trick to use the auto-downloaded puppeteer chrome binary
-process.env.CHROME_BIN = require('puppeteer').executablePath();
-
-module.exports = function(config) {
-  config.set({
-    basePath: 'dist',
-    frameworks: ['mocha'],
-    client: {
-      mocha: {
-        ui: 'tdd',
-      },
-    },
-    files: [
-      {pattern: './*.js', included: true, watched: true, served: true, type: 'module'},
-      {pattern: './**/*', included: false, watched: true, served: true},
-    ],
-    autoWatch: true,
-    browsers: ['ChromeHeadlessNoSandbox', 'FirefoxHeadless'],
-    customLaunchers: {
-      ChromeHeadlessNoSandbox: {
-        base: 'ChromeHeadless',
-        flags: ['--no-sandbox']
-      }
-    },
-    singleRun: false,
-    logLevel: config.LOG_ERROR
-  });
-}
+module.exports = require('../../karma.common.conf.js');
diff --git a/packages/notification/karma.conf.js b/packages/notification/karma.conf.js
index f9cda6ad8cd84ec117f224be7da7c534b48b0490..ca038af2286e2ad631f1c58d7216fbe4054e4199 100644
--- a/packages/notification/karma.conf.js
+++ b/packages/notification/karma.conf.js
@@ -1,28 +1 @@
-// Trick to use the auto-downloaded puppeteer chrome binary
-process.env.CHROME_BIN = require('puppeteer').executablePath();
-
-module.exports = function(config) {
-  config.set({
-    basePath: 'dist',
-    frameworks: ['mocha'],
-    client: {
-      mocha: {
-        ui: 'tdd',
-      },
-    },
-    files: [
-      {pattern: './*.js', included: true, watched: true, served: true, type: 'module'},
-      {pattern: './**/*', included: false, watched: true, served: true},
-    ],
-    autoWatch: true,
-    browsers: ['ChromeHeadlessNoSandbox', 'FirefoxHeadless'],
-    customLaunchers: {
-      ChromeHeadlessNoSandbox: {
-        base: 'ChromeHeadless',
-        flags: ['--no-sandbox']
-      }
-    },
-    singleRun: false,
-    logLevel: config.LOG_ERROR
-  });
-}
+module.exports = require('../../karma.common.conf.js');
diff --git a/packages/person-profile/karma.conf.js b/packages/person-profile/karma.conf.js
index f9cda6ad8cd84ec117f224be7da7c534b48b0490..6071887ad9307edce23bfa1bea46d2f9692f28d3 100644
--- a/packages/person-profile/karma.conf.js
+++ b/packages/person-profile/karma.conf.js
@@ -1,28 +1,2 @@
-// Trick to use the auto-downloaded puppeteer chrome binary
-process.env.CHROME_BIN = require('puppeteer').executablePath();
+module.exports = require('../../karma.common.conf.js');
 
-module.exports = function(config) {
-  config.set({
-    basePath: 'dist',
-    frameworks: ['mocha'],
-    client: {
-      mocha: {
-        ui: 'tdd',
-      },
-    },
-    files: [
-      {pattern: './*.js', included: true, watched: true, served: true, type: 'module'},
-      {pattern: './**/*', included: false, watched: true, served: true},
-    ],
-    autoWatch: true,
-    browsers: ['ChromeHeadlessNoSandbox', 'FirefoxHeadless'],
-    customLaunchers: {
-      ChromeHeadlessNoSandbox: {
-        base: 'ChromeHeadless',
-        flags: ['--no-sandbox']
-      }
-    },
-    singleRun: false,
-    logLevel: config.LOG_ERROR
-  });
-}
diff --git a/packages/person-select/karma.conf.js b/packages/person-select/karma.conf.js
index f9cda6ad8cd84ec117f224be7da7c534b48b0490..ca038af2286e2ad631f1c58d7216fbe4054e4199 100644
--- a/packages/person-select/karma.conf.js
+++ b/packages/person-select/karma.conf.js
@@ -1,28 +1 @@
-// Trick to use the auto-downloaded puppeteer chrome binary
-process.env.CHROME_BIN = require('puppeteer').executablePath();
-
-module.exports = function(config) {
-  config.set({
-    basePath: 'dist',
-    frameworks: ['mocha'],
-    client: {
-      mocha: {
-        ui: 'tdd',
-      },
-    },
-    files: [
-      {pattern: './*.js', included: true, watched: true, served: true, type: 'module'},
-      {pattern: './**/*', included: false, watched: true, served: true},
-    ],
-    autoWatch: true,
-    browsers: ['ChromeHeadlessNoSandbox', 'FirefoxHeadless'],
-    customLaunchers: {
-      ChromeHeadlessNoSandbox: {
-        base: 'ChromeHeadless',
-        flags: ['--no-sandbox']
-      }
-    },
-    singleRun: false,
-    logLevel: config.LOG_ERROR
-  });
-}
+module.exports = require('../../karma.common.conf.js');
diff --git a/packages/qr-code-scanner/karma.conf.js b/packages/qr-code-scanner/karma.conf.js
index b6731e5705b9b7419fa3831747c0a3feb0bfd074..ca038af2286e2ad631f1c58d7216fbe4054e4199 100644
--- a/packages/qr-code-scanner/karma.conf.js
+++ b/packages/qr-code-scanner/karma.conf.js
@@ -1,28 +1 @@
-// Trick to use the auto-downloaded puppeteer chrome binary
-process.env.CHROME_BIN = require('puppeteer').executablePath();
-
-module.exports = function(config) {
-  config.set({
-    basePath: 'dist',
-    frameworks: ['mocha'],
-    client: {
-      mocha: {
-        ui: 'tdd',
-      },
-    },
-    files: [
-      {pattern: './*.js', included: true, watched: true, served: true, type: 'module'},
-      {pattern: './**/*', included: false, watched: true, served: true},
-    ],
-    autoWatch: true,
-    browsers: ['ChromeHeadlessNoSandbox'],
-    customLaunchers: {
-      ChromeHeadlessNoSandbox: {
-        base: 'ChromeHeadless',
-        flags: ['--no-sandbox']
-      }
-    },
-    singleRun: false,
-    logLevel: config.LOG_ERROR
-  });
-}
+module.exports = require('../../karma.common.conf.js');