@serenity-js/playwright
| Install | |
|---|---|
npm install @serenity-js/playwright |
|
| Latest Version: | 3.49.0 |
| License: | Apache-2.0 |
| Last Updated: | Oct 21, 2026 |
| Links: | GitHub · npm |
Serenity/JS Playwright
@serenity-js/playwright brings full Serenity reporting capabilities to Playwright and enables writing tests using the Screenplay Pattern.
Features
- Integrates Serenity/JS with Playwright providing standardised Screenplay Web API
- Supports all Serenity/JS reporting features and expands native Playwright Test reports
- TypeScript-first design with strong typing for safer and more predictable test code.
Installation
npm install --save-dev @serenity-js/assertions @serenity-js/console-reporter @serenity-js/core @serenity-js/html-reporter @serenity-js/web @serenity-js/playwright
See the Serenity/JS Installation Guide.
Quick Start
Usage with Playwright Test
import { describe, it } from '@serenity-js/playwright-test'
import { Navigate, Page } from '@serenity-js/web'
import { Ensure, startsWith } from '@serenity-js/assertions'
describe('Website', () => {
it('should have a title', async ({ actor }) => {
await actor.attemptsTo(
Navigate.to('https://serenity-js.org/'),
Ensure.that(Page.current().title(), startsWith('Serenity/JS')),
)
})
})
Explore the in-depth Serenity/JS and Playwright Test integration guide in the Serenity/JS Handbook.
Usage with Cucumber
Follow the Serenity/JS configuration guide for Cucumber and the Serenity/JS Cucumber and Playwright Project Template.
Usage with Mocha
import { Ensure, startsWith } from '@serenity-js/assertions'
import { actorCalled, Cast, configure, Duration } from '@serenity-js/core'
import { BrowseTheWebWithPlaywright } from '@serenity-js/playwright'
import { Navigate, Page } from '@serenity-js/web'
import { describe, it, beforeAll, afterAll } from 'mocha'
import * as playwright from 'playwright'
describe('Website', () => {
let browser: playwright.Browser
beforeAll(async () => {
// Start a single browser before all the tests,
// Serenity/JS will open new tabs
// and manage Playwright browser context as needed
browser = await playwright.chromium.launch({
headless: true
})
// Configure Serenity/JS providing your Actors
// and required "stage crew memebers" (a.k.a. reporting services)
configure({
actors: Cast.where(actor => actor.whoCan(
BrowseTheWebWithPlaywright.using(
browser,
{ baseURL: `https://serenity-js.org` },
{
defaultNavigationTimeout: Duration.ofSeconds(2).inMilliseconds(),
defaultTimeout: Duration.ofMilliseconds(750).inMilliseconds(),
}
)
)),
crew: [
[ '@serenity-js/console-reporter', { theme: 'auto' } ],
[ '@serenity-js/html-reporter', {
outputDirectory: './reports/serenity-js',
specDirectory: 'spec',
} ],
[ '@serenity-js/web:Photographer', {
strategy: 'TakePhotosOfFailures',
// strategy: 'TakePhotosOfInteractions',
} ],
]
})
})
it('should have a title', async () => {
await actorCalled('William').attemptsTo(
Navigate.to('https://serenity-js.org'),
Ensure.that(Page.current().title(), startsWith('Serenity/JS')),
)
})
afterAll(async () => {
// Close the browser after all the tests are finished
if (browser) {
await browser.close()
}
})
})
Documentation
- API Reference
- Screenplay Pattern Guide
- Serenity/JS Project Templates
- More examples and reference implementations
- Tutorial: First Web Scenario
- Tutorial: First API Scenario
Contributing
Contributions of all kinds are welcome! Get started with the Contributing Guide.
Community
- Community Chat
- Discussions Forum
- Visit the 💡How to... ? section for answers to common questions
If you enjoy using Serenity/JS, make sure to star ⭐️ Serenity/JS on GitHub to help others discover the framework!
License
The Serenity/JS code base is licensed under the Apache-2.0 license, while its documentation and the Serenity/JS Handbook are licensed under the Creative Commons BY-NC-SA 4.0 International.
See the Serenity/JS License.
Support
Support ongoing development through GitHub Sponsors. Sponsors gain access to Serenity/JS Playbooks and priority help in the Discussions Forum.
For corporate sponsorship or commercial support, please contact Jan Molak.
Related Packages
Serenity/JS test runner adapter for Playwright Test, combining Playwright's deve...
Adapter that integrates @serenity-js/web with Protractor, enabling Serenity/JS r...
Support files for running tests with Playwright using QuickPickle (Gherkin in Vi...
Support files for running Gherkin/Cucumber tests in Vitest Browser mode, for tes...
Version History
| Version | Released | License |
|---|---|---|
| 3.49.0 | Apache-2.0 | |
| 3.48.2 | Apache-2.0 | |
| 3.48.1 | Apache-2.0 | |
| 3.48.0 | Apache-2.0 | |
| 3.47.2 | Apache-2.0 | |
| 3.47.0 | Apache-2.0 | |
| 3.46.1 | Apache-2.0 | |
| 3.46.0 | Apache-2.0 | |
| 3.45.9 | Apache-2.0 | |
| 3.45.8 | Apache-2.0 | |
| 3.45.7 | Apache-2.0 | |
| 3.45.6 | Apache-2.0 | |
| 3.45.5 | Apache-2.0 | |
| 3.45.4 | Apache-2.0 | |
| 3.45.3 | Apache-2.0 | |
| 3.45.2 | Apache-2.0 | |
| 3.45.1 | Apache-2.0 | |
| 3.45.0 | Apache-2.0 | |
| 3.44.3 | Apache-2.0 | |
| 3.44.2 | Apache-2.0 | |
| 3.44.1 | Apache-2.0 | |
| 3.44.0 | Apache-2.0 | |
| 3.43.4 | Apache-2.0 | |
| 3.43.3 | Apache-2.0 | |
| 3.43.2 | Apache-2.0 | |
| 3.43.1 | Apache-2.0 | |
| 3.43.0 | Apache-2.0 | |
| 3.42.2 | Apache-2.0 | |
| 3.42.1 | Apache-2.0 | |
| 3.42.0 | Apache-2.0 |
Showing the latest 30 of 150. See every release on npm
Pre-releases (26)
| Version | Released | License |
|---|---|---|
| 3.0.0-rc.45 | Apache-2.0 | |
| 3.0.0-rc.44 | Apache-2.0 | |
| 3.0.0-rc.43 | Apache-2.0 | |
| 3.0.0-rc.42 | Apache-2.0 | |
| 3.0.0-rc.41 | Apache-2.0 | |
| 3.0.0-rc.40 | Apache-2.0 | |
| 3.0.0-rc.39 | Apache-2.0 | |
| 3.0.0-rc.38 | Apache-2.0 | |
| 3.0.0-rc.37 | Apache-2.0 | |
| 3.0.0-rc.36 | Apache-2.0 | |
| 3.0.0-rc.35 | Apache-2.0 | |
| 3.0.0-rc.34 | Apache-2.0 | |
| 3.0.0-rc.33 | Apache-2.0 | |
| 3.0.0-rc.32 | Apache-2.0 | |
| 3.0.0-rc.31 | Apache-2.0 | |
| 3.0.0-rc.30 | Apache-2.0 | |
| 3.0.0-rc.29 | Apache-2.0 | |
| 3.0.0-rc.28 | Apache-2.0 | |
| 3.0.0-rc.27 | Apache-2.0 | |
| 3.0.0-rc.26 | Apache-2.0 | |
| 3.0.0-rc.25 | Apache-2.0 | |
| 3.0.0-rc.24 | Apache-2.0 | |
| 3.0.0-rc.23 | Apache-2.0 | |
| 3.0.0-rc.22 | Apache-2.0 | |
| 3.0.0-rc.21 | Apache-2.0 | |
| 3.0.0-rc.20 | Apache-2.0 |