aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorsickcodes <[email protected]>2021-11-14 18:35:09 +0000
committersickcodes <[email protected]>2021-11-14 18:35:09 +0000
commit9ca9372da1b8c12eda08a7a47d0bc4f1c7ddb805 (patch)
tree59da40b1badf112f64dc456ba5caacb7e8de7910 /tests
parentAdd static expected screenshots of installation images to ./tests/ (diff)
downloaddocker-osx-9ca9372da1b8c12eda08a7a47d0bc4f1c7ddb805.tar.xz
docker-osx-9ca9372da1b8c12eda08a7a47d0bc4f1c7ddb805.zip
Add diff of screenshots to test suite, works good
Diffstat (limited to 'tests')
-rw-r--r--tests/boot-images.sh67
-rw-r--r--tests/test.sh5
2 files changed, 71 insertions, 1 deletions
diff --git a/tests/boot-images.sh b/tests/boot-images.sh
new file mode 100644
index 0000000..6b914b9
--- /dev/null
+++ b/tests/boot-images.sh
@@ -0,0 +1,67 @@
+#!/bin/bash
+# Author: Sick.Codes https://twitter.com/sickcodes
+# Contact: https://github.com/sickcodes, https://sick.codes
+# Copyright: sickcodes (C) 2021
+# License: GPLv3+
+# Title: Docker-OSX (Mac on Docker)
+# Repository: https://github.com/sickcodes/Docker-OSX
+# Website: https://sick.codes
+#
+# Status: Used internally to run each image and take screenshots until they match the pngs in this folder.
+#
+
+# note to self: # to get master images, boot each image, then screen shot using DISPLAY=:99 in the test.sh script
+# scrot -o high-sierra_master.png
+# scrot -o mojave_master.png
+# scrot -o catalina_master.png
+# scrot -o big-sur_master.png
+# scrot -o monterey_master.png
+# pull off remote server to the tests folder
+# REMOTE_SERVER=
+# scp root@"${REMOTE_SERVER}":~/*_master.png .
+
+export DISPLAY=:99
+
+TESTS=(
+ high-sierra
+ mojave
+ catalina
+ big-sur
+ monterey
+)
+
+# test each docker image to see if they boot to their unique respective installation screens.
+
+for TEST in "${TESTS[@]}"; do
+ # run the image detached
+ docker run --rm -d \
+ --device /dev/kvm \
+ -v /tmp/.X11-unix:/tmp/.X11-unix \
+ -e "DISPLAY=:99" \
+ "sickcodes/docker-osx:${TEST}"
+
+ # imcat the expected test screenshot to ./"${TEST}_master.txt"
+ imcat ~/Docker-OSX/tests/${TEST}_master.png > ./"${TEST}_master.txt"
+
+ # run until the screen matches the expected screen
+ while :; do
+ sleep 5
+ # screenshot the Xvfb
+ scrotcat > ./"${TEST}.txt"
+ # diff the low res txt files created from imcat
+ diff "./${TEST}.txt" ./"${TEST}_master.txt" && break
+ scrotcat
+ done
+
+ # kill any containers
+ docker kill "$(docker ps --format "{{.ID}}")"
+
+ # ensure all containers are dead
+ until [[ "$(docker ps | wc -l)" = 1 ]]; do
+ sleep 1
+ docker ps | xargs docker kill
+ done
+
+done
+
+exit 0
diff --git a/tests/test.sh b/tests/test.sh
index 2ba1ed0..84ec774 100644
--- a/tests/test.sh
+++ b/tests/test.sh
@@ -12,7 +12,7 @@
# Repository: https://github.com/sickcodes/Docker-OSX
# Website: https://sick.codes
#
-# Status: Work in progress.
+# Status: Used internally to auto build, run and test images on DO.
#
help_text="Usage: ./test.sh --branch <string> --repo <string>
@@ -303,6 +303,9 @@ for TEST_BUILD in "${TEST_BUILDS[@]}"; do
"${TEST_BUILD}"
done
+# boot each image and test
+bash ./tests/boot-images.sh || exit 1
+
if [[ "${DOCKER_USERNAME}" ]] && [[ "${DOCKER_PASSWORD}" ]]; then
docker login --username "${DOCKER_USERNAME}" --password "${DOCKER_PASSWORD}" \
&& for SHORTNAME in "${VERSION_BUILDS[@]}"; do