GitHub Actions
Clase 24 de 25 • Curso de Angular: Unit Testing para Servicios
Contenido del curso
Clase 24 de 25 • Curso de Angular: Unit Testing para Servicios
Contenido del curso
Jorge Luis Silva Medina
Cesar Elías Armendariz Ruano
Daniel Meza
Daniel Meza
Daniel Meza
Victor Alfredo Matzar Say
ANDRES FELIPE CANO PIEDRAHITA
Franklin Gil
Elcira Ibarra
Luis Jose Marquez Gonzalez
den velez
Diego Toro Cárdenas
Para los que lo ven en el 2023, les recomiendo que revisen la versión de node y que revisen la version de los comandos de CI de github.
name: CI for Angular on: push jobs: unit-test: runs-on: ubuntu-latest steps: - name: Cone uses: actions/checkout@v3 - name: Node Setup uses: actions/setup-node@v3 with: node-version: 16.x - name: Install dependencies run: npm ci - name: Run tests run: npm run test -- --no-watch --code-coverage --browsers=ChromeHeadlessCI
Vamos a agregar todo el proceso de integración continua para correr pruebas desde un servidor que en este caso es el de Github Actions. Es de gran utilidad para poder hacer test de todos los test en cada commit que se haga trabajo grupal.
Configura el setap para cualquier framework de prueba continua en testingCI
¿Alguien tuvo éxito?
Aquí mi configuración:
ci.yml
name: CI for Angular on: push jobs: unit-test: runs-on: ubuntu-latest steps: - name: Clone uses: actions/checkout@v2 - name: Node Setup uses: actions/setup-node@v2 with: node-version: 14.x - name: Install run: npm ci - name: run tests run: npm run test -- --no-watch --code-coverage --browsers=ChromeHeadlessCI
karma.conf.js
// Karma configuration file, see link for more information // https://karma-runner.github.io/1.0/config/configuration-file.html module.exports = function (config) { config.set({ basePath: '', frameworks: ['jasmine', '@angular-devkit/build-angular'], plugins: [ require('karma-jasmine'), require('karma-chrome-launcher'), require('karma-jasmine-html-reporter'), require('karma-coverage'), require('@angular-devkit/build-angular/plugins/karma'), require('karma-mocha-reporter') ], client: { jasmine: { // you can add configuration options for Jasmine here // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html // for example, you can disable the random execution with `random: false` // or set a specific seed with `seed: 4321` }, clearContext: false // leave Jasmine Spec Runner output visible in browser }, jasmineHtmlReporter: { suppressAll: true // removes the duplicated traces }, coverageReporter: { dir: require('path').join(__dirname, './coverage/ng-testing-services'), subdir: '.', reporters: [ { type: 'html' }, { type: 'text-summary' } ], check: { global: { statements: 30, branches: 30, funtions: 30, lines: 30 } } }, reporters: ['mocha'], port: 9876, colors: true, logLevel: config.LOG_INFO, autoWatch: true, browsers: ['ChromeHeadless'], customLaunchers: { ChromeHeadlessCI: { base: 'ChromeHeadless', flags: ['--no-sandbox'] } }, singleRun: false, restartOnFileChange: true }); };
Ya corrió. El detalle ahora, es que se queda colgado en el test...
Por mi parte, lo corrí con
run: npx ng test --no-watch --code-coverage --browsers=ChromeHeadlessCI
npm run test, no me funcionó :(
muchas gracias
Hay un curso de Github Actions?
Si en algún momento se queda colgado, es porque el ng run test tiene el watcher por defecto. He agregado un test:ci en el package.json, y es el comando a ejecutar en el ci.yml
"scripts": { "ng": "ng", "start": "ng serve", "build": "ng build", "watch": "ng build --watch --configuration development", "test": "ng test --watch --browsers ChromeHeadless", "test:ci": "ng test --no-watch --code-coverage --browsers=ChromeHeadlessCI", "test:coverage": "ng test --watch --browsers ChromeHeadless --code-coverage", "serve:ssr:angular-unit-test": "node dist/angular-unit-test/server/server.mjs" },
name: CI for Angular on: push jobs: unit-test: runs-on: ubuntu-latest steps: - name: Clone uses: actions/checkout@v2 - name: Node Setup uses: actions/setup-node@v4.0.2 with: node-version: '20.x' - name: Install Dependencies run: npm ci - name: Run Tests run: npm run test:ci
husky, libreria para comprobar que todo sea correcto en el local antes de hacer push,
CI = continuous integration
For to learn more, please click My contribution