#!/bin/bash # Auto Browser Logger - Automatically calls Claude Code if not running under it # This script can detect its environment and auto-invoke Claude Code for MCP tools set -e SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" LOG_FILE="$1" PAGE_NAME="$2" URL="$3" # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' log_info() { echo -e "${BLUE}ℹ️ $1${NC}"; } log_success() { echo -e "${GREEN}✅ $1${NC}"; } log_warning() { echo -e "${YELLOW}⚠️ $1${NC}"; } log_error() { echo -e "${RED}❌ $1${NC}"; } # Function to detect if running under Claude Code is_under_claude() { # Check for Claude Code environment variables or if script is being executed via Claude [ -n "$CLAUDE_CODE_SESSION" ] || \ [ -n "$ANTHROPIC_SESSION" ] || \ [ -n "$CLAUDE_SESSION" ] || \ [ "$TERM_PROGRAM" = "claude-code" ] || \ [ -n "$CLAUDE_CONTEXT" ] || \ # Check if we're in a context where Claude Code tools are available command -v mcp__browser-tools__getConsoleLogs >/dev/null 2>&1 || \ # Check if this script is being called from within a Claude Code execution context [[ "${BASH_SOURCE[0]}" =~ claude|tmp ]] } # Function to collect real browser logs via Claude Code collect_browser_logs_via_claude() { local log_file="$1" local page_name="$2" local url="$3" log_info "Collecting real browser logs via Claude Code..." # Create a Claude Code command to execute MCP tools local claude_cmd_file="/tmp/claude_mcp_commands_${page_name}_$(date +%s).txt" cat > "$claude_cmd_file" << EOF Please collect browser logs and update the file: $log_file Run these MCP browser tools and append results to the log file: 1. mcp__browser-tools__getConsoleLogs 2. mcp__browser-tools__getConsoleErrors 3. mcp__browser-tools__getNetworkErrors Replace the section "CLAUDE_COMMANDS_START" to "CLAUDE_COMMANDS_END" with the real browser logs data. EOF if command -v claude-code >/dev/null 2>&1; then log_info "Executing claude-code with MCP browser tools..." # Try to execute Claude Code claude-code --prompt "$(cat "$claude_cmd_file")" 2>/dev/null || { log_warning "Direct claude-code execution failed, creating manual instructions" return 1 } rm -f "$claude_cmd_file" return 0 else log_error "claude-code command not found" return 1 fi } # Main function main() { if [ $# -lt 3 ]; then echo "Usage: $0 " exit 1 fi log_info "Auto Browser Logger" log_info "Log file: $LOG_FILE" log_info "Page: $PAGE_NAME" log_info "URL: $URL" if is_under_claude; then log_success "Running under Claude Code environment" # Add header to log file { echo "" echo "--- AUTO-COLLECTED REAL BROWSER LOGS ---" echo "[$(date +"%H:%M:%S")] Environment: Claude Code detected" echo "[$(date +"%H:%M:%S")] Collecting real browser logs..." } >> "$LOG_FILE" log_info "Environment detected as Claude Code - logs should be collected automatically" else log_warning "Not running under Claude Code" # Add placeholder section that Claude Code can replace { echo "" echo "--- AUTO-COLLECTED REAL BROWSER LOGS ---" echo "[$(date +"%H:%M:%S")] Environment: Standalone script" echo "[$(date +"%H:%M:%S")] Attempting to call Claude Code..." echo "" echo "CLAUDE_COMMANDS_START" echo "# These commands should be replaced with real browser logs:" echo "# mcp__browser-tools__getConsoleLogs" echo "# mcp__browser-tools__getConsoleErrors" echo "# mcp__browser-tools__getNetworkErrors" echo "CLAUDE_COMMANDS_END" echo "" } >> "$LOG_FILE" # Try to collect logs via Claude Code if collect_browser_logs_via_claude "$LOG_FILE" "$PAGE_NAME" "$URL"; then log_success "Successfully called Claude Code for log collection" else log_warning "Failed to auto-call Claude Code" { echo "[$(date +"%H:%M:%S")] Failed to auto-call Claude Code" echo "[MANUAL ACTION] Please run claude-code and execute:" echo " mcp__browser-tools__getConsoleLogs" echo " mcp__browser-tools__getConsoleErrors" echo " mcp__browser-tools__getNetworkErrors" echo " Then update this log file: $LOG_FILE" } >> "$LOG_FILE" fi fi { echo "" echo "[$(date +"%H:%M:%S")] Auto browser logger completed" } >> "$LOG_FILE" log_success "Auto browser logger completed" } # Run main function main "$@"