Este repositorio contiene la solución a un reto de automatización End-to-End (E2E) sobre la plataforma de recursos humanos OrangeHRM.
El objetivo de este proyecto es demostrar la capacidad de diseñar e implementar un framework de automatización robusto, escalable y fácil de mantener utilizando Python y buenas prácticas de ingeniería de software para pruebas (QA).
- Lenguaje: Python
- Framework de Automatización: Selenium WebDriver
- Test Runner: Pytest
- Reportes: Pytest-HTML / Script personalizado
- Patrón de Diseño: Page Object Model (POM) - Implementación con una clase base (
base_page.py) para centralizar acciones comunes y reducir la duplicación de código.
El script cubre el siguiente flujo de negocio crítico:
- Autenticación: Ingreso exitoso utilizando credenciales de administrador.
- Módulo PIM: Navegación y registro de un nuevo empleado con información básica (Nombre, Apellidos).
- Carga de Archivos: Subida exitosa de una fotografía de perfil para el empleado.
- Módulo Directory: Búsqueda dinámica utilizando el filtro por nombre.
- Validaciones (Asserts): Verificación de que la información del empleado creado coincide y se despliega correctamente en los resultados.
El proyecto está estructurado utilizando el patrón POM y configuraciones avanzadas de Pytest:
📦 orangehrm-selenium-python
┣ 📂 pages # Implementación del patrón POM
┃ ┣ 📜 __init__.py
┃ ┣ 📜 base_page.py # Envoltorios de Selenium (clics, esperas explícitas, envíos de texto)
┃ ┣ 📜 directory_page.py # Localizadores y acciones del módulo Directory
┃ ┣ 📜 login_page.py # Localizadores y acciones de la pantalla de Login
┃ ┗ 📜 pim_page.py # Localizadores y acciones del módulo PIM
┣ 📂 tests # Scripts de ejecución
┃ ┗ 📜 test_orangehrm_e2e.py # Escenario principal End-to-End
┣ 📂 tools # Scripts utilitarios y herramientas adicionales
┃ ┗ 📜 generate_report.py # Script personalizado para la gestión y generación de reportes
┣ 📂 utils # Funciones auxiliares, manejo de datos y utilidades generales
┣ 📜 .gitignore # Archivos ignorados por el control de versiones
┣ 📜 conftest.py # Configuración de Fixtures de Pytest (Setup/Teardown del WebDriver)
┣ 📜 package.json # Dependencias adicionales (ej. herramientas de formateo/reporte)
┣ 📜 package-lock.json # Árbol de dependencias bloqueado para Node
┣ 📜 pytest