No estoy seguro de por qué usar el navegador sin cabeza

Acabamos de implementar CI sin usar el navegador sin cabeza, pero el navegador real. Una vez que haya un nuevo código registrado por el equipo de desarrollo. Nuestro código de automatización de humo se ejecuta como un proceso en segundo plano en la máquina automática y envía los resultados. Se iguala el envío a través de capturas de pantalla en caso de fallas. Lo que no obtuvimos es cuál es la ventaja de usar el navegador sin cabeza para el proceso anterior. Necesitamos nuestros scripts de humo para obtener esta cobertura. Diga enviar un formulario masivo que pueda ejecutarse durante 5 minutos con controles como Seleccionar, Calendario, Cargado, etc. y no una simple carga de página web.

“Navegador sin cabeza” es un término ambiguo, en general. La gente lo usa para referirse a los navegadores diseñados para ejecutarse sin cabeza, pero también para referirse a un explorador que normalmente requiere una pantalla real pero se ejecuta en una configuración que le permite ejecutarse con una pantalla virtual. Una instancia de este último sería ejecutar Firefox con Xvfb. (El ángulo que estoy tomando es descriptivo : así es como las personas hablan de navegadores sin cabeza. No estoy hablando de si esto es correcto o no, lo que sería un ángulo prescriptivo ).

Generalmente no ejecuto pruebas con esos navegadores diseñados para funcionar sin cabeza. ¿Por qué?

  1. Cada vez que comparaba el rendimiento entre un navegador sin cabeza y Chrome, la ganancia de rendimiento era muy modesta, y esto se hizo de forma ingenua, sin intentar optimizar la configuración de Chrome para la velocidad. (Podría imaginar que los datos del usuario estén en RAM ( /dev/shm ), por ejemplo, lo cual no intenté).

  2. Al final del día, debo certificar que mi software se ejecuta en navegadores reales utilizados por personas reales. La gente normal no usa navegadores diseñados para ser sin cabeza para ejecutar mi software. No hay atajos para verificar que una aplicación web funcione con un navegador específico. Tienes que usar el navegador de destino, final de la historia. Incluso ejecutar el código en el navegador X versión Y no es una garantía de que el código funcione en el navegador X versión Z (donde Z es diferente de Y). He tenido una aplicación que funcionó bien en Chrome X-1 y Chrome X + 1 pero se estrelló mal en Chrome X (donde X es un número de versión que no puedo recordar en este momento). Nada más que probar en Chrome X reveló esto. En lo que esté basado en un navegador sin cabeza, no es un sustituto de las pruebas en el navegador real al que se dirige su aplicación.

  3. Por el contrario, el navegador sin cabeza puede tener sus propias peculiaridades que no se muestran en otros navegadores. Hace poco tuve que descubrir por qué PhantomJS se estaba comportando de manera diferente a Firefox o Chrome cuando se trataba de lidiar con las sutilezas de las fonts. El tiempo dedicado a descubrir las peculiaridades con las que los usuarios no se encontrarán porque no usan navegadores sin cabeza se podría gastar en descubrir las peculiaridades que los usuarios encontrarán cuando usen los navegadores que la gente normalmente usa.

No estoy diciendo que no haya un buen uso para los navegadores diseñados para ejecutarse sin cabeza, pero para las pruebas, paso.

Sí ejecuto “headful” navegadores sin cabeza cuando ejecuto pruebas locales. No quiero que la ventana de prueba aparezca en mi escritorio a menos que realmente lo necesite.

los navegadores sin cabeza son relativamente más rápidos, ya que no requieren que se cargue ningún GUI o complemento. Toda la ejecución, es decir, la carga del navegador para el cierre del navegador ocurre en la memoria. No requiere ningún ejecutable para ser trabajado. Se puede usar principalmente para pruebas funcionales donde no tiene que probar en un navegador en particular y asegurarse de que la funcionalidad funcione bien. Utilizado principalmente para pruebas de humo.

Los navegadores sin cabeza generalmente se usan para solucionar la ausencia de una pantalla real en máquinas sin hardware de pantalla y sin dispositivos de entrada físicos.

Si puedes activar un navegador real en una pantalla real, apégate a él.

Sin embargo, una de las cosas que, por ejemplo, Xvfb puede hacer más fácil es:

se puede usar para probar si los clientes funcionan correctamente a profundidades o tamaños de pantalla que rara vez son compatibles con hardware.

Todavía nunca he encontrado que la navegación sin cabeza sea consistente, ni valiosa para lo que necesito para lograrlo. Puedes lograr cualquier cosa que necesites para usar un navegador real.

En cuanto a las ventajas, la única ventaja que ofrece la navegación sin cabeza, es la capacidad de probar en máquinas que no tienen una pantalla.

Algunos dirán que el uso de pruebas sin cabeza será más rápido, pero los hechos indican que la diferencia no es tan grande. Además, para propósitos de depuración es mucho más fácil usar un navegador normal.