web-dev-qa-db-fra.com

Cyprès - Comment exécuter des fichiers de test dans l'ordre

Lorsque j'appuie sur "Exécuter toutes les spécifications" bouton ou utilisez la commande Exécuter qui exécute tous les fichiers de cyprès qu'il exécute tous les fichiers de test par ordre alphabétique, donc je ne le souhaite pas.

Je veux trier tous avec mes propres règles.


Disons que j'ai 3 étapes dans un test d'application de discussion.

  1. Peut connecter l'application de discussion
  2. Peut connecter le chat
  3. L'utilisateur peut-il envoyer un message?

Je veux tester chaque étape sans être attaché à l'autre. Ce que je veux dire, testez l'une de leur propre fonction. Ce que je fais est comme suit

chat_app_connect.spec.js

describe('Server Connecting Test', () => {
    it('Visit Server page', () => {
        cy.visit('https://chat.page..');
    });

    it('Check welcome messages', () => {
        cy.contains('Live Support');
        cy.contains('Hello, Stranger');
    });

    it('Check URL and status of circle', () => {
        // URL
        cy.url()
            .should('include', '/hello');
        // Status Circle    
        cy.get('circle')
            .should('have.class', 'positive');
    });
});

chat_connect.spec.js

import './chat_app_connect.spec.js';

describe('Chat Connecting Test', () => {
    it('Type customer name', () => {
        cy.get('input')
            .clear()
            .type('E2E Test');
    });
    it('Click to the submit button', () => {
        cy.get('.submit-button')
            .click();
    });
    it('Check URL and status of circle', () => {
        // URL
        cy.url()
            .should('equal', 'https://client.dev.octopus.chat/');
        // Status Circle
        cy.get('circle', { timeout: 5000 })
            .should('have.class', 'positive');
    });
});

chatting.spec.js

import './chat_connect.spec.js';

describe('Chatting Tests', () => {
    it('Type a test message then press Enter and check the message if it sent', () => {
        // Type
        cy.get('#chat-message')
            .clear()
            .type('Hey I\'m a test message{enter}');
        // Check the message
        cy.get('.message-list')
            .should('contain', 'Hey I\'m a test message');
    });
});

comme vous le voyez, chaque test est attaché à chaque test, et c'est méchant lorsque j'ai essayé de tester simplement la fonctionnalité de chat, son appel chaque test et que tous les tests seront testés.

Je ne sais pas si c'est la bonne façon ou non.

que dois-je faire dans ce cas ou peut-il être une manière acceptable?

13
WouX

La solution la plus simple est la plus susceptible d'ajouter un préfixe à tous vos fichiers de test, tels que:

  • 01-chat_app_connect.spec.js
  • 02-chat_connect.spec.js

etc.

Cyprès va prendre ces fichiers par ordre alphabétique, que vous pouvez "tromper" dans votre comportement recherché en utilisant un numéro comme préfixe.

2
alcfeoh