How to Use Playwright with Cucumber BDD: Complete TypeScript Tutorial for Beginners

Introduction

Learning how to use Playwright with Cucumber BDD is an excellent choice for QA Automation Engineers, SDETs, Selenium engineers transitioning to Playwright, software testing students, QA engineers, and developers. While Playwright Test is a powerful built-in test runner, many organizations still use Cucumber BDD (Behavior-Driven Development) because it enables collaboration between testers, developers, business analysts, and product owners through human-readable scenarios.

By combining Playwright’s fast and reliable browser automation with Cucumber’s Gherkin syntax, teams can create readable, maintainable, and business-focused automated tests.

In this how to use Playwright with Cucumber BDD tutorial, you’ll learn:


What Is Playwright with Cucumber BDD?

Playwright with Cucumber BDD combines:

Instead of writing tests directly in code, business requirements are written in Gherkin language.

Example:

Feature: Login

Scenario: Successful Login

Given User opens login page

When User enters valid credentials

Then User should see dashboard

This format is easy for technical and non-technical stakeholders to understand.


Benefits of Using Playwright with Cucumber BDD

Understanding how to use Playwright with Cucumber BDD provides several advantages:


Step-by-Step Tutorial: How to Use Playwright with Cucumber BDD

Step 1: Create a Project

Initialize a Node.js project.

mkdir playwright-cucumber

cd playwright-cucumber

npm init -y


Step 2: Install Dependencies

npm install @playwright/test

npm install @cucumber/cucumber

npm install typescript

npm install ts-node

npm install –save-dev @types/node

Install Playwright browsers:

npx playwright install


Step 3: Project Folder Structure

playwright-cucumber/

├── features/

│     └── login.feature

├── step-definitions/

│     └── login.steps.ts

├── hooks/

│     └── hooks.ts

├── pages/

│     └── LoginPage.ts

├── cucumber.js

├── tsconfig.json

└── package.json

Keeping features, step definitions, hooks, and page objects in separate folders improves maintainability.


Step 4: Create a Feature File

Create features/login.feature.

Feature: Login

Scenario: Valid Login

Given User opens login page

When User enters username “admin”

And User enters password “admin123”

And User clicks login button

Then Dashboard should be displayed

Explanation

The feature file describes business behavior without exposing implementation details.


Step 5: Create Step Definitions

Create step-definitions/login.steps.ts.

import { Given, When, Then } from ‘@cucumber/cucumber’;

import { chromium, Browser, Page } from ‘playwright’;

import { expect } from ‘@playwright/test’;

let browser: Browser;

let page: Page;

Given(‘User opens login page’, async () => {

  browser = await chromium.launch();

  page = await browser.newPage();

  await page.goto(‘https://example.com/login’);

});

When(‘User enters username {string}’, async (username) => {

  await page.fill(‘#username’, username);

});

When(‘User enters password {string}’, async (password) => {

  await page.fill(‘#password’, password);

});

When(‘User clicks login button’, async () => {

  await page.click(‘#login’);

});

Then(‘Dashboard should be displayed’, async () => {

  await expect(page).toHaveURL(/dashboard/);

  await browser.close();

});

Practical Use Case

This example automates a complete login workflow using Playwright with Cucumber step definitions.


Step 6: Create Hooks

Create hooks/hooks.ts.

import { Before, After } from ‘@cucumber/cucumber’;

Before(async () => {

  console.log(‘Starting Test’);

});

After(async () => {

  console.log(‘Closing Test’);

});

Why Hooks Matter

Hooks execute setup and cleanup logic before and after every scenario.

Common uses include:


Step 7: Configure Cucumber

Create cucumber.js.

module.exports = {

default: {

require: [

‘step-definitions/*.ts’,

‘hooks/*.ts’

],

requireModule: [‘ts-node/register’]

}

};

This configuration tells Cucumber where to find feature files and step definitions.


Step 8: Run the Tests

Execute:

npx cucumber-js

Expected output:

Feature: Login

✓ Valid Login

1 scenario passed


Real-World BDD Examples

1. Login Scenario

Scenario: Successful Login

Given User opens login page

When User enters valid credentials

Then Dashboard should appear

Use case: Authentication testing.


2. Registration

Scenario: Register User

Given Registration page is opened

When User enters valid information

Then Registration succeeds

Use case: Customer onboarding.


3. Checkout

Scenario: Purchase Product

Given User adds product to cart

When User completes payment

Then Order confirmation is displayed

Use case: E-commerce automation.


4. Search Functionality

Scenario: Search Product

Given Homepage is open

When User searches “Laptop”

Then Products should appear

Use case: Product search validation.


5. Form Validation

Scenario: Invalid Email

Given Registration page

When User enters invalid email

Then Validation message appears

Use case: Input validation testing.


Playwright with Cucumber BDD vs Playwright Test

FeaturePlaywright + Cucumber BDDPlaywright Test
Business-readable scenarios✅ Yes❌ No
Gherkin support✅ Built-in❌ No
Collaboration with non-technical teamsExcellentLimited
Built-in test runnerUses CucumberNative
PerformanceSlightly slowerFaster
Best for enterprise BDD✅ YesGood for developer-focused testing

Which Should You Choose?


Best Practices for Playwright Cucumber Framework Development

Follow these recommendations:

  • Keep feature files short and readable.
  • Write business-focused Gherkin scenarios.
  • Reuse step definitions whenever possible.
  • Implement the Page Object Model (POM) for UI interactions.
  • Use hooks for browser setup, teardown, and screenshots.
  • Keep test data separate from step definitions.
  • Execute tests in parallel where appropriate.
  • Integrate reports into CI/CD pipelines.

CI/CD Integration

Playwright with Cucumber BDD works well with modern CI/CD tools.

Popular integrations include:

Typical workflow:

Developer Commit

        │

        ▼

CI/CD Pipeline

        │

        ▼

Install Dependencies

        │

        ▼

Run Cucumber Scenarios

        │

        ▼

Generate Reports

        │

        ▼

Publish Results

Running BDD tests in CI/CD helps teams identify regressions early and maintain application quality.


Common Issues & Troubleshooting Tips

ProblemSolution
Undefined stepEnsure the step definition matches the Gherkin text exactly.
Browser not launchingVerify Playwright browsers are installed using npx playwright install.
Feature file not detectedConfirm the feature file path in the Cucumber configuration.
TypeScript compilation errorsCheck the tsconfig.json configuration and installed dependencies.
Slow executionReuse browser instances and optimize step definitions.

Playwright with Cucumber BDD Interview Questions with Answers

1. What is Cucumber BDD?

Cucumber is a Behavior-Driven Development framework that uses Gherkin syntax to describe application behavior in a readable format.


2. Why use Playwright with Cucumber?

It combines fast browser automation with business-readable test scenarios, making collaboration easier.


3. What is a Feature file?

A Feature file contains Gherkin scenarios describing expected application behavior.


4. What are Hooks?

Hooks are methods that run before or after scenarios for setup and cleanup activities.


5. What is the advantage of the Page Object Model in a Cucumber framework?

The Page Object Model separates UI interactions from test logic, making the framework easier to maintain and reuse.


FAQs

What is how to use Playwright with Cucumber BDD?

It is the process of integrating Playwright browser automation with the Cucumber BDD framework to create readable, business-focused automated tests using Gherkin feature files.


Is how to use Playwright with Cucumber BDD suitable for beginners?

Yes. Beginners can quickly learn Gherkin syntax, while Playwright simplifies browser automation with modern APIs and automatic waiting.


How do I get started with how to use Playwright with Cucumber BDD?

Create a Playwright project, install Cucumber and TypeScript dependencies, organize your framework with feature files and step definitions, configure Cucumber, and execute scenarios using npx cucumber-js.

Leave a Comment

Your email address will not be published. Required fields are marked *