unitarios unitarias unit test pruebas karma javascript selenium functional-testing karma-runner browser-automation

javascript - unitarias - ¿Qué pruebas cubre el selenio por encima del karma?



test unitarios angular 5 (3)

Entiendo que Karma es un corredor de pruebas de JavaScript, que puede ejecutar pruebas en navegadores reales. Si ese es el caso, ¿qué tipo de cobertura de prueba proporciona Selenium además de Karma?


Depende de lo que estás probando. Si está usando javascript para escribir pruebas unitarias -mediante jazmín / mocha / chai o equivalente-, el argumento de que el karma se basa en gran medida en javascript y el selenio no lo tiene -es redundante.

En toda mi experiencia he trabajado con muy pocos comprobadores automáticos dedicados, y si bien el idioma de selenio puede ser su elección, la biblioteca de métodos de selenio no es tan fácil de memorizar como un motor de selección equivalente como jquery.

La dificultad para los evaluadores automáticos dedicados a aprender el idioma y la falta de interés de los desarrolladores por aprender un lenguaje menor perpetúa la falta de inversión para que las empresas inviertan en pruebas automáticas más intrincadas.

Ha habido algunas implementaciones de aumento de jquery con selenio a lo largo de los años, pero ninguna tiene muchos seguidores y la mayoría están escritos en Java.

Webdriverio tiene un paquete npm tiene algunas características jquery - https://www.npmjs.com/package/webdriverio-jquery

Karma tiene un medio para importar todo el motor jquery - https://github.com/bessdsv/karma-jasmine-jquery

Depende de lo que se está probando. Si está probando el código de la interfaz, entonces tiene sentido usar javascript, y es más fácil usar jquery que el lenguaje de selenio y actualmente karma admite jquery mejor que webdriver.

El uso de jquery para las pruebas automatizadas potenciaría las habilidades transferibles en el desarrollo y viceversa para que los desarrolladores puedan realizar pruebas automatizadas.


Hay una gran diferencia entre Karma y Selenium. Selenium tiene un mecanismo de control del navegador integrado, mientras que Karma no. Por lo tanto, el Selenio es más adecuado para las pruebas de extremo a extremo, por ejemplo, con nightwatch.js . Karma está diseñado para pruebas unitarias, por lo que es mucho más difícil realizar pruebas de extremo a extremo; puedes agregar, por ejemplo, un lanzador phantomjs, pero nunca será lo mismo que las pruebas reales de navegador con Selenium ... Creo que ambos ellos pueden ejecutar cualquier marco de prueba js si tienes un adaptador ... Mocha, jazmín, qunit, etc ...

Una eternidad después:

Es posible escribir pruebas e2e con Karma. Necesita crear un iframe o abrir una nueva ventana y ejecutar un script, que hace la navegación, dispara los eventos, envía formularios, etc. desde el marco o ventana principal. La página probada debe permitir su servidor Karma con CORS o necesita desactivar la seguridad del navegador. Actualmente estoy trabajando en un cliente e2e, que hace exactamente esto. Después de que haya terminado, Selenium + Nightwatch no tendrá una ventaja real sobre Karma.


Hay varias versiones de Selenium, la más nueva (creo) de Selenium Web Driver, que te permite crear un controlador que maneje un navegador para ti simulando acciones que interactúen con la UI de manera similar a como lo haría un usuario (a través de un Json cable).

Mi comprensión actual de Karma (que puedo agregar es muy limitada) es que se basa en gran medida en la ejecución de javascript. Debido a esto, Karma tendría que llamar eventos de cambio en los elementos (como en, ''desenfoque'' y ''pasar el cursor sobre''), mientras que Selenium simplemente haría clic, tab out, mover el cursor a. Los navegadores de Selenium están limitados a los especificados en su página web here .