【问题标题】:codeceptjs running with protractor does not exit使用量角器运行的codeceptjs不会退出
【发布时间】:2018-09-21 16:52:43
【问题描述】:

当使用 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

【问题讨论】:

    标签: protractor codeceptjs


    【解决方案1】:

    你可以创建一个 gulp 任务

    使用 gulp-protractor

    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;
            });
    }
    

    现在您的进程将自动退出。

    【讨论】:

    • 但这不是使用codeceptjs,因为我使用codeceptjs 编写了我的测试,这怎么能工作?
    • 尝试使用 codeceptjs 检查 gulp 或 grunt 的支持。
    【解决方案2】:

    原来它没有退出是因为 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();
      }
    }
    

    现在退出就好了

    【讨论】:

      猜你喜欢
      • 2018-05-07
      • 2018-10-08
      • 1970-01-01
      • 2021-07-15
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-07
      相关资源
      最近更新 更多