-
-
Notifications
You must be signed in to change notification settings - Fork 335
Arctic ‐ Recording & Playback setup for Jenkins execution in Xvfb
Andrew Leonard edited this page Mar 27, 2025
·
21 revisions
To allow aqa-test Jenkins automation of Arctic playback, it is necessary to do a recording in an equivalent Xvfb session. It is essential that the recording and playback environment are identical from perspectives of Xvfb resolution and format, and also System settings like Fonts.
The following guides how to setup a VM environment for performing Arctic recordings that are then compatible to playback within a Jenkins job:
-
Required packages:
- Xvfb
- x11vnc
- twm
- xterm
-
Required System setup:
- Available "System" Fonts must be identical to the Playback environment. OpenJDK will load the System Physical Fonts for "rendering" which must be identical for Arctic pixel comparison to succeed
- Typically the JVM loads the System TrueType fonts from /usr/share/fonts/truetype, although also they can be loaded from /usr/share/fonts generally
- Use this command to compare System fonts installed on record vs playback nodes: fc-list
- Available "System" Fonts must be identical to the Playback environment. OpenJDK will load the System Physical Fonts for "rendering" which must be identical for Arctic pixel comparison to succeed
-
Xvfb process:
- Xvfb :<NN> -screen 0 1024x768x24 -nolisten tcp
-
x11vnc process to expose Xvfb session for recording interaction:
- x11vnc -storepasswd
- To store passwd in $HOME/.vnc/passwd
- x11vnc -xkb -noxrecord -display :<NN> -rfbauth $HOME/.vnc/passwd -rfbport 59<NN>
- x11vnc -storepasswd
-
TWM must be setup to be compatible for running Arctic workbench and with Fonts available on both Recording & Playback environments:
cp /etc/X11/twm/system.twmrc $HOME/.twmrc
echo 'RightTitleButton "xlogo11" = f.delete' >> $HOME/.twmrc
echo 'Button3 = : root : f.menu "windowops"' >> $HOME/.twmrc
echo 'RandomPlacement' >> $HOME/.twmrc
# Ensure fonts match recording vs playback
sed -i 's/MenuFont.*$/MenuFont "-*-terminusv-bold-*-condensed-*-12-*-*-*-*-*-*-*"/g' $HOME/.twmrc
sed -i 's/TitleFont .*$/TitleFont "-*-terminusv-bold-*-condensed-*-12-*-*-*-*-*-*-*"/g' $HOME/.twmrc
sed -i 's/IconFont .*$/IconFont "-*-terminusv-bold-*-condensed-*-12-*-*-*-*-*-*-*"/g' $HOME/.twmrc
sed -i 's/ResizeFont .*$/ResizeFont "-*-terminusv-bold-*-condensed-*-12-*-*-*-*-*-*-*"/g' $HOME/.twmrc- Start TWM and a xterm in Xvfb session:
- export DISPLAY=:NN
- twm &
- xterm &
Steps:
- Open a VNC viewer against the x11vnc rfbport
- Run an Arctic recording as per guide: https://github.com/adoptium/aqa-tests/wiki/Arctic-Project-Guide#making-an-arctic-recording