web-dev-qa-db-ja.com

サイプレス:1つのテストのみを実行する

1つのテストの実行のみを切り替えたいので、他のテストが1つのテストの結果を確認するのを待つ必要はありません。

現在、他のテストをコメントアウトしていますが、これは本当に面倒です。

Cypressで1つのテストのみを実行するように切り替える方法はありますか?

42
bkucera

1つのファイルのみを実行するには

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

またはグロブパターンを使用して

注:シェルの展開を回避するには、グロブパターンを一重引用符で囲む必要があります

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

ファイルで1つのテストのみを実行するには

はい、.onlyサイプレスのドキュメント で説明されています

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

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

また、describeおよびcontextブロックでも同じことができます

編集:

また、追加/削除を行うためのNice VSCode拡張機能もあります.onlyはキーボードショートカットで簡単になりました。これはTest Utilsと呼ばれます(js、coffee、TypeScriptで動作します):

enter image description here

52
bkucera

これを実現する方法はいくつかあります。

  1. あなたは付け加えられます .onlyto itまたはdescribe @bkuceraの回答を参照
  2. こちらのドキュメント で説明されているように、ターミナルから実行できます。
     npx cypress run --record --spec "cypress/integration/my-spec.js"
    
     npm run cypress -- --record --spec "cypress/integration/my-spec.js"
    
16
Morlo Mbakop

(現在のテストで)実行する必要のないテストをスキップする方法が1つあり、それを使用する方法は次のとおりです: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。通常の関数を2番目の引数として使用することが重要です。これは、矢印関数では使用できません
2。 this.skip()をどこに書き込んでも、テスト全体がスキップされます

2
Kevdog777

xをtestrunnerメソッドの呼び出しに追加することで、不要なテストスイートや特定のケースをミュートできます(describeitなど)。

したがって、次のようになります。

// 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

このようにしてテストを実行できます。

cypress run --spec **/file.js

0
Marko