Necesito encontrar una manera de esperar con mi prueba e2e (proyecto angular2) hasta que el elemento probado obtenga una clase css específica .
¿Hay alguna forma posible sin browser.wait() o browser.sleep() ?
Incluso usó la palabra "esperar" en la pregunta, pero pidió resolverlo sin las funciones de espera integradas. No le veo mucho sentido a eso.
Hemos resuelto algo similar antes y creamos una función de espera personalizada que se puede usar como una Condición esperada con browser.wait() :
function waitForCssClass(elementFinder, desiredClass) { return function () { return elementFinder.getAttribute('class').then(function (classValue) { return classValue && classValue.indexOf(desiredClass) >= 0; }); }; }; browser.wait(waitForCssClass($("#myid"), "desiredClass"), 5000);Esta función espera a que una clase desaparezca de un elemento, dado el objeto del elemento (ElementFinder) y la clase CSS que desea verificar.
static async waitCssClassToDisappear(elem:ElementFinder, cssClass:string, timeout?: number) { await browser.wait(()=>{ return elem.getAttribute('class').then((value) =>{ return value.indexOf(cssClass) < 0; }); }, timeout ? timeout : Utils.defaultTimeout, 'CSS class did not disappear within specified timeout'); }