Selenium, phpunit y Drupal

Publicado por Lucas Hedding el 15 de Septiembre de 2012

Selenium, PHPUnit y Drupal

Visión de conjunto

Recientemente estaba en un proyecto donde escribí pruebas con Selenium para un sitio de Drupal. Elegí Selenium sobre SimpleTest de Drupal para lograr un mayor apoyo entre navegadores. Para empezar, tendrá que instalar PHPUnit y PHPUnit_Selenium . Para mi ejemplo, usted también deberá instalar Jenkins personalizado para PHPUnit y Apache Ant . Por supuesto, no se olvide de descargar Selenio IDE para Firefox , selenio-server-standalone-2.xxjar y el PHP Formatter para Selenium IDE .

Debería explicar por qué he optado por ir con la aplicación pura de PHPUnit de Selenium. Parece tener el mayor apoyo y documentación. Y nuestro modelo de prueba de control de calidad puede construir el guión inicial utilizando el IDE de Selenium y exportarlo para su uso con PHPUnit. Esto significa que no podemos utilizar las características interesantes de JsonWireProtocol todavía, pero que deberíamos dentro de poco.

Escribe los scripts

Escribí una clase base que incluye algunas funciones init. Estos son bastante universales para probar en el sitio de Drupal y me permite desarrollar mis pruebas unitarias con el supuesto de que se pueden ejecutar en cualquier orden. Restablece las cookies en el navegador y establece el comienzo de una prueba en una ubicación conocida, la página de inicio.

<?php

abstract class BaseTest extends PHPUnit_Extensions_SeleniumTestCase {

  protected $autoStop = FALSE;

  protected function setUp() {
    $this->setBrowserUrl('http://www.example.com');
  }
  /** 
   * common commands required at the start of each test. These cannot be run in the setup 
   * as they require the browser to be opened 
   */
  protected function init() {
    $this->clearAllCookies();
    $this->openHomePage();
  }
  /**
   * Clears all cookies
   */
  private function clearAllCookies() {
    $cookies = explode(';', $this->getCookie());
    foreach ($cookies as $cookie) {
      $cookie_parts = explode('=', $cookie);
      $this->deleteCookie($cookie_parts[0], '/');
    }
  }
  /**
   * Open the homepage and verifies we are in fact on the home page
   */
  private function openHomePage() {
    $this->open("/");
    $this->waitForPageToLoad("30000");
    $this->assertEquals("Home", $this->getText("xpath=//h1[@id='page-title']"));
  }
}

 

¿Desea mantener su sitio Drupal funcionando sin problemas, sin preocuparse por el mantenimiento? Podemos darle a su sitio ajustes ocasionales o ayudarle a mantenerlo al día a largo plazo.

Escríbanos sobre su proyecto y nos pondremos en contacto con usted dentro de 48 horas.