3b4530fb7f
After working with the navigation for awhile, I realized that it's a poor map; what I really wanted was a controller/view pair, where events flow up to the controller and then messages on "what to draw" flow down to the view. It work quite well, and the wizard frame is smaller and smarter for it. I've also moved the WDIO-driven tests into the 'tests' folder, because it (a) makes more sense to put them there, and (b) it prevents any confusion about who's in charge of node_modules.
78 lines
2.9 KiB
Bash
Executable file
78 lines
2.9 KiB
Bash
Executable file
#!/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
|