Skip to main content

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 script npm run test Defined in package.json

4. Basic package.json Scripts for Playwright

{
  "scripts": {
    "test": "npx playwright test",
    "test:headed": "npx playwright test --headed",
    "test:debug": "npx playwright test --debug",
    "test:report": "npx playwright show-report",
    "test:project": "npx playwright test --project=chromium",
    "test:file": "npx playwright test tests/example.spec.ts",
    "test:grep": "npx playwright test -g 'login test'",
    "build": "tsc"
  }
}

๐Ÿ” Explanation of Scripts

Script What It Does
test Runs all tests (default from config)
test:headed Opens browser with GUI
test:debug Debug mode (step-through with pw.debug() and trace viewer)
test:report Opens HTML test report
test:project Runs tests only on specified browser
test:file Runs a specific test file
test:grep Runs tests with title matching string
build Compiles TypeScript to JavaScript (if using manually)

6. ๐Ÿ”ง playwright.config.js — Explained

1. Basic Structure

// playwright.config.js
const { defineConfig } = require('@playwright/test');

module.exports = defineConfig({
  testDir: './tests',
  timeout: 30000,
  expect: {
    timeout: 5000,
  },
  fullyParallel: true,
  reporter: 'html',
  use: {
    browserName: 'chromium',
    headless: true,
    viewport: { width: 1280, height: 720 },
    screenshot: 'only-on-failure',
    video: 'retain-on-failure',
    trace: 'on-first-retry',
  },
});

2. Common Configuration Options

Option Description
testDir Folder where all tests are located
timeout Maximum time each test can run
use.browserName Choose browser: 'chromium', 'firefox', 'webkit'
headless true runs browser without UI
reporter 'list', 'dot', 'html', 'json' etc.
trace 'on', 'off', 'on-first-retry' helps debug tests
screenshot 'on', 'off', 'only-on-failure'
video 'on', 'off', 'retain-on-failure'

3. Custom Projects

You can define multiple browsers to test across:

projects: [
  { name: 'Chromium', use: { browserName: 'chromium' } },
  { name: 'Firefox', use: { browserName: 'firefox' } },
  { name: 'WebKit', use: { browserName: 'webkit' } }
]

Run all with:

npx playwright test

Comments

Popular posts from this blog

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

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