Introducció
Les proves de punta a punta (E2E) són essencials per assegurar que la teva aplicació funcioni correctament des de la perspectiva de l'usuari final. Cypress és una eina poderosa per a realitzar proves E2E, ja que proporciona una API senzilla i intuïtiva, així com una interfície gràfica per veure les proves en temps real.
Configuració de Cypress
Instal·lació
Per començar a utilitzar Cypress, primer has d'instal·lar-lo al teu projecte. Pots fer-ho utilitzant npm o yarn:
Estructura del projecte
Després d'instal·lar Cypress, pots inicialitzar-lo per crear l'estructura de carpetes necessària:
Això crearà una carpeta cypress
al teu projecte amb les següents subcarpetes:
fixtures
: Conté dades de prova.integration
: Conté els fitxers de proves.plugins
: Conté fitxers per estendre la funcionalitat de Cypress.support
: Conté fitxers de configuració i comandes personalitzades.
Creant la teva primera prova E2E
Exemple de prova
Suposem que tens una aplicació Vue.js amb una pàgina d'inici que conté un botó que, quan es clica, mostra un missatge. Crearem una prova per assegurar-nos que aquest comportament funciona correctament.
-
Crea un fitxer de prova: A la carpeta
cypress/integration
, crea un fitxer anomenathome.spec.js
. -
Escriu la prova:
describe('Pàgina d\'inici', () => { it('hauria de mostrar un missatge quan es clica el botó', () => { // Visita la pàgina d'inici cy.visit('/'); // Assegura't que el botó existeix cy.get('button').should('exist'); // Clica el botó cy.get('button').click(); // Verifica que el missatge es mostra cy.contains('El botó ha estat clicat!').should('be.visible'); }); });
Explicació del codi
describe
: Defineix un conjunt de proves relacionades.it
: Defineix una prova individual.cy.visit('/')
: Navega a la pàgina d'inici de l'aplicació.cy.get('button')
: Selecciona l'element del botó.cy.contains('El botó ha estat clicat!')
: Verifica que el text especificat es mostra a la pàgina.
Executant les proves
Per executar les proves, pots utilitzar la interfície gràfica de Cypress o executar-les en mode capless.
Interfície gràfica
Executa el següent comandament per obrir la interfície gràfica de Cypress:
A la interfície, selecciona el fitxer de prova home.spec.js
per executar-lo.
Mode capless
Per executar les proves en mode capless (ideal per a integració contínua), utilitza el següent comandament:
Exercicis pràctics
Exercici 1: Prova de formulari de registre
Crea una prova per verificar que un formulari de registre funciona correctament. La prova hauria de:
- Visitar la pàgina de registre.
- Omplir els camps del formulari (nom, correu electrònic, contrasenya).
- Clicar el botó de registre.
- Verificar que es mostra un missatge de confirmació.
Solució
describe('Formulari de registre', () => { it('hauria de registrar un nou usuari', () => { cy.visit('/register'); cy.get('input[name="name"]').type('John Doe'); cy.get('input[name="email"]').type('[email protected]'); cy.get('input[name="password"]').type('password123'); cy.get('button[type="submit"]').click(); cy.contains('Registre complet!').should('be.visible'); }); });
Errors comuns i consells
Errors comuns
- Elements no trobats: Assegura't que els selectors que utilitzes són correctes i que els elements existeixen a la pàgina.
- Temps d'espera insuficients: Cypress espera automàticament que els elements apareguin, però en alguns casos pot ser necessari augmentar el temps d'espera.
Consells
- Utilitza selectors únics: Evita utilitzar selectors que puguin canviar fàcilment, com ara classes generades automàticament.
- Divideix les proves: Mantingues les proves petites i enfocades en una funcionalitat específica per facilitar el manteniment.
Conclusió
Les proves de punta a punta amb Cypress són una manera efectiva de garantir que la teva aplicació Vue.js funcioni correctament des de la perspectiva de l'usuari final. Amb Cypress, pots escriure proves clares i llegibles que cobreixin una àmplia gamma de casos d'ús. Practica escrivint i executant proves per familiaritzar-te amb l'eina i assegurar-te que la teva aplicació és robusta i fiable.
Curs de Vue.js
Mòdul 1: Introducció a Vue.js
- Què és Vue.js?
- Configuració de l'entorn de desenvolupament
- Creant la teva primera aplicació Vue
- Entenent la instància de Vue
Mòdul 2: Conceptes bàsics de Vue.js
- Sintaxi de plantilles
- Enllaç de dades
- Propietats computades i observadors
- Enllaços de classes i estils
- Renderització condicional
- Renderització de llistes
Mòdul 3: Components de Vue.js
- Introducció als components
- Props i esdeveniments personalitzats
- Slots
- Components dinàmics i asíncrons
- Comunicació entre components
Mòdul 4: Vue Router
- Introducció a Vue Router
- Configuració de Vue Router
- Rutes dinàmiques
- Rutes niades
- Guàrdies de navegació
Mòdul 5: Gestió d'estat amb Vuex
- Introducció a Vuex
- Estat, getters, mutacions i accions
- Mòduls a Vuex
- Utilitzant Vuex en components
- Patrons avançats de Vuex
Mòdul 6: Directives de Vue.js
Mòdul 7: Plugins de Vue.js
Mòdul 8: Proves en Vue.js
Mòdul 9: Conceptes avançats de Vue.js
- Funcions de renderització i JSX
- Renderització del costat del servidor (SSR) amb Nuxt.js
- API de composició de Vue 3
- Optimització del rendiment