Files
pi-ku/scripts/run-e2e.sh
T
RamVignesh B 3c9c72d25f Feature/ssl integration (#1)
* feat: update E2E testing configuration to use ssl

* fix: add IPv6 loopback support to mkcert generation command in CI workflow

* feat: centralize SSL certificate generation into a reusable workflow job

* fix: use static ip  in mkcert command

* fix: correct mkcert command args

* feat: implement certificate caching in CI workflow to persist SSL files across jobs

* refactor: optimize CI workflow caching

* ci: implement certificate caching in workflow

* fix: correct certificate caching keys and fix environment file paths in CI workflows

* fix: correct environment file paths and parallelize frontend dependency installation in CI workflow

* test: set TZ environment variable to Asia/Kolkata in vitest configuration

* fix: force en-US locale in Intl formatters to ensure consistent date and time output

* fix: update MAILPIT_API_URL protocol from https to http in e2e environment example

* chore: set test timezone to Asia/Kolkata

* ci: add sll support and enhance e2e workflow

* ci: improve compatibility for docker-compose execution

* refactor: improve container orchestration detection and fallback logic in e2e test script

* feat: add container runtime validation and force docker usage in CI environment

* feat: add caching for Playwright dependencies in CI workflow

* chore: update restart policy to unless-stopped for postgres and mailpit services in e2e docker-compose

---------

Co-authored-by: ramvignesh-b <ramvignesh-b@github.com>
2026-04-17 02:04:11 +05:30

66 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
set -e
# Use podman if available. Not everyone has it
CONTAINER_BIN=$(command -v podman || command -v docker)
if [ -z "$CONTAINER_BIN" ]; then
echo "Sorry, you need either podman or docker installed to run this script."
exit 1
fi
if [ "$CI" = "true" ]; then
CONTAINER_BIN=$(command -v docker)
fi
echo "Using $CONTAINER_BIN for container operations..."
ENV_FILE="./.env.e2e"
if [ -f "$ENV_FILE" ]; then
echo "Loading settings..."
set -a
source "$ENV_FILE"
set +a
else
echo "Error: Configuration file $ENV_FILE is missing!!"
exit 1
fi
# This cleans up containers. Very useful for local e2e to free system resources immediately.
cleanup() {
echo "Cleaning up..."
$CONTAINER_BIN rm -f "$DB_NAME" 2>/dev/null || true
[ -n "$BACKEND_PID" ] && kill "$BACKEND_PID" 2>/dev/null || true
}
trap cleanup EXIT
echo "Starting Database and Mail server..."
COMPOSE_BIN="$(command -v docker-compose || true)"
if echo "$CONTAINER_BIN" | grep -q "podman"; then
podman compose -f "./docker-compose.e2e.yml" up -d
elif [ -n "$COMPOSE_BIN" ]; then
"$COMPOSE_BIN" -f "./docker-compose.e2e.yml" up -d
else
docker compose -f "./docker-compose.e2e.yml" up -d
fi
# postgress will take some time, so we wait, and no race condition. Also, no point in logging this output
until $CONTAINER_BIN exec "$DB_NAME" pg_isready -U "${DB_USER:-test}" >/dev/null 2>&1; do
echo "Waiting for DB..."
sleep 2
done
echo "Starting Backend..."
mkdir -p ./tmp/logs
(cd backend && uv run manage.py migrate)
(cd backend && uv run manage.py serve) > ./tmp/logs/backend.log 2>&1 &
BACKEND_PID=$!
if [ "$CI" = "true" ]; then
cd frontend && bun run test:e2e "$@"
else
# Because playwright decided not to support Fedora :)
cd frontend && distrobox-enter --name ubuntu-24.04 -- bun run test:e2e "$@"
fi