Skip to main content

Playwright + TypeScript Project Package.json (Explained)

Playwright + TypeScript Project Package.json (Explained)

If you're setting up end-to-end testing using Playwright with TypeScript, your package.json file becomes the core configuration hub. It defines dependencies, scripts, tooling, and project metadata. Below is a clean, production-ready example — followed by a full explanation.

✅ Example package.json for Playwright + TypeScript

{
  "name": "playwright-ts-demo",
  "version": "1.0.0",
  "private": true,
  "description": "Playwright end-to-end tests using TypeScript",
  "scripts": {
    "test": "playwright test",
    "test:ui": "playwright test --ui",
    "test:headed": "playwright test --headed",
    "test:debug": "playwright test --debug",
    "codegen": "playwright codegen",
    "show-report": "playwright show-report",
    "format": "prettier --write .",
    "lint": "eslint . --ext .ts"
  },
  "devDependencies": {
    "@playwright/test": "^1.48.0",
    "typescript": "^5.6.0",
    "ts-node": "^10.9.2",
    "eslint": "^9.0.0",
    "@typescript-eslint/eslint-plugin": "^8.0.0",
    "@typescript-eslint/parser": "^8.0.0",
    "prettier": "^3.3.0"
  }
}

๐Ÿ“Œ What Each Section Means

1️⃣ Project Metadata


"name": "playwright-ts-demo",
"version": "1.0.0",
"private": true,
"description": "Playwright end-to-end tests using TypeScript"
  • name — project identifier
  • version — not important unless publishing
  • private: true — prevents accidental npm publishing
  • description — explains project purpose

2️⃣ Scripts — Your Most Used Commands


"scripts": {
  "test": "playwright test",
  "test:ui": "playwright test --ui",
  "test:headed": "playwright test --headed",
  "test:debug": "playwright test --debug"
}
  • npm test — runs all Playwright tests
  • npm run test:ui — launches graphical test runner
  • npm run test:headed — shows visible browser
  • npm run test:debug — step-by-step debugging

Utility Scripts

  • codegen — auto-generates test scripts while browsing
  • show-report — opens last HTML test report
  • format — formats with Prettier
  • lint — checks TypeScript code quality

3️⃣ Dev Dependencies — Required for Testing

  • @playwright/test — Playwright test framework
  • typescript — TypeScript compiler
  • ts-node — run .ts files directly
  • eslint + TypeScript plugins — linting
  • prettier — formatting

These tools are only needed during development, not production.


๐Ÿ“‚ Typical Playwright + TS Project Structure


project/
 ├─ tests/
 │   └─ example.spec.ts
 ├─ playwright.config.ts
 ├─ package.json
 └─ tsconfig.json

๐Ÿงช Example Test File (example.spec.ts)

import { test, expect } from '@playwright/test';

test('homepage has title', async ({ page }) => {
  await page.goto('https://example.com');
  await expect(page).toHaveTitle(/Example/);
});

๐Ÿš€ Quick Setup Commands

npm init -y
npm install --save-dev @playwright/test typescript
npx playwright install
npx tsc --init

✅ Summary

  • package.json organizes Playwright tooling
  • Scripts simplify test execution
  • Dev dependencies enable TypeScript, linting & formatting
  • Perfect for scalable automated testing

Now you're ready to build reliable browser automation using Playwright and TypeScript!

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

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