Skip to content

Laravel Tests Dom Crawler

Paquete para facilitar hacer comprobaciones sobre HTML, vistas, etc.

Ver https://laravel-news.com/symfony-domcrawler-with-laravel-http-tests

Ejemplo

Para usarlo, hay que llamar a DomCrawler::for, y pasarle el resultado de $this->get, $this->post, etc de un test que extienda de \Tests\TestCase (es decir, cualquier test normal de Laravel)

public function testSeMuestraLaVistaDeEdicionDeUnaSeccionDeCronometraje(): void
{
    // ... 
    $result = $this->get(/*...*/);

    // Assert
    DomCrawler::for($result)->assertNodeExists('a#prueba');
}

Métodos

Evitar múltiples llamadas a crawl

No es necesario llamar a crawl para cada assert, se pueden hacer llamadas del tipo DomCrawler::for($result)->assertNodeExists(...)->assertNodeExists(...)...

crawl

Devuelve una instancia de Symfony\Component\DomCrawler\Crawler para casos en los que se necesitan pruebas más específicas. Ver la documentación del componente en The DomCrawler Component (Symfony Docs).

DomCrawler::for($result)->crawl()

Este método no se puede encadenar.

assertNodeExists

Comprueba que existe un nodo con el selector indicado.

// Debe existir un enlace con el id "prueba"
DomCrawler::for($result)->assertNodeExists('a#prueba');

// Debe existir un input de tipo texto con el nombre "name"
DomCrawler::for($result)->assertNodeExists('input[type="text"][name="name"]');

// Debe existir un select con el nombre "participant", y tiene que tener la opci
DomCrawler::for($result)->assertNodeExists('select[name="participant"] option[value="1"][selected]')

assertNodeDoesNotExists

La inversa de la anterior

assertSelectHasOptionSelected

Comprueba que el select $fieldName existe y tiene la opción $optionValue seleccionada.

assertSelectDoesNotHaveOptionSelected

Comprueba que el select $fieldName existe y NO tiene la opción $optionValue seleccionada.