78 lines
2.9 KiB
Plaintext
78 lines
2.9 KiB
Plaintext
|
#!/usr/bin/env bash
|
||
|
|
||
|
# The below is helpful because Chrome is an evergreen browser, meaning that it will auto-updated on
|
||
|
# most desktop computers without even informing the user. So we need a way, if you hit the mismatch,
|
||
|
# to update the local chromedriver easily.
|
||
|
#
|
||
|
# Testing with WDIO requires a specific version of the chromedriver, specified in the current
|
||
|
# package.json. Updating the chromedriver will change that version number in package.json.
|
||
|
#
|
||
|
# The environment block derives the major version for the local (MacOS) version of chrome and the
|
||
|
# current driver version for the project and, if they're mismatch, updates the local driver then
|
||
|
# resets the content of package.json.
|
||
|
|
||
|
# -u: Treat an unset variable as a fatal syntax error.
|
||
|
# -eo pipefile: Fail on first error, even if it happens inside a pipeline.
|
||
|
set -ueo pipefail
|
||
|
|
||
|
VERBOSE=""
|
||
|
if [ "$#" -gt 0 ] && [ "$1" = "-v" ]; then
|
||
|
VERBOSE="verbose";
|
||
|
fi;
|
||
|
|
||
|
if [ "$#" -gt 0 ] && [ "$1" = "-h" ]; then
|
||
|
echo "Usage: "
|
||
|
echo " -v: On success, show a message. (Default behavior only shows a message on failure)"
|
||
|
echo " -h: This help message"
|
||
|
echo ""
|
||
|
exit 0
|
||
|
fi;
|
||
|
|
||
|
# The path to the working folder for the test project, as a subfolder of the monorepo. This will be
|
||
|
# help us find where the driver is kept for comparison.
|
||
|
SUBFOLDER="authentik-live-tests"
|
||
|
|
||
|
# The variant of Chrome we expect under Linux. There are a lot of variants, like Midori, chromium,
|
||
|
# chromium-browser, etc. If you're not running the version supplied by Google, you'll have to change
|
||
|
# this variable.
|
||
|
LINUX_VARIANT="google-chrome"
|
||
|
|
||
|
CURRENT_OS=$(uname -s)
|
||
|
|
||
|
CURRENT_OS=$(uname -s)
|
||
|
if [ "$CURRENT_OS" == "Linux" ]; then
|
||
|
CHROME_LOCATION=$(command -v "$LINUX_VARIANT")
|
||
|
if [ "$CHROME_LOCATION" == "" ]; then
|
||
|
echo "Could not find google-chrome installed on this Linux system."
|
||
|
exit 1
|
||
|
fi
|
||
|
CHROME_VERSION=$("$LINUX_VARIANT" --version)
|
||
|
else
|
||
|
CHROME_LOCATION="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome";
|
||
|
if [ ! -f "$CHROME_LOCATION" ]; then
|
||
|
echo "Could not find Google Chrome app installed on this MacOS system."
|
||
|
exit 1
|
||
|
fi
|
||
|
CHROME_VERSION=$("$CHROME_LOCATION" --version)
|
||
|
fi
|
||
|
|
||
|
CHROME_MAJOR_VER=$(echo "$CHROME_VERSION" | sed 's/^Google Chrome //' | cut -d'.' -f1)
|
||
|
PROJECT_TOPLEVEL=$(git rev-parse --show-toplevel)
|
||
|
TEST_HOME=$(find $PROJECT_TOPLEVEL -not \( -path "*/node_modules" -prune \) -type d -name "$SUBFOLDER" | head -1)
|
||
|
DRIVER_VER=$(grep '^ "version":' "$TEST_HOME/node_modules/chromedriver/package.json")
|
||
|
DRIVER_MAJOR_VER=$(echo "$DRIVER_VER" | cut -d':' -f2 | sed 's/"//g' | cut -d'.' -f1 | sed 's/ *//')
|
||
|
|
||
|
if [ "$CHROME_MAJOR_VER" -ne "$DRIVER_MAJOR_VER" ]; then
|
||
|
echo "Driver: $DRIVER_MAJOR_VER, Chrome: $CHROME_MAJOR_VER, updating..."
|
||
|
npm install "chromedriver@$CHROME_MAJOR_VER"
|
||
|
git checkout package.json package-lock.json
|
||
|
exit 0
|
||
|
fi
|
||
|
|
||
|
if [ "$VERBOSE" ]; then
|
||
|
echo "Driver: $DRIVER_MAJOR_VER, Chrome: $CHROME_MAJOR_VER. No update required."
|
||
|
fi
|
||
|
|
||
|
# SUCCESS!
|
||
|
exit 0
|