2020-06-23 13:44:14 +02:00
/ *
Copyright ( c ) 2018 - 2020 Michael Mayer < hello @ photoprism . org >
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-06-23 13:53:11 +02:00
PhotoPrism ™ is a registered trademark of Michael Mayer . You may use it as required
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" ) ;
const findChrome = require ( "chrome-finder" ) ;
2018-07-27 17:31:39 +02:00
2019-05-09 06:18:22 +02:00
process . env . CHROME _BIN = findChrome ( ) ;
2018-07-27 17:31:39 +02:00
module . exports = ( config ) => {
config . set ( {
2019-12-05 03:58:54 +01:00
logLevel : config . LOG _ERROR ,
2019-06-03 23:44:48 +02:00
webpackMiddleware : {
2019-06-09 05:20:23 +02:00
stats : "errors-only" ,
2019-06-03 23:44:48 +02:00
} ,
2019-05-09 06:48:10 +02:00
frameworks : [ "mocha" ] ,
2018-07-27 17:31:39 +02:00
2019-05-09 06:48:10 +02:00
browsers : [ "LocalChrome" ] ,
2018-07-27 17:31:39 +02:00
2019-05-07 15:41:33 +02:00
customLaunchers : {
2019-05-09 06:18:22 +02:00
LocalChrome : {
2019-05-09 06:48:10 +02:00
base : "ChromeHeadless" ,
2019-05-20 20:36:31 +02:00
flags : [ "--disable-translate" , "--disable-extensions" , "--no-sandbox" , "--disable-web-security" , "--disable-dev-shm-usage" ] ,
2019-05-09 06:48:10 +02:00
} ,
2019-05-07 15:41:33 +02:00
} ,
2018-07-27 17:31:39 +02:00
files : [
2019-12-09 08:04:41 +01:00
"node_modules/@babel/polyfill/dist/polyfill.js" ,
2019-12-20 23:05:44 +01:00
"node_modules/regenerator-runtime/runtime/runtime.js" ,
{ pattern : "tests/unit/**/*_test.js" , watched : false } ,
2018-07-27 17:31:39 +02:00
] ,
// Preprocess through webpack
preprocessors : {
2019-05-20 18:51:59 +02:00
"tests/unit/**/*_test.js" : [ "webpack" ] ,
2018-07-27 17:31:39 +02:00
} ,
2019-07-24 10:04:17 +02:00
reporters : [ "progress" , "html" , "coverage-istanbul" ] ,
2018-07-27 17:31:39 +02:00
htmlReporter : {
2019-05-20 20:06:26 +02:00
outputFile : "tests/unit.html" ,
2018-07-27 17:31:39 +02:00
} ,
2019-07-24 10:04:17 +02:00
coverageIstanbulReporter : {
// reports can be any that are listed here: https://github.com/istanbuljs/istanbuljs/tree/aae256fb8b9a3d19414dcf069c592e88712c32c6/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" ) ,
// Combines coverage information from multiple browsers into one report rather than outputting a report
// for each browser.
combineBrowserReports : true ,
// 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 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/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 : {
2019-08-12 10:27:08 +02:00
//statements: 90,
2019-08-08 17:52:06 +02:00
lines : 90 ,
2019-08-12 10:27:08 +02:00
//branches: 90,
2019-08-14 13:19:50 +02:00
//functions: 90,
2019-07-24 10:04:17 +02:00
} ,
// thresholds per file
each : {
2019-08-12 10:27:08 +02:00
//statements: 90,
2019-08-08 17:51:24 +02:00
lines : 90 ,
2019-08-12 10:27:08 +02:00
//branches: 90,
2019-08-14 13:19:50 +02:00
//functions: 90,
overrides : {
"src/common/viewer.js" : {
lines : 0 ,
functions : 0 ,
} ,
} ,
2019-07-24 10:04:17 +02:00
} ,
} ,
verbose : false , // output config used by istanbul for debugging
} ,
2018-07-27 17:31:39 +02:00
webpack : {
2019-05-09 06:48:10 +02:00
mode : "development" ,
2019-05-07 15:41:33 +02:00
2018-07-27 17:31:39 +02:00
resolve : {
modules : [
2019-05-09 06:48:10 +02:00
path . join ( _ _dirname , "src" ) ,
path . join ( _ _dirname , "node_modules" ) ,
2019-05-20 18:51:59 +02:00
path . join ( _ _dirname , "tests/unit" ) ,
2018-07-27 17:31:39 +02:00
] ,
alias : {
2019-06-03 23:44:48 +02:00
vue : "vue/dist/vue.min.js" ,
2019-05-09 06:48:10 +02:00
} ,
2018-07-27 17:31:39 +02:00
} ,
module : {
rules : [
{
test : /\.js$/ ,
2019-05-09 06:48:10 +02:00
loader : "babel-loader" ,
2019-05-07 15:41:33 +02:00
exclude : file => (
/node_modules/ . test ( file )
) ,
2018-07-27 17:31:39 +02:00
query : {
2019-05-09 06:48:10 +02:00
presets : [ "@babel/preset-env" ] ,
compact : false ,
2018-07-27 17:31:39 +02:00
} ,
} ,
2019-05-09 06:48:10 +02:00
] ,
} ,
2018-07-27 17:31:39 +02:00
} ,
singleRun : true ,
} ) ;
2019-05-07 15:41:33 +02:00
} ;