name: cucumber-test-writing description: Guide for writing Cucumber feature files and step definitions in this Playwright-Cucumber project. Use this when asked to create new tests, scenarios, or step definitions.
Cucumber Test Writing Guide
When writing Cucumber tests for this Playwright-Cucumber project, follow these patterns and conventions:
Project Structure
- Feature files:
tests/features/[FeatureName]/[FeatureName].feature - Step definitions:
tests/steps/[FeatureName].ts - Page objects:
tests/pages/[PageName].ts
Feature File Format
Feature: [Feature Name]
As a [user type] I should be able to [action/goal]
Scenario: [Descriptive scenario name]
Given I am on the [page/application]
When I [perform action]
And I [additional action if needed]
Then I should [expected outcome]
Step Definition Patterns
import { Given, Then, When } from '@cucumber/cucumber';
import { expect } from '@playwright/test';
import { Fixture } from 'tests/support/world';
Given('I am on the [page] website', async function (this: Fixture) {
await this.[pageName].navigate();
});
When('I [action description]', async function (this: Fixture) {
// Implementation using page object methods
});
Then('I should [expected outcome]', async function (this: Fixture) {
// Assertions using expect from @playwright/test
});
Page Object Pattern
import { expect, Locator, Page } from '@playwright/test';
export default class [PageName]Page {
constructor(private readonly page: Page) {}
get [elementName](): Locator {
return this.page.getByRole('[role]', { name: '[name]' });
}
async [methodName](): Promise<void> {
// Implementation
}
async [assertionMethod](): Promise<boolean> {
try {
await expect(this.[element]).toBeVisible();
return true;
} catch {
return false;
}
}
}
Best Practices
- Use descriptive scenario names that explain the business value
- Keep scenarios focused on a single behavior
- Use the existing Fixture type for step definitions
- Leverage page object methods for reusability
- Use environment variables for sensitive data (SF_USERNAME, SF_PASSWORD)
- Follow the Given-When-Then structure strictly
- Use Playwright locators with roles and accessible names
- Include error handling for missing environment variables
Running Tests
- All tests:
npm run test - Specific feature:
npx cucumber-js tests/features/[FeatureName]/[FeatureName].feature - Generate Allure reports:
npm run allure
chat Comments (0)
Sign in to join the discussion and leave a comment.
Skill Details
GitHub Stars
0
GitHub Forks
0
Created
Jan 2026
Last Updated
6 months ago
tools
tools testing
Related Skills
Build your own?
Join 12,000+ developers contributing to the Claude ecosystem.
No comments yet. Be the first to share your thoughts!