不安定なテストは自動テストにおける一般的な課題です。これらは、コードの変更とは関係のない理由で合格することもあれば失敗することもあり、一貫性がなく信頼性の低いテスト結果が得られるテストです。この投稿では、Cypress で不安定なテストが発生する原因を調査し、それらを効果的に処理するためのベスト プラクティスと戦略について説明します。
不安定なテストは非決定的な動作を示すテストであり、同じ条件下で実行しても常に同じ結果が得られるわけではありません。この不一致により、テスト スイートの信頼性が損なわれ、自動テストの信頼性が損なわれる可能性があります。
cy.intercept('GET', '/api/data', { fixture: 'data.json' }).as('getData'); cy.visit('/'); cy.wait('@getData');
cy.get('.spinner').should('not.exist'); // Ensure spinner is gone cy.get('.data-list').should('be.visible'); // Ensure data list is visible
Cypress.Commands.add('login', (username, password) => { cy.get('input[name="username"]').type(username); cy.get('input[name="password"]').type(password); cy.get('button[type="submit"]').click(); cy.url().should('include', '/dashboard'); });
// Install the plugin first: npm install -D cypress-plugin-retries require('cypress-plugin-retries'); // Enable retries in your test Cypress.env('RETRIES', 2); // Example test with retries it('should display data after retry', () => { cy.visit('/data-page'); cy.get('.data-item').should('have.length', 10); // Retry if fails });
beforeEach(() => { cy.exec('npm run reset-db'); // Reset the database cy.visit('/'); });
// Use data attributes for selectors cy.get('[data-cy="submit-button"]').click();
describe('Flaky Test Example', () => { beforeEach(() => { cy.visit('/'); }); it('should load data reliably', () => { // Use intercept to stub network request cy.intercept('GET', '/api/data', { fixture: 'data.json' }).as('getData'); cy.get('button[data-cy="load-data"]').click(); cy.wait('@getData'); // Use robust selector and assertion cy.get('[data-cy="data-list"]').should('have.length', 5); }); it('should handle spinner correctly', () => { // Ensure spinner is not visible before asserting data cy.get('.spinner').should('not.exist'); cy.get('[data-cy="data-list"]').should('be.visible'); }); });
信頼性が高く堅牢なテスト スイートを維持するには、不安定なテストを処理することが重要です。不安定性の一般的な原因を理解し、ベスト プラクティスを実装することで、Cypress プロジェクトで不安定なテストの発生を大幅に減らすことができます。テストが決定的で、分離され、安定していることを保証するために、Cypress の強力な機能とツールを忘れずに活用してください。
テストをお楽しみください!
以上がCypress で不安定なテストを処理する: ベスト プラクティスと戦略の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。