2020-06-23 13:44:14 +02:00
/ *
2021-01-01 22:37:25 +01:00
Copyright ( c ) 2018 - 2021 Michael Mayer < hello @ photoprism . org >
2020-06-23 13:44:14 +02:00
This program is free software : you can redistribute it and / or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation , either version 3 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU Affero General Public License for more details .
You should have received a copy of the GNU Affero General Public License
along with this program . If not , see < https : //www.gnu.org/licenses/>.
2020-09-21 02:48:22 +02:00
PhotoPrism ® is a registered trademark of Michael Mayer . You may use it as required
2020-06-23 13:53:11 +02:00
to describe our software , run your own server , for educational purposes , but not for
offering commercial goods , products , or services without prior written permission .
In other words , please ask .
2020-06-23 13:44:14 +02:00
Feel free to send an e - mail to hello @ photoprism . org if you have questions ,
want to support our work , or just want to say hello .
Additional information can be found in our Developer Guide :
https : //docs.photoprism.org/developer-guide/
* /
2019-05-09 06:48:10 +02:00
const path = require ( "path" ) ;
2021-10-22 13:59:12 +02:00
const findChrome = require ( "chrome-finder" ) ;
const chromeBin = findChrome ( ) ;
if ( chromeBin ) {
process . env . CHROME _BIN = chromeBin ;
} else {
process . env . CHROME _BIN = require ( "puppeteer" ) . executablePath ( ) ;
}
2018-07-27 17:31:39 +02:00
module . exports = ( config ) => {
2020-12-18 14:42:36 +01:00
config . set ( {
logLevel : config . LOG _ERROR ,
webpackMiddleware : {
stats : "errors-only" ,
} ,
frameworks : [ "mocha" ] ,
browsers : [ "LocalChrome" ] ,
customLaunchers : {
LocalChrome : {
base : "ChromeHeadless" ,
flags : [
"--disable-translate" ,
"--disable-extensions" ,
"--no-sandbox" ,
"--disable-web-security" ,
"--disable-dev-shm-usage" ,
2018-07-27 17:31:39 +02:00
] ,
2020-12-18 14:42:36 +01:00
} ,
} ,
2018-07-27 17:31:39 +02:00
2020-12-18 14:42:36 +01:00
files : [
"node_modules/@babel/polyfill/dist/polyfill.js" ,
"node_modules/regenerator-runtime/runtime/runtime.js" ,
{ pattern : "tests/unit/**/*_test.js" , watched : false } ,
] ,
2018-07-27 17:31:39 +02:00
2020-12-18 14:42:36 +01:00
// Preprocess through webpack
preprocessors : {
"tests/unit/**/*_test.js" : [ "webpack" ] ,
} ,
2018-07-27 17:31:39 +02:00
2021-07-12 19:25:37 +02:00
reporters : [ "progress" , "coverage-istanbul" , "html" ] ,
2018-07-27 17:31:39 +02:00
2020-12-18 14:42:36 +01:00
htmlReporter : {
outputFile : "tests/unit.html" ,
} ,
2019-07-24 10:04:17 +02:00
2020-12-18 14:42:36 +01:00
coverageIstanbulReporter : {
// reports can be any that are listed here: https://github.com/istanbuljs/istanbuljs/tree/aae256fb8b9a3d19414dcf069c592e88712c32c6/packages/istanbul-reports/lib
2021-07-12 19:25:37 +02:00
reports : [ "lcovonly" , "text-summary" ] ,
2019-07-24 10:04:17 +02:00
2020-12-18 14:42:36 +01:00
// base output directory. If you include %browser% in the path it will be replaced with the karma browser name
dir : path . join ( _ _dirname , "coverage" ) ,
2019-07-24 10:04:17 +02:00
2020-12-18 14:42:36 +01:00
// Combines coverage information from multiple browsers into one report rather than outputting a report
// for each browser.
combineBrowserReports : true ,
2019-07-24 10:04:17 +02:00
2020-12-18 14:42:36 +01:00
// if using webpack and pre-loaders, work around webpack breaking the source path
fixWebpackSourcePaths : true ,
2019-07-24 10:04:17 +02:00
2020-12-18 14:42:36 +01:00
// Omit files with no statements, no functions and no branches from the report
skipFilesWithNoCoverage : true ,
2019-07-24 10:04:17 +02:00
2020-12-18 14:42:36 +01:00
// 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/aae256fb8b9a3d19414dcf069c592e88712c32c6/packages/istanbul-reports/lib/html/index.js#L135-L137
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: 90,
lines : 90 ,
//branches: 90,
//functions: 90,
} ,
// thresholds per file
each : {
//statements: 90,
lines : 90 ,
//branches: 90,
//functions: 90,
overrides : {
"src/common/viewer.js" : {
lines : 0 ,
functions : 0 ,
2019-07-24 10:04:17 +02:00
} ,
2020-12-18 14:42:36 +01:00
} ,
2019-07-24 10:04:17 +02:00
} ,
2020-12-18 14:42:36 +01:00
} ,
2019-07-24 10:04:17 +02:00
2021-07-12 19:25:37 +02:00
verbose : true , // output config used by istanbul for debugging
2020-12-18 14:42:36 +01:00
} ,
webpack : {
mode : "development" ,
resolve : {
2021-07-12 19:25:37 +02:00
fallback : {
util : require . resolve ( "util" ) ,
} ,
2020-12-18 14:42:36 +01:00
modules : [
path . join ( _ _dirname , "src" ) ,
path . join ( _ _dirname , "node_modules" ) ,
path . join ( _ _dirname , "tests/unit" ) ,
] ,
alias : {
vue : "vue/dist/vue.min.js" ,
2018-07-27 17:31:39 +02:00
} ,
2020-12-18 14:42:36 +01:00
} ,
module : {
rules : [
{
test : /\.js$/ ,
exclude : ( file ) => / node _modules / . test ( file ) ,
2021-07-12 19:25:37 +02:00
use : [
{
loader : "babel-loader" ,
options : {
compact : false ,
presets : [ "@babel/preset-env" ] ,
plugins : [
"@babel/plugin-proposal-object-rest-spread" ,
"@babel/plugin-proposal-class-properties" ,
"@babel/plugin-transform-runtime" ,
[ "istanbul" , { exclude : [ "**/*_test.js" ] } ] ,
] ,
} ,
} ,
] ,
2020-12-18 14:42:36 +01:00
} ,
] ,
} ,
} ,
2018-07-27 17:31:39 +02:00
2020-12-18 14:42:36 +01:00
singleRun : true ,
} ) ;
2019-05-07 15:41:33 +02:00
} ;