Package giis.demo.descuento.it
Class TestDescuentoSelenium
java.lang.Object
giis.demo.descuento.it.TestDescuentoSelenium
@SpringBootTest(classes=DescuentoApplication.class,
webEnvironment=RANDOM_PORT)
@TestPropertySource(locations="classpath:application-test.properties")
public class TestDescuentoSelenium
extends Object
Pruebas de la interaccion del usuario con la aplicacion web del ejemplo de descuentos a clientes
(Problema 3d)
utilizando Selenium (https://www.seleniumhq.org/):
Ilustra la configuracion para pruebas de integracion con el interfaz web de usuario en Spring Boot
y el proceso basico de ejecucion y comparacion de resultados con Selenium.
Las situaciones a cubrir son las mismas que en samples-test-java (giis.demo.descuento.it.assertj).
La configuracion es la siguiente:
SpringBootTest: Al igual que en las pruebas unitarias (TestDescuentoRepository) se reutiliza la configuracion de la aplicacion, pero se anyade la especificacion del entorno (webEnvironment). Esto permite que se ejecute la instancia del servidor tomcat embebido con el que se puede interaccionar. Se especifica RANDOM_PORT para que la prueba no interfiera con otras aplicaciones que puedan estar ejecutandose (por ejemplo en CI).
TestPropertySource: Igual que en las pruebas unitarias (TestDescuentoReposotory) Especifica un fichero de configuracion diferente (localizado en src/test/resources), en este caso solo se omite la carga de datos inicial de data.sql para que se arranque con una base de datos limpia (esto se podria hacer utilizando un profile diferente con su propia configuracion)
RunWith: Se ha de especificar el runner especifico para Spring Booth (si no, las anotaciones son ignoradas)
Notar que no se especifica DataJpaTest pues interfiere con la configuracion especificada de webEnvironment y falla al intentar lanzar el servidor. Si se indica ServletWebServerFactoryAutoConfiguration.class en las clasess de SpringBootTest El servidor se configura pero incorrectamente sin mapear los endpoints (posible bug?)
Las situaciones a cubrir son las mismas que en samples-test-java (giis.demo.descuento.it.assertj).
La configuracion es la siguiente:
SpringBootTest: Al igual que en las pruebas unitarias (TestDescuentoRepository) se reutiliza la configuracion de la aplicacion, pero se anyade la especificacion del entorno (webEnvironment). Esto permite que se ejecute la instancia del servidor tomcat embebido con el que se puede interaccionar. Se especifica RANDOM_PORT para que la prueba no interfiera con otras aplicaciones que puedan estar ejecutandose (por ejemplo en CI).
TestPropertySource: Igual que en las pruebas unitarias (TestDescuentoReposotory) Especifica un fichero de configuracion diferente (localizado en src/test/resources), en este caso solo se omite la carga de datos inicial de data.sql para que se arranque con una base de datos limpia (esto se podria hacer utilizando un profile diferente con su propia configuracion)
RunWith: Se ha de especificar el runner especifico para Spring Booth (si no, las anotaciones son ignoradas)
Notar que no se especifica DataJpaTest pues interfiere con la configuracion especificada de webEnvironment y falla al intentar lanzar el servidor. Si se indica ServletWebServerFactoryAutoConfiguration.class en las clasess de SpringBootTest El servidor se configura pero incorrectamente sin mapear los endpoints (posible bug?)
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate DataSource
(package private) org.openqa.selenium.WebDriver
(package private) int
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate void
La ejecucion de un paso ilustra el uso de las acciones basicas de selenium (findElement, click, sendKeys) y otras utilidades (obtener el contenido de una tabla, tomar imagenes)void
Datos de prueba que se cargaran en el setup para cubrir las situaciones del disenyo de la prueba.private void
Inicializa el WebDriver para el navegador indicado y navega a la pagina principal.void
setUp()
void
tearDown()
void
Escenario de prueba de la pantalla: Cuatro pasos cambiando el filtro por edad, comprobando en cada uno el valor de la tabla de descuentos.
-
Field Details
-
datasource
-
port
@LocalServerPort int port -
driver
org.openqa.selenium.WebDriver driver
-
-
Constructor Details
-
TestDescuentoSelenium
public TestDescuentoSelenium()
-
-
Method Details
-
setUp
public void setUp() -
tearDown
public void tearDown() -
loadMainPage
private void loadMainPage()Inicializa el WebDriver para el navegador indicado y navega a la pagina principal. Inserta sleeps tras cada accion para que se pueda ver la secuencia de pasos en los videos -
loadCleanDatabase
public void loadCleanDatabase()Datos de prueba que se cargaran en el setup para cubrir las situaciones del disenyo de la prueba. Notar que no se eliminan los datos antes de ejecutar porque el runner establece una transaccion y hace rollback al finalizar el test case, asegurando siempre base de datos limpia. -
testDescuentoScenario
public void testDescuentoScenario()Escenario de prueba de la pantalla: Cuatro pasos cambiando el filtro por edad, comprobando en cada uno el valor de la tabla de descuentos. Como los pasos son similares, encapsula el proceso de ejecucion y comparacion de resultados en un metodo especifico, eliminando codigo duplicado. -
doStep
La ejecucion de un paso ilustra el uso de las acciones basicas de selenium (findElement, click, sendKeys) y otras utilidades (obtener el contenido de una tabla, tomar imagenes)
-