/upex-cypress-orange

GX Repo Level-2: Sprint Actual #16✔ | SUT: "OrangeHRM" con Cypress + Cucumber

Primary LanguageJavaScriptMIT LicenseMIT

CYPEX L2 ORANGE-HRM

🧪Testing Automation - Cypress 12👨🏻‍🚀 + Cucumber

UPEX's Banners (linkedin) (1)

Cypress es el MEJOR FRAMEWORK DE AUTOMATION E2E actualmente! No hay rival! Además de que es el framework más amigable para aprender! Aunque no es el único E2E en el mercado, y tampoco es el más usado como sí lo es Selenium. Pero es el MÁS POPULAR!

Cypress es un Framework de Automatización de Next Generation construido para web modernas. Esto es im simple proyecto el cual puedes usarlo para comenzar tu viaje por la Galaxia de la Automatización!

NUEVA ESTRUCTURA DE PROYECTO

Ahora el Directorio de UPEX Galaxy, será mucho más simple.

  • Para la carpeta Tests:
    • Cada Suite de US, deberá ser guardado en una carpeta del Componente correspondiente del SUT (ej: ShoppingCart),
    • y la nomenclatura de archivos cambia a ser más directa: GX-<ID>-<NombreCortoDeLaStory> como ejemplo: "GX-5-AgregarItemAlCart.cy.js".
  • En cuanto a la carpeta cucumber-tests:
    • Tendrán una mejor distribución de arhcivos; por carpetas separadas: Todos los archivos .feature dentro de la carpeta "Gherkin" y los archivos .js dentro de "stepDefinitions" como tiene que ser.
    • La Nomenclatura de éste tipo de prueba se mantiene igual al normal (la misma nomenclatura mencionada arriba). image

CÓMO EMPEZAR:

  1. Clona el Proyecto:
    git clone https://github.com/upex-galaxy/L2-cypex-orange.git
    

  1. Instala todas las dependencias:
    npm i
    
    • (la letra i es de install y --legacy-peer-deps es para instalar diferentes dependencias necesarias)

  1. Para abrir la App de Cypress, corre el comando:
    npm test
    
    • también puede usar npx cypress open (ya que en Package.json tenemos la variable "test" como el "cypress open") para abrir Cypress!

  1. Para correr pruebas y generar Reportes XML y HTML, ejecuta:
    npm run file */**/<filename>
    
    • donde la variable "file" es: cypress run --browser chrome --reporter cypress-multi-reporters --reporter-options configFile=jsconfig.json --record --key {key} --spec, cuyo atajo es para que podamos correr las pruebas de un directorio que especifiquemos, usando el navegador de Chrome, generando 1 Reporte XML para importar a Jira y otro para generar un hermoso html, y adicionalmente actualizar el Cypress Dashboard del Proyecto.

  1. Para generar el archivo JSON Cucumber y Reporte HTML,
    • Primero Descarga el Formatter según tu OS:
    • Luego mueve el archivo descargado a la carpeta cucumber-formatter de este proyecto en tu repositorio local
    • y Sigue estas instrucciones de instalación: github.com/cucumber/json-formatter
    • Modifica el archivo: .cypress-cucumber-preprocessorrc.json, para cambiar el nombre del formatter:
      • Renombra: cucumber-json-formatter.exe por cucumber-json-formatter si usas Linux o MacOs.
    • Luego podrás generar archivo JSON de Cucumber para Importar las Pruebas a Jira.
    • Para poder generar archivos HTML de Cucumber luego de correr las pruebas, Ejecuta:
      npm run report:cucumber
      
      • donde la variable "report:cucumber" es igual a: node ./cucumber-html-report.js cuyo atajo es para generar el Reporte Cucumber index.html en la carpeta reports/cucumber-html-report para evaluar TODOS el Resultado de Prueba Cucumber.

  1. Para correr una REGRESIÓN y generar un solo Reporte HTML global, ejecuta:
    npm run regression:report
    
    Luego ejecuta estos comandos, uno por uno:
    npm run report:json
    npm run report:html
    
    • Gracias a esto se va a generar un único Reporte mochawesome HTML para evaluar TODOS los Resultados de Prueba de la Regresión.

  1. AHORA CON CYPRESS DASHBOARD, puedes ver todas las ejecuciones y resultados de prueba del proyecto! Visita: CYPRESS DASHBOARD

PLAN DE PRUEBA: ESTRATEGIA Y DISEÑO

🚩LEVEL ONE (L1):

  1. Perfecta Nomenclatura del nombre de Archivo de prueba: {GX-ID}-{StoryShortName}.{extensionFile} ej: GX-50-AgregarItemsAlCart.cy.js

  2. Archivo de Prueba dentro del directorio correcto; dentro de la carpeta del Componente correspondiente, ejemplo: cypress/e2e/Tests/ComponentName/GX-1-StoryTestSuite.cy.js.

  3. Buen diseño del Test Suite elaborado (Esto implica que se vean bien el código en general, que al menos funcione).

  4. Tener el Markdown de la US en la carpeta Test-Plan en su correspondiente carpeta Sprint, ejemplo: cypress/test-plan/in-sprint/sprint-9/userStory.md. Esto implica que cada vez que se trabaje en un Sprint nuevo, se debería crear la carpeta correspondiente "sprint-" + número del sprint, como se muestra en el ejemplo arriba.

  5. NO usar fixture como PageObjectModel sino como Data-Entry (es decir, no agarrar elementos Web por fixtures, sino usar el Fixture para iterar Data o reutilizar variables).

    • Antes en GX se usaba Fixture como POM, porque era fácil de aprender, pero hoy en día las entrevistas técnicas piden PageObject Model de la manera tradicional, sin usar Commands (Los Commands se usan para hacer generar algoritmos para múltiples suites o para generar precondiciones repetitivas).
  6. En caso de usar Fixtures: Chequear que el archivo ".json" esté dentro de la carpeta correspondiente al componente, ejemplo: cypress/fixtures/data/example.json.

  7. En caso de usar PageObjectModel: Chequear que el "Page.js" esté dentro de la carpeta "pages" en la de "support", ejemplo: cypress/support/pages/example.Page.js.

  8. En caso de usar Commands: Asegurarse de aplicarlo para crear pasos de Precondiciones o Scripts de Algoritmos complejos (NO USAR como Pasos de Acción, eso sería tarea para el POM).

  9. En caso de usar el CI Pipeline: Usar únicamente el archivo predeterminado del proyecto "CI-buildTest.yml", y asegurarse de modificarlo correctamente (Solo cambiar el Path del Test Suite y el parámetro de Importación TX para Jira) y no borrar o cambiar nada más, que funcione y pase los Checks.

  10. En caso de usar Cucumber: Chequear que el archivo Gherkin (.feature) y los StepDefinitions (.js) estén correctamente diseñados y que la Ejecución en CI funcione y pase los Checks.

    Challenge L2: Si se realiza una tarea completa con POM, CI y Cucumber correctamente, es motivo para subir a Nivel 2 automáticamente mediante un Challenge (una nueva US asignada).
    

🚩LEVEL TWO (L2):

  1. Es obligatorio realizar TODO lo anterior declarado, pero adicionalmente:
    • Tener MUCHO mejor código en los Scripts.
  2. Obligatoriamente, realizar:
    • PageObjectModel
    • Commands (en caso de Precondiciones)
    • CI Pipeline
  3. En caso de ser necesario, realizar:
    • Commands (por Algoritmos)
    • Fixture (por Data entries)
    • Variables de Entorno (Cypress.env)
  4. En caso especial (dependiendo de la US) se puede intentar aplicar:
    • Cucumber
  • Chequear que todas estas 4 tareas estén bien hechas.

🚩LEVEL THREE (L3):

  1. Obligatoriamente, realizar todo lo que está correcto (L1 y L2), sin saltarse ninguna instrucción debida.

  2. El código tiene que ser bueno, refinado, y con buenas prácticas; el Reviewer de los L3 es más estricto.

  3. Elaborar un Plan de Prueba Funcional en caso de que la Historia de Usuario lo necesite. Agregar dicho archivo Markdown en el directorio de Planes de Pruebas. Posibles pruebas: - Integration Testing (API) - E2E Testing (API + UI) - Visual Testing (Applitools, Percy, etc.) - Database Testing (SQL)

  4. Realizar o Actualizar un Plan de Prueba de Smoke, Sanity o Regression dependiendo de la tarea asignada como L3.

  5. Crear un nuevo Pipeline de CI para ejecutar, importar a Jira y Generar Reporte HTML, para las pruebas de Smoke, Sanity o Regression dependiendo de la tarea asignada como L3

  6. Libertad para aplicar nuevas estrategias o dependencias para la realización del Plan de Pruebas. Esto implica investigación de acuerdo a la realización de nuevas pruebas.


🧙🏻‍♂️APRENDE Y GANA EXPERIENCIA COMO QA AUTOMATION EN UPEX GALAXY🚀

🚩ENTRA EN UPEX DOCUMENTATION Y BUSCA LAS GUÍAS DE CYPRESS AL GRANO!


Algunos Artículos de Cypress que puede interesarte: