describe("Purge all", function() { it('Purge all', () => { CachePurgePage.open(PARTNER_ID, ACCOUNT_ID, CONFIGURATION_ID); const label = $('[class = "css-1av0y7f-SidebarLinkTitle ezsph7p1"]'); browser.waitUntil(function(){ return label.isClickable() }, 6000, "Element is not clickable"); label.click(); browser.waitUntil(function(){ return $$('[class ="css-1rqefwa-LabelOutput e9gmw1r4"]')[1].isDisplayed(); }, 6000, "Element is not displayed") $$('[class ="css-1rqefwa-LabelOutput e9gmw1r4"]')[1].click(); browser.waitUntil(function(){ return $$('[class *= "Row-StyledTableRow"]')[1].isDisplayed(); }, 6000, "Element is not clickable") const firstTR = CachePurgePage.tableTasksInfo[0]; const internalTDs = firstTR.$$('[class = "css-zr137n-Cell eveacmn0"]'); expect(internalTDs[1]).toHaveText('2');¡Hola a todos! Mi primera prueba de WDIO y no es difícil de entender que soy nuevo en esto. Así que me encontré con un problema interesante. La prueba funciona bien cuando uso browser.pause() pero si solo trato de implementar $element.waitForClickable().click() todo sale mal. La prueba no espera condiciones y trata de encontrar un elemento de todos modos y luego hacer clic en él. Por supuesto, no encuentra nada porque la página necesaria no se ha descargado y simplemente hace clic en el elemento "desdefinir" que da como resultado que la prueba finalice con un error. Así que probé browser.waitUntil() y se estaban dando algunos pasos inesperados. Primero, el navegador busca "label = $('[class = "css-1av0y7f-SidebarLinkTitle ezsph7p1"]')" y luego hace clic en él. La salida del terminal dice que todo está bien. Luego comienza a buscar "$$('[class ="css-1rqefwa-LabelOutput e9gmw1r4"]')[1]" y no puede localizarlo porque en la vida real el clic() en el elemento anterior no sucedió. No puedo entender por qué está funcionando de esta manera. Tengo 94 chromedriver, 7.14 wdio y 14 node.js y lo probé en 85 chromedriver, 6.7 wdio y 12 node.js no hay ninguna diferencia
Consulte los ejemplos aquí: https://webdriver.io/docs/api/browser/waitUntil/
Notará que le faltan notaciones async/await .
Básicamente browser.waitUntil devuelve una Promise() que simplemente estás ignorando.
desde la sincronización de NodeJs v16. el modo está en desuso: 
Prueba esto:
describe("Purge all", function() { it('Purge all', async () => { CachePurgePage.open(PARTNER_ID, ACCOUNT_ID, CONFIGURATION_ID); const label = $('[class = "css-1av0y7f-SidebarLinkTitle ezsph7p1"]'); await browser.waitUntil(function(){ return label.isClickable() }, 6000, "Element is not clickable"); label.click(); await browser.waitUntil(function(){ return $$('[class ="css-1rqefwa-LabelOutput e9gmw1r4"]')[1].isDisplayed(); }, 6000, "Element is not displayed") $$('[class ="css-1rqefwa-LabelOutput e9gmw1r4"]')[1].click(); await browser.waitUntil(function(){ return $$('[class *= "Row-StyledTableRow"]')[1].isDisplayed(); }, 6000, "Element is not clickable") const firstTR = CachePurgePage.tableTasksInfo[0]; const internalTDs = firstTR.$$('[class = "css-zr137n-Cell eveacmn0"]'); expect(internalTDs[1]).toHaveText('2'); //...