Skip to content

Repository files navigation

promod

promod

Browser automation library with a unified API over Playwright and Selenium WebDriver.

Promod provides a protractor-like lazy element interface — elements are not resolved until an action is performed on them.

Installation

npm install promod

Promod requires a browser engine as a peer dependency:

# For Playwright
npm install playwright
# For Selenium WebDriver
npm install selenium-webdriver chromedriver

Quick start

Playwright

const{ chromium }=require('playwright');const{ playwrightWD }=require('promod');const{ browser, $, $$ }=playwrightWD;asyncfunctionmain(){constlaunched=awaitchromium.launch({headless: false});browser.setClient({driver: launched});awaitbrowser.get('https://example.com');constheading=$('h1');console.log(awaitheading.getText());awaitbrowser.quitAll();}main();

Selenium WebDriver

const{ Browser, Builder }=require('selenium-webdriver');require('chromedriver');const{ seleniumWD }=require('promod');const{ browser, $, $$ }=seleniumWD;asyncfunctionmain(){constdriver=awaitnewBuilder().forBrowser(Browser.CHROME).build();browser.setClient({
driver,lauchNewInstance: ()=>newBuilder().forBrowser(Browser.CHROME).build(),});awaitbrowser.get('https://example.com');constheading=$('h1');console.log(awaitheading.getText());awaitbrowser.quit();}main();

ESM / CommonJS

Promod ships dual builds. Bundlers and Node import will use ESM; require() will use CommonJS.

// ESMimport{playwrightWD,seleniumWD}from'promod';// CommonJSconst{ playwrightWD, seleniumWD }=require('promod');

Selector strategies

All examples work identically with both playwrightWD and seleniumWD.

// CSS (default)constel=$('.my-class #id a[href*="link"]');// XPathconstel=$('xpath=.//div[@data-test="id"]/span');// JavaScript functionconstel=$(()=>document.querySelector('div > span'));// Custom selector (query + text filter)constel=$({query: 'button',text: 'Submit'});constel=$({query: 'button',rg: 'Sub.*'});// regex filter

API

TopicLink
Engine setupdocs/init.md
Browser (client)docs/client.md
Element ($)docs/element.md
Elements ($$)docs/elements.md

License

MIT

About

Library for browser manipulation

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages