Javascript 多电容和茉莉花聚焦测试
故事: 我们有一个相当大的端到端量角器测试代码库。我们有两个配置-一个是“本地”-使用Javascript 多电容和茉莉花聚焦测试,javascript,selenium,testing,jasmine,protractor,Javascript,Selenium,Testing,Jasmine,Protractor,故事: 我们有一个相当大的端到端量角器测试代码库。我们有两个配置-一个是“本地”-使用directConnect在Chrome和Firefox中运行测试,另一个是“远程”-在我们的例子中,在远程selenium服务器BrowserStack上运行测试 我们的“本地”配置被配置为在Chrome和Firefox中运行一些测试,因为我们确实无法在Chrome中运行一些测试,例如。在链接的chromedriver问题得到解决之前,运行需要在Firefox中使用键盘快捷键的测试是一个解决办法 以下是配置的
directConnect
在Chrome和Firefox中运行测试,另一个是“远程”-在我们的例子中,在远程selenium服务器BrowserStack上运行测试
我们的“本地”配置被配置为在Chrome和Firefox中运行一些测试,因为我们确实无法在Chrome中运行一些测试,例如。在链接的chromedriver
问题得到解决之前,运行需要在Firefox中使用键盘快捷键的测试是一个解决办法
以下是配置的相关部分:
var firefox_only_specs = [
"../specs/some_spec1.js",
"../specs/some_spec2.js",
"../specs/some_spec3.js"
];
exports.config = {
directConnect: true,
multiCapabilities: [
{
browserName: "chrome",
chromeOptions: {
args: ["incognito", "disable-extensions", "start-maximized"]
},
specs: [
"../specs/**/*.spec.js",
"../specs/**/**/*.spec.js",
"../specs/**/**/**/*.spec.js"
],
exclude: firefox_only_specs
},
{
browserName: "firefox",
specs: firefox_only_specs
}
],
// ...
};
问题:
现在的问题是,如果我正在调试一个测试,或者想要运行一个测试-我会将它标记为重点测试(通过fdescribe
/fit
),但量角器会启动两个驱动程序会话-一个用于Chrome,另一个用于Firefox,使用两种配置的功能:
Running "protractor:local" (protractor) task
[launcher] Running 2 instances of WebDriver
...
------------------------------------
[chrome #1] PID: 2329
[chrome #1] Using ChromeDriver directly...
[chrome #1] Spec started
...
------------------------------------
[firefox #2] PID: 2330
[firefox #2] Using FirefoxDriver directly...
[firefox #2] Spec started
...
问题: 有没有办法告诉量角器只使用一个配置了聚焦规范的功能
使用当前最新的
量角器
3.0.0
希望问题清楚。如果您需要任何其他信息,请告诉我。我想知道您是否可以做些什么来包装
it
语句,例如:
onPrepare: function() {
browser.getCapabilities().then(function(caps) {
global.browserName = caps.caps_.browserName;
});
global.firefoxOnly = function(name, testFunction) {
if (browserName === 'firefox') {
return it(name, testFunction);
} else {
return xit(name, testFunction).pend('firefox only');
}
};
}
然后,在编写测试时,不要使用it
,而是使用以下内容:
describe('when I do something', function() {
firefoxOnly('it should do the right thing', function() {
doSomething();
expect(thing).toBe(right);
)};
});
我不知道这是否真的有效,只是把它扔出去。事实上,当我回到我的测试计算机并试用它时,我会有兴趣添加一个像wip
这样的函数来代替xit
来自动挂起我的ATDD测试
有没有办法告诉量角器只使用一个配置了聚焦规范的功能
根据调查,这是不可能的。你的问题没有答案,但在我看来……你不可能。在开始执行测试之前读取配置,以便启动
multiCapabilities
中的所有浏览器。一个痛苦的解决方法是更改“运行程序”或执行脚本以具有不同的配置,或者根据命令行参数动态设置配置。ie。它没有使用工具/框架的内置功能,但您可以使用不带Chrome设置的diff配置来执行。@aneroid谢谢您。是的,如何解决这个问题还不太清楚..可能我们必须有一个单独的自定义命令行参数,根据值,运行其中一个或全部功能。请记住,如果需要,您可以在dragrator.conf.js
中使用getMultiCapabilities
函数动态生成功能。最后,我找到了一种覆盖功能的方法,以防启用任何焦点测试(选择浏览器的逻辑稍微复杂一些,因为我的大多数测试都位于以要运行的浏览器命名的适当文件夹中)。@aneroid我同意,这看起来像是一个计时问题。当jasmine实际运行时,功能已经形成。找不到一个点,在这里我可以拥有我所需要的一切,不运行特定的功能,没有集中测试,只运行在规范中有集中测试的功能。谢谢,说得好。