angularjs - 量角器 - 对不同的端口号运行测试

时间:2018-01-23 00:57:20

标签: angularjs protractor e2e-testing angularjs-e2e

我们有一个基于angularjs的客户端应用程序。我们使用量角器进行e2e测试。我们的代码库是visual studio online,实现了持续集成。每当有签入和拉取请求(PR)创建时,都会触发构建,其中包括多个步骤。其中一个是运行e2e测试用例。

我们有一台单独的构建机器,可以处理单个开发人员的PR构建,以及一旦这些PR与母版合并后的prod构建。

问题 - 在构建服务器上,如果有两个或更多同时构建运行,则只有其中一个成功,其余的因e2e故障而失败。这里的问题是,e2e每次尝试在同一个端口上运行,如果它被占用,那么执行这一步就会失败。

我确信这对许多人来说可能是一个问题,可能已经解决了。 寻找建议和可能的解决方案。

有没有办法在不同的端口号上运行它们?

以下是量角器配置

const { SpecReporter } = require('jasmine-spec-reporter');

exports.config = {
    allScriptsTimeout: 11000,
    specs: [
        './e2e/**/*.e2e-spec.ts'
    ],
    capabilities: {
        'browserName': 'chrome',
        chromeOptions: {
            args: [
                '--start-maximized'
            ]
        }
    },
    directConnect: true,
    baseUrl: 'http://localhost:443/',
    framework: 'jasmine',
    jasmineNodeOpts: {
        showColors: true,
        defaultTimeoutInterval: 90000,
        print: function () { }
    },
    beforeLaunch: function () {
        require('ts-node').register({
            project: 'e2e'
        });
    },
    onPrepare: function () {
        jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
        var failFast = require('jasmine-fail-fast');
        jasmine.getEnv().addReporter(failFast.init());
    }
};

1 个答案:

答案 0 :(得分:0)

对于量角器配置文件:

1)如果DirectConnet为true,运行e2e脚本无需使用selenium服务器,因此没有端口号问题

2)如果DirectConnet为false / not set且seleniumAddress设置为本地/远程selenuim服务器地址,如:http://xxxxxxx:4444/wd/hub
一个端口号可以支持多个构建运行,但所有构建的e2e运行都会将webdriver命令发送到一个selenium服务器,这将使所有e2e运行变慢并增加故障率。

你可以为每个版本启动新的selenium服务器以避免它。要存档它,您可以删除conf文件中的DirectConnet和seleniumAddress行,当未在conf文件中设置DirectConnet和seleniumAddress时,量角器将自动在不同的端口启动selenium服务器。

如果要控制端口号,可以编写一个脚本来计算脚本机的所有可用端口,然后选择一个启动selenium服务器。

3)如果DirectConnet为false / not set且seleniumAddress设置为selenium网格,则无需担心端口号问题。

相关问题