Documentación de k0lmena Automation Framework
Todo lo necesario para instalar, configurar y usar el framework: front, API, mobile, performance, reportes y auto-healing.
Qué es y qué incluye
k0lmena es un framework de automatización de QA que reúne, en un mismo repositorio y con una misma sintaxis (Gherkin/BDD + TypeScript), cuatro tipos de pruebas:
| Tipo | Motor | Descripción |
|---|---|---|
| Front / E2E | Playwright + Cucumber | Pruebas de interfaz sobre Chromium, Firefox y WebKit. |
| API | Axios + Cucumber | Pruebas de endpoints HTTP con validación de respuestas. |
| Mobile | WebdriverIO + Appium | Pruebas sobre apps móviles (local/Appium o BrowserStack). |
| Performance | Artillery + k6 | Pruebas de carga, estrés, soak y spike (HTTP y browser). |
Además incorpora auto-healing de locators, reportes HTML por cada tipo de prueba, herramientas de apoyo (generador de locators, tester de enlaces rotos, grabador y modo debug) y captura automática de screenshots, traces y logs ante fallos.
Tecnologías
- TypeScript
- Playwright (E2E, tracing y codegen)
- Cucumber (
@cucumber/cucumber, BDD/Gherkin) - Axios (API)
- WebdriverIO + Appium (mobile)
- Artillery y k6 (performance)
- Cheerio (parsing de HTML en herramientas)
Estructura del proyecto
src/
├── front-test/ # E2E (UI): Playwright + Cucumber
│ ├── features/ # Gherkin scenarios (.feature)
│ ├── steps/ # Step definitions
│ ├── locators/ # Element selectors
│ ├── config/ # Config (BASEURL from .env)
│ ├── hooks/ # Browser setup, screenshots, traces
│ ├── utils/ # interactions, validations, keys, types
│ └── auto-healing/ # Locator history
├── api-test/ # features/ + tests/ (axios)
├── mobile-test/ # apps/ features/ steps/ locators/ support/
├── performance-test/ # artillery/ + k6/
├── reports/ # front/ api/ mobile/ performance/
└── tools/ # crawler/ link-tester/ generator/ debug/Archivos raíz relevantes: package.json, cucumber.js (perfiles), playwright.config.ts, tsconfig.json, .example.env.
Requisitos previos
- Node.js (LTS recomendado): nodejs.org
- Visual Studio Code (opcional)
- Para mobile: Appium y un emulador o dispositivo (o una cuenta de BrowserStack).
- Para performance con k6: el binario se instala con el script de bootstrap.
Instalación
git clone https://github.com/underc0delabs/k0lmena.git
cd k0lmena
npm install # dependencias
npx playwright install # navegadores de Playwright
cp .example.env .env # archivo de entornoDespués editá el .env con tus valores.
Configuración (variables de entorno)
General / Front
| Variable | Default | Descripción |
|---|---|---|
BASEURL | — | URL del sitio bajo prueba (front, crawler, link-tester, codegen). |
BROWSER | vacío | chromium, firefox o webkit. Vacío ejecuta los tres. |
PARALLEL | vacío | Ejecución en paralelo de Cucumber (front y API). |
HEADLESS | true | Ejecutar sin ventana. |
SLOWMO | 0 | Milisegundos de retardo entre acciones. |
VIEWPORT_WIDTH | 1366 | Ancho del viewport. |
VIEWPORT_HEIGHT | 768 | Alto del viewport. |
LOCALE | es-AR | Locale del navegador. |
TIMEZONE | America/Argentina/Mendoza | Zona horaria del navegador. |
TRACE | off | Traces de Playwright: off, on u on-failure. |
REPORT_DIR | src/reports/front | Carpeta de screenshots y traces. |
API
| Variable | Default | Descripción |
|---|---|---|
API_BASEURL | https://petstore.swagger.io | URL base de la API bajo prueba. Se carga desde .env.api. |
Auto-healing
| Variable | Default | Descripción |
|---|---|---|
K0LMENA_AUTO_HEALING | off | Modo: off, learn, heal u on. |
K0LMENA_AUTO_HEALING_FLUSH | debounced | Estrategia de escritura: debounced, immediate u onEnd. |
K0LMENA_AUTO_HEALING_WRITE_PRETTY | 0 | 1 = JSON legible. |
K0LMENA_AUTO_HEALING_LOG | 0 | 1 = logs verbosos. |
K0LMENA_AUTO_HEALING_CONSOLE | 1 | Imprime una línea cuando un locator se cura. |
K0LMENA_AUTO_HEALING_HISTORY_PATH | .k0lmena/auto-healing/front-history.json | Ruta del historial. |
K0LMENA_AUTO_HEALING_MAX_CANDIDATES | 12 | Máximo de candidatos por locator. |
K0LMENA_AUTO_HEALING_SNAPSHOT_TIMEOUT_MS | 250 | Timeout del snapshot del DOM al aprender. |
K0LMENA_AUTO_HEALING_CANDIDATE_TIMEOUT_MS | 1500 | Timeout al validar cada candidato. |
Front / E2E (UI)
npm run test # escenarios @Smoke, con 1 reintento
npm run allTests # todos los testsLos perfiles de Cucumber están en cucumber.js. Podés controlar navegador y modo por variables:
BROWSER=chromium HEADLESS=false SLOWMO=300 npm run test
TRACE=on-failure npm run testEjecución en paralelo
PARALLEL | Comportamiento |
|---|---|
vacío / 0 / 1 / false / off / no | Secuencial (por defecto). |
on / true / yes | Auto: un worker por CPU. |
N (> 1) | N workers en paralelo. |
PARALLEL=4 npm run test
PARALLEL=on npm run apiTest- Cada worker es un proceso independiente; el auto-healing escribe un historial por worker para evitar colisiones.
- El perfil
debugcorre siempre en secuencial. - El paralelismo es por escenario: para máxima velocidad conviene fijar un único navegador por corrida.
API
npm run apiTest # escenarios etiquetados @APIDefiní API_BASEURL en .env.api. Los steps viven en src/api-test/tests/.
Mobile
npm run mobile # WebdriverIO + AppiumLa configuración está en src/mobile-test/support/wdio.conf.ts. Por defecto corre contra Appium local (localhost:4723); incluye un bloque comentado para BrowserStack con BROWSERSTACK_USER y BROWSERSTACK_KEY.
Performance
Artillery
npm run load # test de carga, genera report.jsonk6
npm run bootstrap:k6 # instala el binario la primera vez
npm run k6:build # compila los escenarios TypeScript
npm run k6::smoke
npm run k6:stress
npm run k6:soak
npm run k6:spike
npm run k6:run:browserLos escenarios de k6 están en src/performance-test/k6/http/ y se compilan con esbuild a dist/.
Reportes
| Área | Comando | Descripción |
|---|---|---|
| Front | npm run report | Reporte HTML completo. |
| Front | npm run report-default | Reporte por defecto de Cucumber. |
| API | npm run api-report | Reporte de la suite de API. |
| Mobile | npm run mobile-report | Reporte de la suite mobile. |
| Performance | npm run load-report | Reporte HTML de Artillery. |
| Performance (cloud) | npm run load-report-cloud | Sube el reporte a Artillery Cloud. |
package.json.Ante un fallo en front, el framework adjunta screenshot, logs de consola del navegador y, si TRACE está activo, el trace de Playwright.
Auto-healing de locators
k0lmena puede recuperar locators que dejan de funcionar cuando la aplicación cambia. Funciona en dos fases:
- Learn: cada vez que una acción tiene éxito, guarda locators alternativos del elemento (data-testid, id, name, aria-label, rol, texto, clases) en un historial.
- Heal: si el locator original falla, prueba los candidatos guardados (rankeados por éxito histórico y página) hasta encontrar uno que funcione, y lo reporta.
| Modo | Comportamiento |
|---|---|
off | Desactivado (por defecto). |
learn | Solo aprende candidatos. |
heal | Solo cura con el historial existente. |
on | Aprende y cura (recomendado). |
K0LMENA_AUTO_HEALING=on npm run testCuando un locator se cura vas a ver en consola HEALED: <original> -> <candidato> y el evento queda adjunto en el reporte.
Herramientas
Todas usan BASEURL del .env, salvo que se indique otra cosa.
Crawler (generador de locators)
npm run crawler
npx ts-node src/tools/crawler/locators-generator.ts https://mi-sitio.comSalida: src/tools/crawler/output/locators-output.ts
Link tester
npm run link-tester # página base
npm run link-tester:full # todo el sitioRecord (Playwright codegen)
npm run record
npm run record:generatorDebug
npm run debugIntegración continua (CI)
El workflow .github/workflows/Tests.yaml corre en GitHub Actions (disparo manual) dentro del contenedor oficial de Playwright y ejecuta, en orden: instalación de dependencias y navegadores, front tests + reporte, API tests + reporte, performance (Artillery) + reporte, y publicación de los reportes como artifacts.
Cómo agregar un test nuevo
- Feature: creá o editá un
.featureensrc/front-test/features/. - Locators: agregá los selectores en
src/front-test/locators/. - Steps: implementalos en
src/front-test/steps/usando las funciones deutils/interactions.ts(getByPlaceholderAndFillIt,getElementByRoleAndClickIt,selectByLabel,click,fill). - Ejecutá con
npm run test(o etiquetá el escenario con@Smoke).
Las utilidades de interacción ya integran el auto-healing, así que tus steps se benefician sin código extra.
Referencia de scripts npm
| Script | Qué hace |
|---|---|
test | Front: escenarios @Smoke (perfil front, 1 reintento). |
allTests | Ejecuta todos los tests. |
report / report-default | Reporte front completo / por defecto de Cucumber. |
apiTest / api-report | Ejecuta / reporta la suite de API. |
mobile / mobile-report | Ejecuta / reporta la suite mobile. |
load / load-report / load-report-cloud | Performance con Artillery. |
bootstrap:k6 / k6:build | Instala k6 / compila los escenarios. |
k6::smoke · k6:stress · k6:soak · k6:spike · k6:run:browser | Escenarios de k6. |
crawler | Generador de locators (POM). |
link-tester / link-tester:full | Tester de enlaces e imágenes rotas. |
record / record:generator | Grabador de tests. |
debug | Front en modo debug. |
Video
Ver el video tutorial en YouTube · Canal de QARMY
Licencia y créditos
k0lmena Automation Framework es open source con licencia ISC. Es un proyecto de la comunidad QARMY y Underc0de.
¿Lo querés en tu empresa?
Lo instalamos, automatizamos tus flujos críticos y capacitamos a tu equipo.
Consultar por WhatsApp