Skip to content

BDR Methodology

BDD without the Cucumber overhead. Given/When/Then — straight in code.

No Gherkin Tax

No .feature files. Write tests in pure TypeScript with full IDE support, autocomplete, and instant refactoring.

Living Documentation

Your automation reports become the Single Source of Truth for the business. Rich tables, API logs, and UI snapshots.

Type-Safe

Rename a method and your entire test suite updates. Catch errors at compile-time, not at 2 AM in the CI pipeline.


Stop maintaining translation layers. BDR brings business intent directly into your Playwright tests.

tests/login.spec.ts
import { test, expect } from '../baseFixtures';
import { BDR } from '@bdr/core';
test('User can log in', async ({ loginPage, page }) => {
await BDR.Given('the user is on the login page', async () => {
await loginPage.goto();
});
await BDR.When('the user enters valid credentials', async () => {
await loginPage.login('admin', 'securePass123');
});
await BDR.Then('the user is redirected to the dashboard', async () => {
await expect(page).toHaveURL('/dashboard');
});
});