Uno de mis últimos descubrimientos ha sido CasperJS. Básicamente es un navegador (webKit) que se ejecuta desde consola con comandos escritos en javascript. Además de navegar también te permite ejecutar tests y exportarlos a formato JUnit. La sintaxis es tan sencilla como la siguiente:
var casper = require('casper').create(); casper.start('http://casperjs.org/', function() { this.echo(this.getTitle()); }); casper.thenOpen('http://phantomjs.org', function() { this.echo(this.getTitle()); }); casper.run();
Si a este fichero le llamásemos "test.js", la ejecución sería la llamada a
casperjs test.js
Para el script de phing del template de drupal que tienen en reload , he creado un par de targets que detectan todos los ficheros que se llamen *.casper.js dentro del workspace y los va ejecutando. Aquí estarían los dos targets:
<!-- search for all test files and execute "exec-casperjs-test" with this filename--> <target name="exec-casperjs-tests" depends="setup-dirs"> <echo>Searching for casperjs tests files *.casper.js</echo> <fileset dir="." id="test-files"> <include name="**/*.casper.js" /> </fileset> <foreach param="filename" absparam="absfilename" target="exec-casperjs-test"> <fileset refid="test-files" /> </foreach> </target> <!-- Execute each test --> <target name="exec-casperjs-test"> <echo>executing casperjs tests: ${filename}</echo> <property name="name" value="${filename}"> <filterchain> <replaceregexp> <regexp pattern="(\w+/|\.\w+)" replace="" ignoreCase="true"/> </replaceregexp> </filterchain> </property> <property name="project.casperdir" value="${project.logdir}/casperjs-report-${name}.xml" /> <exec command="casperjs test ${filename} --no-colors --xunit=${project.casperdir}" passthru="true"/> </target>
Y para ejecutar estos dos targets, lo único necesario sería llamar a "exec-casperjs-tests" en el target de verify. Con esto ya ejecutaría los tests de casperjs y los exportaría a formato JUnit.
Add new comment