3253828fef
Add complete navegator system for stealthy browser automation: - CDP client with WebSocket communication - Browser API with navigation, storage, network, runtime - Stealth flags and anti-detection scripts - Persistent profile support - Examples and comprehensive documentation Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
164 lines
4.2 KiB
Bash
Executable File
164 lines
4.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Integration Tests - Verifica integración entre componentes
|
|
|
|
set -e
|
|
|
|
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
cd "$ROOT_DIR"
|
|
|
|
GREEN='\033[0;32m'
|
|
RED='\033[0;31m'
|
|
NC='\033[0m'
|
|
|
|
echo "=========================================="
|
|
echo "🔗 Integration Tests"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
TEST_DIR="./test-integration"
|
|
mkdir -p "$TEST_DIR"
|
|
|
|
PASSED=0
|
|
FAILED=0
|
|
|
|
test_result() {
|
|
if [ $? -eq 0 ]; then
|
|
echo -e "${GREEN}✓${NC} $1"
|
|
((PASSED++))
|
|
else
|
|
echo -e "${RED}✗${NC} $1"
|
|
((FAILED++))
|
|
fi
|
|
}
|
|
|
|
# Test 1: Compartir perfil entre binarios
|
|
echo "Test: Compartir perfil entre screenshot y navegar"
|
|
SHARED_PROFILE="shared-test-$$"
|
|
|
|
# Crear sesión con navegar
|
|
timeout 30 ./navegar -url https://example.com \
|
|
-profile "$SHARED_PROFILE" \
|
|
-duration 2 \
|
|
-headless=true &>/dev/null
|
|
|
|
# Usar mismo perfil con screenshot
|
|
timeout 30 ./screenshot -url https://example.com \
|
|
-profile "$SHARED_PROFILE" \
|
|
-o "$TEST_DIR/shared.png" \
|
|
-headless=true &>/dev/null
|
|
|
|
# Verificar que ambos usaron mismo perfil
|
|
PROFILE_PATH="$HOME/.navegator/profiles/$SHARED_PROFILE"
|
|
[ -d "$PROFILE_PATH" ]
|
|
test_result "Perfil compartido entre binarios"
|
|
|
|
# Test 2: Recording captura múltiples acciones
|
|
echo "Test: Recording de múltiples acciones"
|
|
RECORD_PROFILE="record-test-$$"
|
|
|
|
timeout 30 ./navegar -url https://example.com \
|
|
-profile "$RECORD_PROFILE" \
|
|
-duration 3 \
|
|
-headless=true &>/dev/null
|
|
|
|
RECORD_FILE="recording_$RECORD_PROFILE.log"
|
|
if [ -f "$RECORD_FILE" ]; then
|
|
# Verificar que tiene contenido JSON
|
|
grep -q "Navigate" "$RECORD_FILE" && \
|
|
grep -q "timestamp" "$RECORD_FILE"
|
|
test_result "Recording JSON válido"
|
|
rm -f "$RECORD_FILE"
|
|
else
|
|
false
|
|
test_result "Recording JSON válido"
|
|
fi
|
|
|
|
# Test 3: Screenshot después de navegación
|
|
echo "Test: Screenshot refleja navegación"
|
|
NAV_PROFILE="nav-screenshot-$$"
|
|
|
|
timeout 30 ./navegar -url https://example.com \
|
|
-profile "$NAV_PROFILE" \
|
|
-duration 2 \
|
|
-headless=true &>/dev/null
|
|
|
|
timeout 30 ./screenshot -url https://example.com \
|
|
-profile "$NAV_PROFILE" \
|
|
-o "$TEST_DIR/after-nav.png" \
|
|
-headless=true &>/dev/null
|
|
|
|
[ -f "$TEST_DIR/after-nav.png" ] && [ -s "$TEST_DIR/after-nav.png" ]
|
|
test_result "Screenshot después de navegación"
|
|
|
|
# Test 4: Perfiles en paralelo (clonados)
|
|
echo "Test: Perfiles clonados en paralelo"
|
|
BASE_PROFILE="parallel-base-$$"
|
|
|
|
# Crear perfil base
|
|
mkdir -p "$HOME/.navegator/profiles/$BASE_PROFILE"
|
|
|
|
# Clonar
|
|
CLONE1="$BASE_PROFILE-clone1"
|
|
CLONE2="$BASE_PROFILE-clone2"
|
|
|
|
cp -r "$HOME/.navegator/profiles/$BASE_PROFILE" "$HOME/.navegator/profiles/$CLONE1"
|
|
cp -r "$HOME/.navegator/profiles/$BASE_PROFILE" "$HOME/.navegator/profiles/$CLONE2"
|
|
|
|
# Ejecutar en paralelo
|
|
timeout 30 ./screenshot -url https://example.com \
|
|
-profile "$CLONE1" \
|
|
-o "$TEST_DIR/clone1.png" \
|
|
-headless=true &>/dev/null &
|
|
PID1=$!
|
|
|
|
timeout 30 ./screenshot -url https://example.com \
|
|
-profile "$CLONE2" \
|
|
-o "$TEST_DIR/clone2.png" \
|
|
-headless=true &>/dev/null &
|
|
PID2=$!
|
|
|
|
wait $PID1 $PID2
|
|
|
|
[ -f "$TEST_DIR/clone1.png" ] && [ -f "$TEST_DIR/clone2.png" ]
|
|
test_result "Perfiles clonados en paralelo"
|
|
|
|
# Test 5: Output JSON válido
|
|
echo "Test: Búsqueda genera JSON válido"
|
|
# Este puede fallar por timeout, pero verificar estructura
|
|
timeout 45 ./buscar -q "test" -n 1 \
|
|
-profile "json-test-$$" \
|
|
-output "$TEST_DIR/search.json" \
|
|
-headless=true &>/dev/null || true
|
|
|
|
if [ -f "$TEST_DIR/search.json" ]; then
|
|
# Verificar que es JSON válido
|
|
python3 -m json.tool "$TEST_DIR/search.json" > /dev/null 2>&1
|
|
test_result "JSON de búsqueda válido"
|
|
else
|
|
echo -e "${RED}✗${NC} JSON de búsqueda válido (timeout esperado)"
|
|
((FAILED++))
|
|
fi
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "Resultados Integration Tests"
|
|
echo "=========================================="
|
|
echo -e "${GREEN}Passed:${NC} $PASSED"
|
|
echo -e "${RED}Failed:${NC} $FAILED"
|
|
echo ""
|
|
|
|
# Cleanup
|
|
rm -rf "$TEST_DIR"
|
|
rm -rf "$HOME/.navegator/profiles/shared-test-"*
|
|
rm -rf "$HOME/.navegator/profiles/record-test-"*
|
|
rm -rf "$HOME/.navegator/profiles/nav-screenshot-"*
|
|
rm -rf "$HOME/.navegator/profiles/parallel-base-"*
|
|
rm -rf "$HOME/.navegator/profiles/json-test-"*
|
|
|
|
if [ $FAILED -gt 0 ]; then
|
|
exit 1
|
|
else
|
|
exit 0
|
|
fi
|