Paquete para pruebas automatizadas de interfaces web
Project description
TeamWebQaUPT
TeamWebQaUPT es un paquete disenado para realizar pruebas automatizadas de interfaces web utilizando Selenium y pytest.
Proporciona herramientas reutilizables y faciles de usar para simplificar el proceso de pruebas.
Caracteristicas Principales
- Configuracion automatica de navegadores utilizando Selenium.
- Ejecucion de pruebas paralelas con pytest-xdist.
- Reportes de resultados en formato Allure.
- Funciones reutilizables para interacciones comunes como dropdowns, validaciones y navegacion.
- Soporte para pruebas en aplicaciones React, HTML estandar y otros frameworks modernos.
Instalacion
Requisitos Previos
- Tener instalado Python 3.8 o superior.
- Instalar pip (administrador de paquetes de Python).
- Tener Selenium Grid configurado y en ejecucion (opcional para pruebas distribuidas).
Instalacion del Paquete
-
Instala el paquete desde PyPI:
pip install TeamWebQaUPT
-
Verifica la instalacion:
python -c "import TeamWebQaUPT; print('Instalacion exitosa')"
Ejecucion de Pruebas
Comando para Ejecutar Todas las Pruebas
El paquete incluye un script que ejecuta todas las pruebas automaticamente y genera un reporte Allure:
ejecutar_pruebas
Por defecto, el comando:
- Ejecuta pruebas en paralelo utilizando 3 procesos (
-n 3). - Genera resultados en el directorio
allure-results.
Ver Resultados con Allure
Para visualizar los resultados en formato Allure:
-
Instala Allure:
brew install allure # En macOS sudo apt install allure # En Linux
-
Visualizar los resultados generados:
allure serve allure-results
Funciones Reutilizables
El paquete incluye una serie de funciones reutilizables en el modulo utils.py. Aqui hay una lista de las mas utiles:
1. Seleccionar Opcion en Dropdown
from TeamWebQaUPT.utils import select_dropdown_option
select_dropdown_option(driver, dropdown_selector="button[role='combobox']", option_text="Todas")
Descripcion:
- Selecciona una opcion en un combo box (dropdown) por texto visible.
Parametros:
driver: Instancia de Selenium WebDriver.dropdown_selector: Selector CSS del dropdown.option_text: Texto visible de la opcion a seleccionar.
2. Validar Elementos en una Lista
from TeamWebQaUPT.utils import validate_elements_in_list
validate_elements_in_list(driver, "//h3[contains(text(), '{}')]", ["Elemento A", "Elemento B"])
Descripcion:
- Verifica que una lista de elementos este visible en la pagina.
Parametros:
driver: Instancia de Selenium WebDriver.xpath_template: Plantilla de XPath para encontrar los elementos (usa{}para insertar el texto del elemento).items: Lista de textos a validar.
3. Navegar por Menus
from TeamWebQaUPT.utils import navigate_menu
navigate_menu(
driver,
menu_items={
"Inicio": "http://161.132.50.153/",
"Eventos": "http://161.132.50.153/eventos"
},
base_url="http://161.132.50.153/equipos"
)
Descripcion:
- Navega por un menu y valida la navegacion de URLs.
Parametros:
driver: Instancia de Selenium WebDriver.menu_items: Diccionario con texto del menu como clave y URL esperada como valor.base_url: URL base para regresar despues de cada navegacion.
4. LinkLabels
from TeamWebQaUPT.utils import navigate_linklabel
navigate_linklabel(driver, "a[data-testid='link-label']", "http://161.132.50.153/nueva-pagina")
Descripcion:
- Redirige usando un LinkLabel y valida la URL resultante.
Parametros:
driver: Instancia de Selenium WebDriver.link_selector: Selector CSS del LinkLabel.expected_url: URL esperada despues de hacer clic.
5. Procesar Tablas Gherkin
from TeamWebQaUPT.utils import process_table_data
table_data = [
["Columna1", "Columna2"],
["Valor1", "Valor2"]
]
processed_data = process_table_data(table_data)
Descripcion:
- Convierte datos de una tabla en un formato reutilizable.
Parametros:
table_data: Lista de listas con los datos de la tabla (primera fila como encabezados).
Retorno:
- Una lista de diccionarios con claves basadas en la primera fila.
Pruebas Paralelas con Docker Compose
El paquete incluye un archivo docker-compose.yml para ejecutar pruebas en paralelo utilizando Selenium Grid.
Contenido del docker-compose.yml para las pruebas paralelas
version: "3"
services:
selenium-hub:
image: selenium/hub:4.25.0-20240922
container_name: selenium-hub
ports:
- "4442:4442"
- "4443:4443"
- "4444:4444"
networks:
- selenium-grid
chrome:
image: selenium/node-chrome:4.25.0-20240922
container_name: chrome
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
- SE_NODE_MAX_SESSIONS=3
networks:
- selenium-grid
firefox:
image: selenium/node-firefox:4.25.0-20240922
container_name: firefox
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
- SE_NODE_MAX_SESSIONS=3
networks:
- selenium-grid
edge:
image: selenium/node-edge:4.25.0-20240922
container_name: edge
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
- SE_NODE_MAX_SESSIONS=3
networks:
- selenium-grid
chrome_video:
image: selenium/video:ffmpeg-7.0.2-20240922
container_name: chrome_video
volumes:
- ./videos:/videos
depends_on:
- chrome
environment:
- DISPLAY_CONTAINER_NAME=chrome
- SE_NODE_GRID_URL=http://selenium-hub:4444
- SE_VIDEO_FILE_NAME=auto
- FFmpeg_Options=" -framerate 2 -video_size 1920x1080 -probesize 5000000 -analyzeduration 1000000 "
networks:
- selenium-grid
edge_video:
image: selenium/video:ffmpeg-7.0.2-20240922
container_name: edge_video
volumes:
- ./videos:/videos
depends_on:
- edge
environment:
- DISPLAY_CONTAINER_NAME=edge
- SE_NODE_GRID_URL=http://selenium-hub:4444
- SE_VIDEO_FILE_NAME=auto
- FFmpeg_Options=" -framerate 2 -video_size 1920x1080 -probesize 5000000 -analyzeduration 1000000 "
networks:
- selenium-grid
firefox_video:
image: selenium/video:ffmpeg-7.0.2-20240922
container_name: firefox_video
volumes:
- ./videos:/videos
depends_on:
- firefox
environment:
- DISPLAY_CONTAINER_NAME=firefox
- SE_NODE_GRID_URL=http://selenium-hub:4444
- SE_VIDEO_FILE_NAME=auto
- FFmpeg_Options=" -framerate 2 -video_size 1920x1080 -probesize 5000000 -analyzeduration 1000000 "
networks:
- selenium-grid
networks:
selenium-grid:
driver: bridge
Como Usarlo
-
Levanta el entorno Selenium Grid:
docker-compose up -d
-
Ejecuta las pruebas en paralelo:
pytest -n 3 --alluredir=allure-results
Contribuciones
Si deseas contribuir al desarrollo de TeamWebQaUPT, sigue estos pasos:
-
Clona el repositorio:
git clone https://github.com/tu_usuario/TeamWebQaUPT cd TeamWebQaUPT
-
Instala las dependencias para desarrollo:
pip install -r requirements.txt
-
Crea tus cambios y envia un pull request.
Licencia
Este proyecto esta licenciado bajo la Licencia MIT. Consulta el archivo LICENSE para mas detalles.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file teamwebqaupt-1.1.0.tar.gz.
File metadata
- Download URL: teamwebqaupt-1.1.0.tar.gz
- Upload date:
- Size: 15.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b917b1f55ff7aabfefc3f663271e88ccb7d6794fb91d02c1eb6ee44771305a88
|
|
| MD5 |
04e74a50591572588ee0555e4d1f0cb5
|
|
| BLAKE2b-256 |
b83657070555e51f9e65fe4745f8ade38819f4d4c7f591b64f35787915bdef14
|
File details
Details for the file TeamWebQaUPT-1.1.0-py3-none-any.whl.
File metadata
- Download URL: TeamWebQaUPT-1.1.0-py3-none-any.whl
- Upload date:
- Size: 8.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d1faaec23dcb6ea810147ba4b72db030491c3ac4d57740256b222ccd73592a9
|
|
| MD5 |
2620e53ee9b3b6ec129bf668f4240883
|
|
| BLAKE2b-256 |
f6970773dd4bad6d3289efe2e036952a9443f055ce0a64f8bf31ac8401ed2ce5
|