diff --git a/.circleci/config.yml b/.circleci/config.yml
index 70ad498..9061825 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -52,14 +52,14 @@ jobs:
build-linux-node-v8:
docker:
- image: node:8
- - image: selenium/standalone-chrome:3.8.1
working_directory: ~/repo-linux-node-v8
- steps: *wdio-steps
+ steps: *build-steps
build-linux-node-v10:
docker:
- image: node:10
+ - image: selenium/standalone-chrome:3.141.59
working_directory: ~/repo-linux-node-v10
- steps: *build-steps
+ steps: *wdio-steps
build-linux-node-v11:
docker:
- image: node:11
diff --git a/README.md b/README.md
index 1400bcc..b81fc82 100644
--- a/README.md
+++ b/README.md
@@ -9,10 +9,10 @@
[circleci]: https://circleci.com/gh/maputnik/editor/tree/master
[appveyor]: https://ci.appveyor.com/project/lukasmartinelli/editor
[dm-prod]: https://david-dm.org/maputnik/editor
-[dm-dev]: https://david-dm.org/maputnik/editor#info=devDependencies
+[dm-dev]: https://david-dm.org/maputnik/editor?type=dev
[license]: https://tldrlegal.com/license/mit-license
-
+
A free and open visual editor for the [Mapbox GL styles](https://www.mapbox.com/mapbox-gl-style-spec/)
targeted at developers and map designers.
@@ -118,13 +118,13 @@ Thanks to the supporters of the **[Kickstarter campaign](https://www.kickstarter
- [Terranodo](http://terranodo.io/)
-
+
-
+
-
+
@@ -136,13 +136,13 @@ Thanks to the supporters of the **[Kickstarter campaign](https://www.kickstarter
- [Dreipol](https://www.dreipol.ch/)
-
+
-
+
-
+
diff --git a/config/wdio.conf.js b/config/wdio.conf.js
index b520bcf..91b4c6e 100644
--- a/config/wdio.conf.js
+++ b/config/wdio.conf.js
@@ -10,53 +10,279 @@ var server;
var SCREENSHOT_PATH = artifacts.pathSync("screenshots");
exports.config = {
- specs: [
- './test/functional/index.js'
- ],
- exclude: [
- ],
- maxInstances: 10,
- capabilities: [{
- maxInstances: 5,
- browserName: 'chrome'
- }],
- sync: true,
- logLevel: 'verbose',
- coloredLogs: true,
- bail: 0,
- screenshotPath: SCREENSHOT_PATH,
- // Note: This is here because @orangemug currently runs Maputnik inside a docker container.
- host: process.env.DOCKER_HOST || "0.0.0.0",
- baseUrl: 'http://localhost',
- waitforTimeout: 10000,
- connectionRetryTimeout: 90000,
- connectionRetryCount: 3,
- framework: 'mocha',
- reporters: ['spec'],
- mochaOpts: {
- ui: 'bdd',
- // Because we don't know how long the initial build will take...
- timeout: 4*60*1000
- },
- onPrepare: function (config, capabilities) {
- return new Promise(function(resolve, reject) {
- var compiler = webpack(webpackConfig);
- server = new WebpackDevServer(compiler, {
- stats: {
- colors: true
- }
- });
- server.listen(testConfig.port, (isDocker() ? "0.0.0.0" : "localhost"), function(err) {
- if(err) {
- reject(err);
- }
- else {
- resolve();
- }
- });
- })
- },
- onComplete: function(exitCode) {
- server.close()
- }
+ //
+ // ====================
+ // Runner Configuration
+ // ====================
+ //
+ // WebdriverIO allows it to run your tests in arbitrary locations (e.g. locally or
+ // on a remote machine).
+ runner: 'local',
+ //
+ // ==================
+ // Specify Test Files
+ // ==================
+ // Define which test specs should run. The pattern is relative to the directory
+ // from which `wdio` was called. Notice that, if you are calling `wdio` from an
+ // NPM script (see https://docs.npmjs.com/cli/run-script) then the current working
+ // directory is where your package.json resides, so `wdio` will be called from there.
+ //
+ specs: [
+ './test/functional/index.js'
+ ],
+ // Patterns to exclude.
+ exclude: [
+ // 'path/to/excluded/files'
+ ],
+ //
+ // ============
+ // Capabilities
+ // ============
+ // Define your capabilities here. WebdriverIO can run multiple capabilities at the same
+ // time. Depending on the number of capabilities, WebdriverIO launches several test
+ // sessions. Within your capabilities you can overwrite the spec and exclude options in
+ // order to group specific specs to a specific capability.
+ //
+ // First, you can define how many instances should be started at the same time. Let's
+ // say you have 3 different capabilities (Chrome, Firefox, and Safari) and you have
+ // set maxInstances to 1; wdio will spawn 3 processes. Therefore, if you have 10 spec
+ // files and you set maxInstances to 10, all spec files will get tested at the same time
+ // and 30 processes will get spawned. The property handles how many capabilities
+ // from the same test should run tests.
+ //
+ maxInstances: 10,
+ //
+ // If you have trouble getting all important capabilities together, check out the
+ // Sauce Labs platform configurator - a great tool to configure your capabilities:
+ // https://docs.saucelabs.com/reference/platforms-configurator
+ //
+ capabilities: [{
+ // maxInstances can get overwritten per capability. So if you have an in-house Selenium
+ // grid with only 5 firefox instances available you can make sure that not more than
+ // 5 instances get started at a time.
+ maxInstances: 5,
+ //
+ browserName: 'chrome',
+ // If outputDir is provided WebdriverIO can capture driver session logs
+ // it is possible to configure which logTypes to include/exclude.
+ // excludeDriverLogs: ['*'], // pass '*' to exclude all driver session logs
+ // excludeDriverLogs: ['bugreport', 'server'],
+ }],
+ //
+ // ===================
+ // Test Configurations
+ // ===================
+ // Define all options that are relevant for the WebdriverIO instance here
+ //
+ // Level of logging verbosity: trace | debug | info | warn | error | silent
+ logLevel: 'info',
+ //
+ // Set specific log levels per logger
+ // loggers:
+ // - webdriver, webdriverio
+ // - @wdio/applitools-service, @wdio/browserstack-service, @wdio/devtools-service, @wdio/sauce-service
+ // - @wdio/mocha-framework, @wdio/jasmine-framework
+ // - @wdio/local-runner, @wdio/lambda-runner
+ // - @wdio/sumologic-reporter
+ // - @wdio/cli, @wdio/config, @wdio/sync, @wdio/utils
+ // Level of logging verbosity: trace | debug | info | warn | error | silent
+ // logLevels: {
+ // webdriver: 'debug',
+ // '@wdio/applitools-service': 'info'
+ // },
+ //
+ // If you only want to run your tests until a specific amount of tests have failed use
+ // bail (default is 0 - don't bail, run all tests).
+ bail: 0,
+ //
+ screenshotPath: SCREENSHOT_PATH,
+ // Note: This is here because @orangemug currently runs Maputnik inside a docker container.
+ host: process.env.DOCKER_HOST || "0.0.0.0",
+ // Set a base URL in order to shorten url command calls. If your `url` parameter starts
+ // with `/`, the base url gets prepended, not including the path portion of your baseUrl.
+ // If your `url` parameter starts without a scheme or `/` (like `some/path`), the base url
+ // gets prepended directly.
+ baseUrl: 'http://localhost',
+ //
+ // Default timeout for all waitFor* commands.
+ waitforTimeout: 10000,
+ //
+ // Default timeout in milliseconds for request
+ // if Selenium Grid doesn't send response
+ connectionRetryTimeout: 90000,
+ //
+ // Default request retries count
+ connectionRetryCount: 3,
+ //
+ // Test runner services
+ // Services take over a specific job you don't want to take care of. They enhance
+ // your test setup with almost no effort. Unlike plugins, they don't add new
+ // commands. Instead, they hook themselves up into the test process.
+ services: ['selenium-standalone'],
+ //
+ // Framework you want to run your specs with.
+ // The following are supported: Mocha, Jasmine, and Cucumber
+ // see also: https://webdriver.io/docs/frameworks.html
+ //
+ // Make sure you have the wdio adapter package for the specific framework installed
+ // before running any tests.
+ framework: 'mocha',
+ //
+ // The number of times to retry the entire specfile when it fails as a whole
+ // specFileRetries: 1,
+ //
+ // Test reporter for stdout.
+ // The only one supported by default is 'dot'
+ // see also: https://webdriver.io/docs/dot-reporter.html
+ reporters: ['spec'],
+
+ //
+ // Options to be passed to Mocha.
+ // See the full list at http://mochajs.org/
+ mochaOpts: {
+ ui: 'bdd',
+ // Because we don't know how long the initial build will take...
+ timeout: 4*60*1000
+ },
+ onPrepare: function (config, capabilities) {
+ return new Promise(function(resolve, reject) {
+ var compiler = webpack(webpackConfig);
+ server = new WebpackDevServer(compiler, {
+ stats: {
+ colors: true
+ }
+ });
+ server.listen(testConfig.port, (isDocker() ? "0.0.0.0" : "localhost"), function(err) {
+ if(err) {
+ reject(err);
+ }
+ else {
+ resolve();
+ }
+ });
+ })
+ },
+ onComplete: function(exitCode) {
+ server.close()
+ }
+ //
+ // =====
+ // Hooks
+ // =====
+ // WebdriverIO provides several hooks you can use to interfere with the test process in order to enhance
+ // it and to build services around it. You can either apply a single function or an array of
+ // methods to it. If one of them returns with a promise, WebdriverIO will wait until that promise got
+ // resolved to continue.
+ /**
+ * Gets executed once before all workers get launched.
+ * @param {Object} config wdio configuration object
+ * @param {Array.