Skip to main content

Playwright Test Structure in Details -Session-02

πŸŽ₯ Playwright: test.only, Hooks & Grouping with test.describe Explained

Let’s go step-by-step, showing how to build from a single test, to using beforeEach/afterEach, and then organizing things with test.describe.


✅ Step 1: Basic Single Test with test.only

import { test, expect } from '@playwright/test';
test.only('πŸš€ Basic test - check title', async ({ page }) => { await page.goto('https://example.com'); await expect(page).toHaveTitle(/Example Domain/); });

test.only ensures only this test runs — great for debugging.


✅ Step 2: Add beforeEach and afterEach


import { test, expect } from '@playwright/test'; test.beforeEach(async ({ page }) => { console.log('πŸ”„ Setting up before each test'); await page.goto('https://example.com'); }); test.afterEach(async ({ page }, testInfo) => { console.log(`πŸ“¦ Finished test: ${testInfo.title}`); }); test.only('Check heading text', async ({ page }) => { const heading = await page.locator('h1'); await expect(heading).toHaveText('Example Domain'); });

✅ Step 3: Use test.describe to Group Tests


import { test, expect } from '@playwright/test'; test.describe('🌐 Example.com Homepage Tests', () => { test('Test 1 - Check title', async ({ page }) => { await page.goto('https://example.com'); await expect(page).toHaveTitle(/Example Domain/); }); test('Test 2 - Check heading', async ({ page }) => { await page.goto('https://example.com'); const heading = await page.locator('h1'); await expect(heading).toHaveText('Example Domain'); }); });

Now both tests are grouped logically under one label.


✅ Step 4: test.describe with beforeEach and afterEach

import { test, expect } from '@playwright/test';
test.describe('πŸ§ͺ Grouped tests with setup/teardown', () => { test.beforeEach(async ({ page }) => { console.log('πŸ”§ Running beforeEach in describe block'); await page.goto('https://example.com'); }); test.afterEach(async ({ page }, testInfo) => { console.log(`✅ Completed: ${testInfo.title}`); }); test('Test A - Page title', async ({ page }) => { await expect(page).toHaveTitle(/Example Domain/); }); test('Test B - Heading check', async ({ page }) => { const heading = await page.locator('h1'); await expect(heading).toHaveText('Example Domain'); }); });

✅ Summary Chart:

StepWhat’s ShownKey Feature
1test.only()Run single test
2beforeEach & afterEach globallySetup/teardown
3test.describe()Group related tests
4describe + beforeEach + afterEachReusable logic within group

Comments

Popular posts from this blog

Understand browser, context, and page in Playwright

πŸŽ₯ Playwright: Browser, Context & Page - Real-time Demo and Multi-User Testing  . 🎯 Goal: Understand browser , context , and page in Playwright 🧠 1. What is a browser ? ✅ Definition: A browser in Playwright is a launched instance of a real browser (Chromium, Firefox, WebKit) that can be used for automated testing. ✅ Purpose: It starts and controls the browser process. It is the root of your test execution. Required to create contexts and pages . ✅ Code Example: ts Copy Edit import { chromium } from 'playwright' ; const browser = await chromium. launch ({ headless : false }); 🧠 2. What is a context (browser context)? ✅ Definition: A context is like a separate browser profile (or incognito tab) inside the browser. Each context is isolated — no cookies, local storage, or sessions are shared. ✅ Purpose: Simulates multiple users or sessions. Enables parallel and isolated testing. Allows setting user-specific prefer...

How to Maximize a Browser window using Playwright Java

  Playwright itself does not have a direct maximize () method like some other browser automation tools, but you can achieve the effect by setting the viewport to the screen size of your display. Below are ways to handle Maximize a browser in Playwright Java  Ø   Setting the viewport to the screen size  o    setViewportSize(1920, 1080): This sets the browser window to a full HD resolution, effectively maximizing it. o    setHeadless(false): Ensures the browser runs in a visible mode so you can see the window being maximized.  Code Snapshot  Playwright playwright = Playwright. create ()   ;   Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false));     // Create a new browser context   BrowserContext context = browser.newContext(new Browser.NewContextOptions()          .setViewportSize(1920, 1080));     ...

Playwright Locators in JavaScript (Complete Guide)

🎯 Playwright Locators in JavaScript (Complete Guide) This guide explains each Playwright locator with: ✅ What it is πŸ• When to use ⚙️ How to use it 🎯 Benefits πŸ§ͺ Code Examples πŸ”Ή 1. Locator by ID ✅ What: Selects an element with a unique id . πŸ• When: Element has a unique id . ⚙️ How: page.locator('#username') 🎯 Benefit: Fast and reliable. <input id="username" /> await page.locator('#username').fill('John'); πŸ”Ή 2. Locator by Class ✅ What: Selects by class . πŸ• When: Repeated or styled elements. ⚙️ How: page.locator('.password') 🎯 Benefit: Useful for shared styling. <input class="password" /> await page.locator('.password').fill('12345'); πŸ”Ή 3. Locator by Text ✅ What: Matches visible element text. πŸ• When: For buttons, links, etc. ⚙️ How: page.getByText('Login') 🎯 Benefit: Human-readable. <button>Login...