requireJs を使用する AngularJs アプリケーションがあるため、アプリケーションのブートストラップの遅延メソッドを使用します。分度器と組み込みのキュウリ サポートを組み合わせて、これをテストしようとしています。
こちらの分度器の github ページからキュウリのテストを実行でき、テストは問題なくパスします。ページに存在する html 要素をテストするテストを追加しようとすると、「ロケーターを使用して要素が見つかりません」と表示されて失敗します。
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
var expect = chai.expect;
module.exports = function() {
var ptor = protractor.getInstance();
this.Before(function(callback) {
//Otherwise i get Error while waiting for Protractor to sync with the page error
ptor.ignoreSynchronization = true;
callback();
});
this.Given(/^I run Cucumber with Protractor$/, function(next) {
next();
});
this.Given(/^I go on(?: the website)? "([^"]*)"$/, function(url, next) {
ptor.driver.get('http://0.0.0.0:8000');
next();
});
this.Then(/^it should still do normal tests$/, function(next) {
expect(true).to.equal(true);
next();
});
this.Then(/^it should expose the correct global variables$/, function(next) {
expect(protractor).to.exist;
expect(browser).to.exist;
expect(by).to.exist;
expect(element).to.exist;
expect($).to.exist;
next();
});
this.Then(/the title should equal "([^"]*)"$/, function(text, next) {
expect(ptor.getTitle()).to.eventually.equal(text).and.notify(next); //passes
//sleep here just to see the html is definately rendered
ptor.sleep(2000);
// when i add this it fails - No element found using locator
expect(element(by.binding('title')).getText()).to.eventually.equal('Main');
next();
});
};
キュウリを状況に導入するまで、分度器で遅延ブートストラップを使用することに煩わされなかったので、これがテクノロジーの組み合わせを使用した場合の問題であるかどうか疑問に思っています。他の誰かが require/protractor/cucumber を一緒に使用した経験がありますか?