Necesito automatizar la parte positiva y la parte negativa de la interfaz de usuario, por ejemplo, selecciono la sección de inicio de sesión, aquí mi código
it('login is not correct',function(){ cy.contains('Invalid Username or Password').should('not.exist') cy.get('input[type = "text"]').type('admins') cy.get('input[type = "password"]').type('admins') cy.get('.MuiButton-label').contains('LOGIN').should('be.visible').click() cy.contains('Invalid Username or Password').should('exist') }) it('The correct login page',function(){ cy.get('input[type = "text"]').type('admin') cy.get('input[type = "password"]').type('admin') cy.get('.MuiButton-label').contains('LOGIN').should('be.visible').click() })mi pregunta es como verificar pruebas tanto positivas como negativas
Su prueba de inicio de sesión incorrecto parece correcta ya que está validando el mensaje de error.
it("login is not correct", function () { cy.contains("Invalid Username or Password").should("not.exist") cy.get('input[type = "text"]').type("admins") cy.get('input[type = "password"]').type("admins") cy.get(".MuiButton-label").contains("LOGIN").should("be.visible").click() cy.contains("Invalid Username or Password").should("exist") }) Para un inicio de sesión correcto, debe afirmar algún elemento de la página que obtiene después de un inicio de sesión exitoso. Una buena manera sería hacer valer el admin de nombre de usuario
it('The correct login page',function(){ cy.get('input[type = "text"]').type('admin') cy.get('input[type = "password"]').type('admin') cy.get('.MuiButton-label').contains('LOGIN').should('be.visible').click() cy.get('selector').should('have.text', 'admin') //assert the username admin on the webpage })Usando if-else. Pero no recomendaré esta solución porque estamos usando una espera personalizada después del inicio de sesión, porque no sabemos cuánto tiempo tomará completar la acción de inicio de sesión y darnos los comentarios que fallaron o pasaron y esto puede conducir a pruebas escamosas. Entonces, en mi opinión, cubrir dos escenarios en dos pruebas diferentes es un enfoque de prueba mejor y más completo.
it("Login Functionality", function () { cy.get('input[type = "text"]').type("admin") cy.get('input[type = "password"]').type("admin") cy.get(".MuiButton-label").contains("LOGIN").should("be.visible").click() cy.wait(2000) //wait cy.get("body").then((body) => { if (body.find("selector of error message").length > 0) { //Login Failed expect("selector of error message").to.have.text("Invalid Username or Password") } else { //Login Passed expect("selector").to.have.text("admin") } }) })Su prueba negativa es buena, pero cambiaría cy.contains('Invalid Username or Password').should('exist') a cy.contains('Invalid Username or Password').should('be.visible') para afirmar que el mensaje de error es visible para el usuario en lugar de existir en el DOM.
Para la prueba positiva, puede agregar fácilmente una afirmación en el nombre de la ruta (es decir cy.location('pathname').should('include','/userHomeProfile/')