1.0.15 • Published 3 years ago

@copperjs/copper v1.0.15

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

GitHub Workflow Status (branch) Codecov branch npm (scoped)

Copper

Copper is a lightweight node.js library which allows creating Chrome or Chromium browser instances for controlling remotely either using Chrome DevTools Protocol or W3C WebDriver Protocol.

Use Cases

  • Run tests on a remote chrome browser, using technologies you already use such as Puppeteer or WebdriverIO
  • Run Selenium tests without Selenium - Copper simply replaces the Selenium server and compatible to most selenium clients
  • Generate PDF or screenshots of a webpage
  • Any other usage of a remote chromium instance you can think of: scraping, crawling, automating, and probably many more - just use Copper to create a remote Chromium and access it using one of the protocols it exposes: CDP and WebDriver

Getting started

Installation
npm i -g @copperjs/copper
# or
yarn global add @copperjs/copper
Usage
copper standalone --port 9115

run a puppeteer tests using copper:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.connect({ browserWSEndpoint: 'ws://localhost:9115' });
  const page = await browser.newPage();
  await page.goto('https://example.com');
  await page.screenshot({ path: 'example.png' });

  await browser.close();
})();

or run a selenium test using copper:

const webdriverio = require('webdriverio');

(async () => {
  const browser = await webdriverio.remote({ path: '/wd/hub/', hostname: 'localhost', port: 9115 });
  await browser.url('https://example.com');
  await page.saveScreenshot('example.png');

  await browser.deleteSession();
})();

Key Features

  • Scale out multiple nodes of Copper using a Hub/Node architecture inspired by Selenium Grid (Hub/Node).
  • Uses pure Node.js - no more complied binaries and jars that must match your browser version. Copper uses chrome-launcher meaning it will run on any machine with chrome/chromium on it.
  • Lightweight and fast - see benchmarks

Our Name

Roadmap

  • create docker files for standalone, headless standalone, node, headless node, hub
  • write some uts
  • write nice readme
  • publish to npm
  • support Docker and publish to Dockerhub
  • support w3c Webdriver commands (WIP)
  • support TLS
  • support HTTP2
  • benchmarks