Al automatizar un inicio de sesión, realizo un clic en un elemento que podría conducir a la navegación a otra página, pero en caso de contraseña no válida, solo mostrará un mensaje de error en la misma página sin causar realmente una navegación.
Yo he tratado:
await Promise.all([ this.page.submitButton.click(), this.page.waitForNavigation() ]);Pero fallará en el caso de que no haya navegación. Estaba pensando en interceptar la respuesta, para verificar si el inicio de sesión tuvo éxito/falló, pero puede haber una forma más clara de hacerlo.
Este código debería darle un ejemplo de cómo entender si permanece en la misma página o navega:
await this.page.submitButton.click(); try { await this.page.waitForNavigation(); // if we are here it means login was successful } catch(e) { // if we are here it means login failed }No creo que necesite código adicional además this.page.submitButton.click() .
La función de clic esperará la navegación por usted. Entonces podría verificar después del clic si está en la misma URL o no.
await this.page.submitButton.click(); // This will wait for a possible navigation if(this.page.url() == destinationOnValidLogin) { // Good login stuff } else { // Login failed }