|
@@ -0,0 +1,123 @@
|
|
|
|
+#!/bin/bash
|
|
|
|
+
|
|
|
|
+# Change directory to the first argument passed to the script
|
|
|
|
+project_dir=$1
|
|
|
|
+shift
|
|
|
|
+pushd "$project_dir" || exit 1
|
|
|
|
+echo "Changed directory to $project_dir"
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+# So we get stdout / stderr from Python ASAP. Without this, delays can be very long (e.g. on Windows, Github Actions)
|
|
|
|
+export PYTHONUNBUFFERED=1
|
|
|
|
+
|
|
|
|
+env_mode=$1
|
|
|
|
+shift
|
|
|
|
+check_ports=${1:-3000 8000}
|
|
|
|
+shift
|
|
|
|
+
|
|
|
|
+# Start the server in the background
|
|
|
|
+export TELEMETRY_ENABLED=false
|
|
|
|
+reflex run --loglevel debug --env "$env_mode" "$@" & pid=$!
|
|
|
|
+
|
|
|
|
+# Within the context of this bash, $pid_in_bash is what we need to pass to "kill" on exit
|
|
|
|
+# This is true on all platforms.
|
|
|
|
+pid_in_bash=$pid
|
|
|
|
+trap "kill -INT $pid_in_bash ||:" EXIT
|
|
|
|
+
|
|
|
|
+echo "Started server with PID $pid"
|
|
|
|
+
|
|
|
|
+# Assume we run from the root of the repo
|
|
|
|
+popd
|
|
|
|
+
|
|
|
|
+# In Windows, our Python script below needs to work with the WINPID
|
|
|
|
+if [ -f /proc/$pid/winpid ]; then
|
|
|
|
+ pid=$(cat /proc/$pid/winpid)
|
|
|
|
+ echo "Windows detected, passing winpid $pid to port waiter"
|
|
|
|
+fi
|
|
|
|
+
|
|
|
|
+python scripts/wait_for_listening_port.py $check_ports --timeout=600 --server-pid "$pid"
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+# Check if something is running on port 3000
|
|
|
|
+if curl --output /dev/null --silent --head --fail "http://localhost:3000"; then
|
|
|
|
+ echo "URL exists: http://localhost:3000"
|
|
|
|
+else
|
|
|
|
+ echo "URL does not exist: https://localhost:3000"
|
|
|
|
+fi
|
|
|
|
+
|
|
|
|
+# Change to .web directory
|
|
|
|
+project_dir=$1
|
|
|
|
+shift
|
|
|
|
+pushd "$project_dir" || exit 1
|
|
|
|
+echo "Changed directory to $project_dir"
|
|
|
|
+cd .web
|
|
|
|
+
|
|
|
|
+# Create a lighthouserc.js file
|
|
|
|
+cat << EOF > lighthouserc.js
|
|
|
|
+module.exports = {
|
|
|
|
+ ci: {
|
|
|
|
+ collect: {
|
|
|
|
+ isSinglePageApplication: true,
|
|
|
|
+ numberOfRuns: 1,
|
|
|
|
+ url: ['http://localhost:3000', "http://localhost:3000/docs/getting-started/introduction/", "http://localhost:3000/blog/2023-08-02-seed-annoucement/"]
|
|
|
|
+ },
|
|
|
|
+ upload: {
|
|
|
|
+ target: 'temporary-public-storage',
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+EOF
|
|
|
|
+
|
|
|
|
+# Install and Run LHCI
|
|
|
|
+npm install -g @lhci/cli
|
|
|
|
+lhci autorun || echo "LHCI failed!"
|
|
|
|
+
|
|
|
|
+#!/bin/bash
|
|
|
|
+
|
|
|
|
+# Define the base URL where you want to send the POST requests
|
|
|
|
+base_url="https://app.posthog.com/capture/"
|
|
|
|
+
|
|
|
|
+# Directory containing JSON files
|
|
|
|
+json_dir=".lighthouseci"
|
|
|
|
+
|
|
|
|
+# API Key
|
|
|
|
+api_key="$POSTHOG"
|
|
|
|
+
|
|
|
|
+# Get the current timestamp
|
|
|
|
+timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
|
|
+
|
|
|
|
+# Loop through each JSON file in the directory
|
|
|
|
+for json_file in "$json_dir"/*.json; do
|
|
|
|
+ if [ -f "$json_file" ]; then
|
|
|
|
+ # Extract the file name without the extension
|
|
|
|
+ file_name=$(basename "$json_file" .json)
|
|
|
|
+
|
|
|
|
+ # Generate a random distinct_id (a random number)
|
|
|
|
+ distinct_id=$((RANDOM))
|
|
|
|
+
|
|
|
|
+ # Read the contents of the JSON file
|
|
|
|
+ json_data=$(cat "$json_file")
|
|
|
|
+
|
|
|
|
+ # Construct the event name with the JSON file name
|
|
|
|
+ event="Lighthouse CI - $file_name"
|
|
|
|
+
|
|
|
|
+ # Construct the JSON payload with the random distinct_id
|
|
|
|
+ payload="{\"api_key\": \"$api_key\", \"event\": \"$event\", \"timestamp\": \"$timestamp\", \"distinct_id\": $distinct_id, \"properties\": $json_data}"
|
|
|
|
+
|
|
|
|
+ # Create a temporary file for the payload
|
|
|
|
+ tmpfile=$(mktemp)
|
|
|
|
+
|
|
|
|
+ # Write the payload to the temporary file
|
|
|
|
+ echo "$payload" > "$tmpfile"
|
|
|
|
+
|
|
|
|
+ # Send the POST request with the constructed payload using curl
|
|
|
|
+ response=$(curl -X POST -H "Content-Type: application/json" --data @"$tmpfile" "$base_url")
|
|
|
|
+
|
|
|
|
+ # Clean up the temporary file
|
|
|
|
+ rm "$tmpfile"
|
|
|
|
+
|
|
|
|
+ # Print the response for each file
|
|
|
|
+ echo "Response for $json_file:"
|
|
|
|
+ echo "$response"
|
|
|
|
+ fi
|
|
|
|
+done
|