How to Integrate Playwright with TestNG in Java for UI Automation (Complete Guide with Assertions & Example)
Modern web applications demand reliable, scalable, and maintainable automation testing. If you're working with Java and looking for a powerful end-to-end testing solution, combining Playwright with TestNG is one of the most effective approaches available today.
In this detailed, SEO-optimized guide, you’ll learn:
What Playwright and TestNG are
Why integrating them is beneficial
How to configure Maven dependencies
How to structure a Playwright + TestNG framework
How to write assertions using TestNG
How to execute parallel tests
Best practices for scalable automation
A complete working example using the OrangeHRM demo application
We’ll use the demo website:
👉 https://opensource-demo.orangehrmlive.com/web/index.php/auth/login
Let’s dive in.
What is Playwright?
Playwright is a modern open-source browser automation library developed by Microsoft. It supports multiple browsers including:
Chromium
Firefox
WebKit
Playwright provides APIs to:
Automate web UI interactions
Handle elements dynamically
Capture screenshots
Perform API testing
Run headless or headed browser sessions
Execute tests in parallel
Playwright supports multiple programming languages including Java, making it ideal for Java-based automation frameworks.
What is TestNG?
TestNG is a powerful Java testing framework inspired by JUnit and NUnit. It provides advanced testing capabilities such as:
Annotations (
@Test,@BeforeClass,@AfterClass, etc.)Test grouping
Parallel execution
Data-driven testing
HTML and XML reports
Parameterization
When combined with Playwright, TestNG handles test orchestration, while Playwright handles browser automation.
Why Integrate Playwright with TestNG?
Integrating Playwright with TestNG gives you the best of both worlds.
1️⃣ Structured Test Execution
TestNG provides lifecycle annotations like:
@BeforeSuite@BeforeClass@Test@AfterClass
This helps you systematically manage browser setup and teardown.
2️⃣ Parallel Execution Support
TestNG allows parallel execution through testng.xml, and Playwright supports multiple independent BrowserContext instances. Together, they allow:
Cross-browser testing
Parallel test execution
Faster build cycles
3️⃣ Built-in Reporting
TestNG automatically generates:
HTML reports
XML reports
Execution summaries
This makes debugging and tracking automation results easy.
4️⃣ Data-Driven Testing
TestNG supports:
@DataProviderParameterized tests
External data sources
You can reuse the same Playwright test logic with multiple datasets.
5️⃣ CI/CD Friendly
Both Playwright and TestNG integrate smoothly with:
Maven
Gradle
Jenkins
GitHub Actions
Azure DevOps
This makes your automation pipeline production-ready.
How Playwright + TestNG Work Together
Let’s understand the integration flow.
Step 1: Add Maven Dependencies
You need both Playwright and TestNG dependencies inside your pom.xml.
After adding dependencies, run:
This downloads all required libraries.
Project Structure Best Practice
A clean structure improves maintainability:
BaseTest → Handles browser setup
Test classes → Contains actual test cases
Utils → Helper methods (optional)
Understanding TestNG Lifecycle with Playwright
Here’s how lifecycle management works:
| Annotation | Purpose |
|---|---|
@BeforeClass | Launch browser and open page |
@Test | Perform automation steps |
@AfterClass | Close browser |
This ensures proper setup and teardown for each test class.
Example: Playwright + TestNG Assertions (OrangeHRM Login Page)
We will validate:
Page title
Login button visibility
Login button text
Website under test:
https://opensource-demo.orangehrmlive.com/web/index.php/auth/login
Complete LoginPageTest Class
What Are We Asserting?
| Assertion | What It Validates |
|---|---|
Assert.assertTrue() | Condition must be true |
Assert.assertEquals() | Actual value matches expected |
title.contains("OrangeHRM") | Page title verification |
loginButton.isVisible() | UI element visibility |
textContent() | Inner text validation |
Important Playwright Methods for Assertions
| Method | Purpose |
|---|---|
page.title() | Get page title |
locator.textContent() | Get element text |
locator.isVisible() | Check visibility |
locator.getAttribute() | Get attribute value |
page.url() | Validate URL |
These methods fetch data which TestNG then validates.
Running Tests with TestNG XML (Parallel Execution)
Create a testng.xml file:
This allows:
Multiple test classes to run simultaneously
Faster execution
Better resource usage
Because Playwright uses isolated BrowserContext, tests won’t interfere with each other.
Advantages of Playwright + TestNG Framework
1️⃣ Clean Separation of Responsibilities
Playwright → Browser Automation
TestNG → Test Management
2️⃣ High Scalability
You can:
Add multiple browsers
Run parallel tests
Execute thousands of test cases
3️⃣ Maintainable Code
Using annotations ensures:
Clean setup
Reusable methods
Easy debugging
4️⃣ CI/CD Ready
You can integrate with:
Jenkins
Azure DevOps
GitHub Actions
Maven makes execution simple:
Best Practices for Playwright + TestNG Framework
✅ Use a Base Class
Avoid repeating browser setup in every test class.
✅ Use Explicit Waits When Needed
Although Playwright auto-waits, sometimes use:
✅ Use Page Object Model (POM)
Separate locators from test logic for better maintainability.
✅ Enable Headless Mode in CI
✅ Capture Screenshots on Failure
You can use:
Integrate this inside TestNG listeners.
Common Interview Questions
Q1: Why use TestNG instead of JUnit?
TestNG supports better parallel execution, parameterization, and grouping.
Q2: Does Playwright support parallel testing?
Yes. Using BrowserContext instances along with TestNG parallel execution.
Q3: Is Playwright better than Selenium?
Playwright provides:
Auto-waiting
Faster execution
Built-in network interception
Better modern browser support
Conclusion
Integrating Playwright with TestNG in Java creates a powerful, scalable, and maintainable test automation framework.
You get:
Structured test lifecycle management
Strong assertion capabilities
Parallel execution
Built-in reporting
CI/CD integration
Modern browser automation
By combining Playwright’s powerful browser automation capabilities with TestNG’s structured testing framework, you can build enterprise-level UI automation frameworks that are efficient, reliable, and future-ready.
At a Glance Summary
✔ Use Playwright for browser automation
✔ Use TestNG for test orchestration
✔ Add Maven dependencies
✔ Structure tests using lifecycle annotations
✔ Use TestNG assertions for validation
✔ Configure parallel execution in testng.xml
✔ Integrate with CI/CD
Suggested Posts:
1. BrowserContext in Playwright
2. Automate GET API in Playwright
3. Automate POST API in Playwright
4. Handle Alerts in Playwright
5. How to Show Visible Elements in Playwright
No comments:
Post a Comment