Я пытаюсь написать несколько тестов e2e для приложения Ionic с использованием Protractor и Cucumber.Я следовал шаблону объекта страницы, но по какой-то причине, несмотря на то, что я ждал появления элементов, вызов count()
возвращает 0
.Однако если я засну, это сработает.Вот мой шаг:
Then('my cases should be listed', function (callback) {
casesPage.isLoaded()
.then(() => {
expect(casesPage.numberOfFamilies())
.to.eventually.equal(20)
.and.notify(callback);
})
});
И объект моей страницы
import { browser, $, $$, by, ElementFinder, ElementArrayFinder } from 'protractor';
export class CasesPage {
listOfFamilies: ElementArrayFinder;
private initializePromise: Promise<void>;
async initialize(): Promise<void> {
if(!this.initializePromise) {
return this.initializePromise = new Promise<void>(async (resolve) => {
this.listOfFamilies = $$('ul.families li.family');
return resolve();
});
}
}
get() {
return browser.get('/cases')
}
async isLoaded(): Promise<boolean> {
await this.initialize();
return this.listOfFamilies.isPresent();
}
async numberOfFamilies(): Promise<number> {
await this.initialize();
// browser.sleep(3000); Uncommenting this works
return this.listOfFamilies.count();
}
}
Есть идеи?