2020-06-23 13:44:14 +02:00
/ *
2022-04-13 22:17:59 +02:00
Copyright ( c ) 2018 - 2022 PhotoPrism UG . All rights reserved .
2020-06-23 13:44:14 +02:00
This program is free software : you can redistribute it and / or modify
2022-02-21 16:10:06 +01:00
it under Version 3 of the GNU Affero General Public License ( the "AGPL" ) :
< https : //docs.photoprism.app/license/agpl>
2020-06-23 13:44:14 +02:00
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 .
2022-02-21 16:10:06 +01:00
The AGPL is supplemented by our Trademark and Brand Guidelines ,
which describe how our Brand Assets may be used :
< https : //photoprism.app/trademark>
2020-06-23 13:44:14 +02:00
2022-04-13 22:17:59 +02:00
Feel free to send an email to hello @ photoprism . app if you have questions ,
2020-06-23 13:44:14 +02:00
want to support our work , or just want to say hello .
Additional information can be found in our Developer Guide :
2022-02-27 17:32:54 +01:00
< https : //docs.photoprism.app/developer-guide/>
2020-06-23 13:44:14 +02:00
* /
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 ( ) ;
2022-02-23 12:10:34 +01:00
2021-10-22 13:59:12 +02:00
if ( chromeBin ) {
2022-02-23 12:10:34 +01:00
// proceed, chrome/chromium was found
2021-10-22 13:59:12 +02:00
process . env . CHROME _BIN = chromeBin ;
2022-02-23 12:10:34 +01:00
console . log ( ` chrome-bin: ${ chromeBin } ` ) ;
2021-10-22 13:59:12 +02:00
} else {
2022-02-23 12:10:34 +01:00
// abort, no chrome binary was found
console . error ( "Chrome/Chromium not found." ) ;
process . exit ( 1 ) ;
2021-10-22 13:59:12 +02:00
}
2018-07-27 17:31:39 +02:00
2022-02-23 12:10:34 +01:00
// test setup
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" ) ,
] ,
2022-02-21 10:51:27 +01:00
preferRelative : true ,
2020-12-18 14:42:36 +01:00
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
} ;