Les proves de punta a punta (E2E) són un tipus de prova que valida el funcionament complet d'una aplicació des del principi fins al final. Aquestes proves simulen el comportament real de l'usuari per assegurar-se que totes les parts del sistema funcionen correctament quan es combinen. En el context d'Angular, les proves E2E es realitzen habitualment amb Protractor, un framework de proves E2E per a aplicacions Angular.
Objectius del tema
- Entendre què són les proves de punta a punta.
- Configurar Protractor per a proves E2E en una aplicació Angular.
- Escriure i executar proves E2E bàsiques.
- Comprendre els conceptes clau de Protractor i Selenium WebDriver.
- Què són les proves de punta a punta?
Les proves de punta a punta tenen com a objectiu:
- Verificar que totes les parts d'una aplicació funcionen correctament quan es combinen.
- Simular el comportament real de l'usuari.
- Detectar problemes d'integració entre diferents components del sistema.
- Configuració de Protractor
Instal·lació de Protractor
Per començar a utilitzar Protractor, primer cal instal·lar-lo. Pots fer-ho utilitzant npm:
Després de la instal·lació, actualitza WebDriver:
Configuració del fitxer protractor.conf.js
El fitxer de configuració de Protractor (protractor.conf.js) defineix com es realitzaran les proves. Aquí tens un exemple bàsic:
exports.config = {
directConnect: true,
framework: 'jasmine',
specs: ['e2e/**/*.e2e-spec.ts'],
capabilities: {
'browserName': 'chrome'
},
onPrepare: () => {
require('ts-node').register({
project: 'e2e/tsconfig.e2e.json'
});
}
};Configuració de tsconfig.e2e.json
Crea un fitxer tsconfig.e2e.json per configurar TypeScript per a les proves E2E:
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/e2e",
"module": "commonjs",
"target": "es5",
"types": ["jasmine", "node"]
},
"include": [
"**/*.ts"
]
}
- Escriure i executar proves E2E bàsiques
Exemple de prova E2E
Crea un fitxer de prova E2E, per exemple e2e/app.e2e-spec.ts:
import { browser, by, element } from 'protractor';
describe('Prova E2E de l\'aplicació Angular', () => {
it('hauria de mostrar el títol correcte', () => {
browser.get('/');
expect(element(by.css('app-root h1')).getText()).toEqual('Benvingut a la meva aplicació Angular!');
});
});Executar les proves E2E
Per executar les proves E2E, utilitza el següent comandament:
- Conceptes clau de Protractor i Selenium WebDriver
Protractor
Protractor és un framework de proves E2E per a aplicacions Angular i AngularJS. Està construït sobre Selenium WebDriver i proporciona funcionalitats addicionals per treballar amb aplicacions Angular.
Selenium WebDriver
Selenium WebDriver és una eina per automatitzar navegadors web. Proporciona una API per controlar el navegador i interactuar amb elements de la pàgina.
Elements clau de Protractor
- browser: Objecte global que representa el navegador.
- element: Funció per seleccionar elements de la pàgina.
- by: Objecte que proporciona mètodes per localitzar elements (per exemple,
by.css,by.id).
Exercici pràctic
Exercici
Crea una prova E2E que verifiqui que un botó amb el text "Enviar" està present a la pàgina principal de l'aplicació.
Solució
import { browser, by, element } from 'protractor';
describe('Prova E2E de l\'aplicació Angular', () => {
it('hauria de mostrar un botó amb el text "Enviar"', () => {
browser.get('/');
expect(element(by.buttonText('Enviar')).isPresent()).toBe(true);
});
});Errors comuns i consells
- Error:
NoSuchElementError: Assegura't que l'element que estàs intentant seleccionar existeix a la pàgina i que el selector és correcte. - Error:
TimeoutError: Pot ser causat per una espera insuficient. Utilitzabrowser.waitper esperar que un element estigui present o visible.
Conclusió
Les proves de punta a punta són essencials per assegurar-se que totes les parts d'una aplicació funcionen correctament quan es combinen. Protractor és una eina poderosa per realitzar aquestes proves en aplicacions Angular. Amb la configuració adequada i una comprensió dels conceptes clau, pots escriure i executar proves E2E efectives per garantir la qualitat de la teva aplicació.
Curs d'Angular 2+
Mòdul 1: Introducció a Angular
- Què és Angular?
- Configuració de l'entorn de desenvolupament
- La teva primera aplicació Angular
- Arquitectura d'Angular
Mòdul 2: Conceptes bàsics de TypeScript
- Introducció a TypeScript
- Variables i tipus de dades en TypeScript
- Funcions i funcions fletxa
- Classes i interfícies
Mòdul 3: Components i plantilles
Mòdul 4: Directives i pipes
Mòdul 5: Serveis i injecció de dependències
Mòdul 6: Enrutament i navegació
Mòdul 7: Formularis en Angular
Mòdul 8: Client HTTP i observables
- Introducció al client HTTP
- Realització de sol·licituds HTTP
- Gestió de respostes HTTP
- Ús d'observables
