Merge pull request #2162 from resin-io/refactor-spectron-tests

test(spectron): Refactor tests, dereference app after use
This commit is contained in:
Jonas Hermsmeier 2018-03-30 00:02:18 +02:00 committed by GitHub
commit 7f118c9841
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 89 additions and 117 deletions

136
npm-shrinkwrap.json generated
View File

@ -402,8 +402,8 @@
"resolved": "https://registry.npmjs.org/arch/-/arch-2.1.0.tgz"
},
"archiver": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/archiver/-/archiver-2.1.0.tgz",
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/archiver/-/archiver-2.1.1.tgz",
"dev": true
},
"archiver-utils": {
@ -1935,6 +1935,11 @@
"version": "1.5.4",
"resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz"
},
"combined-stream": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
"dev": true
},
"command-join": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/command-join/-/command-join-2.0.0.tgz"
@ -2269,6 +2274,11 @@
}
}
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"dev": true
},
"delegates": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz"
@ -2623,49 +2633,35 @@
"resolved": "https://registry.npmjs.org/electron-chromedriver/-/electron-chromedriver-1.7.1.tgz",
"dev": true,
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"dev": true
},
"electron-download": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/electron-download/-/electron-download-4.1.0.tgz",
"dev": true,
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"dev": true
}
}
"dev": true
},
"fs-extra": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz",
"dev": true
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"dev": true
},
"path-exists": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
"dev": true
},
"semver": {
"version": "5.4.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
"dev": true
},
"sumchecker": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz",
"dev": true,
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"dev": true
}
}
"dev": true
}
}
},
@ -6880,6 +6876,11 @@
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz",
"dev": true
},
"regenerator-runtime": {
"version": "0.11.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
"dev": true
},
"regenerator-transform": {
"version": "0.10.1",
"resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz",
@ -7615,8 +7616,8 @@
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.1.tgz"
},
"spectron": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/spectron/-/spectron-3.7.2.tgz",
"version": "3.7.3",
"resolved": "https://registry.npmjs.org/spectron/-/spectron-3.7.3.tgz",
"dev": true
},
"speedometer": {
@ -8527,11 +8528,6 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz"
},
"validator": {
"version": "9.1.2",
"resolved": "https://registry.npmjs.org/validator/-/validator-9.1.2.tgz",
"dev": true
},
"verror": {
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz"
@ -8620,18 +8616,18 @@
"dev": true
},
"webdriverio": {
"version": "4.9.11",
"resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-4.9.11.tgz",
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-4.12.0.tgz",
"dev": true,
"dependencies": {
"ajv": {
"version": "5.5.1",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz",
"version": "5.5.2",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
"dev": true
},
"ansi-escapes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz",
"dev": true
},
"ansi-regex": {
@ -8640,8 +8636,8 @@
"dev": true
},
"ansi-styles": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"dev": true
},
"assert-plus": {
@ -8665,13 +8661,13 @@
"dev": true
},
"chalk": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz",
"dev": true,
"dependencies": {
"supports-color": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz",
"dev": true
}
}
@ -8686,11 +8682,6 @@
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
"dev": true
},
"combined-stream": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
"dev": true
},
"cryptiles": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
@ -8703,11 +8694,6 @@
}
}
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"dev": true
},
"extend": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
@ -8719,8 +8705,8 @@
"dev": true
},
"form-data": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz",
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
"dev": true
},
"har-schema": {
@ -8734,8 +8720,8 @@
"dev": true
},
"has-flag": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"dev": true
},
"hawk": {
@ -8744,8 +8730,8 @@
"dev": true
},
"hoek": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz",
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
"dev": true
},
"http-signature": {
@ -8764,13 +8750,13 @@
"dev": true
},
"mime-db": {
"version": "1.30.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
"version": "1.33.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
"dev": true
},
"mime-types": {
"version": "2.1.17",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
"version": "2.1.18",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
"dev": true
},
"mute-stream": {
@ -8798,11 +8784,6 @@
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
"dev": true
},
"regenerator-runtime": {
"version": "0.11.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
"dev": true
},
"request": {
"version": "2.83.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz",
@ -8846,16 +8827,23 @@
"supports-color": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.0.1.tgz",
"dev": true
"dev": true,
"dependencies": {
"has-flag": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
"dev": true
}
}
},
"tough-cookie": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",
"version": "2.3.4",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
"dev": true
},
"uuid": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
"dev": true
}
}

View File

@ -122,7 +122,7 @@
"pkg": "4.3.0",
"sass-lint": "1.12.1",
"simple-progress-webpack-plugin": "1.1.2",
"spectron": "3.7.2",
"spectron": "3.7.3",
"versionist": "2.8.1",
"webpack": "github:jviotti/webpack#symlink-fix"
}

View File

@ -1,35 +0,0 @@
/*
* Copyright 2017 resin.io
*
* Licensed 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 strict'
const m = require('mochainon')
module.exports = () => {
describe('Browser Window', function () {
it('should set a proper title', function () {
return this.app.client.getTitle().then((title) => {
m.chai.expect(title).to.equal('Etcher')
})
})
it('should open a browser window', function () {
return this.app.browserWindow.isVisible().then((isVisible) => {
m.chai.expect(isVisible).to.be.true
})
})
})
}

View File

@ -18,6 +18,7 @@
const Bluebird = require('bluebird')
const spectron = require('spectron')
const m = require('mochainon')
const EXIT_CODES = require('../../lib/shared/exit-codes')
const entrypoint = process.env.ETCHER_SPECTRON_ENTRYPOINT
@ -30,22 +31,40 @@ describe('Spectron', function () {
// Mainly for CI jobs
this.timeout(20000)
beforeEach(function () {
this.app = new spectron.Application({
let app = null
before('app:start', function () {
app = new spectron.Application({
path: entrypoint,
args: [ '.' ]
})
return this.app.start()
return app.start()
})
afterEach(function () {
if (this.app && this.app.isRunning()) {
return this.app.stop()
after('app:stop', function () {
if (app && app.isRunning()) {
return app.stop()
}
return Bluebird.resolve()
})
require('./browser-window')()
after('app:deref', function () {
app = null
})
describe('Browser Window', function () {
it('should open a browser window', function () {
return app.browserWindow.isVisible().then((isVisible) => {
m.chai.expect(isVisible).to.be.true
})
})
it('should set a proper title', function () {
return app.client.getTitle().then((title) => {
m.chai.expect(title).to.equal('Etcher')
})
})
})
})