Las pruebas de extremo a extremo (E2E) son una parte crucial del desarrollo de aplicaciones, ya que aseguran que la aplicación funcione correctamente desde la perspectiva del usuario final. En este tema, aprenderemos cómo configurar y ejecutar pruebas E2E en una aplicación Ionic utilizando herramientas como Protractor.

¿Qué son las Pruebas de Extremo a Extremo?

Las pruebas de extremo a extremo verifican el flujo completo de la aplicación, desde la interfaz de usuario hasta la base de datos y viceversa. Estas pruebas simulan el comportamiento del usuario para asegurarse de que todas las partes de la aplicación funcionen juntas como se espera.

Beneficios de las Pruebas E2E

  • Cobertura Completa: Verifican la funcionalidad completa de la aplicación.
  • Detección de Errores: Ayudan a identificar problemas que pueden no ser evidentes en pruebas unitarias o de integración.
  • Confianza en el Despliegue: Aumentan la confianza en la estabilidad de la aplicación antes de su lanzamiento.

Configuración del Entorno de Pruebas E2E

Instalación de Protractor

Protractor es una herramienta de pruebas E2E para aplicaciones Angular y AngularJS. Para instalar Protractor, sigue estos pasos:

  1. Instalar Protractor globalmente:

    npm install -g protractor
    
  2. Actualizar WebDriver Manager:

    webdriver-manager update
    
  3. Iniciar WebDriver Manager:

    webdriver-manager start
    

Configuración de Protractor en el Proyecto

  1. Crear un archivo de configuración de Protractor (protractor.conf.js):

    exports.config = {
      allScriptsTimeout: 11000,
      specs: [
        './e2e/**/*.e2e-spec.ts'
      ],
      capabilities: {
        'browserName': 'chrome'
      },
      directConnect: true,
      baseUrl: 'http://localhost:8100/',
      framework: 'jasmine',
      jasmineNodeOpts: {
        showColors: true,
        defaultTimeoutInterval: 30000,
        print: function() {}
      },
      onPrepare: function() {
        require('ts-node').register({
          project: 'e2e/tsconfig.e2e.json'
        });
      }
    };
    
  2. Crear un archivo de configuración de TypeScript para las pruebas E2E (tsconfig.e2e.json):

    {
      "extends": "../tsconfig.json",
      "compilerOptions": {
        "outDir": "../out-tsc/e2e",
        "module": "commonjs",
        "target": "es5",
        "types": [
          "jasmine",
          "node"
        ]
      }
    }
    

Estructura de Archivos para Pruebas E2E

Organiza tus pruebas E2E en una carpeta e2e dentro del proyecto. La estructura típica es la siguiente:

e2e/
  ├── src/
  │   ├── app.e2e-spec.ts
  │   └── app.po.ts
  ├── tsconfig.e2e.json
  └── protractor.conf.js

Escribiendo Pruebas E2E

Página de Objetos (Page Objects)

Los Page Objects son una forma de organizar el código de pruebas para que sea más mantenible y reutilizable. Aquí hay un ejemplo de un archivo app.po.ts:

import { browser, by, element } from 'protractor';

export class AppPage {
  navigateTo() {
    return browser.get('/');
  }

  getTitleText() {
    return element(by.css('app-root h1')).getText();
  }
}

Especificaciones de Pruebas

Las especificaciones de pruebas definen los casos de prueba. Aquí hay un ejemplo de un archivo app.e2e-spec.ts:

import { AppPage } from './app.po';

describe('workspace-project App', () => {
  let page: AppPage;

  beforeEach(() => {
    page = new AppPage();
  });

  it('should display welcome message', () => {
    page.navigateTo();
    expect(page.getTitleText()).toEqual('Welcome to app!');
  });
});

Ejecutando Pruebas E2E

Para ejecutar las pruebas E2E, utiliza el siguiente comando:

protractor protractor.conf.js

Ejercicio Práctico

Ejercicio 1: Configuración de Pruebas E2E

  1. Configura Protractor en tu proyecto Ionic siguiendo los pasos anteriores.
  2. Crea un archivo app.po.ts y define un método para navegar a la página principal y obtener el texto del título.
  3. Crea un archivo app.e2e-spec.ts y escribe una prueba que verifique que el título de la página principal es "Welcome to app!".

Solución

  1. Archivo app.po.ts:

    import { browser, by, element } from 'protractor';
    
    export class AppPage {
      navigateTo() {
        return browser.get('/');
      }
    
      getTitleText() {
        return element(by.css('app-root h1')).getText();
      }
    }
    
  2. Archivo app.e2e-spec.ts:

    import { AppPage } from './app.po';
    
    describe('workspace-project App', () => {
      let page: AppPage;
    
      beforeEach(() => {
        page = new AppPage();
      });
    
      it('should display welcome message', () => {
        page.navigateTo();
        expect(page.getTitleText()).toEqual('Welcome to app!');
      });
    });
    

Conclusión

Las pruebas de extremo a extremo son esenciales para garantizar que tu aplicación Ionic funcione correctamente desde la perspectiva del usuario final. En este tema, hemos aprendido a configurar Protractor, escribir pruebas E2E y ejecutar estas pruebas. Con esta base, puedes crear pruebas más complejas para cubrir todos los aspectos de tu aplicación.

En el siguiente tema, exploraremos cómo construir tu aplicación para producción, asegurando que esté optimizada y lista para ser desplegada en tiendas de aplicaciones.

© Copyright 2024. Todos los derechos reservados