Socket
Socket
Sign inDemoInstall

browser-provider

Package Overview
Dependencies
69
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    browser-provider

Interface for listing and creating browsers


Version published
Weekly downloads
1.1K
decreased by-23.76%
Maintainers
1
Install size
2.23 MB
Created
Weekly downloads
 

Readme

Source

browser-provider

Interface for listing and creating browsers. Uses browser-manifest for browser metadata and abstract-browser for browser instances.

npm status node Travis JavaScript Style Guide

Usage

A provider can be implemented with promises:

Click to expand
const Provider = require('browser-provider').promises

class MyProvider extends Provider {
  // Return a manifest for every supported browser
  async _manifests () {
    return [
      { name: 'chrome', version: '83' },
      { name: 'firefox', version: '78.0.1' }
    ]
  }

  _browser (manifest, target) {
    // Return a instance of abstract-browser
    // ..
  }

  async _tunnel (options) {
    // Optionally implement a tunnel for remote browsers
    // ..
  }
}

Or with callbacks:

Click to expand
const Provider = require('browser-provider')

class MyProvider extends Provider {
  // Return a manifest for every supported browser
  _manifests (callback) {
    callback(null, [
      { name: 'chrome', version: '83' },
      { name: 'firefox', version: '78.0.1' }
    ])
  }

  _browser (manifest, target) {
    // Return a instance of abstract-browser
    // ..
  }

  _tunnel (options, callback) {
    // Optionally implement a tunnel for remote browsers
    // ..
  }
}

Either way, the public interface supports both promises and callbacks:

const provider = new MyProvider()

// Shorthands
const browser = await provider.open('ff', 'https://example.com')
const manifest = await provider.find('ff')

// Get a list of desired browsers
const wanted = [{ name: 'ff', version: 'oldest..latest' }]
const manifests = await provider.manifests(wanted)

// Instantiate a browser from a manifest
const target = { url: 'http://localhost:3000' }
const browser = provider.browser(manifests[0], target)

await browser.open()

API

provider = new Provider([options])

Constructor. The options argument is optional, to contain implementation-specific options.

provider.manifests([wanted][, callback])

Get an array of manifests. A wanted array may be provided to match the manifests against a desired list of browsers. If that argument is omitted, the result includes all manifests. If no callback is provided, a promise is returned. If you wish to combine & match manifests from multiple providers, use airtap-multi.

provider.browser(manifest, target)

Instantiate and synchronously return an abstract-browser instance from a manifest. The target argument must be a string url or an object in the form of { url }.

provider.open(wanted, target[, options][, callback])

Convenience method for opening a single browser. If no callback is provided, a promise is returned. The wanted argument is required and can be a string as a shorthand for { name } or an object with manifest properties to match. The target argument must be a string url or an object in the form of { url }. The options argument will populate manifest.options.

Examples:

const browser = await provider.open('ff', 'https://example.com')
const browser = await provider.open(
  { name: 'chrome', channel: 'canary' },
  'https://example.com',
  { headless: false }
)

provider.find(wanted[, options][, callback])

Convenience method for finding a single manifest. The wanted argument is required and can be a string as a shorthand for { name } or an object with manifest properties to match. The options argument will populate manifest.options. If no callback is provided, a promise is returned.

Examples:

const manifest = await provider.find('chrome')
const manifest = await provider.find({
  name: 'firefox',
  supports: {
    headless: true
  }
})

provider.tunnel([options, ][callback])

Start a tunnel (of which the interface is currently undocumented). If no callback is provided, a promise is returned. Options may include:

  • domains: an array of domain names to route through the tunnel. Defaults to ['localhost'].

provider.options

The options that were passed into the constructor, or an empty object.

Install

With npm do:

npm install browser-provider

License

MIT © 2020-present Airtap contributors

Keywords

FAQs

Last updated on 07 Mar 2021

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc