Skip to main content

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
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 preferences (geo, locale, permissions).

✅ Code Example:

ts
const context = await browser.newContext(); // new user session

You can have multiple contexts in one browser instance.


๐Ÿง  3. What is a page?

✅ Definition:

A page is a tab or window inside a context. It’s where all browser interactions happen — like navigating, clicking, typing, or making assertions.

✅ Purpose:

  • Used to interact with the web app under test.

  • Simulates a user's browser tab.

✅ Code Example:

ts
const page = await context.newPage(); // open a new tab await page.goto('https://example.com'); await page.click('#login');

๐Ÿ”„ Full Flow Summary: browser ➝ context ➝ page

css
[Browser][Context][Page] ๐Ÿง  ๐Ÿง‍♂️ ๐Ÿ–ฅ️ Launch Isolated Session Interact with App

๐Ÿ’ก Real Example: Login Flow

ts
import { chromium } from 'playwright'; (async () => { // Step 1: Launch browser const browser = await chromium.launch({ headless: false }); // Step 2: Create a context (isolated session) const context = await browser.newContext(); // Step 3: Open a page (tab) const page = await context.newPage(); // Step 4: Interact with the page await page.goto('https://example.com/login'); await page.fill('#username', 'testuser'); await page.fill('#password', 'password123'); await page.click('text=Login'); // Step 5: Assert login success await page.waitForSelector('#dashboard'); // Step 6: Close browser await browser.close(); })();

๐Ÿงช Why Use context?

Let’s say you want to test multiple users in parallel:

ts
const user1 = await browser.newContext(); const user2 = await browser.newContext(); // user1 logs in const page1 = await user1.newPage(); await page1.goto('/login'); // ... // user2 logs in const page2 = await user2.newPage(); await page2.goto('/login'); // ...

Each context has its own storage — like two separate incognito windows!


✅ Key Takeaways

TermDescriptionReal-Life Analogy
browserBrowser instance (e.g., Chromium)Opening Chrome manually
contextSeparate, isolated browser profile/sessionA new incognito window
pageA tab or window to interact with the siteA single tab in the browser

Comments

Popular posts from this blog

Step-by-Step: Launch Browser, Context, and Page in Playwright and Run Test and Configuration (JavaScript)

๐ŸŽฅ Setup Browser, Context, Page & Run Config Test Scripts with package.json & playwright.config.js Step-by-Step: Launch Browser, Context, and Page in Playwright and Run Test and Configuration (JavaScript) 1. Install Playwright You can install Playwright using the following command: npm init playwright@latest 2. Create a Basic Test Script Understand the core Playwright architecture: Element Description browser Controls the browser instance (like Chrome, Firefox, etc.) context Acts like a separate browser profile (cookies, localStorage are isolated) page A single browser tab where interaction happens 3. Run the Test npx playwright test example.spec.js Ways to Run TypeScript Tests Way Command Notes ๐ŸŸข Via npx npx playwright test Uses built-in TypeScript support ๐ŸŸข With s...

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 ( ...

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));     ...