我正在尝试运行初始开箱即用的e2e测试,这些测试是为新的Angular项目生成的。
这是我的测试结果:
import { browser, by, element } from 'protractor';
describe('angular5-e2e App', () => {
it('should display welcome message', () => {
browser.get('/')
.then(() => {
let text = element(by.css('app-root h1')).getText();
expect(text).toEqual('Welcome to app!');
});
});
});
使用ng e2e
在本地运行正常。当我尝试仅在BrowserStack上执行相同的操作时,它会失败。这是我的配置
const { SpecReporter } = require('jasmine-spec-reporter');
exports.config = {
allScriptsTimeout: 11000,
specs: [
'./e2e/**/*.e2e-spec.ts'
],
capabilities: {
'browserstack.user': '<my-username>',
'browserstack.key': '<my-password>',
'browserName': 'chrome'
},
// directConnect: true,
// baseUrl: 'http://localhost:4200/',
'seleniumAddress': 'http://hub-cloud.browserstack.com/wd/hub',
framework: 'jasmine',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000,
print: function() {}
},
onPrepare() {
require('ts-node').register({
project: 'e2e/tsconfig.e2e.json'
});
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
}
};
但是这失败了以下消息:
这里有什么问题?我在配置中遗漏了什么吗?
修改
在测试中指定绝对网址:
browser.get('http://localhost:4200/')
.then(() => {
然后导致了这个错误:
在错误中访问page,建议通过调用更改全局或本地等待量角器等待的时间:
如何更改:要全局更改,请添加getPageTimeout: timeout_in_millis到您的Protractor配置文件。为 单独调用get,传递一个额外的参数: browser.get(address,timeout_in_millis)
所以在我的browser.get
中我添加了15000作为第二个参数(最长等待时间似乎是11秒 - 尽管这是因为我的配置设置了allScriptsTimeout: 11000
)并且它失败并出现此错误:
编辑2
我认为这是Protractor无法连接到运行的本地Angular应用程序的问题 - 假设我的理解是正确的,那么它(应用程序)需要在本地运行才能通过BrowserStack进行测试。
我部署到我们的测试分支并再次运行测试,他们都通过了,但我希望这在本地工作。