#!/bin/bash set -e SKIP_MIGRATE=false SKIP_RECREATE_DATABASE=false SKIP_SETUP_DEV=false HELP_TEXT=$(cat << EOF use --skip-all-setup to only run Cypress use --skip-recreate-db to skip dropping and creating databases use --skip-migrate-db to skip running DB migrations use --skip-setup-dev to skip running django setup_dev command EOF ) for var in "$@" do if [ "$var" == "--help" ]; then echo "$HELP_TEXT" exit 0 fi if [ "$var" == "-h" ]; then echo "$HELP_TEXT" exit 0 fi if [ "$var" == "--skip-all-setup" ]; then SKIP_RECREATE_DATABASE=true SKIP_MIGRATE=true SKIP_SETUP_DEV=true echo "skipping all setup" fi if [ "$var" == "--skip-recreate-db" ]; then SKIP_RECREATE_DATABASE=true echo "skipping dropping and recreating databases" fi if [ "$var" == "--skip-migrate-db" ]; then SKIP_MIGRATE=true echo "skipping migrating databases" fi if [ "$var" == "--skip-setup-dev" ]; then SKIP_SETUP_DEV=true echo "skipping django setup dev command" fi done export DEBUG=1 export NO_RESTART_LOOP=1 export CYPRESS_BASE_URL=http://localhost:8080 export OPT_OUT_CAPTURE=1 export SECURE_COOKIES=0 export SKIP_SERVICE_VERSION_REQUIREMENTS=1 export KAFKA_URL=kafka://kafka:9092 export CLICKHOUSE_DATABASE=posthog_test export TEST=1 # Plugin server and kafka revert to 'default' Clickhouse database if TEST is not set export CLICKHOUSE_SECURE=0 export E2E_TESTING=1 export SECRET_KEY=e2e_test export EMAIL_HOST=email.test.posthog.net export SITE_URL=http://localhost:8080 export REDIS_URL=redis://localhost/ DATABASE="posthog_e2e_test" export PGHOST="${PGHOST:=localhost}" export PGUSER="${PGUSER:=posthog}" export PGPASSWORD="${PGPASSWORD:=posthog}" export PGPORT="${PGPORT:=5432}" export DATABASE_URL="postgres://${PGUSER}:${PGPASSWORD}@${PGHOST}:${PGPORT}/${DATABASE}" trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT recreateDatabases() { echo "~~~~~~~~~~~~~ dropping and creating databases ~~~~~~~~~~~~~" dropdb --if-exists $DATABASE createdb $DATABASE # Delete and recreate clickhouse database echo 'DROP DATABASE if exists posthog_test' | curl 'http://localhost:8123/' --data-binary @- echo 'create database posthog_test' | curl 'http://localhost:8123/' --data-binary @- } migrateDatabases() { echo "~~~~~~~~~~~~~ migrating databases ~~~~~~~~~~~~~" python manage.py migrate python manage.py migrate_clickhouse } setupDev() { echo "~~~~~~~~~~~~~ setting up django ~~~~~~~~~~~~~" python manage.py setup_dev & } nc -z localhost 9092 || ( echo -e "\033[0;31mKafka isn't running. Please run\n\tdocker compose -f docker-compose.dev.yml up zookeeper kafka clickhouse db redis\nI'll wait while you do that.\033[0m" ; bin/check_kafka_clickhouse_up ) wget -nv -t1 --spider 'http://localhost:8123/' || ( echo -e "\033[0;31mClickhouse isn't running. Please run\n\tdocker compose -f docker-compose.dev.yml up zookeeper kafka clickhouse db redis.\nI'll wait while you do that.\033[0m" ; bin/check_kafka_clickhouse_up ) $SKIP_RECREATE_DATABASE || recreateDatabases $SKIP_MIGRATE || migrateDatabases $SKIP_SETUP_DEV || setupDev # parallel block ./bin/plugin-server & # Only start webpack if not already running nc -vz 127.0.0.1 8234 2> /dev/null || ./bin/start-frontend & pnpm dlx cypress open --config-file cypress.e2e.config.ts & python manage.py runserver 8080