codeceptjs 运行 量角器不退出
codeceptjs running with protractor does not exit
当运行使用 Protractor 驱动程序对 CodeceptJS 进行测试时,测试 运行 成功但进程没有退出,所以我每次都必须强制停止它,我也不能运行 它们在我的 CI 服务器上,否则它总是会超时。
我的 codecept.conf.js
:
const conf = require('../config/config');
exports.config = {
tests: './e2e/**/*.spec.js',
output: './e2e/reports',
helpers: {
Protractor: protractor.config,
ProtractorHelper: {
require: './e2e/protractor.helper.js'
}
},
name: 'test',
timeout: 10000,
bootstrap: './e2e/before-launch.js',
mocha: {
reporterOptions: {
reportDir: './reports'
}
}
};
我的protractor.conf.js
:
const conf = require('../config/config');
exports.config = {
scriptsTimeout: 11000,
browser: 'chrome',
capabilities: {
chromeOptions: {
args: process.env.CI ? [
'--no-sandbox',
// See https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md
'--headless',
'--disable-gpu',
// Without a remote debugging port, Google Chrome exits immediately.
'--remote-debugging-port=9222',
'--disable-web-security'
] : []
}
},
directConnect: true,
url: conf.e2e.baseUrl,
noGlobals: true,
rootElement: 'body'
};
而 before-launch.js
基本上只是为网站提供服务:
const conf = require('../config/config');
require('connect')().use(require('serve-static')(conf.e2e.paths.build)).listen(conf.e2e.servePort);
我正在使用:
- CodeceptJS 版本:1.4.1
- NodeJS 版本:10.1.0
- 量角器版本:5.4.0
您可以创建一个 gulp 任务
使用gulp-量角器
var protractor = require("gulp-protractor").protractor;
var spawn = require('child_process').spawn;
function runProtractorConfig() {
gulp.src('./**/*-page.spec.js')
.pipe(protractor({
configFile: 'protractor.config.js'
}))
.on('error', function (e) {
throw e;
});
}
现在您的进程将自动退出。
原来它没有退出是因为 connect
为网站提供服务并在最后继续收听,所以我将 codecept 配置更改为:
bootstrap: 'run-server.js',
teardown: 'run-server.js',
并在 run-server.js
中:
const http = require('http');
const connect = require('connect');
let app = connect();
app.use(require('serve-static')('public'));
let server = null;
module.exports = {
bootstrap: function(done) {
server = http.createServer(app);
server.listen(3001);
done();
},
teardown: function(done) {
server.close();
done();
}
}
现在退出就好了
当运行使用 Protractor 驱动程序对 CodeceptJS 进行测试时,测试 运行 成功但进程没有退出,所以我每次都必须强制停止它,我也不能运行 它们在我的 CI 服务器上,否则它总是会超时。
我的 codecept.conf.js
:
const conf = require('../config/config');
exports.config = {
tests: './e2e/**/*.spec.js',
output: './e2e/reports',
helpers: {
Protractor: protractor.config,
ProtractorHelper: {
require: './e2e/protractor.helper.js'
}
},
name: 'test',
timeout: 10000,
bootstrap: './e2e/before-launch.js',
mocha: {
reporterOptions: {
reportDir: './reports'
}
}
};
我的protractor.conf.js
:
const conf = require('../config/config');
exports.config = {
scriptsTimeout: 11000,
browser: 'chrome',
capabilities: {
chromeOptions: {
args: process.env.CI ? [
'--no-sandbox',
// See https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md
'--headless',
'--disable-gpu',
// Without a remote debugging port, Google Chrome exits immediately.
'--remote-debugging-port=9222',
'--disable-web-security'
] : []
}
},
directConnect: true,
url: conf.e2e.baseUrl,
noGlobals: true,
rootElement: 'body'
};
而 before-launch.js
基本上只是为网站提供服务:
const conf = require('../config/config');
require('connect')().use(require('serve-static')(conf.e2e.paths.build)).listen(conf.e2e.servePort);
我正在使用:
- CodeceptJS 版本:1.4.1
- NodeJS 版本:10.1.0
- 量角器版本:5.4.0
您可以创建一个 gulp 任务
使用gulp-量角器
var protractor = require("gulp-protractor").protractor;
var spawn = require('child_process').spawn;
function runProtractorConfig() {
gulp.src('./**/*-page.spec.js')
.pipe(protractor({
configFile: 'protractor.config.js'
}))
.on('error', function (e) {
throw e;
});
}
现在您的进程将自动退出。
原来它没有退出是因为 connect
为网站提供服务并在最后继续收听,所以我将 codecept 配置更改为:
bootstrap: 'run-server.js',
teardown: 'run-server.js',
并在 run-server.js
中:
const http = require('http');
const connect = require('connect');
let app = connect();
app.use(require('serve-static')('public'));
let server = null;
module.exports = {
bootstrap: function(done) {
server = http.createServer(app);
server.listen(3001);
done();
},
teardown: function(done) {
server.close();
done();
}
}
现在退出就好了