XVFB e Selenium su EC2 - Impossibile visualizzare l'interfaccia utente di Chrome su VNC Viewer
I miei test headless Selenium vengono attivati dal server Jenkins ed eseguiti in EC2-Ubuntu. Voglio vedere il test dal vivo su Chrome, quindi ho installato il plugin Xvfb su Jenkins.
Su EC2 ho installato Xvfb. Quando inizio a eseguire la build, il mio test inizia l'esecuzione e vedo i log seguenti:
Xvfb /usr/bin/Xvfb :1 -fbdir /var/lib/jenkins/xvfb
27-..fbdir13700092919317283985
Parsing POMs
Established TCP socket on 30810
e vedo che il test viene eseguito correttamente.
Ora eseguo SSH su EC2 dal terminale Mac di
ssh -L 5901:localhost:5901 [email protected]
Quindi eseguo:
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
Questo avvia XVFB e vedo:

Ora, quando mi collego da Mac a localhost: 5901 da VNCviewer, vengo portato sul desktop di Ubuntu.

Ma non vedo Chrome aprirsi anche se il test è in esecuzione e vedo i log di test su Jenkins.
Sono anche in grado di utilizzare Chrome tramite VncViewer.

Cosa mi manca qui? Ho provato molte istruzioni di configurazione di Xvfb e ho provato a farlo bene da un mese ormai. Ecco alcune domande che ho posto:
https://askubuntu.com/questions/1262925/run-selenium-tests-on-ec2-with-gui?noredirect=1#comment2139716_1262925
Come visualizzare i test Selenium headless live su EC2-Ubuntu utilizzando vncserver e xvfb
https://sqa.stackexchange.com/questions/45376/looking-for-a-solution-to-run-selenium-tests-on-ec2-with-gui/45380#45380
Tanta strada fino a qui e ora Stackoverflow è la mia ultima risorsa. Per favore aiuto.
Risposte
Ho trovato la soluzione a questo da solo. Per chiunque abbia lo stesso problema:
Quello che ho sbagliato è che ho usato driver = new ChromeDriver(options);
nel mio codice invece didriver = new RemoteWebDriver(new URL("http://my.aws.ip:4444/wd/hub"), options);
Dopo aver apportato questa modifica, ho scaricato selenium-server-standalone.jar in EC2.
Quindi, prima di iniziare il test, ho eseguito ssh -X [email protected] su EC2 ed eseguito:
Xvfb :99 -ac -screen 0 1280x1024x24 &
export DISPLAY=:99
java -jar /home/qa_user/Selenium/selenium-server-standalone.jar
Ora, esegui il test, parallelamente ho aperto un nuovo terminale e ho fatto:
ssh -L 5900:localhost:5900 [email protected]
Una volta impostato lo schermo, ho fatto:
x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :99 -auth /var/run/lightdm/root/:0 -rfbport 5900
Quindi, apri il visualizzatore VNC, connettiti a localhost: 5900 e vedrai l'esecuzione di Chrome.
Successivamente puoi spostare tutto questo in Jenkins pre-build eseguire la shell se necessario :)
Maggiori dettagli sulla mia ultima risposta: XVFB su Jenkins che si connette a un display sbagliato. Il display mostra una schermata nera