Cypress: run only one test

前端 未结 6 1214
佛祖请我去吃肉
佛祖请我去吃肉 2021-01-31 07:04

I want to toggle only running one test, so I don\'t have to wait for my other tests to see the result of one test.

Currently, I comment out my other tests, but this is r

相关标签:
6条回答
  • 2021-01-31 07:16

    You can mute not needed test suites and particular cases by prepending x to testrunner methods call (describe, it, etc.)

    So it would look like:

    // 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 讨论(0)
  • 2021-01-31 07:20

    To run a specific file through Terminal:

     npx cypress run --record --spec "cypress/integration/my-spec.js"
    
     npm run cypress -- --record --spec "cypress/integration/my-spec.js"
    
    0 讨论(0)
  • 2021-01-31 07:31

    There is one way I have found to skip tests which I don't need to run (in the current test), and that is to use: 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. it is important to use regular function as second argument of it, this will not be available in arrow function
    2. Whole of the test will be skipped no matter where we write this.skip()

    0 讨论(0)
  • 2021-01-31 07:32

    to run only one file

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

    or using glob patterns:

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

    Note: you need to wrap your glob patterns in single quotes to avoid shell expansion!

    to run only one test in a file

    You can use a .only as described in the Cypress docs

    it.only('only run this one', () => {
      // similarly use it.skip(...) to skip a test
    })
    
    it('not this one', () => {
    })
    

    Also, you can do the same with describe and context blocks

    edit:

    there's also a nice VSCode extension to make adding/removing .only's easier with keyboard shortcuts. It's called Test Utils (works with js, coffee, and typescript):

    0 讨论(0)
  • 2021-01-31 07:35

    You can run the test like this.

    cypress run --spec **/file.js

    0 讨论(0)
  • 2021-01-31 07:40

    There are multiple ways of achieving this.

    1. You can add .onlyto it or describe see @bkucera answer
    2. You can do it from the terminal as explained in the doc here
       npx cypress run --record --spec "cypress/integration/my-spec.js"
      
       npm run cypress -- --record --spec "cypress/integration/my-spec.js"
      
    0 讨论(0)
提交回复
热议问题