Skip to main content

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.

Novedades en la Versión 1.1.16 de TeamWebQaUPT

TeamWebQaUPT ha sido actualizado para incluir mejoras significativas y nuevas funcionalidades que amplían las capacidades del paquete y simplifican las pruebas automatizadas en diversas plataformas.


Nuevas Funcionalidades

1. Soporte para Pruebas Paralelas en Múltiples Navegadores

  • Las pruebas ahora pueden ejecutarse simultáneamente en Chrome, Firefox y Edge.
  • Esto es posible gracias a la parametrización de navegadores en la fixture driver del archivo conftest.py.

2. Compatibilidad con Dropdowns y Menús en Frameworks Modernos

  • Las funciones para interactuar con dropdowns y listboxes ahora son compatibles con aplicaciones hechas en React, HTML estándar y otros frameworks.
  • Uso Ejemplo:
    from TeamWebQaUPT.utils import select_dropdown_option
    
    select_dropdown_option(driver, "button[role='combobox']", "Option Text")
    

3. Redirección Mediante LinkLabels

  • Nueva función navigate_linklabel para manejar redirecciones usando etiquetas de enlace (LinkLabels).
  • Uso Ejemplo:
    from TeamWebQaUPT.utils import navigate_linklabel
    
    navigate_linklabel(driver, "a[data-testid='link']", "https://example.com/target")
    

4. Navegación Mejorada por Menús

  • La función navigate_menu ha sido optimizada para validar automáticamente las redirecciones de URLs en menús dinámicos.
  • Uso Ejemplo:
    from TeamWebQaUPT.utils import navigate_menu
    
    navigate_menu(
        driver,
        menu_items={"Inicio": "http://161.132.50.153/"},
        base_url="http://161.132.50.153/eventos"
    )
    

Mejoras Técnicas

1. Pruebas Paralelas Mejoradas

  • Ejecución de pruebas en paralelo utilizando pytest-xdist.
  • Configuración predeterminada: 3 procesos paralelos.

2. Compatibilidad con Frameworks Modernos

  • Las funciones ahora manejan casos dinámicos y asíncronos típicos de frameworks como React, Angular y Vue.js.

3. Reportes Detallados con Allure

  • Los resultados de las pruebas se generan en el formato allure-results, listos para ser visualizados con Allure.

Cambios Internos

1. Fixture Parametrizada en conftest.py

  • La fixture driver ahora soporta múltiples navegadores (Chrome, Firefox y Edge).

2. Comando ejecutar_pruebas Mejorado

  • Soporte para ejecutar pruebas paralelas en múltiples navegadores.

Documentación Actualizada

  • El archivo README.md incluye ejemplos de las nuevas funciones reutilizables.
  • Instrucciones detalladas para configurar Selenium Grid con el archivo docker-compose.yml.

Estructura Sugerida del Proyecto

Nombre_De_tu_carpeta
|
|---Carpeta_"tests"
|
|---docker-compose.yml

Instalacion

Requisitos Previos

  1. Tener instalado Python 3.8 o superior.
  2. Instalar pip (administrador de paquetes de Python).
  3. Tener Selenium Grid configurado y en ejecucion (opcional para pruebas distribuidas).

Instalacion del Paquete

  1. Instala el paquete desde PyPI:

    pip install TeamWebQaUPT
    
  2. 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:

  1. Instala Allure:

    brew install allure  # En macOS
    sudo apt install allure  # En Linux
    

    Instrucciones de instalacion para Windows.

  2. 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

  1. Levanta el entorno Selenium Grid:

    docker-compose up -d
    
  2. Ejecuta las pruebas en paralelo:

    pytest -n 3 --alluredir=allure-results
    

Licencia

Este proyecto esta licenciado bajo la Licencia MIT. Consulta el archivo LICENSE para mas detalles.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

teamwebqaupt-1.1.16.tar.gz (17.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

TeamWebQaUPT-1.1.16-py3-none-any.whl (21.5 kB view details)

Uploaded Python 3

File details

Details for the file teamwebqaupt-1.1.16.tar.gz.

File metadata

  • Download URL: teamwebqaupt-1.1.16.tar.gz
  • Upload date:
  • Size: 17.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for teamwebqaupt-1.1.16.tar.gz
Algorithm Hash digest
SHA256 47165c82879c0e156face5efbaadf196a240fac508a55540a965d1c9879ffe74
MD5 39279f211e63303278dfe315c9c77eed
BLAKE2b-256 abddf978565470b403c7ac11e1a6868fce2dd0e81c1cf709ad009f10cb49bef9

See more details on using hashes here.

File details

Details for the file TeamWebQaUPT-1.1.16-py3-none-any.whl.

File metadata

  • Download URL: TeamWebQaUPT-1.1.16-py3-none-any.whl
  • Upload date:
  • Size: 21.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for TeamWebQaUPT-1.1.16-py3-none-any.whl
Algorithm Hash digest
SHA256 5a95b59ac4fe5ce1fee7cfc18e1a1373680389d10e590a467d47b891f31c788e
MD5 ced0806e3be2cb063910f56589d617e7
BLAKE2b-256 282fd26e847103265021a0d7bee6032afc348721dd1d8fac1cc6da7d23d4f31f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page