この投稿では、Playwright と Cucumber がエンドツーエンド (E2E) テストに優れたツールである理由を説明します。次に、JavaScript フロントエンド アプリケーションでシームレスに使用できるように Playwright を統合する手順について詳しく説明します。最後に、Playwright の効率を最大化するためのプロのヒントをいくつか紹介します。
E2E テスト スイートを構築するための有能なツールは数多くありますが、Playwright と Cucumber の相乗効果に匹敵するものはありません。
いくつか例を挙げると、Playwright が E2E テストの作成において市場で傑出している理由は次のとおりです。
しかし、Cucumber がなければ、テストコードの管理はメンテナンスの悪夢になる可能性があります。 Cucumber を使用すると、人間が読める平易な言語でテストを作成することが容易になり、技術者以外の関係者でもテストにアクセスできるようになります。行動駆動開発 (BDD) の基礎として、Cucumber は技術文書として機能し、新しいエンジニアのオンボーディングを加速します。
npm または Yarn を使用して必要なパッケージをインストールします。
npm install @playwright/test playwright-core @cucumber/cucumber cucumber-html-reporter concurrently
プロジェクトを次のように整理します:
cucumber.js cucumber.report.js /e2e /features example.feature /steps example.steps.js
次の内容の Cucumber 構成ファイル - cucumber.js ファイルをプロジェクトのルートに作成します。
// filepath: /cucumber.js module.exports = { default: { require: ["./steps/**/*.js"], format: ["pretty"], paths: ["./features/**/*.feature"], }, };
cucumber.report.js を作成します - テスト レポートを構成するファイルです。構成オプションはここにあります
// filepath: /cucumber.report.js import reporter from 'cucumber-html-reporter const options = { theme: 'bootstrap', output: report/report.html', jsonFile: 'report/report.json', brandTitle: 'E2E Test Report' };
features ディレクトリに feature ファイルを作成します (例: example.feature:
)
npm install @playwright/test playwright-core @cucumber/cucumber cucumber-html-reporter concurrently
steps ディレクトリにステップ定義ファイルを作成します (例: example.steps.js:
)
cucumber.js cucumber.report.js /e2e /features example.feature /steps example.steps.js
スクリプトを package.json に追加してテストを実行します。
// filepath: /cucumber.js module.exports = { default: { require: ["./steps/**/*.js"], format: ["pretty"], paths: ["./features/**/*.feature"], }, };
同時に npm パッケージは、同じテストで 2 つのプロセスを実行できる便利なツールです。E2E テストを実行するには、アプリケーションも、場合によってはローカルで、場合によってはリモートで実行する必要があります。
次のコマンドを使用してテストを実行します:
// filepath: /cucumber.report.js import reporter from 'cucumber-html-reporter const options = { theme: 'bootstrap', output: report/report.html', jsonFile: 'report/report.json', brandTitle: 'E2E Test Report' };
// filepath: /e2e/features/example.feature Feature: Example feature Scenario: Open a webpage Given I open the "https://example.com" page Then the title should be "Example.com"
// filepath: /e2e/steps/example.steps.js import { Before, Given, Then, setDefaultTimeout, After } from '@cucumber/cucumber'; import { chromium, expect } from 'playwright'; setDefaultTimeout(30 * 1000); //milliseconds let browser, page, context; Before(async function(){ browser = await chromium.launch({headless: true}); context = await brwoser.newContext(); page = await content.newPage(); }); Given('I open the {string} page', async function (url) { await page.goto(url); }); Then('the title should be {string}', async function (title) { const pageTitle = await page.title(); expect(pageTitle).toHaveText(title); }); After(async function(){ await context.close(); await browser.close(); });
あなたがここまでたどり着いたのなら、私はあなたが読み続けるために十分な努力をしたことになります。コメントを残していただいたり、修正を共有していただければ幸いです。
以上がPlaywright と Cucumber の統合で ETest を強化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。