mirror of
https://github.com/vector-im/element-web.git
synced 2026-05-05 04:06:44 +02:00
... to make it easier to see where it is coming from Also, add a blank line before starting playwright itself
53 lines
1.7 KiB
Bash
Executable File
53 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
# Handle symlinks here as we tend to be executed as an npm binary
|
|
SCRIPT_PATH=$(readlink -f "$0")
|
|
SCRIPT_DIR=$(dirname "$SCRIPT_PATH")
|
|
|
|
function build_image() {
|
|
local IMAGE_NAME="$1"
|
|
|
|
echo "playwright-screenshots: Building $IMAGE_NAME image in $SCRIPT_DIR"
|
|
docker build -t "$IMAGE_NAME" --build-arg "PLAYWRIGHT_VERSION=${IMAGE_NAME#*:}" "$SCRIPT_DIR"
|
|
}
|
|
|
|
WS_PORT=3000
|
|
|
|
# Check the playwright version
|
|
PW_VERSION=$(pnpm --silent -- playwright --version | awk '{print $2}')
|
|
IMAGE_NAME="ghcr.io/element-hq/element-web/playwright-server:$PW_VERSION"
|
|
|
|
# If the image exists in the repository, pull it; otherwise, build it.
|
|
#
|
|
# (This explicit test gives the user clearer progress info than just
|
|
# `docker pull 2>/dev/null || build_image`.)
|
|
if docker manifest inspect "$IMAGE_NAME" &>/dev/null; then
|
|
docker pull "$IMAGE_NAME"
|
|
else
|
|
build_image "$IMAGE_NAME"
|
|
fi
|
|
|
|
# Start the playwright-server in docker
|
|
CONTAINER=$(docker run --network=host -v /tmp:/tmp --rm -d -e PORT="$WS_PORT" "$IMAGE_NAME")
|
|
# Set up an exit trap to clean up the docker container
|
|
clean_up() {
|
|
ARG=$?
|
|
echo "playwright-screenshots: Stopping playwright-server"
|
|
docker stop "$CONTAINER" > /dev/null
|
|
exit $ARG
|
|
}
|
|
trap clean_up EXIT
|
|
|
|
# Wait for playwright-server to be ready
|
|
echo "playwright-screenshots: Waiting for playwright-server"
|
|
pnpm --dir "$SCRIPT_DIR" exec wait-on "tcp:$WS_PORT"
|
|
|
|
# Playwright seems to overwrite the last line from the console, so add an
|
|
# extra newline to make sure this doesn't get lost.
|
|
echo -e "playwright-screenshots: Running '$@'\n"
|
|
|
|
# Run the test we were given, setting PW_TEST_CONNECT_WS_ENDPOINT accordingly
|
|
PW_TEST_CONNECT_WS_ENDPOINT="http://localhost:$WS_PORT" "$@"
|