d200a66509
The E2E test runner is running from the root of the Nomad repository. Make this run independent of the working directory for convenience of developers and the test runner.
76 lines
2 KiB
Bash
Executable file
76 lines
2 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
help() {
|
|
cat <<EOF
|
|
Usage: run.sh [subcommand] [options] [--help]
|
|
|
|
Runs playwright tests in a Docker container against your shell's configured
|
|
Nomad target.
|
|
|
|
Subcommands:
|
|
test Run the tests (default behavior if no subcommand is provided). Options:
|
|
--no-install Don't run npm install because you've already done so.
|
|
|
|
shell Run a bash shell with the environment already set up. Maybe useful
|
|
for debugging.
|
|
|
|
proxy Deploy a reverse proxy. When the cluster is using mTLS, you will need
|
|
this so that we don't need to load a CA certificate into the browser.
|
|
This reverse proxy uses a self-signed cert. Will print a new NOMAD_ADDR
|
|
address for you to use for test runs.
|
|
|
|
Environment Variables:
|
|
NOMAD_ADDR Address of Nomad cluster or reverse proxy.
|
|
NOMAD_TOKEN Authentication token.
|
|
|
|
EOF
|
|
}
|
|
|
|
|
|
IMAGE="mcr.microsoft.com/playwright:v1.21.0-focal"
|
|
|
|
realpath=$(which realpath || which grealpath) # macOS compat
|
|
thisdir="$( cd "$( dirname $($realpath "${BASH_SOURCE[0]}") )" >/dev/null 2>&1 && pwd )"
|
|
|
|
run_tests() {
|
|
run bash script.sh $@
|
|
}
|
|
|
|
run_shell() {
|
|
run bash $@
|
|
}
|
|
|
|
run() {
|
|
exec docker run -it --rm \
|
|
-v ${thisdir}:/src \
|
|
-w /src \
|
|
-e NOMAD_ADDR=$NOMAD_ADDR \
|
|
-e NOMAD_TOKEN=$NOMAD_TOKEN \
|
|
--ipc=host \
|
|
--net=host \
|
|
"$IMAGE" \
|
|
$@
|
|
}
|
|
|
|
run_proxy() {
|
|
nomad namespace apply proxy
|
|
nomad job run "${thisdir}/input/proxy.nomad"
|
|
IP=$(nomad node status -json -verbose \
|
|
$(nomad operator api '/v1/allocations?namespace=proxy' | jq -r '.[] | select(.JobID == "nomad-proxy") | .NodeID') \
|
|
| jq -r '.Attributes."unique.platform.aws.public-ipv4"')
|
|
echo "NOMAD_ADDR=https://$IP:6464"
|
|
exit 0
|
|
}
|
|
|
|
opt="$1"
|
|
case $opt in
|
|
help|--help|-h) help ;;
|
|
proxy|--proxy) run_proxy ;;
|
|
test|--test) shift ; run_tests "$@" ;;
|
|
shell) shift ; run_shell ;;
|
|
*) run_tests "$@" ;;
|
|
esac
|
|
|
|
run_tests
|