26 lines
1.8 KiB
Bash
26 lines
1.8 KiB
Bash
#!/usr/bin/env bash
|
|||
|
|
# decePub against the pasture: publishes the app with the Pasture environment (its API is https://privapub.test), serves
|
||
|
|
# it as https://decepub.test next to the running pasture, then runs the Playwright tests. The town must be seeded first
|
||
|
|
# (../SocialPub/tools/pasture/town.sh seed village); the tests read its accounts and ask it what each server holds.
|
||
|
|
# usage: tests/e2e/run.sh [dotnet test arguments, e.g. --filter "Category!=Perf"]
|
||
|
|
set -euo pipefail
|
||
|
|
here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
|
|
repo="$(cd "$here/../.." && pwd)"
|
||
|
|
pasture="$(cd "$repo/../SocialPub/tools/pasture" && pwd)"
|
||
|
|
dotnet=${DOTNET:-$(command -v dotnet || echo ~/.dotnet/dotnet)}
|
||
|
|
|
||
|
|
curl -fsk -o /dev/null --resolve privapub.test:6443:127.0.0.1 https://privapub.test:6443/build.json \
|
||
|
|
|| { echo "the pasture is not up: $pasture/run.sh up first" >&2; exit 1; }
|
||
|
|
[ -s "$pasture/.state/town/sessions.json" ] || { echo "the town has no accounts: $pasture/town.sh seed village first" >&2; exit 1; }
|
||
|
|
|
||
|
|
# Playwright 1.61.0 runs Chromium headless shell 1228; it is never downloaded here
|
||
|
|
browsers=~/.nuget/packages/microsoft.playwright/1.61.0/.playwright/package/browsers.json
|
||
|
|
if [ -f "$browsers" ]; then
|
||
|
|
rev=$(python3 -c "import json,sys; print(next(b['revision'] for b in json.load(open(sys.argv[1]))['browsers'] if b['name']=='chromium-headless-shell'))" "$browsers")
|
||
|
|
[ -f ~/.cache/ms-playwright/chromium_headless_shell-$rev/INSTALLATION_COMPLETE ] \
|
||
|
|
|| { echo "Chromium headless shell $rev is not in ~/.cache/ms-playwright; install it once with Playwright 1.61.0" >&2; exit 1; }
|
||
|
|
fi
|
||
|
|
|
||
|
|
"$dotnet" publish "$repo/decePubClient.csproj" -c Release -p:WasmApplicationEnvironmentName=Pasture -o "$here/.publish" -v quiet
|
||
|
|
DECEPUB_SITE="$here/.publish/wwwroot" "$pasture/run.sh" add decepub
|
||
|
|
"$dotnet" test "$here/decePubClient.E2E.csproj" -c Release "$@"
|