Estoy trabajando en un proyecto en el que la mayor parte de los tests deben correr con Capybara+selenium lo que hace que cada ejecución de la test suite se haga eterna. En la búsqueda de mi felicidad(a.k.a. acelerar la batería de pruebas) probé diferentes drivers headless (celerity, zombie.js, akephalos y envjs) pero todos me fallaban por una cosa u otra, así que nada mi gozo en un pozo.
Dándole vueltas al tema me acordé de la gema Specjour[1], del colega Sandro(Hashrocket), que ejecutaba los tests de manera distribuida por la red y que podías usar en modo local. Como la aplicación no es precisamente sencilla y specjour funciona distribuyendo la aplicación rápidamente caí en que no era la mejor opción pero me dio el puntero hacia parallel_tests[2].
Esta gema tiene un funcionamiento más sencillo, se dedica a ejecutar cada spec/feature en un environment propio. Siguiendo las instrucciones de la gema y adaptándola a mi aplicación ya tenía la batería de tests corriendo como una exhalación y a los 8 cores de mi cpu echando humo.
Extra-ball:
No se a vosotros pero a mi eso de que me abra varios firefox por la pantalla, tocar alguno sin querer y hacer que el test pete no me mola nada. En Mac puedes decirle donde se debe abrir la aplicación X, los usuarios de Gnome también lo podemos hacer con Devil’s pie[3] fácilmente. Para ello instalamos devilspie y gdevilspie (aplicación y frontend), creamos el fichero ~/.devilspie/firefox.ds con el siguiente contenido:
; This rule move Firefox to viewport 4 (the last one in my desktop)
( if
( begin
( is ( application_name ) “Firefox” )
)
( begin
( set_viewport 4 )
)
)
Tenéis más ejemplos de Devil’s pie[4] o podéis hacer vuestras cosillas con gdevilspie fácilmente.
Salud y buenos alimentos!
[1] Specjour: https://github.com/sandro/specjour
[2] Parallel_tests: https://github.com/grosser/parallel_tests
[3] Devil’s pie: http://burtonini.com/blog/computers/devilspie/
[4] Ejemplos de Devil’s pie: http://foosel.org/linux/devilspie