Skip to content

YerlinMatu/ParkControl

Repository files navigation

ParkControl - Testing y Validaciones (Actividad U3 - BDD & AAA)

image
Maestría en Arquitectura de Software
Hecho por: Yerlinson Maturana Serna

image

ParkControl es un proyecto Node.js para administrar la operacion basica de un parqueadero publico en Colombia: ingresos, salidas, disponibilidad por tipo de vehiculo, liquidacion, factura en COP e historial reciente.

Funcionalidades

  • Registro de ingreso por placa, tipo de vehiculo y propietario opcional.
  • Control de cupos para automoviles, motocicletas y bicicletas.
  • Bloqueo de placas duplicadas con tiquete abierto.
  • Liquidacion por minutos, tarifa minima, tope diario e IVA del 19%.
  • Generacion de factura basica en pesos colombianos.
  • Dashboard web con ocupacion, tiquetes abiertos e historial.
  • Pruebas unitarias automatizadas con node:test.
  • Reporte de cobertura con --experimental-test-coverage.

Requisitos

  • Node.js 22 o superior.
  • Ejecutar npm install para instalar las dependencias de desarrollo, incluyendo Playwright.

Ejecucion

npm start

Luego abrir:

http://localhost:3000

Pruebas

npm test

Cobertura

npm run coverage

Pruebas de integracion

Las pruebas de integracion validan que dominio, calculo tarifario y persistencia JSON trabajen juntos. Cubren registro, recarga desde storage, liquidacion, factura persistida, bloqueo de duplicados, sobrecupo y consecutivos de factura.

npm run integration

Pruebas e2e de navegador

ParkControl incluye pruebas e2e reales con Playwright. Estas abren Chromium, interactuan con la interfaz, registran una entrada, liquidan una salida, validan la factura de tirilla en modal y comprueban mensajes de error visibles.

npm run e2e

Para ver el navegador durante la ejecucion:

npm run e2e:headed

Para una demostracion mas lenta y facil de ver, con navegador visible y pausa aproximada de 1.2 segundos entre acciones:

npm run e2e:demo

Resultado verificado:

image

npm test: tests 33, pass 33, fail 0
npm run coverage: src 100% lineas, 100% ramas, 100% funciones
npm run e2e: 2 passed

Integracion continua

El repositorio incluye GitHub Actions en .github/workflows/ci.yml. El pipeline se ejecuta en push, pull_request y manualmente con workflow_dispatch.

Checks del job principal:

npm test
npm run integration
npm run coverage
npm run e2e

Tambien hay un job de rendimiento que ejecuta npm run perf contra el servidor local y falla si algun escenario reporta errores.

Rendimiento y carga

La entrega de Unidad 5 incluye pruebas de rendimiento para los flujos principales de ParkControl.

Equipo Unidad 05:

  • Yerlinson Maturana Serna
  • Brayan Estif Calderon Gomez
  • Sadane Geronimo Miguel Santiago Acevedo Virgues
  • Julian Camilo Corredor Rojas
npm run perf

Este comando genera resultados en performance/results/:

  • performance-summary.json: metricas consolidadas.
  • performance-summary.md: tabla resumen.
  • performance-results.csv: muestras por solicitud.
  • throughput-chart.svg: grafica de throughput.

Tambien se incluye el plan JMeter performance/ParkControl_LoadTest.jmx y el reporte docs/reporte-rendimiento-carga.md.

Estructura

src/domain/              Reglas de negocio y calculo tarifario
src/server/              Servidor HTTP y utilidades API
src/storage/             Persistencia JSON local
public/                  Interfaz web
test/                    Pruebas unitarias, integracion e integracion HTTP
e2e/                     Pruebas e2e reales de navegador con Playwright
docs/                    Plan, trazabilidad y evidencia de pruebas
data/                    Archivo JSON generado por la aplicacion

Componentes principales

  • ParkingLot: administra cupos, tiquetes abiertos, cierres e historial.
  • tariffCalculator: normaliza placas, valida tipos de vehiculo y calcula cobros.
  • JsonStore: guarda y lee el estado del parqueadero en data/parking-lot.json.
  • app.js: expone API HTTP y sirve la interfaz web.

Factura de tirilla

Al liquidar una salida, ParkControl muestra una factura tipo tirilla con formato de recibo termico. El boton Imprimir tirilla abre una ventana de impresion optimizada para papel de 80 mm, incluyendo placa, tipo de vehiculo, entrada, salida, tiempo, subtotal, IVA y total.

Endpoints

  • GET /api/dashboard: ocupacion, tiquetes abiertos, historial y tarifas.
  • POST /api/entries: registra entrada.
  • POST /api/exits: liquida y cierra salida.

Ejemplo de entrada:

{
  "plate": "ABC123",
  "vehicleType": "car",
  "ownerName": "Ana Perez"
}

Ejemplo de salida:

{
  "plate": "ABC123"
}

About

ParkControl es un proyecto Node.js para administrar la operacion basica de un parqueadero publico en Colombia: ingresos, salidas, disponibilidad por tipo de vehiculo, liquidacion, factura en COP e historial reciente.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors