WordPress y Codeception

¿Quieres patrocinar?

¿Quieres aparecer aquí? Si quieres patrocinar este blog, ponte en contacto conmigo a través de este formulario

Codeception para WordPress: WPBrowser

En entradas anteriores hemos visto cómo realizar tests de aceptación en WordPress con Codeception, utilizando el módulo PhpBrowser que viene por defecto, así como el módulo WebDriver tanto con PhantomJS como con Selenium.

Bien, en esta entrada vamos a ver WPBrowser, un paquete específico de Codeception para WordPress, con utilidades para realizar tests de aceptación sin tener que reinventar la rueda.

Comencemos con la instalación y su configuración y luego pasemos a ver varios ejemplos.

Instalación de WPBrowser

Para instalar el paquete WPBrowser de Codeception, utilizaremos composer. Lo primero es insertar las dependencias en el fichero composer.json:

composer require lucatume/wp-browser --dev

Si has obtenido algún conflicto porque tenías previamente instalado codeception, prueba a eliminarlo e instalar únicamente el paquete de WPBrowser.

composer remove codeception/codeception --dev
composer require lucatume/wp-browser --dev

Según la documentación oficial, al instalar wp-browser éste instalará Codeception a su vez, pero esto no es así (al menos en la versión 2.5, la actual en el momento de escribir este post). En GitHub, las instrucciones indican que para versiones 4.0 de Codeception o superiores, te asegures de que tienes en el composer.json todos los paquetes requeridos:

{
  "require-dev": {
    "lucatume/wp-browser": "^2.4",
    "codeception/module-asserts": "^1.0",
    "codeception/module-phpbrowser": "^1.0",
    "codeception/module-webdriver": "^1.0",
    "codeception/module-db": "^1.0",
    "codeception/module-filesystem": "^1.0",
    "codeception/module-cli": "^1.0",
    "codeception/util-universalframework": "^1.0"
  }
}

Una vez instalado, el siguiente paso es iniciar WPBrowser, te aparecerá una guía paso a paso (para realizar la configuración: path donde se encuentra WordPress, base de datos del sitio, base de datos de test, credenciales, URL del sitio, etc…) para crear la configuraciones necesarias, si tienes alguna duda sobre ellas visita la página oficial donde viene detallado. Para esto, ejecuta lo siguiente en la terminal:

codecept init wpbrowser
wpbrowser

Si necesitas cambiar alguna de estas configuraciones en un futuro, puedes editar el fichero .env.testing.

En este punto, ya deberíamos tener una carpeta tests, con las 3 suites por defecto y sus correspondientes archivos de configuración. El paquete de WPBrowser, viene con una serie de módulos para realizar tests de manera más rápida y cómoda

Ejemplos con el módulo WPBrowser

Este módulo puede utilizarse para realizar test de aceptación y funcionales. Extiende el módulo PHPBrowser que viene por defecto en Codeception, añadiendo instrucciones específicas para WordPress.

Este módulo emula la interactuación de un usuario sin soporte de JavaScript. Si lo necesitaras para testear tu desarrollo, utiliza mejor el módulo WPWebDriver. Pone a nuestra disposición intrucciones como:

loginAs

Para hacer login con un usuario especificado. Nos reduce los pasos de ir a la página de login, rellenar el campo de username, rellenar el campo password, y hacer click en el botón de Acceder. Simplifica 4 instrucciones en una, quedando alto tipo:

$I->loginAs('username', 'password');
$I->amOnAdminPage('/');
$I->see('Escritorio');

loginAsAdmin

Simula el login como administrador, utilizando las credenciales especificadas en el archivo de configuración del módulo.

$I->loginAsAdmin();
$I->amOnAdminPage('/');
$I->see('Escritorio');

activatePlugin

Para activar un plugin durante el test. Se puede activar uno o varios a la vez. Este método no hace por sí solo el login en el dashboard.

// Activate a plugin.
$I->loginAsAdmin();
$I->amOnPluginsPage();
$I->activatePlugin('hello-dolly');

// Activate a list of plugins.
$I->loginAsAdmin();
$I->amOnPluginsPage();
$I->activatePlugin(['hello-dolly','another-plugin']);

amOnPluginsPage

Te lleva y comprueba que el usuario actual puede acceder a la página de gestión de plugins. Este método no hace por sí solo el login en el dashboard.

$I->loginAsAdmin();
$I->amOnPluginsPage();
$I->activatePlugin('hello-dolly');

seeMessage

En la administración de WordPress, busca un notice, por ejemplo cuando actualizas un setting, creas una página, post, usuario, etc… La búsqueda debe ser sobre la clase CSS de la notificación, para evitar problemas de traducción de cadenas. Este método no hace por sí solo el login en el dashboard.

$I->loginAsAdmin();
$I->amOnAdminPage('/');
$I->seeMessage('.missing-api-token.my-plugin');

seePluginActivated, seePluginDeactivated, seePluginInstalled

Para comprobar si tenemos un plugin activo, inactivo o instalado. Este método no hace por sí solo el login en el dashboard.

$I->loginAsAdmin();
$I->amOnPluginsPage();
$I->seePluginActivated('my-plugin');

$I->loginAsAdmin();
$I->amOnPluginsPage();
$I->seePluginDeactivated('my-plugin');

$I->loginAsAdmin();
$I->amOnPluginsPage();
$I->seePluginInstalled('my-plugin');

Tienes más información sobre los métodos específicos de este módulo en la documentación oficial. Con ellos podrás simplificar los steps de cada test que realices para tus desarrollos basados en WordPress

¿Te ha resultado útil esta información?

Si este post te ha resuelto un problema, invítame a un café o a una cerveza. Con este pequeño gesto me animas a seguir escribiendo.