我们有一个基于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());
}
};
答案 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网格,则无需担心端口号问题。