forked from icd/rentgen
- 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
85 lines
3.3 KiB
Bash
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
|