Esta prueba permite un enfoque práctico para evaluar las habilidades de automatización de pruebas de un candidato. La prueba está diseñada para completarse en 3-5 horas.
Se proporciona un servidor que ejecuta Express y una aplicación simple de React. Estas aplicaciones proporcionan la siguiente funcionalidad:
- Autenticación
- Operaciones CRUD para Posts
- Los usuarios pueden especificar su libro favorito usando la API de OpenLibrary
Serás responsable de escribir pruebas para verificar que estas funcionalidades funcionen como se espera. Ten en cuenta que no rechazaremos una prueba incompleta. Enviar lo que hayas completado es suficiente.
Intentamos mantener el proyecto lo más simple posible, pero si tienes alguna pregunta, no dudes en contactarnos.
- Requisitos del Sistema
- Comenzando
- Requisitos de las Pruebas
- Estructura del Repositorio
- Herramientas
- Ejemplos
- NodeJS 20.x o superior
- Yarn 4.x o superior
- Recomendamos un sistema basado en Unix (Linux, MacOS) para esta evaluación
Por simplicidad, usamos SQLite como base de datos. No necesitas instalar ningún software de base de datos. La aplicación automáticamente creará una base de datos SQLite en el archivo database.sqlite en la raíz del proyecto.
- Haz fork o clona este repositorio
- Sube tu código a un repositorio público en GitHub
- Envía un correo a cristian@ocmiwc.com con el enlace a tu repositorio
- Vuelve a tu proyecto e instala las dependencias usando
yarn - Ejecuta las aplicaciones del servidor y cliente usando
npx nx run server:serveynpx nx run client:serve - El servidor se ejecutará en
http://localhost:3000y el cliente enhttp://localhost:4200 - Puedes ejecutar pruebas usando
npx nx run <app>:testonpx nx run <app>-e2e:e2e - Sube los cambios conforme avances, revisaremos tu progreso
Tienes hasta el 15 de noviembre para enviar tu prueba. Revisaremos tu código y te daremos retroalimentación. La única fase adicional será una entrevista técnica con nuestro equipo.
IMPORTANTE: Por favor, no asumas que rechazaremos una prueba incompleta. Buscamos calidad, no cantidad.
Nos gusta que nuestras pruebas sean prácticas y realistas. Por lo tanto, permitimos el uso de herramientas de IA para ayudarte a escribir tus pruebas, ya que las utilizamos en nuestras operaciones diarias.
Sin embargo, esperamos que entiendas el código que estás escribiendo y no dependas únicamente de herramientas de IA para generar tus pruebas.
Si encuentras algún problema, no dudes en contactarnos. Estamos aquí para ayudarte a tener éxito.
No queremos que esta prueba ocupe demasiado de tu tiempo, así que no buscamos una suite de pruebas exhaustiva. Escribe lo que creas necesario para asegurar que la funcionalidad esté funcionando como se espera.
Idealmente, tus pruebas deberían demostrar principalmente el conocimiento de cada concepto básico de pruebas, pero no escribas demasiadas pruebas solo por escribirlas.
Aquí hay algunos ejemplos de lo que podrías incluir:
- Pruebas Unitarias
- Pruebas de Integración
- Pruebas E2E (Automatización de Navegador para tu aplicación cliente)
- Mocking y Spying
- Gestión de Datos de Prueba
En cuanto a los requisitos:
- Envía lo que hayas completado, no te preocupes por terminar todo
- Intenta tomar menos de 5 horas para completar la prueba
- Debe estar escrito en TypeScript
- Debes incluir al menos 3 pruebas por aplicación
- Pruebas Unitarias: 3 en servidor, 3 en cliente
- Pruebas E2E: 3 en server-e2e, 3 en client-e2e
- Cuantas más, mejor
El repositorio es un monorepo que contiene cuatro aplicaciones:
- server: Un servidor Express que proporciona una API para la aplicación React
- client: Una aplicación React que consume la API
- server-e2e: Pruebas E2E para el servidor (Vitest, misma sintaxis que Jest)
- client-e2e: Pruebas E2E para el cliente (Playwright, pero puedes usar cualquier otra herramienta)
Las siguientes herramientas están disponibles, pero eres libre de usar cualquier otra herramienta con la que te sientas cómodo:
- Vitest (Para Pruebas Unitarias, igual que Jest)
- Playwright (Para Automatización de Navegador)
- Supertest (Para Pruebas de API)
- React Testing Library (Para Pruebas de Componentes React)
- Nx (Para Gestión de Monorepo)
En nuestras operaciones diarias, también utilizamos Nx como herramienta de monorepo para gestionar nuestros proyectos. Si no estás familiarizado con Nx, aquí están las notas principales:
- Servir:
npx nx run server:serve - Pruebas Unitarias:
npx nx run server:test - Pruebas E2E:
npx nx run server-e2e:e2e
- Servir:
npx nx run client:serve - Pruebas Unitarias:
npx nx run client:test - Pruebas E2E:
npx nx run client-e2e:e2e
Encontrarás un ejemplo para cada tipo de prueba:
- Prueba Unitaria del Servidor:
apps/server/src/routes/auth.spec.ts - Prueba Unitaria del Cliente:
apps/client/src/pages/root.spec.tsx - Prueba E2E del Servidor:
apps/server-e2e/src/server/posts.e2e.ts - Prueba E2E del Cliente:
apps/client-e2e/src/client/posts.e2e.ts
Puedes usar estos como guías sobre cómo usar las herramientas proporcionadas.