8

Escribo un conjunto de funciones en Javascript destinadas a ser ejecutadas dentro de un navegador (sin Javascript en el lado del servidor).Integración continua/Prueba de código Javascript contra diferentes navegadores

¿Cómo ejecutar las pruebas de unidad y rendimiento en diferentes navegadores y realizar un seguimiento de los resultados para cada compilación?

  • Las pruebas deben ser ejecutadas dentro de un navegador
  • resultados de las pruebas se deben producir como un archivo de texto o HTML independiente
  • navegadores de destino son Internet Explorer 7 y 8, última versión de Firefox, el último cromo, última Safari
  • soy libre para configurar un servidor dedicado y CI máquinas virtuales si es necesario

Respuesta

9

He estado usando iniciativa Jasmine para la prueba y JsTestDriver. También había configurado Hudson y TeamCity para CI como parte de la evaluación, aunque finalmente me decidí por TeamCity.

Jazmín es un marco BDD muy agradable, que también proporciona funcionalidad de burlarse y trocear.

El servidor JSTestDriver permite que cualquier navegador se conecte a él, ya sea local o remoto, como Vojta ya ha señalado. He podido conectar navegadores desde máquinas Windows y MAC, por ejemplo, y también iPhone ... es bastante posible conectar otros navegadores móviles, si el desarrollo móvil le hace cosquillas a su imaginación. JSTestDriver producirá archivos de resultados JUnit XML que Hudson o TeamCity podrán analizar e informar.

Como también señaló Vojta, un plugin de Eclipse está disponible para JSTestDriver. Recientemente me mudé a WebStorm 1.0 y ahora a 2.0 (IDE de JetBrains), y también existe un complemento para este IDE, aunque algo problemático. WebStorm es excelente, por cierto, en lo que respecta al desarrollo de JavaScript.

También estamos escribiendo el código JS del lado del servidor, y Jasmine también ha funcionado bien aquí.

He instalado y configurado JsTestDriver/TeamCity en la nube de Amazon y puedo ejecutar Jasmine tests headlessly, por ejemplo.

En resumen, entre las 3 soluciones (Jasmine, JSTestDriver y TeamCity), existen toneladas de complementos/adaptadores/recetas que permiten cualquier cantidad de configuraciones o configuraciones. Eso no quiere decir que otras combinaciones no funcionarán ... simplemente, para mí, estas combinaciones han demostrado ser hasta ahora.

1

Jasmine (http://pivotal.github.com/jasmine) es un marco BDD libre de dependencia para probar JavaScript.

Sería muy fácil utilizar Jasmine & la gema Jasmine Ruby para configurar una matriz de ejecuciones contra los diferentes navegadores (Selenium maneja el navegador en la gema) y reportarlos a través de su CI como sugiera. Debería ser sencillo.

1

Estoy usando JsTestDriver para el desarrollo de JS. Es un corredor de prueba (no un marco de prueba de unidad), por lo que puede usarlo junto con Jasmine o QUnit.

Simplemente inicie un servidor y capture los navegadores (¡también podría ser un navegador remoto!) Y luego ejecute pruebas en todos estos navegadores a través de la línea de comandos.

También hay un buen plugin para eclipse.

Para obtener más información, cómo configurar el entorno de construcción continua, ver http://code.google.com/p/js-test-driver/wiki/ContinuousBuild

+0

Igor hizo un buen screencast sobre nuestro CI: JsTD, Jasmine, Jenkins (Hudson), AngularJS ... http://www.youtube.com/watch?v=5GGMa6mmcg0 – Vojta

Cuestiones relacionadas