Tome este código de Testcafe:
test .page('https://testsite.com') ('button hidden after clicked', async t => { await t .expect(await Selector('button.cc-banner__button-accept').visible).ok({ timeout: 5000 }) .setNativeDialogHandler(() => true) .click(await Selector('button.cc-banner__button-accept')) .expect(await Selector('button.cc-banner__button-accept').visible).notOk({ timeout:1000 });Lo anterior falla cuando se ejecuta Testcafe.
Sin embargo, el siguiente código pasa:
test .page('https://testsite.com') ('button hidden after clicked', async t => { await t .expect(await Selector('button.cc-banner__button-accept').visible).ok({ timeout: 5000 }) .setNativeDialogHandler(() => true) .click(await Selector('button.cc-banner__button-accept')); await t .expect(await Selector('button.cc-banner__button-accept').visible).notOk({ timeout:1000 });¿Por qué es esto? ¿Algunas ideas?
JS evalúa el valor del elemento real para Selector en el momento de compilar la cadena. (JS funciona de esta manera). Significa que la primera prueba que evalúe calcula await Selector('button.cc-banner__button-accept').visible para toda la cadena solo una vez y luego este valor se usa para verificar. Dado que obtiene el valor solo una vez, la prueba falla como se esperaba. Debe eliminar await inside, antes de Selector inside asertions, como puede ver en las advertencias de la CLI.