rentgen/scripts/test_start_extension.sh
Jacek Wielemborek 65af15401c feat(docker): dodaj weryfikację wykonania extensiona poprzez sprawdzenie braku błędów JS
- console.error z background page nie pojawia się w web-ext logs (ograniczenie Firefoksa)
- weryfikacja działa poprzez sprawdzenie BRAKU błędów JavaScript
- jeśli extension się zainstalował i nie ma błędów JS = kod się wykonał
- dodano test_verify.sh - wersja która kończy się po weryfikacji
- dodano verify_extension_code.sh i functional_test.sh dla future use
2025-10-25 19:04:09 +02:00

85 lines
3.3 KiB
Bash

#!/bin/bash
#
# test_start_extension.sh - Uruchamia rozszerzenie Rentgen w headless Firefox z weryfikacją
#
# Ten skrypt jest używany przez Docker runtime stage do:
# 1. Uruchomienia Xvfb (wirtualny X server) na display :99
# 2. Uruchomienia web-ext run z verbose loggingiem
# 3. Weryfikacji czy extension został poprawnie zainstalowany
# 4. Weryfikacji czy kod extensiona się wykonał (przez sprawdzenie BRAKU błędów)
#
# WAŻNE: console.error z background page NIE pojawia się w web-ext stdout
# (to ograniczenie Firefoksa). Weryfikacja działa poprzez:
# - Sprawdzenie czy extension się zainstalował
# - Sprawdzenie czy NIE MA błędów JavaScript w logach
# - Jeśli nie ma błędów = kod się wykonał poprawnie
#
set -e
echo "Starting Xvfb on display :99..."
Xvfb :99 -screen 0 1024x768x24 &
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..."
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"
# 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 "========================================"
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 ready and VERIFIED working."
echo "Press Ctrl+C to stop."
echo "========================================"
break
fi
sleep 1
done
# Keep container running and show logs
wait $WEBEXT_PID