Test funzionali su eZ Publish con phpunit e sfWebBrowser
Da molto tempo aspettavo questo momento, la possibilità di effettuare test funzionali su eZ Publish.
Non vi voglio annoiare spiegandovi l’importanza dei test automatici unitari e funzionali, ma lavorando con symfony e scoprendone le gioie ormai da più di due anni, la mancanza di questa feature su eZ Publish mi rendeva veramente nervoso.
Questa settimana ho lavorato con Jacopo su una nuova estensione che ora offre la possibilità di eseguire test funzionali con phpunit e sfWebBrowser sul famoso cms eZ Publish, dandoci il controllo completo sullo sviluppo.
L’implementazione è stata possibile grazie all’integrazione di phpunit in eZ Publish. Si finalmente anche loro hanno capito che devono testare le loro classi per poter far evolvere il CMS e fare refactoring. Però lo script integrato dà solo la possibilità di eseguire test unitari e non test funzionali.
Per questo motivo abbiamo realizzato una classe phpunit eZBrowserTestCase che è in grado di caricare classi, oggetti e nodi eZ Publish da un file YAML su database ed offre metodi proxy verso la classe sfWebBrowser per poter navigare un sito web da console proprio come se fosse un browser. Inoltre implementa metodi per testare la presenza di elementi sul dom attraverso i selettori CSS.
Per farvi capire meglio di seguito un esempio di test funzionale per eZ Publish:
[code lang="php"]< ?php
class NewsTest extends eZBrowserTestCase
{
/**
* User Story "As user I want to see latest news in home page"
* Task "Define news class"
*/
function testClassNews()
{
$this->get('http://panel.myproject.it');
$this->setField('Login', 'admin');
$this->setField('Password', 'publish');
$this->click('Login');
$this->click('Impostazioni');
$this->click('Classi');
$this->click('Notizia');
$this->responseContains('news');
$this->responseContains('Notizia');
}
}
?>
[/code]
Lanciando il test automatico, viene simulata la navigazione del pannello di controllo di eZ Publish e viene testata la presenza della classe news tra le classi di eZ Publish.
Il lavoro non è ancora completo, ma i primi risultati sono già molto interessanti.
E tu sviluppi test funzionali e unitati per le tue applicazioni o siti web?
allora, dov’é il codice???
Appena rientro dalle ferie metto tutto su http://projects.ez.no
!
[...] Ho rilasciato la versione 0.1 stabile della libreria eZ Test Browser che permette di eseguire test funzionali con eZ Publish. [...]