From b5b1aa9186fbd078dd7f32af570439e7db4afdd6 Mon Sep 17 00:00:00 2001 From: Leo Gallucci Date: Wed, 8 Apr 2020 23:14:36 +0200 Subject: [PATCH] @v0idp adds audio testing support --- .menv | 3 +++ Dockerfile | 12 +++++----- docker-compose-scales.yml | 2 ++ docker-compose-tests.yml | 2 ++ docker-compose.yml | 2 ++ docs/videos.md | 10 ++++++++- scm-source.json | 2 +- test/script_scenario_compose_N_N | 1 + video-rec/bin/start-video-rec.sh | 38 ++++++++++++++++++++++++++------ 9 files changed, 58 insertions(+), 14 deletions(-) diff --git a/.menv b/.menv index 777378d4..a26ed44d 100644 --- a/.menv +++ b/.menv @@ -53,6 +53,9 @@ export SIZE ?= 50% # Enable video recording export VIDEO ?= true +# Enable audio recording +export AUDIO ?= true + # App name is the service name for the web app under test # export APP ?= zalando_uk export APP ?= mock diff --git a/Dockerfile b/Dockerfile index 9a5d1496..e131fac4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,9 +22,6 @@ ARG UBUNTU_DATE # Docker build debug logging, green colored RUN printf "\033[1;32mFROM ubuntu:${UBUNTU_FLAVOR}-${UBUNTU_DATE} \033[0m\n" -MAINTAINER Diego Molina -MAINTAINER Leo Gallucci - # https://github.com/docker/docker/pull/25466#discussion-diff-74622923R677 LABEL maintainer "Diego Molina " LABEL maintainer "Leo Gallucci " @@ -89,6 +86,9 @@ RUN apt -qqy update \ dbus-x11 \ wget \ curl \ + pulseaudio \ + socat \ + alsa-utils \ && apt -qyy autoremove \ && rm -rf /var/lib/apt/lists/* \ && apt -qyy clean @@ -429,7 +429,7 @@ ENV FF_LANG="en-US" \ FF_PLATFORM="linux-x86_64" \ FF_INNER_PATH="firefox/releases" -ARG FF_VER="73.0" +ARG FF_VER="75.0" ENV FF_COMP="firefox-${FF_VER}.tar.bz2" ENV FF_URL="${FF_BASE_URL}/${FF_INNER_PATH}/${FF_VER}/${FF_PLATFORM}/${FF_LANG}/${FF_COMP}" @@ -466,7 +466,7 @@ COPY bin/fail /usr/bin/ #=============== # TODO: Use Google fingerprint to verify downloads # https://www.google.de/linuxrepositories/ -ARG EXPECTED_CHROME_VERSION="80.0.3987.106" +ARG EXPECTED_CHROME_VERSION="81.0.4044.92" ENV CHROME_URL="https://dl.google.com/linux/direct" \ CHROME_BASE_DEB_PATH="/home/seluser/chrome-deb/google-chrome" \ GREP_ONLY_NUMS_VER="[0-9.]{2,20}" @@ -758,12 +758,14 @@ ENV FIREFOX_VERSION="${FF_VER}" \ LOGFILE_BACKUPS=5 \ LOGS_DIR="/var/log/cont" \ VIDEO="false" \ + AUDIO="false" \ GRID="true" \ CHROME="true" \ FIREFOX="true" \ MULTINODE="false" \ FFMPEG_FRAME_RATE=10 \ FFMPEG_CODEC_ARGS="-vcodec libx264 -preset ultrafast -pix_fmt yuv420p" \ + FFMPEG_CODEC_VA_ARGS="-vcodec libx264 -acodec copy -preset ultrafast" \ FFMPEG_FINAL_CRF=0 \ FFMPEG_DRAW_MOUSE=1 \ VIDEO_TMP_FILE_EXTENSION="mkv" \ diff --git a/docker-compose-scales.yml b/docker-compose-scales.yml index bae15517..cc175532 100644 --- a/docker-compose-scales.yml +++ b/docker-compose-scales.yml @@ -35,6 +35,7 @@ services: - SCREEN_WIDTH=1300 - SCREEN_HEIGHT=999 - VIDEO=false + - AUDIO=false - GRID=false - CHROME=true - FIREFOX=false @@ -53,6 +54,7 @@ services: - SCREEN_WIDTH=1300 - SCREEN_HEIGHT=999 - VIDEO=false + - AUDIO=false - GRID=false - CHROME=false - FIREFOX=true diff --git a/docker-compose-tests.yml b/docker-compose-tests.yml index d15df194..0e584449 100644 --- a/docker-compose-tests.yml +++ b/docker-compose-tests.yml @@ -49,6 +49,7 @@ services: - SCREEN_WIDTH=1300 - SCREEN_HEIGHT=999 - VIDEO=${VIDEO-false} + - AUDIO=${AUDIO-false} - GRID=false - CHROME=true - FIREFOX=false @@ -71,6 +72,7 @@ services: - SCREEN_WIDTH=1300 - SCREEN_HEIGHT=999 - VIDEO=${VIDEO-false} + - AUDIO=${AUDIO-false} - GRID=false - CHROME=false - FIREFOX=true diff --git a/docker-compose.yml b/docker-compose.yml index b01147bc..408102ea 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -44,6 +44,7 @@ services: - SCREEN_WIDTH=1300 - SCREEN_HEIGHT=999 - VIDEO=false + - AUDIO=false - GRID=false - CHROME=true - FIREFOX=false @@ -68,6 +69,7 @@ services: - SCREEN_WIDTH=1300 - SCREEN_HEIGHT=999 - VIDEO=false + - AUDIO=false - GRID=false - CHROME=false - FIREFOX=true diff --git a/docs/videos.md b/docs/videos.md index c5cbec29..20f30ae9 100644 --- a/docs/videos.md +++ b/docs/videos.md @@ -11,7 +11,7 @@ Pull image Run a new grid docker run --rm --name=grid -p 4444:24444 -p 5920:25900 \ - --shm-size=1g -e VNC_PASSWORD=hola \ + --shm-size=2g -e VNC_PASSWORD=hola \ -e VIDEO=true elgalu/selenium ### Wait @@ -49,6 +49,14 @@ Check your video, note it may be splitted in many files if is too long ## Customizations +### Audio +If you want to additionaly record audio with the video use this + + docker run --rm --name=grid -p 4444:24444 -p 5920:25900 \ + --shm-size=2g -e VNC_PASSWORD=hola \ + -e VIDEO=true \ + -e AUDIO=true elgalu/selenium + ### Start Start and stop on-demand diff --git a/scm-source.json b/scm-source.json index 6b3080a3..4a8c5808 100644 --- a/scm-source.json +++ b/scm-source.json @@ -1,6 +1,6 @@ { "url": "https://github.com/elgalu/docker-selenium", - "revision": "979ee6f137b8fa103c396773dd7a8f8c671afcc2", + "revision": "dc5bbf5a3e15272c6b830c8a3257f5f74ae01bb3", "author": "lgallucci", "status": "" } diff --git a/test/script_scenario_compose_N_N b/test/script_scenario_compose_N_N index e8f8048d..db1b052e 100755 --- a/test/script_scenario_compose_N_N +++ b/test/script_scenario_compose_N_N @@ -23,6 +23,7 @@ echo "#===================================================================" set -x export VIDEO="false" +export AUDIO="false" export NUM_NODES=2 PARAL_TESTS=2 WAIT_ALL_DONE="390s" SLEEP_TIME=10 PAUSE_SECS_BETWEEN_RUN_TEST="0" export VNC_FROM_PORT="26950" VNC_TO_PORT="26999" diff --git a/video-rec/bin/start-video-rec.sh b/video-rec/bin/start-video-rec.sh index ac26e309..887a99f6 100755 --- a/video-rec/bin/start-video-rec.sh +++ b/video-rec/bin/start-video-rec.sh @@ -46,13 +46,37 @@ else fi # ffmpeg -ffmpeg -f x11grab \ - -s ${FFMPEG_FRAME_SIZE} \ - -draw_mouse ${FFMPEG_DRAW_MOUSE} \ - -i "${DISPLAY}.0" \ - ${FFMPEG_CODEC_ARGS} \ - -r ${FFMPEG_FRAME_RATE} \ - -y -an "${tmp_video_path}" 2>&1 & +if [ "${AUDIO}" == "true" ]; then + # Start the pulseaudio server + pulseaudio -D --exit-idle-time=-1 + + # Load the virtual sink and set it as default + pacmd load-module module-virtual-sink sink_name=v1 + pacmd set-default-sink v1 + + # set the monitor of v1 sink to be the default source + pacmd set-default-source v1.monitor + + ffmpeg \ + -s "${FFMPEG_FRAME_SIZE}" \ + -draw_mouse ${FFMPEG_DRAW_MOUSE} \ + -r ${FFMPEG_FRAME_RATE} \ + -f "x11grab" \ + -i "default" \ + -i "${DISPLAY}.0" \ + -f "pulse" \ + ${FFMPEG_CODEC_VA_ARGS} \ + -y -an "${tmp_video_path}" 2>&1 & +else + ffmpeg \ + -s ${FFMPEG_FRAME_SIZE} \ + -draw_mouse ${FFMPEG_DRAW_MOUSE} \ + -r ${FFMPEG_FRAME_RATE} \ + -f "x11grab" \ + -i "${DISPLAY}.0" \ + ${FFMPEG_CODEC_ARGS} \ + -y -an "${tmp_video_path}" 2>&1 & +fi VID_TOOL_PID=$!