🎯 0/4 · ⭐ 0/3
1 / 19
← → navegar · N notas presentador · F pantalla completa · click en comandos = copiar
🎙 Notas del presentador
Sesión 5 · QA Engineering

Dev Craft 🛠️

Tu suite vive solo en tu laptop — para el equipo, no existe.
Hoy: terminal con soltura, Git sin miedo y tu primer Pull Request.

terminalpackage.jsongitGitHub + PR2 simuladores 🎮4 misiones 🎯

Sesión 6 de la serie (deck 5). El gap silencioso: saben escribir tests pero no compartirlos como profesionales. Hoy hay 2 terminales SIMULADAS dentro del deck (practican git sin riesgo) + misiones reales sobre su proyecto del lab. Prerrequisito: proyecto mi-dojo-lab funcionando. Duración: 90-120 min.

La verdad incómoda

Código que no está en Git es un castillo de arena 🏖️

💀

Sin Git

Laptop muere = suite muere. "¿Qué cambié ayer?" = misterio. Dos personas editando = caos de versiones por email.

🤝

El QA Engineer real

Tu suite entra al repo del equipo por Pull Request, con revisión, igual que el código de los devs. Mismo flujo, mismos estándares.

🗺️ El plan de hoy

Acto 1 → terminal sin miedo
Acto 2 → package.json y scripts
Acto 3 → Git local 🎮 (simulador + real)
Acto 4 → GitHub + tu primer PR 🎮
Boss → tu suite del lab, publicada

🎮

Hoy estrenamos terminales simuladas dentro del deck: practicas los comandos aquí (imposible romper nada) y DESPUÉS los corres de verdad.

Motivación con dolor real: pregunta quién ha perdido trabajo por no tener respaldo. El paralelo de identidad importa: entregar por PR es lo que distingue al QA Engineer del tester que automatiza por su cuenta — entras al flujo de ingeniería del equipo. El simulador baja la ansiedad de los que le temen a la terminal.

Terminal sin miedo: 6 comandos te bastan ⌨️

ComandoQué haceMnemonia
pwd¿DÓNDE estoy parado?print working directory
ls¿QUÉ hay aquí?list
cd mi-dojo-labEntra a una carpetachange directory
cd ..Sube un nivel.. = la carpeta padre
mkdir pagesCrea una carpetamake directory
code .Abre VS Code AQUÍ. = esta carpeta

Los dos superpoderes: Tab autocompleta nombres (escribe cd mi-d + Tab) · flecha repite comandos anteriores. Quien los usa parece senior en una semana.

Desmitificación: 6 comandos cubren el 90% del día a día. El concepto subyacente: la terminal SIEMPRE está parada en una carpeta (pwd lo revela) y todo es relativo a ella — el mismo concepto de las rutas relativas de los imports (../pages). Tab y ↑ son los hábitos que más aceleran a un principiante.

MISIÓN D1

Navega como profesional

🎯 Desde una terminal NUEVA, llegar hasta tu proyecto del lab usando solo comandos, y abrirlo en VS Code.

1. Abre una terminal nueva (no la de VS Code — esa hace trampa)
2. pwd para ubicarte, ls para mirar
3. Navega con cd + Tab hasta mi-dojo-lab
4. Remata con:

$code .📋
Pista: "code: command not found" (Mac)

Abre VS Code → Cmd+Shift+P → escribe "shell command" → "Install 'code' command in PATH". Reabre la terminal.

Pista: me perdí en las carpetas

cd ~ te teletransporta a tu carpeta de usuario (home). Desde ahí, ls y a navegar de nuevo. Imposible perderse para siempre.

Criterio de éxito: VS Code abierto en tu proyecto, lanzado 100% desde la terminal, sin tocar el Finder/Explorador.

Misión corta (5-10 min) pero diagnóstica: quien no fluye aquí va a sufrir con git. "Terminal nueva, no la de VS Code" fuerza la navegación real. cd ~ como botón de pánico elimina el miedo a perderse.

package.json: la cédula del proyecto 📋

package.json
{
  "name": "mi-dojo-lab",
  "scripts": {
    "test": "playwright test",
    "test:ui": "playwright test --ui"
  },
  "devDependencies": {
    "@playwright/test": "^1.52.0"
  }
}

📛 name

Identidad del proyecto.

📜 scripts

El recetario de comandos del equipo: alias cortos para comandos largos. Se corren con npm run <nombre>.

📦 devDependencies

La lista de compras: qué herramientas necesita el proyecto y en qué versión. npm install las trae todas.

🚫 node_modules NO viaja

Pesa cientos de MB y se reconstruye desde la lista con npm install. Por eso JAMÁS se sube a Git (lo ignoraremos en el Acto 3).

La metáfora doble: scripts = recetario, dependencies = lista de compras, node_modules = la despensa llena (reconstruible, no se comparte). Esta lógica explica el ritual universal "clonar → npm install" y prepara el .gitignore del acto 3. dependencies vs devDependencies: para un proyecto de tests, todo es dev — no profundices.

MISIÓN D2

Arma tu recetario de scripts

🎯 Definir los 4 scripts estándar de tu suite y usarlos con npm run.

1. En tu package.json, dentro de "scripts":

"test": "playwright test",
"test:ui": "playwright test --ui",
"test:headed": "playwright test --headed",
"report": "playwright show-report"

2. Pruébalos:

$npm run test📋
Pista: "Unexpected token" al correr npm

JSON es estricto: comillas dobles SIEMPRE, coma entre entradas, ninguna coma después de la última. VS Code subraya el error exacto.

🤝

El valor real: contrato de equipo. Cualquier persona (o un pipeline de CI) corre tu suite con npm run test sin saber qué hay detrás. Estándar universal del ecosistema.

Criterio de éxito: npm run test y npm run test:ui funcionan en tu proyecto.

Primera edición a mano de un JSON — el error de sintaxis de la pista le pasará a alguien, garantizado, y es buena lección (JSON estricto vs JS laxo). El concepto "contrato de equipo" conecta con CI/CD futuro: los pipelines corren npm run test, no comandos crudos.

⭐ QUIZ 1 · El ritual del clon

Clonas el proyecto de un compañero, corres npm run test y explota: "Cannot find module '@playwright/test'". ¿Primer comando?

💡 node_modules no viaja con el repo (está ignorado) — el clon llega "sin despensa". npm install lee las dependencies del package.json y la reconstruye exacta. El ritual universal: clonar → npm install → a trabajar. La opción C funciona… como funciona pegar un billete roto con cinta: no lo hagas.

Este error lo VAN a vivir la primera vez que clonen algo — el quiz lo convierte en momento "ya sabía". El ritual clonar → npm install → npx playwright install (browsers) completo lo verán en la misión boss cuando clonen su propio repo si hay tiempo.

Git: checkpoints para tu código 📸

📝 Workingtus archivos
tal como están
─ git add →
"esto entra en la foto"
📦 Staginglo seleccionado
para la próxima foto
─ git commit →
"¡click! foto tomada"
📚 Historiacheckpoints
permanentes
🎮

Como un videojuego

Commit = grabar partida. ¿Rompiste todo? Vuelves al último checkpoint. Nada se pierde de verdad después de un commit.

📦

¿Por qué staging?

Eliges QUÉ entra en cada foto. Cambiaste 5 archivos pero 2 son de otra tarea → fotos separadas, historia limpia.

🔍

git status = tu brújula

Te dice qué está modificado, qué está en staging y qué falta. Cuando dudes: git status. Siempre.

El modelo de 3 zonas ES git — todo comando se entiende desde aquí. Insiste en "git status como brújula": el hábito que salva a todo principiante (no castiga, solo informa). La metáfora checkpoint de videojuego baja el miedo: con commits frecuentes, nada se pierde.

El ciclo sagrado + mensajes dignos

El ciclo (lo harás 1000 veces)

$git status📋
$git add .📋
$git commit -m "mensaje claro"📋

git add . = todo lo modificado al staging · -m = mensaje inline.

🙈

Antes del primer commit: crea .gitignore con node_modules/, test-results/ y playwright-report/ — la despensa y los reportes NO van en la historia.

El mensaje es para un humano del futuro

❌ Indigno✅ Digno
"cambios""add login page object with semantic locators"
"fix""fix flaky register test with unique email"
"asdfgh""add API tests for auth endpoints"

Fórmula: verbo + qué + (por qué si no es obvio). El humano del futuro que lee tu historia… casi siempre eres tú.

El .gitignore ANTES del primer commit es crítico — commitear node_modules es el error #1 de novato (repo de 500MB). Mensajes: la prueba está en git log — una historia de "cambios, fix, más cambios" no le sirve a nadie. Convención del repo profesional al que van: prefijos semánticos (feat:, fix:, test:) — menciónalo como adelanto.

🎮 Terminal simulada · imposible romper nada

Practica el ciclo aquí mismo

~/mi-dojo-lab — simulador
$

Primer simulador: el ciclo status → add → commit → log en un sandbox. Pide que NO miren la slide anterior — que recuerden el ciclo (la lista de objetivos a la izquierda guía). Tras completarlo aquí, la misión D3 lo repite en su proyecto real. La opción "help" lista comandos si se traban.

MISIÓN D3

Git de verdad en tu proyecto

🎯 Poner tu proyecto del lab bajo control de versiones: init, .gitignore y primer commit con mensaje digno.
$git init📋

Crea .gitignore (raíz del proyecto) con:

node_modules/
test-results/
playwright-report/
$git add .📋
$git commit -m "add dojo test suite with POM and fixtures"📋
$git log --oneline📋
Pista: git pide tu identidad

Primera vez con git en esta máquina:

git config --global user.name "Tu Nombre"
git config --global user.email "tu@email.com"

Una sola vez, queda configurado para siempre.

Pista: ¿el .gitignore funcionó?

git status ANTES del add: si node_modules aparece en la lista, el .gitignore tiene un typo o está en la carpeta equivocada.

Criterio de éxito: git log --oneline muestra tu commit inicial, y git status NO lista node_modules.

Del sandbox a la realidad. El config de identidad detendrá a la mayoría (primera vez con git) — la pista lo resuelve. Verificación del gitignore vía git status: hábito de comprobar, no asumir. Si alguien ya commiteó node_modules: borra .git completo y reinicia la misión — más simple que enseñar a deshacer hoy.

⭐ QUIZ 2 · Las 3 zonas

Modificaste 5 archivos, pero 2 pertenecen a otra tarea. ¿Cómo logras un commit limpio con solo los 3 relevantes?

💡 git add acepta archivos específicos — esa es la razón de ser del staging: componer CADA foto deliberadamente. git add . es el atajo para "todo", no la única forma. Historia limpia = un commit por intención = futuro tú feliz.

Valida el modelo de 3 zonas con el caso de uso que justifica el staging. La opción C (borrar y recrear) suena absurda pero es lo que hace la gente que no entiende staging — nómbralo con humor. Commits por intención preparan el terreno para PRs enfocados.

GitHub: tu historia, en la nube ☁️

💻 Tu repo localla historia en tu máquina
↑ git push (subir)  ·  ↓ git pull (bajar)
☁️ GitHub (remoto)la copia compartida del equipo

Remoto = el repo "oficial" compartido. push sube tus commits; pull baja los de otros. Laptop muere → la historia vive.

Conectar tu proyecto (una vez)

Con GitHub CLI (recomendado — crea el repo Y lo conecta):

$gh auth login📋
$gh repo create mi-dojo-lab --private --source=. --push📋
Alternativa sin gh (web)

github.com → New repository → copia los comandos que GitHub te muestra bajo "push an existing repository": git remote add origin … + git push -u origin main.

Modelo simple: local = tu copia, remoto = la oficial compartida. gh CLI hace en 1 comando lo que la web hace en 5 pasos — pero requiere gh instalado (brew install gh / winget install GitHub.cli); la alternativa web siempre funciona. gh auth login es interactivo: guíalo en vivo.

Branches y PR: proponer, no imponer 🌿

🌿 ramagit checkout -b
test/login-suite
→ commits →
☁️ pushla rama sube
a GitHub
🔀 Pull Request"revisen mi
propuesta"
→ review ✓ →
🎉 mergetu código entra
a main
🛡️

main es sagrada

Nadie empuja directo a main: es la versión estable. Tu rama = borrador seguro donde nada se rompe.

💬

El PR es conversación

Descripción de qué y por qué, código comentable línea por línea, aprobación antes del merge. Ahí ocurre la revisión real.

🧪

En QA

Tus suites entran por PR al repo del equipo — y los pipelines de CI corren los tests EN el PR antes de aprobar. Tu trabajo se vuelve gate de calidad.

El flujo branch→PR→review→merge es EL flujo de la industria (GitHub Flow). Para QA doble relevancia: (1) entregan suites por PR, (2) sus tests CORREN en los PRs de otros como gate — su trabajo decide si el código de los devs entra. Convención de nombres de rama: test/*, feat/*, fix/* — el repo profesional la usa.

🎮 Terminal simulada · el flujo completo

Practica: de la rama al PR

~/mi-dojo-lab — simulador
$

Segundo simulador: el flujo completo rama → add → commit → push → gh pr create. Es el ensayo general de la misión boss. La lista de objetivos guía el orden; "help" lista comandos válidos. Al completar: la URL del PR simulado aparece — exactamente lo que verán en la realidad.

MISIÓN D4 · BOSS 🏆

Tu suite, publicada con PR

🎯 Tu proyecto del lab en GitHub, con una mejora entrando por Pull Request — el flujo profesional completo, de verdad.

1. Repo en GitHub conectado (slide 13)
2. Crea una rama para una mejora pequeña (un test nuevo, un script, el POM de otra página):

$git checkout -b test/mi-mejora📋

3. Haz el cambio → add → commit → push:

$git push -u origin test/mi-mejora📋
$gh pr create --fill📋
Pista: sin gh CLI

Tras el push, GitHub imprime una URL "Create a pull request" en la propia terminal — ábrela. O en la web del repo: botón "Compare & pull request".

Pista: ¿y quién me lo aprueba?

Hoy: revísalo tú (mira el diff con ojos de reviewer — ¿entenderías este cambio sin contexto?) y dale merge. En equipo real, un colega aprueba. Si están en pareja: ¡revísense mutuamente! Eso es code review real.

Criterio de éxito: URL de un PR tuyo, mergeado, en tu repo de GitHub. Guárdala — es tu primera entrega con flujo profesional.

El boss produce un artefacto REAL con URL: su primer PR. Si hay pares, crúzalos para review mutuo — el feedback de un colega en un diff es la experiencia profesional completa. El diff del PR en GitHub además les muestra visualmente qué cambió: la utilidad de git se vuelve tangible.

⭐ QUIZ 3 · El porqué del ritual

Trabajas SOLO en tu suite. ¿Tiene sentido seguir usando ramas y PRs?

💡 Tres razones aun en solitario: (1) cada PR documenta un cambio con intención — historial navegable; (2) los pipelines de CI corren los tests EN el PR: tu red de seguridad automática; (3) el hábito — quien trabaja con ramas en solitario no improvisa cuando entra a un equipo. El flujo ES el entrenamiento.

Cierra el arco de motivación: el flujo no es burocracia para equipos grandes, es disciplina profesional con beneficios inmediatos (CI en PRs llega en regression-testing del repo profesional). "El flujo ES el entrenamiento" — frase de cierre del acto.

Tu nueva caja de herramientas

El kit del oficio, completo 🧰

HerramientaTu nuevo superpoder
⌨️ TerminalNavegas y ejecutas sin miedo — pwd, cd, Tab, ↑
📋 package.jsonLees la cédula de cualquier proyecto JS y defines scripts de equipo
📸 Git localCheckpoints con mensajes dignos — nada se pierde nunca más
☁️ GitHubTu código vive en la nube, sobrevive a tu laptop
🔀 Pull RequestEntregas cambios como profesional: propuesta → review → merge
🥋

El repo profesional al que vas usa EXACTAMENTE este flujo (con ramas test/* y prefijos semánticos en commits) — más un detalle: allí bun reemplaza a npm. Mismos conceptos, otro instalador.

Recap-espejo: cada fila es una capacidad que NO tenían al empezar la sesión. El aviso de bun evita el desconcierto en el repo profesional: bun install = npm install, bun run = npm run — conceptos idénticos. Con esto, la única pieza que falta es KATA: el próximo y último deck.

Debrief

Misiones completadas

🏠

Tarea

Un commit diario en tu proyecto esta semana — el músculo se hace con repetición. Y termina misiones pendientes.

🥋

Última parada: KATA Bridge

Tienes TODO: código, clases, Playwright pro, fixtures, git. El próximo deck cruza el puente final al framework profesional.

Penúltima sesión de la serie. Logro: dejaron de ser "personas que escriben tests" y son "profesionales que entregan código" — terminal, scripts, checkpoints, PR con URL real. La tarea del commit diario instala el hábito. Anuncia KATA Bridge como graduación: ya no aprenderán piezas nuevas, sino el mapa de cómo el repo profesional las ensambla.