Metadata-Version: 2.4
Name: navegador-automate
Version: 0.1.2
Summary: Browser automation library with JSON flow orchestration
Author-email: LJD-UwU <ssalvarezleonardoaa@gmail.com>
License: MIT
Project-URL: Homepage, https://github.com/LJD-UwU/navegador-automate
Project-URL: Documentation, https://github.com/LJD-UwU/navegador-automate#readme
Project-URL: Repository, https://github.com/LJD-UwU/navegador-automate.git
Project-URL: Issues, https://github.com/LJD-UwU/navegador-automate/issues
Keywords: browser-automation,selenium,flow-orchestration,json-flows,web-automation
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Software Development :: Testing
Classifier: Topic :: Internet :: WWW/HTTP :: Browsers
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: selenium<5.0,>=4.0
Requires-Dist: webdriver-manager>=4.0
Requires-Dist: requests>=2.28.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0; extra == "dev"
Requires-Dist: black>=23.0; extra == "dev"
Requires-Dist: ruff>=0.1; extra == "dev"
Requires-Dist: isort>=5.0; extra == "dev"
Requires-Dist: pre-commit>=3.0; extra == "dev"
Dynamic: license-file

# navegador-automate 🚀

![Python Version](https://img.shields.io/badge/python-3.8%2B-blue)
![License](https://img.shields.io/badge/license-MIT-green)
![Tests](https://img.shields.io/badge/tests-60%2F60-brightgreen)

Librería de automatización de navegadores con orquestación de flujos JSON. Sin configuración manual, sin dependencias externas complicadas.

## 🎯 Características

- ✅ **BrowserFactory (Builder Pattern)** - Crear navegadores sin configuración
- ✅ **FlowDefinition** - Definir flujos con JSON
- ✅ **Executor** - Ejecutar pasos automatizados
- ✅ **FlowOrchestrator** - Orquestar múltiples flujos
- ✅ **Ejecución Paralela** - ThreadPoolExecutor integrado
- ✅ **Multi-OS** - Windows, macOS, Linux
- ✅ **Multi-Browser** - Firefox, Edge, Chrome, Safari
- ✅ **Retry Automático** - Manejo de timeouts
- ✅ **Logging Centralizado** - Con rotación automática
- ✅ **Variable Interpolation** - ${USERNAME}, ${PASSWORD}, etc
- ✅ **60 Tests** - 100% path coverage

## 📦 Instalación

### Desde PyPI (próximamente)
```bash
pip install navegador-automate
```

### Desde el repositorio
```bash
git clone https://github.com/LJD-UwU/navegador-automate.git
cd navegador-automate
pip install -e .
```

### Con dependencias de desarrollo
```bash
pip install -e ".[dev]"
```

## 🚀 Quick Start

### Uso Simple (BrowserFactory)
```python
from navegador_automate import BrowserFactory

# Sin Config manual ✅
browser = BrowserFactory.firefox(headless=False).build()

browser.open("https://example.com")
browser.click("xpath=//button[@id='login']")
browser.type_text("id=email", "user@example.com")
browser.type_text("id=password", "secret")
browser.wait_for_element("id=dashboard")

browser.quit()
```

### Uso con Context Manager
```python
from navegador_automate import BrowserContext

with BrowserContext("firefox", headless=False) as browser:
    browser.open("https://example.com")
    browser.click("xpath=//button")
    # Browser auto-closes
```

### Orquestación de Flujos
```python
from navegador_automate import BrowserFactory, FlowOrchestrator
from steps_flows.flows_config import COMMANDS

browser = BrowserFactory.firefox().build()

orch = FlowOrchestrator(
    browser,
    commands=COMMANDS,
    credentials={
        "USERNAME": "user@example.com",
        "PASSWORD": "secret123"
    }
)

# Ejecutar flujo simple
result = orch.run("base")
print(f"Success: {result['success']}")

# O múltiples en paralelo
result = orch.run("all")

browser.quit()
```

## 📋 Builder Pattern

```python
factory = (
    BrowserFactory.firefox()
    .with_headless(True)
    .with_download_dir("/custom/download/path")
    .with_profile_dir("/custom/profile/path")
)

browser = factory.build()
```

## 🔗 Selectores Soportados

```python
# XPath
browser.click("xpath=//button[@id='submit']")

# CSS
browser.click("css=.button-primary")

# ID
browser.click("id=submit-btn")

# Name
browser.click("name=action")

# Class
browser.click("class=btn")

# Tag
browser.click("tag=button")
```

## 🔄 Comandos de Flujos JSON

```json
[
  {"command": "open", "target": "https://example.com", "value": ""},
  {"command": "type", "target": "id=email", "value": "${USERNAME}"},
  {"command": "type", "target": "id=password", "value": "${PASSWORD}"},
  {"command": "click", "target": "xpath=//button[@type='submit']", "value": ""},
  {"command": "wait", "target": "id=dashboard", "value": "10000"},
  {"command": "pause", "target": "", "value": "2000"},
  {"command": "key", "target": "", "value": "ENTER"}
]
```

## 📝 Ejemplos

Ver directorio `steps_flows/` para ejemplos completos:

- `basic.py` - Uso simple BrowserFactory
- `flows_orchestration.py` - Orquestación con flows_config
- `parallel.py` - Ejecución paralela
- `custom.py` - Flujos personalizados

```bash
cd steps_flows

# Ejecutar ejemplo
python basic.py
python flows_orchestration.py
python parallel.py
python custom.py
```

## 🧪 Testing

```bash
# Ejecutar todos los tests
pytest

# Con cobertura
pytest --cov=navegador_automate

# Test específico
pytest tests/test_factory.py -v
```

## 📚 Documentación Completa

- [TAREA 1: Browser + Factory + Drivers](TAREA_1_COMPLETADA.md)
- [TAREA 2: FlowDefinition + Executor](TAREA_2_COMPLETADA.md)
- [TAREA 3: FlowOrchestrator](TAREA_3_COMPLETADA.md)
- [TAREA 4: Flujos + Scripts](TAREA_4_COMPLETADA.md)
- [TAREA 5: Setup + Docs + CI/CD](TAREA_5_COMPLETADA.md)

## 📄 Licencia

Este proyecto está bajo la licencia MIT. Ver [LICENSE](LICENSE) para más detalles.

## 👤 Autor

- **LJD-UwU** - Desarrollo inicial

---

**Made with ❤️ by LJD-UwU**
