QA Automation Engineer · Proyectos propios con IA

Hola, soy
Kevin Nestico.

Testeo software crítico hace 8 años. Revelos es mi laboratorio personal: productos reales que construyo con IA y pruebo como si fueran a producción.

SCROLL
SOBRE MÍ

Quién soy

Soy QA Engineer con ocho años testeando software crítico en mercados de capitales, procesamiento de pagos y plataformas ERP/CRM. Construyo frameworks de automatización desde cero con Playwright y Cypress, y los ejecuto a diario con Jenkins y Docker para que las regresiones aparezcan horas después del commit, no el día del release.

Uso Claude como copiloto para acelerar el scaffolding, la generación de tests y el refactoring, pero la arquitectura es mía y reviso cada línea que llega al repositorio. Trabajo en español, inglés e italiano con equipos Agile distribuidos, hoy en remoto desde Italia.

Playwright Cypress JavaScript Python Page Object Model BDD / Gherkin Jenkins Docker Postman SQL Jira / Xray Claude Code
8+

Años en QA

4

Productos en producción

3

Idiomas: ES · EN · IT

Experiencia

Repay Corp. · PowDevs

2022 — hoy

QA Automation Engineer

Pagos y ERP. Migré la suite de API de Postman a Cypress, unificando API y UI en CI.

Telecom Argentina · Atos

2020 — 2022

QA Analyst

CRM integrado con Salesforce y flujos de portabilidad numérica bajo requisitos regulatorios.

Servicios Computables S.A.

2016 — 2020

QA Tester & Implementation Specialist

Software financiero e impositivo: testing de motores de cálculo contra normativa argentina, triage de defectos en Jira y soporte en implementaciones con clientes.

Freelance / Contract

Datalogic · Adentis

2025 — 2026

QA Automation Engineer

Suite de automatización desde cero con Playwright, BDD y POM, construida con Claude. Jenkins + Docker la ejecutaban a diario.

Euronext · Borsa Italiana · Hays

2024 — 2025

QA Automation Engineer

Testing de derivados y clearing. Tests en Playwright con aserciones en MariaDB, integrados al ciclo diario de clearing.

PROYECTOS

Lo que construí

Proyectos propios, publicados y funcionando. No son maquetas: puedes usarlos hoy.

Tabora logo Extensión Chrome

Tabora

Todos tus chats de IA en un solo lugar. Guarda, organiza y busca tus conversaciones de ChatGPT, Claude, Gemini, Perplexity y Grok.

Ver Tabora
ChordFlow logo App offline

ChordFlow

Un cancionero confiable para ensayos y shows en vivo: totalmente offline, rápido y sin distracciones.

Ver ChordFlow
Landing page

Amalfi Pastelería

Landing page para una pastelería: responsive, rápida y lista para publicar. Un ejemplo real de lo que puedo hacer para un negocio.

Ver la landing
Dashboard web

DatAR

La economía argentina en datos: dólar, inflación, tasas y reservas desde la API pública del BCRA. Fue mi proyecto final de Full Stack en PHP en EducacionIT; seis años después lo reconstruí con IA.

Ver DatAR
LO QUE HAGO

Del prompt al producto

Cuando empecé a usar IA para construir mis frameworks de testing, vi que el mismo método servía para algo más grande: llevar una idea hasta un producto que funciona de verdad.

Desarrollo con Claude como copiloto, pero las decisiones de arquitectura y la revisión de cada línea son mías. Y como vengo del QA, nada se publica sin pasar por pruebas: flujos felices, casos borde y regresión.

QA AUTOMATION

Automatización, en código

Dos frameworks de referencia en dos stacks distintos. Los construí con Claude como copiloto, y Claude también trabaja dentro de cada uno, diagnosticando las fallas.

Sauce Demo

Playwright · Python

Tests en Python y Playwright sobre la tienda demo de Sauce Labs: compra completa, carrito, ordenamiento y usuarios con bugs conocidos. Corren en Chromium, Firefox y WebKit en cada push.

kevindnestico / saucedemo-playwright-pytest
# tests/test_complete_purchase_full.py
    @pytest.mark.smoke
    def test_complete_purchase(inventory_page):
        # already logged in via storage_state
        cart = inventory_page.add_to_cart(BACKPACK).go_to_cart()
        cart.should_contain(BACKPACK)

        overview = (cart.checkout()
                    .fill_customer(DEFAULT_CUSTOMER)
                    .continue_to_overview())
        overview.finish().should_show_order_confirmation()

    # known bugs: strict xfail per affected user
    @pytest.mark.parametrize("user",
        users_with_known_bugs(SORTING_BROKEN), indirect=True)
    def test_sort_by_price_high_to_low(inventory_page):
        ...
  • ✓Login una sola vez con storage_state y fixtures encadenados: cada test arranca en el estado que necesita, más rápido y sin repetir pasos
  • ✓Bugs conocidos registrados como xfail estricto: el reporte los lista y, si alguno se arregla, el build avisa
  • ✓Análisis de fallas con la API de Claude: causa raíz, evidencia y fix sugerido adjuntos al reporte
  • ✓CI con GitHub Actions: 3 navegadores en paralelo y reporte Allure con historial en GitHub Pages
  • ✓Accesibilidad con axe-core, chequeos de red y regresión visual sin imágenes base que mantener
  • ✓Esperas web-first sobre el render real, sin sleeps: menos tests inestables
Python Playwright pytest Allure GitHub Actions axe-core Claude API

OrangeHRM

Cypress · JavaScript

Tests en JavaScript y Cypress sobre el demo de OrangeHRM, un sistema de RR. HH.: login y seguridad de sesión, permisos por rol, gestión de usuarios y empleados, red y accesibilidad. Corren en Chrome y Firefox.

kevindnestico / orangehrm-cypress-javascript
// cypress/e2e/admin/user-management.cy.js
    it("creates a user from the UI", { tags: "@smoke" }, () => {
      const user = buildUser({ role: "Admin" });

      systemUsersPage.visit().clickAdd();
      userFormPage.fill({ ...user, employee });
      userFormPage.save().then(({ response }) => {
        expect(response.statusCode).to.eq(200);
        cleanup.trackUser(response.body.data.id);
      });

      systemUsersPage.toast.shouldShow(messages.toast.saved);

      // The new account works: log in with it through the UI.
      cy.clearAllCookies();
      loginPage.visit().login(user.username, user.password);
      cy.location("pathname").should("include", "/dashboard");
    });
  • ✓Login programático con cy.session: se hace una vez, se reutiliza entre specs y se recrea solo si la sesión expira
  • ✓Datos de prueba creados por la API REST y limpieza automática después de cada test, aunque falle
  • ✓Page Objects con componentes reutilizables (formularios, tablas, diálogos) y locators por label visible
  • ✓Control de red con cy.intercept: espera llamadas reales y simula listas vacías, respuestas lentas y errores 500
  • ✓Análisis de fallas con la API de Claude: diagnóstico estructurado (causa, evidencia, fix) adjunto a Allure
  • ✓CI con GitHub Actions en Chrome y Firefox, accesibilidad con axe-core y reporte Allure en GitHub Pages
JavaScript Cypress Page Object Model Allure GitHub Actions axe-core Claude API
CONTACTO

¿Una idea que merece su landing page? ¿Un bug que nadie logra encontrar? ¿O solo ganas de charlar? Mi bandeja de entrada está abierta:

nesticokevin@gmail.com