blob: db83b4c1667ce0bb6ad9596200d1f2d50dcb5e6c [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
// Karma configuration file
module.exports = function (config) {
config.set({
basePath: "",
frameworks: ["jasmine", "@angular-devkit/build-angular"],
plugins: [
require("karma-jasmine"),
require("karma-chrome-launcher"),
require("@angular-devkit/build-angular/plugins/karma")
],
client: {
clearContext: config.singleRun, // Leave Jasmine Spec Runner output visible in the browser
jasmine: {
random: false, // Disable random order for consistent test results
},
},
customLaunchers: {
ChromeHeadlessCustom: {
base: "ChromeHeadless",
flags: [
"--no-sandbox",
"--headless=new",
"--remote-debugging-port=9222", // Enable remote debugging for better error output
"--disable-gpu",
"--disable-translate",
"--disable-extensions",
"--disable-dev-shm-usage", // Avoid /dev/shm issues in CI environments
"--disable-extensions",
"--disable-background-networking",
"--disable-background-timer-throttling",
"--disable-backgrounding-occluded-windows",
"--disable-breakpad",
"--disable-sync",
],
},
},
reporters: ["dots"], // Use dots reporter
port: 9876, // Karma's web server port
colors: true, // Enable colors in the output (reporters and logs)
logLevel: config.LOG_INFO, // Set log level
autoWatch: false, // Disable auto-watch to prevent re-runs in CI
concurrency: 1, // Launch only one browser at a time
browsers: ["ChromeHeadlessCustom"], // Run tests in headless Chrome
singleRun: true, // Ensure Karma exits after running tests once (useful for CI)
restartOnFileChange: false, // Disable file change restarts in CI
captureTimeout: 30000, // 30-second timeout for capturing the browser
browserDisconnectTimeout: 60000, // 60-second disconnect timeout
browserDisconnectTolerance: 1, // Allow up to 1 disconnect before failing
browserNoActivityTimeout: 60000, // 60-second no-activity timeout
});
};