이 게시물에서는 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.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' };
기능 디렉토리에 기능 파일을 생성합니다(예: 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 패키지는 동일한 테스트에서 두 프로세스를 실행할 수 있는 편리한 도구입니다. 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(); });
여기까지 오셨다면 계속 읽으실 수 있도록 최선을 다한 것입니다. 의견을 남기거나 수정 사항을 공유해 주시기 바랍니다.
위 내용은 극작가와 오이 통합으로 ETest 강화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!