agent-flow / src /frontend /run-tests.sh
Tai Truong
fix readme
d202ada
raw
history blame
3.12 kB
#!/bin/bash
# Default value for the --ui flag
ui=false
# Absolute path to the project root directory
PROJECT_ROOT="../../"
# Check if necessary commands are available
for cmd in npx poetry fuser; do
if ! command -v $cmd &> /dev/null; then
echo "Error: Required command '$cmd' is not installed. Aborting."
exit 1
fi
done
# Parse command-line arguments
while [[ $# -gt 0 ]]; do
key="$1"
case $key in
--ui)
ui=true
shift
;;
*)
echo "Unknown option: $key"
exit 1
;;
esac
shift
done
# Function to forcibly terminate a process by port
terminate_process_by_port() {
port="$1"
echo "Terminating process on port: $port"
if ! fuser -k -n tcp "$port"; then
echo "Failed to terminate process on port $port. Please check manually."
else
echo "Process terminated."
fi
}
delete_temp() {
if cd "$PROJECT_ROOT"; then
echo "Deleting temp database"
rm -f temp && echo "Temp database deleted." || echo "Failed to delete temp database."
else
echo "Failed to navigate to project root for cleanup."
fi
}
# Trap signals to ensure cleanup on script termination
trap 'terminate_process_by_port 7860; terminate_process_by_port 3000; delete_temp' EXIT
# Ensure the script is executed from the project root directory
if ! cd "$PROJECT_ROOT"; then
echo "Error: Failed to navigate to project root directory. Aborting."
exit 1
fi
# Install playwright if not installed yet
if ! npx playwright install; then
echo "Error: Failed to install Playwright. Aborting."
exit 1
fi
# Start the frontend
make frontend > /dev/null 2>&1 &
# Adjust sleep duration as needed
sleep 10
# Install backend dependencies
if ! poetry install; then
echo "Error: Failed to install backend dependencies. Aborting."
exit 1
fi
# Start the backend
LANGFLOW_DATABASE_URL=sqlite:///./temp LANGFLOW_AUTO_LOGIN=True poetry run langflow run --backend-only --port 7860 --host 0.0.0.0 --no-open-browser > /dev/null 2>&1 &
backend_pid=$! # Capture PID of the backend process
# Adjust sleep duration as needed
sleep 25
# Navigate to the test directory
if ! cd src/frontend; then
echo "Error: Failed to navigate to test directory. Aborting."
kill $backend_pid # Terminate the backend process if navigation fails
echo "Backend process terminated."
exit 1
fi
# Check if backend is running
if ! lsof -i :7860; then
echo "Error: Backend is not running. Aborting."
exit 1
fi
# Run Playwright tests
if [ "$ui" = true ]; then
TEST_COMMAND="npx playwright test tests/core --ui --project=chromium"
else
TEST_COMMAND="npx playwright test tests/core --project=chromium"
fi
if ! PLAYWRIGHT_HTML_REPORT=playwright-report/e2e $TEST_COMMAND; then
echo "Error: Playwright tests failed. Aborting."
exit 1
fi
if [ "$ui" = true ]; then
echo "Opening Playwright report..."
npx playwright show-report
fi
trap 'terminate_process_by_port 7860; terminate_process_by_port 3000; delete_temp; kill $backend_pid 2>/dev/null' EXIT