Simplium

De Dos Ideas.
Saltar a: navegación, buscar

Simplium permite crear test de Selenium para que puedan ser ejecutados en diferentes browsers y entornos. Tomando como entorno la maquina local de un desarrollador, un servidor de test o incluso el Server productivo.

Simplium mira en que entorno tiene que correr (desarrollo, test o producción), basado en esa información corre los test contra diferentes servers (local, Selenium remote, selenium grid) y en los browsers que el entorno tenga especificados.

Ejemplo de uso

Los pasos para usar Simplium son:

  1. Crear una anotación propia en donde se indique la configuración deseada.
  2. Crear un test JUnit que herede de SimpliumWebTest y use la anotación anterior.
  3. Usar el test!

Vamos al paso-a-paso.

La anotación

Creamos una anotación propia que indica la configuración general de Selenium.

package com.dosideas.simplium;

import java.lang.annotation.Documented; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import org.junit.Ignore; import org.simplium.annotation.Browsers; import org.simplium.annotation.Enviroments; import org.simplium.annotation.Screenshot; import org.simplium.annotation.Screenshot.CaptureRule;

@Enviroments( development = { "localhost", "4444", "http://www.google.com" }, test = { "test.host", "4444", "http://www.google.com" }, production = { "prod.host", "4444", "http://www.google.com" } ) @Browsers( development = { "*iexplore",

               "*firefox"

}, test = { "*firefox on Windows", "*firefox on MacOS", "*firefox on Linux", "*iexplore on Windows", "*iexplore on MacOS", "*safari on MacOS", "*safari on Windows", "*opera on Windows", "*opera on MacOS", "*opera on Linux", "*googlechrome on Windows" }, production = { "as test" } ) @Documented @Inherited @Retention(RetentionPolicy.RUNTIME) @Screenshot(CaptureRule.CAPTURE_WHEN_EXCEPTION_OCCURES) @Ignore public @interface MiTestWeb { }

La anotación @Environments declara los "ambientes" posibles para esta ejecución. De esta manera podemos declarar ambientes de desarrollo, testing y producción. De manera predeterminada las pruebas se ejecutan con la configuración de desarrollo; si deseamos usar otra configuración debemos definir la variable de entorno "environment" en la JVM (por ejemplo, para test pasamos el parámetro "-Denviroment=test").

La anotación @Browsers indica los navegadores sobre los cuales se ejecutarán las pruebas, dependiendo del entorno.

La anotación @Screenshot indica que se guardará una captura de pantalla del navegador en caso de que la prueba falle.

La clase de test

Creamos una clase de test JUnit, la cual hereda de SimpliumWebTest y usa la anotación anterior.

package com.dosideas.simplium;

import junit.framework.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.simplium.SimpliumWebTest; import org.simplium.junit.SimpliumJUnitRunner; import static org.junit.Assert.*;

@MiTestWeb @RunWith(SimpliumJUnitRunner.class) public class SimpliumTest extends SimpliumWebTest {

@Test public void verificarTitulo() { selenium.open("/"); assertEquals("Google", selenium.getTitle()); }

}

Como vemos, tenemos acceso al objeto selenium, el cual ya está listo para usarse. Simplium se encarga de configurar el objeto e invocar repetidas veces al método con diferentes navegadores (según la configuración de @MiTestWeb).

Como setear el timeout

Si el test está fallando por timeout puede que el valor por defecto (30000 milisegundos) no sea suficiente. Entonces:

@Timeout(x), x expresado en milisengundos

Ver también