Case Study: How We Optimized Custom fixtures in Playwright to Speed Up Builds by 80%
Introduction to Custom fixtures in Playwright
A slow, flaky E2E suite blocks releases and frustrates developers. In this case study, we document how a client optimized their automation framework's Custom fixtures in Playwright setup to speed up build runs and secure stable deployment gates.
Core Concepts and Browser Mechanics
The client's main issue was flakiness on dynamic dropdowns and payment gates. By switching from hardcoded wait sleeps to Playwright's auto-waiting locators and intercepting API calls, we eliminated the timing discrepancies.
By using Custom fixtures in Playwright correctly, teams ensure their tests model real human interactions while executing at maximum speed and reliability.
Syntax Code Block
Here is the before/after optimization refactoring we implemented for the Custom fixtures in Playwright script:
import { test as base } from '@playwright/test';\nexport const test = base.extend({\n todoPage: async ({ page }, use) => {\n await use(new TodoPage(page));\n }\n});
Guidelines and Checklist
Review this checklist to make sure your E2E automation framework follows standard industry conventions:
- Best Practice: Eliminate thread sleeps: Replace all setTimeout/waitForTimeout commands with web assertions.
- Best Practice: Intercept network payloads: Speed up runs by blocking heavy images or style files during testing.
- Best Practice: Utilize lightweight worker threads: Speed up local checks by running tests fully parallel.
Summary
This refactoring of Custom fixtures in Playwright resulted in a zero-flake testing pipeline, cutting total runtime from 45 minutes down to just 8 minutes.
Want to write and run tests inside your browser without any setup? Check out our free Online Playwright Playground to test code instantly!
Related Guides
10 Playwright Best Practices for Reliable Tests
Tired of debugging failing builds? Follow these 10 Playwright best practices to write stable, maintainable, and lightning-fast test suites.
Read GuideBest Practices: Designing Database Seeding via Scripts in Playwright Frameworks
Learn all about Database Seeding via Scripts in Playwright. This design pattern & best practice provides copy-pasteable code blocks, tips, and guidelines to avoid timing issues.
Read GuideTroubleshooting Guide: Resolving Custom Project Configuration Errors in Playwright
Learn all about Custom Project Configuration in Playwright. This troubleshooting guide provides copy-pasteable code blocks, tips, and guidelines to avoid timing issues.
Read Guide