diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ccdd97e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,28 @@ +FROM node:latest + +RUN apt-get update && \ + apt-get install -y sudo default-jre xvfb chromium + +ADD xvfb-chromium /root/xvfb-chromium + +RUN chmod +x /root/xvfb-chromium + +RUN mv /root/xvfb-chromium /usr/bin/xvfb-chromium + +RUN ln -s /usr/bin/xvfb-chromium /usr/bin/google-chrome && \ + ln -s /usr/bin/xvfb-chromium /usr/bin/chromium-browser + +RUN chmod +x /usr/bin/google-chrome && \ + chmod +x /usr/bin/chromium-browser + +# Startup and shutdown chrome to set up an initial user-data-dir +RUN google-chrome --user-data-dir=/root/chrome-user-data-dir & \ + (sleep 5 && sudo kill $(pgrep -o chromium) && sleep 2) + +ENV CHROME_BIN /usr/bin/google-chrome + +RUN node -p process.versions + +RUN npm -v + +ENTRYPOINT ["npm"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..596b75e --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# Angular-testing +A simple docker container that can be used to unit and e2e test Angular applications. You can find this on docker hub as `markpeterfejes/angular-testing` \ No newline at end of file diff --git a/xvfb-chromium b/xvfb-chromium new file mode 100644 index 0000000..ece56d4 --- /dev/null +++ b/xvfb-chromium @@ -0,0 +1,15 @@ +#!/bin/bash + +_kill_procs() { + kill -TERM $chromium + wait $chromium +} + +# Setup a trap to catch SIGTERM and relay it to child processes +trap _kill_procs SIGTERM + +# Start Chrome inside xvfb +xvfb-run -a -s "-screen 0 1920x1080x24 -nolisten tcp" chromium --no-sandbox $@ & +chromium=$! + +wait $chromium