Mastering Playwright from Scratch

Mastering Playwright from Scratch: A Complete Guide

Introduction

In the world of web automation and end-to-end testing, Playwright has emerged as one of the most powerful and modern tools. Developed by Microsoft, Playwright supports multiple browsers (Chromium, Firefox, WebKit) and multiple languages (JavaScript, TypeScript, Python, C#, and Java). If you're starting your automation journey or switching from Selenium or Cypress, this guide will help you master Playwright from scratch.


What is Playwright?

Playwright is an open-source test automation framework that allows you to automate web browsers for testing and scraping purposes. It enables you to:


Automate Chromium, Firefox, and WebKit with a single API.


Perform cross-browser testing.


Run tests in headless and headed modes.


Handle multiple tabs, popups, iframes, and downloads.


Automate modern web apps with dynamic content.


Key Features of Playwright

Cross-browser Testing: Supports Chrome, Firefox, Safari (via WebKit).


Auto-wait: Automatically waits for elements to be ready.


Multi-language Support: Works with JavaScript, Python, C#, and Java.


Headless Execution: Supports running tests in headless browsers.


Powerful Selectors: Supports CSS, XPath, text, role, and more.


Mobile and Geolocation Testing


Rich Debugging Tools: Trace viewer, screenshots, and video recording.


Setting Up Playwright

✅ For JavaScript/TypeScript

Install Node.js


Download from https://nodejs.org


Initialize Project


bash

Copy

Edit

npm init -y

npm install -D @playwright/test

npx playwright install

Create a test file


javascript

Copy

Edit

// tests/example.spec.js

const { test, expect } = require('@playwright/test');


test('Basic test', async ({ page }) => {

  await page.goto('https://example.com');

  const title = await page.title();

  expect(title).toBe('Example Domain');

});

Run the test


bash

Copy

Edit

npx playwright test

Core Concepts to Master

1. Browsers and Contexts

Playwright launches a browser instance and creates multiple browser contexts, like separate incognito sessions.


javascript

Copy

Edit

const browser = await playwright.chromium.launch();

const context = await browser.newContext();

2. Pages and Navigation

javascript

Copy

Edit

const page = await context.newPage();

await page.goto('https://example.com');

3. Locators and Actions

Playwright offers powerful locators:


javascript

Copy

Edit

await page.click('text=Login');

await page.fill('#username', 'admin');

await page.fill('#password', 'admin123');

await page.click('button[type="submit"]');

4. Assertions

javascript

Copy

Edit

await expect(page).toHaveURL('https://example.com/dashboard');

await expect(page.locator('h1')).toHaveText('Welcome');

Advanced Playwright Features

๐Ÿ”น Parallel Testing

Playwright runs tests in parallel by default for faster execution.


๐Ÿ”น Screenshots and Videos

javascript

Copy

Edit

await page.screenshot({ path: 'screenshot.png' });

Enable in config to record videos:


js

Copy

Edit

use: {

  video: 'on',

  screenshot: 'only-on-failure',

}

๐Ÿ”น Trace Viewer

Debug failed tests with a visual trace:


bash

Copy

Edit

npx playwright show-trace trace.zip

๐Ÿ”น Handling Alerts, Popups, Frames

Playwright handles these easily using context and event listeners.


Playwright Test Generator

You can generate tests by recording user actions:


bash

Copy

Edit

npx playwright codegen https://example.com

This opens a browser and records your actions as Playwright code.


Organizing Your Test Project

arduino

Copy

Edit

tests/

├── login.spec.js

├── dashboard.spec.js

playwright.config.js

utils/

├── helpers.js

Sample Configuration (playwright.config.js)

javascript

Copy

Edit

module.exports = {

  use: {

    headless: true,

    browserName: 'chromium',

    baseURL: 'https://example.com',

  },

  reporter: [['list'], ['html']],

  retries: 1,

};

Playwright vs Other Frameworks

Feature Playwright Selenium Cypress

Language Support ✅ JS, Python, Java, C# ✅ Multiple ❌ JS only

Cross-browser ✅ Yes ✅ Yes ⚠️ Limited

Mobile Emulation ✅ Yes ⚠️ Complex ⚠️ Basic

Speed ⚡ Fast ๐Ÿข Slower ⚡ Fast

Auto-waiting ✅ Yes ❌ Manual waits ✅ Yes

Network Intercept ✅ Advanced ✅ Limited ✅ Yes

Conclusion

Playwright is a modern, powerful, and flexible automation framework ideal for testing modern web applications. Whether you are a beginner or an experienced automation engineer, Playwright’s robust features and developer-friendly APIs make it a top choice for end-to-end testing.

Would you like this turned into a downloadable PDF or SEO-optimized blog post? I can also add a tutorial for Playwright with Python or Java if you prefer.

Learn Testing Tools Training in Hyderabad

Read More

Cypress for Modern Web Apps

A Deep Dive into Cross-Browser Testing Tools

Visit Our IHUB Talent Training Institute in Hyderabad

Get Directions


Comments

Popular posts from this blog

Handling Frames and Iframes Using Playwright

Cybersecurity Internship Opportunities in Hyderabad for Freshers

Tosca for API Testing: A Step-by-Step Tutorial