Estoy tratando de comenzar con Nightwatch y me enfrenté al comportamiento poco claro.
Por favor, eche un vistazo al siguiente código. Quiero recopilar texto de una página en la lista y luego imprimirlo. Tenga en cuenta la prueba async y await browser.perform :
module.exports = { '@tags': ['smoke test'], 'Work with a table': async browser => { browser.page.mainPage.tablePage().navigate(); let list = [] await browser .perform(function () { browser.elements('css selector', 'thead th', function (elements) { elements.value.forEach(function (elementsObj, index) { browser.elementIdText(elementsObj.ELEMENT, function (result) { list.push(result.value) console.log('>> ' + result.value); }) }) }) }) console.log('list: ' + list); console.log('end'); } } Según tengo entendido, debería ver el resultado de console.log('list: ' + list) como una lista cumplida al final de la prueba. Pero la salida es:
\ Running Work with a table: list: | Running Work with a table: >> Name >> Position >> Office >> Age >> Start date ‼ Running Work with a table: No assertions ran. Así que el console.log('list: ' + list); fue ejecutado antes. ¿Qué estoy haciendo mal aquí?
Otra pregunta es por qué el último console.log('end'); no está impreso en absoluto?
Actualización Traté de nombrar la prueba como 'Work with a table': async function(browser) , con el mismo resultado. Y si agrego la palabra clave await a browser.page.mainPage.tablePage().navigate(); comando, no hay ningún registro de consola impreso en absoluto.
Update2 El resultado de broser.perform es una Promesa, 
Cuando lo imprimo, me sale lo siguiente:
Promise { <pending>, capabilities: { acceptInsecureCerts: false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, . . .