XVFB y Selenium en EC2: no se puede ver la interfaz de usuario de Chrome en VNC Viewer
Mis pruebas sin cabeza de Selenium se activan desde el servidor Jenkins y se ejecutan en EC2-Ubuntu. Quiero ver la prueba en vivo en Chrome, así que instalé el complemento Xvfb en Jenkins.
En EC2 instalé Xvfb. Cuando comienzo a ejecutar la compilación, mi prueba comienza a ejecutarse y veo los registros a continuación:
Xvfb /usr/bin/Xvfb :1 -fbdir /var/lib/jenkins/xvfb
27-..fbdir13700092919317283985
Parsing POMs
Established TCP socket on 30810
y veo que la prueba se está ejecutando correctamente.
Ahora hago SSH a EC2 desde la terminal Mac por
ssh -L 5901:localhost:5901 [email protected]
Luego ejecuto:
qa_user@jenkins-it:~$ export DISPLAY=: 30810` (Port number from Jenkins logs above) qa_user@jenkins-it:~$ vncserver "$DISPLAY" -geometry 1280x1024 New 'X' desktop is jenkins-it: 30810 Starting applications specified in /home/qa_user/.vnc/xstartup Log file is /home/qa_user/.vnc/jenkins-it: 30810.log qa_user@jenkins-it:~$ x11vnc --listen 0.0.0.0 -rfbport 5901 -display : 30810
Esto inicia XVFB y veo:

Ahora, cuando me conecto desde Mac a localhost: 5901 desde VNCviewer, me llevan al escritorio de Ubuntu.

Pero no veo que Chrome se abra a pesar de que la prueba se está ejecutando y veo registros de prueba en Jenkins.
También puedo usar Chrome a través de VncViewer.

¿Que me estoy perdiendo aqui? Probé muchas instrucciones de configuración de Xvfb y he estado tratando de hacerlo bien desde hace un mes. Aquí hay algunas preguntas que hice:
https://askubuntu.com/questions/1262925/run-selenium-tests-on-ec2-with-gui?noredirect=1#comment2139716_1262925
Cómo ver pruebas de selenio sin cabeza en vivo en EC2-Ubuntu usando vncserver y xvfb
https://sqa.stackexchange.com/questions/45376/looking-for-a-solution-to-run-selenium-tests-on-ec2-with-gui/45380#45380
Un largo camino hasta aquí y ahora Stackoverflow es mi último recurso. Por favor ayuda.
Respuestas
Yo mismo encontré la solución a esto. Para cualquier persona que tenga el mismo problema:
Lo que hice mal fue usar driver = new ChromeDriver(options);
en mi código en lugar dedriver = new RemoteWebDriver(new URL("http://my.aws.ip:4444/wd/hub"), options);
Después de realizar este cambio, descargué selenium-server-standalone.jar en EC2.
Luego, antes de comenzar la prueba, hice ssh -X [email protected] a EC2 y ejecuté:
Xvfb :99 -ac -screen 0 1280x1024x24 &
export DISPLAY=:99
java -jar /home/qa_user/Selenium/selenium-server-standalone.jar
Ahora, ejecute la prueba, en paralelo abrí una nueva terminal e hice:
ssh -L 5900:localhost:5900 [email protected]
Una vez que se configuró la pantalla, hice:
x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :99 -auth /var/run/lightdm/root/:0 -rfbport 5900
A continuación, abra el visor de VNC, conéctese a localhost: 5900 y verá la ejecución de Chrome.
Más tarde, puede mover todo esto al shell de ejecución previo a la construcción de Jenkins si es necesario :)
Más detalles sobre mi última respuesta: XVFB en Jenkins conectándose a una pantalla incorrecta. La pantalla muestra una pantalla negra