web-dev-qa-db-fra.com

Cyprès: exécutez un seul test

Je souhaite activer/désactiver un seul test, je n'ai donc pas à attendre mes autres tests pour voir le résultat d'un test.

Actuellement, je commente mes autres tests, mais c'est vraiment ennuyeux.

Existe-t-il un moyen d'activer/désactiver un seul test dans Cypress?

42
bkucera

pour exécuter un seul fichier

cypress run --spec path/to/file.spec.js

ou en utilisant des modèles glob

Remarque: vous devez encapsuler vos modèles globaux entre guillemets simples pour éviter l'expansion de Shell!

cypress run --spec 'path/to/files/*.spec.js'

pour exécuter un seul test dans un fichier

Oui, vous pouvez utiliser un .only comme décrit dans les documents Cypress

it.only('only run this one', () => {
})

it('not this one', () => {
})

Vous pouvez également faire de même avec les blocs describe et context

éditer:

il y a aussi une extension Nice VSCode pour ajouter/supprimer .only est plus facile avec les raccourcis clavier. Cela s'appelle Test Utils (fonctionne avec js, coffee et TypeScript):

enter image description here

52
bkucera

Il existe plusieurs façons d'y parvenir.

  1. Vous pouvez ajouter .onlyà it ou describe voir @bkucera réponse
  2. Vous pouvez le faire depuis le terminal comme expliqué dans le doc ici
     npx cypress run --record --spec "cypress/integration/my-spec.js"
    
     npm run cypress -- --record --spec "cypress/integration/my-spec.js"
    
16
Morlo Mbakop

Il y a un moyen que j'ai trouvé pour ignorer les tests que je n'ai pas besoin d'exécuter (dans le test en cours), et c'est d'utiliser: this.skip();

it('test page', function () {
    // skip this test for now
    this.skip();
    cy.visit('http://example.com/')
    cy.contains('test page').click()
    cy.url()
        .should('include', '/test-page/')
})

1. Il est important d'utiliser la fonction régulière comme deuxième argument, cela ne sera pas disponible dans la fonction flèche
2. L'ensemble du test sera ignoré, peu importe où nous écrivons this.skip ()

2
Kevdog777

Vous pouvez désactiver les suites de tests inutiles et les cas particuliers en ajoutant x à l'appel des méthodes testrunner (describe, it, etc.)

Cela ressemblerait donc à:

// this whole testsuite will be muted
xdescribe('Visit google', () => { 
  it('should visit google', () => { cy.visit('https://google.com/'); });
});

// this testsuite will run
describe('Visit youtube', () => {
  it('should visit youtube', () => { cy.visit('https://youtube.com/'); });

  // this testcase will be muted
  xit('is not necessary', () => { ... });
});
0
Oleksandr Tkalenko

Vous pouvez exécuter le test comme ceci.

cypress run --spec **/file.js

0
Marko