Run tests in browser using Karma
diff --git a/karma.conf.js b/karma.conf.js
new file mode 100644
index 0000000..3f2ab30
--- /dev/null
+++ b/karma.conf.js
@@ -0,0 +1,90 @@
+/*!
+ * 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.
+ */
+
+// Use Chrome executable installed through npm
+process.env.CHROME_BIN = require('puppeteer').executablePath();
+
+module.exports = function (config) {
+ config.set({
+
+ // base path that will be used to resolve all patterns (eg. files, exclude)
+ basePath: '',
+
+ // frameworks to use
+ // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
+ frameworks: ['jasmine'],
+
+ // list of files / patterns to load in the browser
+ files: [
+ 'pkg/cordova.test.js',
+ 'test/**/test.*.js'
+ ],
+
+ // list of files / patterns to exclude
+ exclude: [
+ ],
+
+ // preprocess matching files before serving them to the browser
+ // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
+ preprocessors: {
+ },
+
+ // test results reporter to use
+ // possible values: 'dots', 'progress'
+ // available reporters: https://npmjs.org/browse/keyword/karma-reporter
+ reporters: ['progress'],
+
+ // web server port
+ port: 9876,
+
+ // enable / disable colors in the output (reporters and logs)
+ colors: true,
+
+ // level of logging
+ // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
+ logLevel: config.LOG_INFO,
+
+ // enable / disable watching file and executing tests whenever any file changes
+ autoWatch: false,
+
+ // start these browsers
+ // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
+ browsers: ['ChromeHeadless'],
+
+ // Continuous Integration mode
+ // if true, Karma captures browsers, runs the tests and exits
+ singleRun: true,
+
+ // Concurrency level
+ // how many browser should be started simultaneous
+ concurrency: Infinity
+ });
+
+ if (process.env.TRAVIS) {
+ config.set({
+ browsers: ['ChromeHeadlessNoSandbox'],
+ customLaunchers: {
+ ChromeHeadlessNoSandbox: {
+ base: 'ChromeHeadless',
+ flags: ['--no-sandbox']
+ }
+ }
+ });
+ }
+};
diff --git a/package.json b/package.json
index 71598cc..667a5ef 100644
--- a/package.json
+++ b/package.json
@@ -16,7 +16,8 @@
},
"scripts": {
"eslint": "eslint src test pkg",
- "test": "grunt test && npm run eslint",
+ "pretest": "grunt compile:test",
+ "test": "npm run eslint && karma start",
"build": "grunt compile"
},
"license": "Apache-2.0",
@@ -78,9 +79,14 @@
"grunt": "^1.0.1",
"grunt-contrib-clean": "^1.0.0",
"istanbul": "^0.4.5",
+ "jasmine-core": "^3.2.1",
"jasmine-node": "^1.14.6",
"jsdom-no-contextify": "^3.1.0",
- "mkdirp": "^0.5.0"
+ "karma": "^3.0.0",
+ "karma-chrome-launcher": "^2.2.0",
+ "karma-jasmine": "^1.1.2",
+ "mkdirp": "^0.5.0",
+ "puppeteer": "^1.8.0"
},
"cordova-platforms": {
"cordova-android": "../cordova-android",