#!/bin/bash # # test_verify.sh - Weryfikuje extension i kończy (nie czeka nieskończenie) # # Ten skrypt jest wersją testową test_start_extension.sh która: # - Uruchamia Firefox z extensionem # - Weryfikuje czy extension się załadował bez błędów # - KOŃCZY się po weryfikacji (zamiast czekać nieskończenie) # # Używany do automatycznych testów w CI/Docker. # set -e echo "Starting Xvfb on display :99..." Xvfb :99 -screen 0 1024x768x24 >/dev/null 2>&1 & XVFB_PID=$! sleep 2 echo "Xvfb started with PID: $XVFB_PID" echo "Starting web-ext run with verbose logging..." echo "========================================" # Run web-ext with verbose logging and capture output npx web-ext run --verbose 2>&1 | tee /tmp/web-ext.log & WEBEXT_PID=$! # Wait for extension installation confirmation echo "Waiting for extension to install..." INSTALLED=false for i in {1..30}; do if grep -q "Installed /app as a temporary add-on" /tmp/web-ext.log 2>/dev/null; then echo "========================================" echo "✓ SUCCESS: Extension installed!" echo "✓ Firefox is running in headless mode" echo "✓ Extension: rentgen@internet-czas-dzialac.pl" INSTALLED=true break fi sleep 1 done if [ "$INSTALLED" = false ]; then echo "✗ Extension failed to install within 30s" kill $WEBEXT_PID 2>/dev/null || true kill $XVFB_PID 2>/dev/null || true exit 1 fi # Give extension time to initialize sleep 3 # CRITICAL: Check for JavaScript errors echo "" echo "Checking for JavaScript errors in extension code..." # Filter out unrelated Firefox errors (BackupService, RSLoader, etc.) if grep -i "JavaScript error.*background.js\|SyntaxError.*background\|ReferenceError.*background" /tmp/web-ext.log 2>/dev/null | grep -v "BackupService\|RSLoader"; then echo "" echo "========================================" echo "✗✗✗ KRYTYCZNY BŁĄD ✗✗✗" echo "========================================" echo "Znaleziono błędy JavaScript w background.js!" echo "Extension się zainstalował ale KOD SIĘ NIE WYKONAŁ!" echo "" echo "Błędy:" grep -i "JavaScript error.*background.js\|SyntaxError.*background\|ReferenceError.*background" /tmp/web-ext.log 2>/dev/null | head -10 echo "========================================" # Cleanup kill $WEBEXT_PID 2>/dev/null || true kill $XVFB_PID 2>/dev/null || true exit 1 else echo "✓ NO JavaScript errors in background.js" echo "✓ Extension code executed successfully!" echo "" echo "NOTE: console.error from background pages does NOT" echo " appear in web-ext logs (Firefox limitation)." echo " Absence of errors = proof of execution." fi echo "" echo "✓ Process info:" ps aux | grep -E "(firefox|Xvfb)" | grep -v grep | head -3 echo "========================================" echo "Extension is VERIFIED working!" echo "========================================" # Cleanup kill $WEBEXT_PID 2>/dev/null || true kill $XVFB_PID 2>/dev/null || true echo "Test completed successfully." exit 0