Introducció
Cypress és una eina de proves de cap a cap (end-to-end) que permet als desenvolupadors i testers automatitzar proves per a aplicacions web. És coneguda per la seva facilitat d'ús, velocitat i capacitat de depuració. En aquesta secció, aprendrem a configurar Cypress, escriure proves bàsiques i avançades, i executar-les.
Configuració de Cypress
Instal·lació
Per començar a utilitzar Cypress, primer hem d'instal·lar-lo al nostre projecte. Assegura't de tenir Node.js instal·lat i segueix aquests passos:
-
Inicialitza el teu projecte amb npm (si no ho has fet ja):
npm init -y
-
Instal·la Cypress com a dependència de desenvolupament:
npm install cypress --save-dev
-
Obre Cypress per primera vegada:
npx cypress open
Això crearà una estructura de directoris per a Cypress dins del teu projecte.
Estructura del Projecte Cypress
Un cop Cypress s'ha obert, veuràs una estructura de directoris com aquesta:
- fixtures/: Conté dades de prova que es poden utilitzar en les proves.
- integration/: Conté els fitxers de proves.
- plugins/: Conté plugins que poden modificar o ampliar el comportament de Cypress.
- support/: Conté scripts globals que s'executen abans de cada prova.
Escriure la Primera Prova
Exemple Bàsic
Crearem una prova senzilla que verifiqui que la pàgina principal del nostre lloc web es carrega correctament.
-
Crea un fitxer de prova dins del directori
integration
:touch cypress/integration/homepage.spec.js
-
Afegeix el següent codi al fitxer
homepage.spec.js
:describe('La pàgina principal', () => { it('s'hauria de carregar correctament', () => { cy.visit('http://localhost:3000'); // Canvia l'URL segons el teu entorn cy.contains('Benvingut a la nostra pàgina'); // Canvia el text segons el contingut de la teva pàgina }); });
Explicació del Codi
describe
: Defineix un conjunt de proves relacionades.it
: Defineix una prova individual.cy.visit
: Navega a l'URL especificada.cy.contains
: Verifica que el text especificat està present a la pàgina.
Proves Avançades
Interacció amb Elements
Podem interactuar amb elements de la pàgina, com ara fer clic en botons, omplir formularis, etc.
describe('Formulari de Contacte', () => { it('hauria d'enviar el formulari correctament', () => { cy.visit('http://localhost:3000/contacte'); cy.get('input[name="nom"]').type('Joan'); cy.get('input[name="email"]').type('[email protected]'); cy.get('textarea[name="missatge"]').type('Hola, aquest és un missatge de prova.'); cy.get('button[type="submit"]').click(); cy.contains('El teu missatge ha estat enviat!'); }); });
Assertions
Cypress proporciona diverses assertions per verificar l'estat de la pàgina i els elements.
describe('Prova de Assertions', () => { it('hauria de verificar l\'estat dels elements', () => { cy.visit('http://localhost:3000'); cy.get('h1').should('have.text', 'Benvingut a la nostra pàgina'); cy.get('nav').should('be.visible'); cy.get('input[name="cerca"]').should('exist'); }); });
Executar les Proves
Executar en Mode Interactiu
Per executar les proves en mode interactiu (amb interfície gràfica):
Executar en Mode Headless
Per executar les proves en mode headless (sense interfície gràfica):
Errors Comuns i Consells
Errors Comuns
- No trobar elements: Assegura't que els selectors que utilitzes són correctes i que els elements estan presents 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 fixtures: Emmagatzema dades de prova en fitxers JSON dins del directori
fixtures
i utilitza'ls a les teves proves. - Divideix les proves: Divideix les proves en fitxers i blocs lògics per mantenir-les organitzades i fàcils de mantenir.
- Depuració: Utilitza
cy.pause()
per pausar l'execució de la prova i inspeccionar l'estat de la pàgina.
Resum
En aquesta secció, hem après a configurar Cypress, escriure proves bàsiques i avançades, i executar-les. Cypress és una eina poderosa per a les proves de cap a cap que pot ajudar-te a assegurar la qualitat de les teves aplicacions web. Amb la pràctica, podràs escriure proves més complexes i robustes per cobrir tots els aspectes de la teva aplicació.
JavaScript: De Principiant a Avançat
Mòdul 1: Introducció a JavaScript
- Què és JavaScript?
- Configuració del Teu Entorn de Desenvolupament
- El Teu Primer Programa en JavaScript
- Sintaxi i Conceptes Bàsics de JavaScript
- Variables i Tipus de Dades
- Operadors Bàsics
Mòdul 2: Estructures de Control
- Declaracions Condicionals
- Bucles: for, while, do-while
- Declaracions Switch
- Gestió d'Errors amb try-catch
Mòdul 3: Funcions
- Definició i Crida de Funcions
- Expressions de Funció i Funcions Fletxa
- Paràmetres i Valors de Retorn
- Àmbit i Tancaments
- Funcions d'Ordre Superior
Mòdul 4: Objectes i Arrays
- Introducció als Objectes
- Mètodes d'Objecte i Paraula Clau 'this'
- Arrays: Conceptes Bàsics i Mètodes
- Iteració sobre Arrays
- Desestructuració d'Arrays
Mòdul 5: Objectes i Funcions Avançades
- Prototips i Herència
- Classes i Programació Orientada a Objectes
- Mòduls i Importació/Exportació
- JavaScript Asíncron: Callbacks
- Promeses i Async/Await
Mòdul 6: El Model d'Objectes del Document (DOM)
- Introducció al DOM
- Selecció i Manipulació d'Elements del DOM
- Gestió d'Esdeveniments
- Creació i Eliminació d'Elements del DOM
- Gestió i Validació de Formularis
Mòdul 7: APIs del Navegador i Temes Avançats
- Emmagatzematge Local i de Sessió
- Fetch API i AJAX
- WebSockets
- Service Workers i Aplicacions Web Progressives (PWAs)
- Introducció a WebAssembly
Mòdul 8: Proves i Depuració
- Depuració de JavaScript
- Proves Unitàries amb Jest
- Proves d'Integració
- Proves de Cap a Cap amb Cypress
Mòdul 9: Rendiment i Optimització
- Optimització del Rendiment de JavaScript
- Gestió de Memòria
- Manipulació Eficient del DOM
- Càrrega Per Mandat i Divisió de Codi
Mòdul 10: Frameworks i Llibreries de JavaScript
- Introducció a React
- Gestió d'Estat amb Redux
- Conceptes Bàsics de Vue.js
- Conceptes Bàsics d'Angular
- Triar el Framework Adequat