| /* |
| * Copyright (C) 2023 The Android Open Source Project |
| * |
| * Licensed 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. |
| */ |
| |
| const path = require('path'); |
| const configCommon = require('./karma.config.common'); |
| |
| const configCi = (config) => { |
| config.set({ |
| singleRun: true, |
| browsers: ['ChromeHeadless'], |
| plugins: [ |
| 'karma-webpack', |
| 'karma-chrome-launcher', |
| 'karma-coverage-istanbul-reporter', |
| 'karma-jasmine', |
| 'karma-sourcemap-loader', |
| ], |
| reporters: ['progress', 'coverage-istanbul'], |
| coverageIstanbulReporter: { |
| // reports can be any that are listed here: https://github.com/istanbuljs/istanbuljs/tree/73c25ce79f91010d1ff073aa6ff3fd01114f90db/packages/istanbul-reports/lib |
| reports: ['html', 'lcovonly', 'text-summary'], |
| |
| // base output directory. If you include %browser% in the path it will be replaced with the karma browser name |
| dir: path.join(__dirname, 'coverage'), |
| |
| // if using webpack and pre-loaders, work around webpack breaking the source path |
| fixWebpackSourcePaths: true, |
| |
| // Omit files with no statements, no functions and no branches covered from the report |
| skipFilesWithNoCoverage: true, |
| |
| // Most reporters accept additional config options. You can pass these through the `report-config` option |
| 'report-config': { |
| // all options available at: https://github.com/istanbuljs/istanbuljs/blob/73c25ce79f91010d1ff073aa6ff3fd01114f90db/packages/istanbul-reports/lib/html/index.js#L257-L261 |
| html: { |
| // outputs the report in ./coverage/html |
| subdir: 'html', |
| }, |
| }, |
| |
| // enforce percentage thresholds |
| // anything under these percentages will cause karma to fail with an exit code of 1 if not running in watch mode |
| thresholds: { |
| emitWarning: true, // set to `true` to not fail the test command when thresholds are not met |
| // thresholds for all files |
| global: { |
| statements: 100, |
| lines: 100, |
| branches: 100, |
| functions: 100, |
| }, |
| // thresholds per file |
| each: { |
| statements: 50, |
| lines: 50, |
| branches: 50, |
| functions: 50, |
| }, |
| }, |
| }, |
| |
| verbose: true, // output config used by istanbul for debugging |
| }); |
| }; |
| |
| module.exports = (config) => { |
| configCommon(config); |
| configCi(config); |
| }; |