Skip to content

Commit 41157d1

Browse files
Merge pull request #2 from f2x-flypass/feature/abolanos_refactorizacion_mitte
Feature/abolanos refactorizacion mitte
2 parents e4181f1 + 00b9169 commit 41157d1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+1180
-1796
lines changed

.github/workflows/main.yml

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
# Workflow para ejecutar pruebas E2E de API con Cypress y generar reportes Allure
2+
name: E2E API Testing execution
3+
4+
# Define cuándo se ejecuta este workflow
5+
on:
6+
push:
7+
branches:
8+
- main # Se ejecuta en push a la rama main
9+
- feature/** # Se ejecuta en push a cualquier rama que empiece con feature/
10+
workflow_dispatch:
11+
# Permisos necesarios para el workflow
12+
permissions:
13+
contents: write
14+
pages: write
15+
id-token: write
16+
17+
jobs:
18+
cypress-test-install:
19+
runs-on: ubuntu-latest
20+
steps:
21+
# Paso 1: Descarga el código del repositorio
22+
- name: Checkout
23+
uses: actions/checkout@v4
24+
25+
# Paso 2:Instala y configura la VPN FortiClient
26+
# Necesario para acceder a recursos internos durante las pruebas
27+
- name: Forticlient Installation
28+
run: |
29+
sudo apt update && sudo apt install -y openconnect
30+
echo "${{ secrets.VPN_PWD }}" | sudo openconnect -u ${{ secrets.VPN_USER }} --passwd-on-stdin --protocol=fortinet ${{ secrets.VPN_HOST }}:${{ secrets.VPN_PORT }} --servercert ${{ secrets.VPN_CERT }} &
31+
32+
# Paso 3: Ejecuta las pruebas de Cypress
33+
- name: Cypress tests run
34+
id: cypress-tests
35+
continue-on-error: true
36+
uses: cypress-io/github-action@v6
37+
with:
38+
working-directory: ./
39+
env:
40+
# Variables de entorno necesarias para las pruebas
41+
DB_USER: ${{secrets.DB_USER }}
42+
DB_PASSWORD: ${{secrets.DB_PASSWORD }}
43+
DB_CONNECT_STRING: ${{secrets.DB_CONNECT_STRING }}
44+
COGNITO_USERNAME: ${{secrets.COGNITO_USERNAME }}
45+
COGNITO_PASSWORD: ${{secrets.COGNITO_PASSWORD }}
46+
COGNITO_CLIENT_ID: ${{secrets.COGNITO_CLIENT_ID }}
47+
48+
# Paso 4: Genera el reporte HTML de Allure
49+
# Se ejecuta siempre, incluso si las pruebas fallan
50+
- name: Generate Allure Report
51+
if: always()
52+
run: npm run allure:report
53+
54+
# Paso 5: Sube el reporte HTML como artifact descargable
55+
# Permite descargar el reporte desde la pestaña Actions de GitHub
56+
- name: Upload Allure Report as Artifact
57+
if: always()
58+
uses: actions/upload-artifact@v4
59+
with:
60+
name: allure-report
61+
path: allure-report/
62+
retention-days: 30 # Mantiene el artifact por 30 días
63+
64+
# Paso 6: Sube los resultados raw de Allure como artifact
65+
# Útil para regenerar reportes o análisis posterior
66+
- name: Upload Allure Results
67+
if: always()
68+
uses: actions/upload-artifact@v4
69+
with:
70+
name: allure-results
71+
path: allure-results/
72+
retention-days: 30
73+
74+
# Paso 7: Despliega el reporte a GitHub Pages
75+
# Publica el reporte en una URL pública accesible desde el navegador
76+
# Nota: Requiere configuración inicial de GitHub Pages por un administrador
77+
- name: Deploy Allure Report to GitHub Pages
78+
if: always()
79+
uses: peaceiris/actions-gh-pages@v3
80+
with:
81+
github_token: ${{ secrets.GITHUB_TOKEN }}
82+
publish_dir: ./allure-report # Directorio a publicar
83+
publish_branch: gh-pages # Rama donde se publica el contenido
84+
keep_files: false # Sobrescribe archivos anteriores
85+
86+
# Paso 8: Marca el job como fallido si las pruebas fallaron
87+
# Esto asegura que el workflow muestre el estado correcto en GitHub
88+
- name: Fail job if tests failed
89+
if: steps.cypress-tests.outcome == 'failure'
90+
run: exit 1

.gitignore

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,16 @@
22
*.env
33
## librerías del proyecto
44
node_modules/
5+
/jsonlogs
6+
/reports
57
## archivos autogenerados
68
.DS_Store
79
cypress/videos
810
cypress/screenshots
9-
cypress/reports
11+
cypress/reports
12+
cypress/downloads/
13+
cypress/sessions/
14+
## Allure reports
15+
allure-results/
16+
allure-report/
17+
screenshots

.idea/.gitignore

Lines changed: 0 additions & 3 deletions
This file was deleted.

.idea/misc.xml

Lines changed: 0 additions & 6 deletions
This file was deleted.

.idea/modules.xml

Lines changed: 0 additions & 8 deletions
This file was deleted.

.idea/testing-api-mitte.iml

Lines changed: 0 additions & 9 deletions
This file was deleted.

.idea/vcs.xml

Lines changed: 0 additions & 6 deletions
This file was deleted.

DocumentacionPruebas.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
## Documentación de pruebas automatizadas parqueadero Mite
2+
3+
## Introducción
4+
En estas pruebas se está validando el correcto funcionamiento del parqueadero Mite. Se están creando diferentes escenarios como entradas, salidas con entrada, salidas sin entrada y salidas con cobro cero del parqueadero.
5+
6+
7+
## Escenarios de prueba
8+
### Crear Entrada
9+
* Validar la entrada exitosa de un vehículo a un parqueadero mite con el servicio de Flypass
10+
```
11+
Dado que un vehículo se encuentra en la talanquera
12+
Cuando desea ingresar a un parqueadero de mite
13+
Entonces el vehículo ingresa correctamente al parqueadero con el servicio de Flypass
14+
```
15+
16+
* Validar la entrada no exitosa de un vehículo a un parqueadero MITE con el servicio de Flypass, cuando ya existe una entrada con datos exactamente iguales registrada en el sistema.
17+
```
18+
Dado que un vehículo se encuentra en la talanquera
19+
Cuando desea ingresar a un parqueadero de mite
20+
Entonces el vehículo no puede ingresar al parqueadero con el servicio de Flypass
21+
```
22+
23+
### Salida sin entrada
24+
* Validar la salida exitosa de un vehículo de un parqueadero MITE con el servicio de Flypass sin haber registrado una entrada
25+
```
26+
Dado que un vehículo no realizó una entrada con el servicio de flypass a un parqueadero de mite
27+
Cuando desea realizar una salida de un parqueadero de mite con el servicio de Flypass
28+
Entonces el vehículo sale correctamente de parqueadero con el servicio de Flypass sin entrada
29+
```
30+
31+
### Salida con entrada
32+
* Validar la salida exitosa de un vehículo que tuvo una entrada exitosa a un parqueadero MITE con el servicio de Flypass
33+
```
34+
Dado que un vehículo realizó un entrada exitosamente a un parqueadero de mite
35+
Cuando desea realizar una salida de un parqueadero de mite
36+
Entonces el vehículo sale correctamente de parqueadero con el servicio de Flypass
37+
```
38+
### Salida con cobro cero
39+
* Validar la salida sin entrada de un vehículo con cobro igual a 0 de un parqueadero mite con el servicio de Flypass
40+
```
41+
Dado que un vehículo realizó una entrada con el servicio de flypass a un parqueadero de mite
42+
Cuando desea realizar una salida de un parqueadero de mite y el cobro es 0
43+
Entonces el vehículo sale correctamente de parqueadero
44+
```

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ O alternativamente puedes usar el comando personalizado.
3535
```
3636
Esto ejecutará las pruebas automáticamente y mostrará el resultado en la terminal.
3737

38+
3. Para ejecutar las pruebas con Allure habilitado:
39+
```bash
40+
npm npm run test:report
41+
```
42+
3843
## Cambio de Variables de Entorno
3944

4045
El archivo `.env` contiene las variables de entorno necesarias para la conexión a la base de datos Oracle. Para cambiar estas variables, sigue estos pasos:
@@ -91,4 +96,5 @@ Queremos validar la obligatoriedad del cumplimiento de su esquema, donde id, y t
9196

9297
Allí es donde entra en juego la validación que nos permite realizar la librería `ajv` respecto al tipo de datos y el cumplimiento del contrato (o esquema) de la respuesta obtenida.
9398

94-
Puedes hacer uso de herramientas que nos permitan crear los esquemas de forma automática como por ejemplo: https://www.liquid-technologies.com/online-json-to-schema-converter
99+
Puedes hacer uso de herramientas que nos permitan crear los esquemas de forma automática como por ejemplo: https://www.liquid-technologies.com/online-json-to-schema-converter
100+

cypress.config.js

Lines changed: 18 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ const { defineConfig } = require("cypress");
22
const oracledb = require("oracledb");
33
//const mssql = require('mssql');
44
require("dotenv").config();
5-
const { beforeRunHook, afterRunHook } = require('cypress-mochawesome-reporter/lib');
65
const { getTemporaryCredentials } = require('./cypress/support/utils/AWSConnection.js');
76

87

@@ -15,19 +14,18 @@ const connection = {
1514

1615

1716
// Establece la función para realizar consultas a la base de datos Oracle
18-
function queryDB(query) {
17+
function queryDB(query, values = []) {
1918
return new Promise((resolve, reject) => {
2019
oracledb.getConnection(connection, (error, connection) => {
2120
if (error) {
2221
reject(error);
2322
} else {
24-
connection.execute(query, (error, result) => {
23+
connection.execute(query, values, (error, result) => {
2524
connection.close(() => {
2625
if (error) {
2726
reject(error);
2827
} else {
2928
if (result.rows) {
30-
// Procesa el resultado para devolverlo como clave-valor (para consultas SELECT)
3129
const metaData = result.metaData || [];
3230
const processedResult = result.rows.map((row) => {
3331
const obj = {};
@@ -38,10 +36,7 @@ function queryDB(query) {
3836
});
3937
resolve(processedResult);
4038
} else {
41-
// Devuelve información sobre la cantidad de filas afectadas (para UPDATE y DELETE)
42-
resolve({
43-
rowsAffected: result.rowsAffected,
44-
});
39+
resolve({ rowsAffected: result.rowsAffected });
4540
}
4641
}
4742
});
@@ -51,28 +46,28 @@ function queryDB(query) {
5146
});
5247
}
5348

54-
55-
5649
module.exports = defineConfig({
5750
// Ajusta el tiempo de espera predeterminado en milisegundos
5851
defaultCommandTimeout: 5000,
5952
pageLoadTimeout: 10000,
60-
reporter: 'cypress-mochawesome-reporter',
61-
reporterOptions: {
62-
charts: true,
63-
reportPageTitle: 'custom-title',
64-
embeddedScreenshots: true,
65-
inlineAssets: true,
66-
saveAllAttempts: false,
67-
},
6853
e2e: {
6954
// Al iniciar la prueba esta será la url base
70-
baseUrl: "https://test.security.flypass.co/flypass",
55+
baseUrl: "https://cert-providers.flypass.com.co/",
56+
env:{
57+
allure: true,
58+
allureReuseAfterSpec: true,
59+
},
7160
setupNodeEvents(on, config) {
72-
require('cypress-mochawesome-reporter/plugin')(on);
61+
const allureWriter = require('@shelex/cypress-allure-plugin/writer');
62+
allureWriter(on, config)
63+
64+
config.env.COGNITO_USERNAME = process.env.COGNITO_USERNAME;
65+
config.env.COGNITO_PASSWORD = process.env.COGNITO_PASSWORD;
66+
config.env.COGNITO_CLIENT_ID = process.env.COGNITO_CLIENT_ID;
67+
7368
on("task", {
74-
queryDatabase({ query }) {
75-
return queryDB(query);
69+
queryDatabase({ query,values }) {
70+
return queryDB(query, values);
7671
},
7772
async awsSetTemporaryCredentials() {
7873
const awsCredentials = {
@@ -84,14 +79,7 @@ module.exports = defineConfig({
8479
return credentials;
8580
}
8681
});
87-
on('before:run', async (details) => {
88-
console.log('override before:run');
89-
await beforeRunHook(details);
90-
});
91-
on('after:run', async () => {
92-
console.log('override after:run');
93-
await afterRunHook();
94-
});
82+
return config;
9583
},
9684
},
9785
});

0 commit comments

Comments
 (0)