Skip to content

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:

Recording VM setup

  • 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
  • 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>
  • 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 &

Making an Arctic Recording

Steps:

  1. Open a VNC viewer against the x11vnc rfbport
  2. Run an Arctic recording as per guide: https://github.com/adoptium/aqa-tests/wiki/Arctic-Project-Guide#making-an-arctic-recording

Clone this wiki locally