Próbuję zrobić prosty liczyć na moją testów modułowych e2e karuzelikątowa: kątomierz - count() nie powoduje rozwiązania i Timeout
carousel.po.ts
import { browser, element, by, Key } from 'protractor';
export class CarouselDemoPage {
navigateTo() {
return browser.get('/design/carousel');
}
getCarouselComponent(index: number) {
return element.all(by.css('cfc-carousel')).get(index);
}
getCarouselIndicators(index: number) {
return this.getCarouselComponent(index).element(by.css('.indicators')).all(by.repeater('item in items'));
}
}
A mój plik spec:
import { CarouselDemoPage } from './carousel.po';
describe('Carousel component',() => {
let page: CarouselDemoPage;
beforeEach(() => {
page = new CarouselDemoPage();
page.navigateTo();
});
it('At least one carousel component should exist',() => {
expect<any>(page.getCarouselComponent(0)).toBeDefined();
});
it('Check correct number of indicators displayed',() => {
expect<any>(page.getCarouselIndicators(0).count()).toEqual(4);
});
});
mam wszystkie najnowsze lub bliskie najnowszym przynajmniej pakiety
"@ kątową/core": "^ 5.0.0-beta.7", "jaśmin-core": "~ 2.8.0", "kątomierz": "~ 5.1.2"
Pierwszy test działa poprawnie, otrzymując limit czasu na drugi
1) Składnik karuzeli Sprawdź poprawną liczbę wyświetlanych wskaźników - Błąd: Przekroczono limit czasu oczekiwania na asynchroniczne zadania kątowe do zakończenia po 20 sekundach. Może to być spowodowane tym, że bieżąca strona nie jest aplikacją Angular. Proszę zapoznać się z nas po więcej szczegółów: https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular
Czekając na elemencie z lokalizatorem - lokator: Przez (selektor CSS, CFC-custom-select)
Zastrzeżenie mam setTimeout w ngAfterViewInit() tutaj:
ngAfterViewInit() {
// Needs the timeout to avoid the "expression has changed" bug
setTimeout(() => {
this.items = this.viewItems.toArray().concat(this.contentItems.toArray());
this.totalItems = this.items.length;
this._first = this.items[0];
this._last = this.items[this.totalItems - 1];
this._setItemsOrder(this.currentFrame);
this._setInterval();
}, 0);
}
Zatem próbowałem
browser.ignoreSynchronization = true;
i
browser.driver.sleep(50);
i
browser.waitForAngular();
ale potem się hrabia być 0
Więc po pewnym debugowania Pomyślałem, że setInterval w moich elementów karuzeli przerywa test
powinienem użyć browser.ignoreSynchronization = true; ??
Wszelkie pomysły?
Czy jakakolwiek część aplikacji internetowej jest kanciasta? – demouser123
nie jest tak oczywiste? @ demouser123 –
Dlaczego miałoby to być "oczywiste"?Nie widzę, aby wspominałeś o tym wyraźnie w treści pytania. – demouser123