#!/bin/sh

run_browser() {
	browser=$1
	version=$2
	os="$3"
	description="$browser $version"
	if [ $version = "latest" ]; then
		version=""
	fi

	echo
	echo
	echo "Running $description"
	echo
	USE_SAUCE=true JASMINE_BROWSER=$browser SAUCE_BROWSER_VERSION=$version SAUCE_OS="$os" npm run ci

	if [ $? -eq 0 ]; then
		echo "PASS: $description" >> "$passfile"
	else
		echo "FAIL: $description" >> "$failfile"
	fi
}

passfile=`mktemp -t jasmine-results.XXXXXX` || exit 1
failfile=`mktemp -t jasmine-results.XXXXXX` || exit 1

# As of 2023-09-30, Sauce Connect doesn't work with the latest Chrome version
# on the default Linux. Run on Mac OS instead. The OS specification may need to
# be updated or removed when new Chrome versions stop being available on Mac OS
# 12, although historically this has taken several major OS versions.
# See <https://saucelabs.com/products/supported-browsers-devices>.
# On Saucelabs, the test suite frequently runs ~30s slower on Mac OS than it
# does on Linux, so it's probably worth removing the OS specification once Sauce
# Connect works with Chrome latest on Linux again.
run_browser chrome latest "macOS 12"

run_browser firefox latest
run_browser firefox 128
run_browser firefox 115
run_browser firefox 102
run_browser safari 17
run_browser safari 16
run_browser safari 15
run_browser MicrosoftEdge latest

echo
cat "$passfile" "$failfile"

if [ -s "$failfile" ]; then
	exit 1
fi
