Unit tests en GitHubActions
Clase 25 de 27 • Curso de Introducción al Testing con JavaScript
Contenido del curso
Clase 25 de 27 • Curso de Introducción al Testing con JavaScript
Contenido del curso
Cesar Buelvas Torres
Fernando García Guerrero
Miguel Angel Reyes Moreno
Iván Antonio Bustos Calderón
Ellioth Aguirre Gonzales
Ellioth Aguirre Gonzales
Diego Reyes Cabrera
Jonh Pertuz pertuz
Giancarlo Culcay
Kevin Parra Lopez
Miguel Angel Reyes Moreno
Miguel Angel Reyes Moreno
David Hilera
Miguel Angel Reyes Moreno
jefred bedoya
Alejandro Paladines
Miguel Ángel López Londoño
Axel Enrique Galeed Gutierrez
Este un curso mas especifico para githubactions. https://platzi.com/cursos/github-actions/
Gente si tuvieron algún problema con el npm ci de pronto es la versión de node, cámbienla a la 16 o 18, depende de cuál sea la LTS de cuando hacen el curso
¡Gracias! Me había dado error justo ahí y cambié la versión de node a 18 (la que a día de hoy está en LTS) y funcionó :D
Muy bueno esta clase. Me gustó lo sencillo que es la integración continua con GitHub Actions. En mi trabajo usamos Drone con Gitlab.
name: API CI # on: [push] // asi se hace on cuando solo manejamos un proyecto simple, pero como manejamos un monorepo debemos hacer mas especifico la config on: push: paths: - "./api/**" - ".github/workflows/api-ci.yml" jobs: unit-test: runs-on: macos-latest defaults: run: working-directory: ./api steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 cache: "npm" cache-dependency-path: ./api/package-lock.json - name: Install dependencies run: npm ci - name: run unit test run: npm run test - name: Upload test results if failed if: failure() uses: actions/upload-artifact@v4 with: name: test-results path: ./api/test-results/ ```Codigo actualizado a 2025 name: API CI*# on: \[push] // asi se hace on cuando solo manejamos un proyecto simple, pero como manejamos un monorepo debemos hacer mas especifico la config*on: push: paths: - "./api/\*\*" - ".github/workflows/api-ci.yml" jobs: unit-test: runs-on: macos-latest   defaults: run: working-directory: ./api   steps: - name: Checkout repository uses: actions/checkout@v4   \- name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 cache: "npm" cache-dependency-path: ./api/package-lock.json   \- name: Install dependencies run: npm ci   \- name: run unit test run: npm run test   \- name: Upload test results if failed if: failure() uses: actions/upload-artifact@v4 with: name: test-results path: ./api/test-results/  
la ultima parte se volvio a copiar -_-
Se suele utilizar GitHub Actions para hacer check del formato y pruebas estáticas? Porque me parece mucho más eficiente implementar esa capa con Husky, ya sea con un hook pre-commit o pre-push. Así el error ni siquiera debería de llegar al repositorio remoto.
Me realizo el push a la rama pero no corrió las pruebas, no aparece el check en verde, que pude hacer mal trabaje con yarn ?
si he venido trabajando todo el curso con otro manejador de paquetes como yarn o pnpm , que líneas de código debería poner en el api-ci.yml ?
esos yarn o pnpm
Maravilloso que hayan includo esta clase en este curso :D
Reto completado: https://github.com/Mike-droid/intro-test-js/actions/runs/4739267398
No se me había ocurrido que había que incluir el servicio de mongo para los e2e (muy obvio), gracias por ejemplo.
Como comentario para los que se guíen de tu ejemplo, las variables de entorno deben de coincidir con el docker, por lo que la MONGO_URL puede ser distinta dependiendo del servicio de mongo en docker.
Gracias por el aporte, _deiviiss :D
actualmente se configura así
name: API CI on: push: paths: - 'api/**' - '.github/workflows/api-ci.yml' pull_request: paths: - 'api/**' - '.github/workflows/api-ci.yml' workflow_dispatch: defaults: run: working-directory: ./api jobs: unit-test: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 18 cache: npm cache-dependency-path: api/package-lock.json - name: Install dependencies run: npm ci - name: Run unit tests run: npm test -- --runInBand
Si al correr el step actions/setup-node@v4 tienes este error con la cache
Error: Cache service responded with 422
Es necesario hacer un upgrade a @v4 y limpiar la cache
name: API CI #on: [push] # For normal repositories (no monorepos) on: push: paths: - "./api/**" - ".github/workflows/api-ci.yml" defaults: run: working-directory: ./api jobs: unit-test: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Clear npm cache run: npm cache clean --force - name: Setup Nodejs uses: actions/setup-node@v4 with: node-version: 18 cache: 'npm' cache-dependency-path: ./api/package-lock.json - name: install shell: bash run: npm ci - name: run unit test shell: bash run: npm run test
Les comparto el código del reto. 😀 lint.yml
name: 💅 Lint on: push jobs: lint: runs-on: ubuntu-latest name: ESLint steps: - name: 👍 Checkout uses: actions/checkout@v2 - name: 📥 Install Dependencies run: npm ci - name: 🌹 ESLint run: npm run lint