Skip to content

ManfredAriel91122/proyecto-monkey-base

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cypress Random Tester (Monkey)

Este repositorio contiene el código para un monkey aleatorio desarrollado utilizando Cypress, un ejecutor de pruebas End to End construido sobre JavaScript. Usamos esta tecnología debido a la facilidad para gestionar páginas web en una variedad de navegadores, incluyendo Chrome, Canary, Edge, Electron, etc., y su funcionalidad de grabar y reproducir. La idea del primer monkey es realizar una prueba completamente aleatoria en una aplicación web, inspirado en un monkey similar, el Android Monkey. El segundo monkey existe debido a la alta tasa de errores y la baja probabilidad de obtener eventos que cambien el estado de la aplicación del monkey Monkey.

Este repositorio está basado en la implementación de TheSoftwareDesignLab/monkey-cypress.

Requisitos

  • Node.js (v22 o superior). Recomendamos usar lts/jod.
  • npm para la gestión de dependencias.

Cómo ejecutar

Para usar el monkey, debes seguir estos pasos:

  • Instalar los módulos requeridos

    Desde la raíz del repositorio:

    npm run monkey:install
    npm run monkey:prepare

    O bien, desde el directorio del módulo:

    # using npm
    npm install
    npm run prepare
  • Configurar los parámetros deseados: La carpeta raíz del módulo contiene el archivo de configuración de Cypress (cypress.config.js), que incluye los parámetros del monkey aleatorio.

    El campo baseUrl debe apuntar a la instancia de Ghost que deseas probar. Por defecto está configurado como http://localhost:2368, que corresponde a una instancia local. Actualiza este valor con la URL de tu entorno.

    const { defineConfig } = require("cypress");
    
    module.exports = defineConfig({
      // ...
      e2e: {
        // ...
        baseUrl: "https://www.google.com/",
      },
      env: {
        seed: 0xf1ae533d, // Test seed intended to allow for consistent values in tests
        delay: 1000, // Delay between action executions
    
        actions: {
          click: 0, // Hovers and clicks (single, double, right) on a random position
          scroll: 0, // srolls (horizontal and verticall)
          keypress: 0, // alphanumeric and special keys
          viewport: 0, // Change in viewports and orientation
          navigation: 0, // reload, go back, go forward
    
          smartClick: 0, // Hovers and clicks (single, double, right) on clickable elements
          smartCleanup: 0, // Clears inputs, cookies and local storage
          smartInput: 0, // Fills input tags with fake data (multi-character)
        },
      },
      // ...
    });
  • Ejecutar el monkey: Los comandos para ejecutar las pruebas deben ejecutarse desde la raíz del repositorio.

    # Con interfaz gráfica
    npm run monkey:ui
    # Modo headless
    npm run monkey:test

    Nota: El navegador predeterminado es Electron 78 en modo headless. Para probar con otro navegador, agrega la opción --browser <nombre-o-ruta-del-navegador> al comando de ejecución, indicando cuál de los navegadores soportados deseas usar.

Configuración

Después de evaluar una serie de posibles eventos, definimos las siguientes 5 categorías básicas en las que los eventos podrían agruparse:

  • Eventos de Clic Aleatorio: Clic izquierdo, derecho o doble clic, así como desplazamientos (mouseover) realizados a un elemento desde una posición aleatoria.
  • Eventos de Desplazamiento: Desplazar la página hacia arriba, abajo, a la izquierda o a la derecha.
  • Eventos de Teclado: Introducir un carácter (alfanumérico) o un carácter especial (Enter, Supr, Esc, Backspace, Flechas) con modificadores (Shift, Alt o Ctrl) dentro de un elemento enfocado. Es equivalente a presionar una tecla del teclado al enfocar un elemento.
  • Eventos de Navegación de Página: Navegación típica que un usuario podría realizar, como ir a la página anterior o a la siguiente en la pila de navegación.
  • Eventos del Navegador: Eventos que cambian la configuración del navegador, como cambiar el tamaño de la ventana.

Adicionalmente, hay 3 categorías más inteligentes que pueden incluirse en las ejecuciones:

  • Eventos de Clic Aleatorio Inteligente: Clic izquierdo, derecho o doble clic, así como desplazamientos (mouseover) realizados a un elemento clickeable (<a>, <button>, <input>).
  • Eventos de Limpieza Inteligente: Eventos que limpian la configuración del navegador (cookies, almacenamiento local) o limpian un campo <input>.
  • Entrada Inteligente: Introduce diferentes tipos de valores (frases, correos electrónicos, contraseñas, fechas, números) en un campo <input> dependiendo de su tipo.

Reportes

El monkey está configurado para usar Mochawesome como herramienta de reporte. Por defecto, el reporte contendrá la secuencia de eventos intentados que se ejecutaron y un video de la ejecución.

Note

  • El reporte solo se genera para ejecuciones en modo headless.
  • Para ejecuciones largas, el video puede deshabilitarse en la configuración de Cypress (video: false), o la compresión puede modificarse para reducir el tamaño del archivo (videoCompression).

About

Repositorio base para el uso Pruebas De Reconocimiento (Monkey)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 100.0%