Playwright with JavaScript Commands -Part2

 


9. Network Interception

Block Resources Syntax

 

 

await page.route('**/*.{png,jpg,css}', route => route.abort());

Ø  page.route(): Intercept network requests

Ø  **/*.{png,jpg,css}: Pattern to match URLs ending with these extensions

Ø  route.abort(): Blocks the request from proceeding

Mock API Response Example

 

 

await page.route('**/api/user', async route => {

  await route.fulfill({

    status: 200,

    contentType: 'application/json',

    body: JSON.stringify({ name: 'Mock User' }),

  });

});

Ø  route.fulfill(): Sends a custom response

Ø  Useful for testing edge cases without real API dependencies


10. Handling Frames

Frame Access Syntax

 

 

const frame = page.frame({ name: 'login-frame' });

Ø  page.frame(): Finds frame by name/URL

Ø  Frames are separate HTML documents embedded in the page


11. File Operations

Upload Syntax

 

 

await page.setInputFiles('input[type="file"]', 'path/to/file.txt');

Ø  setInputFiles(): Simulates file selection dialog

Ø  Can handle multiple files: ['file1.txt', 'file2.txt']


12. Multiple Tabs

Popup Handling Example

 

 

const [popup] = await Promise.all([

  page.waitForEvent('popup'),

  page.click('a[target="_blank"]'),

]);

Ø  waitForEvent(): Listens for new browser tab/window

Ø  Promise.all: Handles concurrent actions


13. Test Runner

Test Structure

 

 

test('Login Test', async ({ page }) => {

  // Test steps

});

Ø  test: Defines a test case

Ø  expect: Assertion library for validations


14. Assertions

Element Visibility Check

 

 

await expect(page.locator('.status')).toBeVisible();

Ø  Auto-waits for element to appear

Ø  Other assertions: toBeChecked(), toHaveValue()


15. Cookies

Cookie Setup

 

 

await context.addCookies([{

  name: 'session',

  value: '123',

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

}]);

Ø  Cookies are set at context level

Ø  Persist across pages in same context


16. Device Emulation

Mobile Setup

 

 

const context = await browser.newContext({

  ...devices['iPhone 13'],

  locale: 'en-US'

});

Ø  devices: Pre-configured mobile profiles

Ø  Emulates screen size, user agent, touch support


17. Advanced Context

Proxy Configuration

 

 

const browser = await chromium.launch({

  proxy: { server: 'http://myproxy:3128' }

});

Ø  Routes all browser traffic through proxy

Ø  Can add authentication: username: 'user', password: 'pass'


18. Best Practices

Page Object Model Example

 

 

// login-page.js

export class LoginPage {

  constructor(page) {

    this.page = page;

    this.username = page.locator('#username');

  }

 

  async login(user) {

    await this.username.fill(user);

  }

}


Key Javascript Concepts

1.      Async/Await: Used for all Playwright operations

 

async function test() {

  await page.click();

}

2.      Destructuring:

 

 

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

3.      Arrow Functions:

 

 

page.route('**/*', (route) => route.continue());

 

Post a Comment

0 Comments