14.2.2 Agregando el proyecto de pruebas de usuario

Agregamos un proyecto de Pruebas, ahora será NUnit, los 3 (NUnit, XUnit, MSTest) manejan los mismos conceptos, solo cambia poco la sintaxis.

Tecleamos el nombre CaducaRest.UITest

Agregamos los siguientes paquetes:

Install-Package Selenium.WebDriver

Agregamos el navegador chrome

Install-Package Selenium.WebDriver.ChromeDriver

Con este paquete podemos acceder a elementos como combos (select en html)

Install-Package Selenium.Support

Modificamos la prueba por lo siguiente, primero indicamos que será un navegador de Chrome, luego indicamos que deseamos ir a la página de google.com

Los pasos que una persona realizaría son:

  1. Abrir el navegador

  2. Ir a la página de www.google.com

  3. Puedes comprobar que estas en la página de Google viendo su logo. Si inspeccionas la imagen ves que su id es hplogo y que tiene un atributo llamado Google

El código de la prueba sería el siguiente. Renombra el archivo UnitTest1 por GoogleTest

GoogleTest.cs
public class Tests : IDisposable
{
    private  IWebDriver _driver;
    [SetUp]
    public void Setup()
    {
        _driver = new ChromeDriver();
    }
  
    [Test]
    public void TestGoogle()
    {
        _driver.Navigate().GoToUrl("http://www.google.com");
        Assert.That("Google Search", 
           Is.EqualTo(_driver.FindElement(By.Name("btnK")).GetAttribute("value")));
    }
    public void Dispose()
    {
        _driver.Quit();
        _driver.Dispose();
    }
}

Si corremos la prueba vemos que se abre una ventana de Chrome y se cambia a la página de www.google.com con una advertencia de que un software de prueba está controlando Chrome

Si luego google cambia el id o el atributo la prueba dejaría de funcionar, por ejemplo a veces pone doodles o una imagen para conmemorar un evento importante

Agregando Screenshots

Puedes tomar screenshoots de la página que estas probando por ejemplo si ocurrió algún error en la prueba, al terminar la prueba, puedes integrar la prueba a AzureDevOps y el screenshoot se agregará como Attachment, la configuración de las pruebas se verá mas adelante.

Agrega el siguiente código para tomar un ScreenShot

public void TakeScreenShoot()
{
    var screenImage = System.IO.Path.Combine
    (TestContext.CurrentContext.TestDirectory, 
     Guid.NewGuid().ToString() + ".png");       
    ((ITakesScreenshot)_driver).GetScreenshot()
        .SaveAsFile(screenImage, ScreenshotImageFormat.Png);
    //Agrega la imagen al contexto de la prueba para que sea
    //mostrada posteriormente como attachment
    //en Azure DevOps
    TestContext.AddTestAttachment(screenImage);
}

Una vez que configuras la integración continua en Azure DevOps queda de la siguiente manera, esto se verá mas adelante ya que las pruebas con selenium se deben ejecutar después del release. A continuación se muestra el lugar donde se guardan las imágenes en Azure Devops

Last updated