pythonseleniumffmpegxvfbpyvirtualdisplay

How to video-record selenium tests running headless inside a docker?


I am running python-selenium tests inside a docker using a headless firefox.

During these tests I am able to make screenshots with the selenium method for screenshots - but can I use something to 'video' record the virtual display during the whole test (several test scripts with several test methods, with many webdrivers started and stopped).

So how can I video-record a complete test session?

Addendum: I have found a webpage that describes exactly what I need: here. Unfortunately I get an error when I try to do the recording. Here are the commands I am doing:

xvfb-run --listen-tcp --server-num 44 --auth-file /tmp/xvfb.auth -s "-ac -screen 0 1920x1080x24" python seltest.py &
ffmpeg -f x11grab -video_size 1920x1080 -i 127.0.0.1:44 -codec:v libx264 -r 12 /tmp/behat_1.mp4

and the error is (for the second command):

[x11grab @ 0x1d289c0] Cannot open display 127.0.0.1:44, error 1.
127.0.0.1:44: Input/output error

Solution

  • The correct steps to record the virtual display with ffmpeg are:

    xvfb-run --listen-tcp --server-num 44 --auth-file /tmp/xvfb.auth -s "-ac -screen 0 1920x1080x24" python seltest.py &
    export DISPLAY=:44
    ffmpeg -f x11grab -video_size 1920x1080 -i :44 -codec:v libx264 -r 12 video.mp4