Skip to content

Commit 4e0ccc6

Browse files
committed
-CASOS DE PRUEBAS-INICIO DE PROYECTO
1 parent d49fe94 commit 4e0ccc6

13 files changed

+1013
-2
lines changed

.github/workflows/playwright.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
name: Playwright Tests
2+
on:
3+
push:
4+
branches: [ main, master ]
5+
pull_request:
6+
branches: [ main, master ]
7+
jobs:
8+
test:
9+
timeout-minutes: 60
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v4
13+
- uses: actions/setup-node@v4
14+
with:
15+
node-version: lts/*
16+
- name: Install dependencies
17+
run: npm ci
18+
- name: Install Playwright Browsers
19+
run: npx playwright install --with-deps
20+
- name: Run Playwright tests
21+
run: npx playwright test
22+
- uses: actions/upload-artifact@v4
23+
if: ${{ !cancelled() }}
24+
with:
25+
name: playwright-report
26+
path: playwright-report/
27+
retention-days: 30

.gitignore

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
# Playwright
3+
node_modules/
4+
/test-results/
5+
/playwright-report/
6+
/blob-report/
7+
/playwright/.cache/
8+
/allure-report/
9+
/allure-results/
10+
.env

README.md

Lines changed: 200 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,200 @@
1-
# qa-playwright-allure
2-
Proyecto de pruebas realizadas con playwright para la automatización de pruebas de UI y de API
1+
Aquí tienes un ejemplo de un archivo README.md para un proyecto de Playwright con Allure en TypeScript. Incluye información sobre el propósito del proyecto, el uso del Page Object Model (POM), la integración con Allure, cómo ver reportes, y una lista de comandos útiles, incluyendo --ui.
2+
Proyecto de Automatización con Playwright, TypeScript y Allure
3+
Este proyecto implementa pruebas automatizadas de interfaz de usuario usando Playwright con TypeScript como lenguaje principal y Allure para la generación de reportes detallados. El enfoque sigue el patrón Page Object Model (POM) para mantener las pruebas organizadas, mantenibles y reutilizables.
4+
Propósito
5+
Automatizar pruebas funcionales en una aplicación web (por ejemplo, un formulario en https://v0-classic-registration-form-u8ghow.vercel.app/) para validar comportamientos como:
6+
Campos obligatorios y no obligatorios.
7+
Validaciones de formato (email, teléfono).
8+
Mensajes de éxito o error tras el envío del formulario.
9+
Tecnologías
10+
Playwright: Herramienta de automatización de navegadores.
11+
TypeScript: Lenguaje para tipado estático y mejor mantenibilidad.
12+
Allure: Generación de reportes visuales e interactivos.
13+
Node.js: Entorno de ejecución.
14+
Estructura del Proyecto
15+
project-root/
16+
├── Pages/ # Clases POM para las páginas
17+
│ └── FormPage.ts # Ejemplo: Clase para interactuar con el formulario
18+
├── tests/ # Archivos de pruebas
19+
│ └── registration.spec.ts # Casos de prueba para el formulario
20+
├── allure-results/ # Resultados generados por Allure (git ignored)
21+
├── allure-report/ # Reporte HTML generado (git ignored)
22+
├── test-results/ # Trazas y capturas de Playwright (git ignored)
23+
├── playwright.config.ts # Configuración de Playwright
24+
├── package.json # Dependencias y scripts
25+
├── tsconfig.json # Configuración de TypeScript
26+
└── README.md # Este archivo
27+
Page Object Model (POM)
28+
Este proyecto usa el patrón POM para encapsular la lógica de interacción con las páginas web:
29+
Ubicación: Las clases POM están en la carpeta Pages/.
30+
Ejemplo: FormPage.ts contiene métodos como fillName(), submitForm(), y expectErrorForField() para interactuar con un formulario.
31+
Ventajas:
32+
Código reutilizable.
33+
Separación de lógica de pruebas y elementos de la UI.
34+
Fácil mantenimiento si la UI cambia.
35+
Instalación
36+
Clona el repositorio:
37+
bash
38+
git clone <URL_DEL_REPOSITORIO>
39+
cd <NOMBRE_DEL_PROYECTO>
40+
Instala las dependencias:
41+
bash
42+
npm install
43+
Instala los navegadores de Playwright:
44+
bash
45+
npx playwright install
46+
Requisitos previos
47+
Node.js: v16 o superior.
48+
Java: v8 o superior (necesario para Allure CLI).
49+
Configuración
50+
El archivo playwright.config.ts define las opciones de ejecución:
51+
Carpeta de pruebas: ./tests.
52+
Reporteros: 'line' (consola) y 'allure-playwright' (Allure).
53+
Navegadores: Chromium por defecto.
54+
Base URL: https://v0-classic-registration-form-u8ghow.vercel.app/.
55+
Ejemplo de configuración:
56+
typescript
57+
import { defineConfig } from '@playwright/test';
58+
59+
export default defineConfig({
60+
testDir: './tests',
61+
timeout: 30000,
62+
reporter: [['line'], ['allure-playwright', { outputFolder: 'allure-results' }]],
63+
use: {
64+
baseURL: 'https://v0-classic-registration-form-u8ghow.vercel.app/',
65+
headless: true,
66+
screenshot: 'only-on-failure',
67+
trace: 'on',
68+
},
69+
projects: [
70+
{ name: 'chromium', use: { browserName: 'chromium' } },
71+
],
72+
});
73+
Uso del Proyecto
74+
Comandos más utilizados
75+
Ejecución de pruebas
76+
Correr todas las pruebas:
77+
bash
78+
npm run test
79+
# o
80+
npx playwright test
81+
Correr un archivo específico:
82+
bash
83+
npx playwright test tests/registration.spec.ts
84+
Correr con interfaz gráfica:
85+
bash
86+
npx playwright test --headed
87+
Modo UI de Playwright:
88+
Usa la interfaz gráfica de Playwright para explorar y ejecutar pruebas:
89+
bash
90+
npx playwright test --ui
91+
Abre una UI en el navegador donde puedes:
92+
Ver y filtrar pruebas.
93+
Ejecutarlas individualmente.
94+
Depurar con inspector.
95+
Generación de reportes con Allure
96+
Correr pruebas y generar reporte:
97+
bash
98+
npm run test-and-report
99+
Este script:
100+
Ejecuta las pruebas (npx playwright test).
101+
Genera el reporte (npx allure generate).
102+
Abre el reporte (npx allure open).
103+
Generar reporte manualmente:
104+
bash
105+
npx allure generate allure-results --clean -o allure-report
106+
Abrir reporte:
107+
bash
108+
npx allure open allure-report
109+
Limpieza
110+
Limpiar caché y resultados:
111+
bash
112+
npm run clean
113+
Elimina node_modules, test-results, allure-results, allure-report, y el caché de npm.
114+
Instalar desde cero:
115+
bash
116+
npm run install-fresh
117+
Depuración
118+
Depurar paso a paso:
119+
bash
120+
npx playwright test --debug
121+
Ver salida en consola:
122+
bash
123+
npx playwright test --reporter=line
124+
Scripts en package.json
125+
json
126+
{
127+
"scripts": {
128+
"test": "npx playwright test",
129+
"test-ui": "npx playwright test --ui",
130+
"clean": "rm -rf node_modules package-lock.json test-results allure-results allure-report && npm cache clean --force",
131+
"install-fresh": "npm run clean && npm install && npx playwright install",
132+
"generate-report": "npx allure generate allure-results --clean -o allure-report",
133+
"open-report": "npx allure open allure-report",
134+
"test-and-report": "npm run test && npm run generate-report && npm run open-report"
135+
}
136+
}
137+
Integración con Allure
138+
Allure se integra como reportero en Playwright para generar reportes detallados:
139+
Configuración: Definida en playwright.config.ts con 'allure-playwright'.
140+
Resultados: Guardados en allure-results tras ejecutar las pruebas.
141+
Generación: Convertidos a HTML con npx allure generate.
142+
Visualización: Abiertos con npx allure open.
143+
Ver los reportes
144+
Después de correr npm run test-and-report, el reporte se abre automáticamente en tu navegador (e.g., http://localhost:XXXX).
145+
Si no se abre, usa:
146+
bash
147+
npx allure open allure-report
148+
El reporte muestra:
149+
Lista de pruebas con estado (passed, failed, skipped).
150+
Pasos detallados (test.step).
151+
Capturas y trazas (si habilitadas).
152+
Ejemplo de prueba
153+
typescript
154+
// tests/registration.spec.ts
155+
import { test } from '@playwright/test';
156+
import { FormPage } from '../Pages/FormPage';
157+
158+
test.describe('Automation testing on a form', () => {
159+
let formPage: FormPage;
160+
161+
test.beforeEach(async ({ page }) => {
162+
formPage = new FormPage(page);
163+
await test.step('Given that I navigate to the web page', async () => {
164+
await formPage.navigate();
165+
});
166+
});
167+
168+
test('Empty mandatory fields prevent form submission', async () => {
169+
await test.step('Given that I do not fill any mandatory fields', async () => {});
170+
await test.step('When I try to submit the form', async () => {
171+
await formPage.submitForm();
172+
});
173+
await test.step('Then I see errors in the mandatory fields', async () => {
174+
await formPage.expectErrorForField('El nombre debe tener al menos 2 caracteres.');
175+
});
176+
});
177+
});
178+
Notas
179+
POM: Las clases en Pages/ encapsulan localizadores y métodos, haciendo las pruebas más legibles.
180+
Allure: Requiere Java para npx allure generate. Verifica con java -version.
181+
TypeScript: Usa tsconfig.json para configurar el compilador:
182+
json
183+
{
184+
"compilerOptions": {
185+
"target": "es6",
186+
"module": "commonjs",
187+
"strict": true,
188+
"rootDir": "./",
189+
"outDir": "./dist",
190+
"esModuleInterop": true
191+
},
192+
"include": ["./tests/**/*.ts", "./Pages/**/*.ts"]
193+
}
194+
Solución de problemas
195+
Reporte Allure "unknown":
196+
Limpia: rm -rf allure-results allure-report.
197+
Re-ejecuta: npm run test-and-report.
198+
Pruebas no corren: Verifica localizadores en FormPage.ts con el HTML real.
199+
Errores de caché: Usa npm run clean y reinstala.
200+
Este README cubre lo esencial para empezar, ejecutar, y mantener el proyecto. ¿Te gustaría que añada algo más, como ejemplos específicos del formulario o detalles de CI/CD? ¡Avísame!

0 commit comments

Comments
 (0)