npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

geckodriver

v5.0.0

Published

Mozilla's Geckodriver for Node.js

Downloads

3,905,515

Readme

Geckodriver CI Audit

An NPM wrapper for Mozilla's Geckodriver. It manages to download various (or the latest) Geckodriver versions and provides a programmatic interface to start and stop it within Node.js. Note: this is a wrapper module. If you discover any bugs with Geckodriver, please report them in the official repository.

Installing

You can install this package via:

npm install geckodriver

Or install it globally:

npm install -g geckodriver

Note: This installs a geckodriver shell script that runs the executable, but on Windows, selenium-webdriver looks for geckodriver.exe. To use a global installation of this package with selenium-webdriver on Windows, copy or link geckodriver.exe to a location on your PATH (such as the NPM bin directory) after installing this package:

mklink %USERPROFILE%\AppData\Roaming\npm\geckodriver.exe %USERPROFILE%\AppData\Roaming\npm\node_modules\geckodriver\geckodriver.exe

Once installed you can start Geckodriver via:

npx geckodriver --port=4444

By default, this package downloads Geckodriver when used for the first time through the CLI or the programmatic interface. If you like to download it as part of the NPM install process, set the GECKODRIVER_AUTO_INSTALL environment flag, e.g.:

GECKODRIVER_AUTO_INSTALL=1 npm i

To get a list of available CLI options run npx geckodriver --help. By default, this package downloads the latest version of the driver. If you prefer to have it install a custom Geckodriver version you can define the environment variable GECKODRIVER_VERSION when running in CLI, e.g.:

$ npm i geckodriver
$ GECKODRIVER_VERSION="0.31.0" npx geckodriver --version
geckodriver 0.31.0 (b617178ef491 2022-04-06 11:57 +0000)

The source code of this program is available from
testing/geckodriver in https://hg.mozilla.org/mozilla-central.

This program is subject to the terms of the Mozilla Public License 2.0.
You can obtain a copy of the license at https://mozilla.org/MPL/2.0/.

Setting a CDN URL for binary download

To set an alternate CDN location for Geckodriver binaries, set the GECKODRIVER_CDNURL like this:

GECKODRIVER_CDNURL=https://INTERNAL_CDN/geckodriver/download

Binaries on your CDN should be located in a subdirectory of the above base URL. For example, /vxx.xx.xx/*.tar.gz should be located under /geckodriver/download above.

Alternatively, you can add the same property to your .npmrc file.

The default location is set to https://github.com/mozilla/geckodriver/releases/download

Setting a PROXY URL

Use HTTPS_PROXY or HTTP_PROXY to set your proxy URL.

Programmatic Interface

You can import this package with Node.js and start the driver as part of your script and use it e.g. with WebdriverIO.

Exported Methods

The package exports a start and download method.

start

Starts a Geckodriver instance and returns a ChildProcess. If Geckodriver is not downloaded it will download it for you.

Params: GeckodriverParameters - options to pass into Geckodriver (see below)

Example:

import { start } from 'geckodriver';
import { remote } from 'webdriverio';
import waitPort from 'wait-port';

/**
 * first start Geckodriver
 */
const cp = await start({ port: 4444 });

/**
 * wait for Geckodriver to be up
 */
await waitPort({ port: 4444 });

/**
 * then start WebdriverIO session
 */
const browser = await remote({ capabilities: { browserName: 'firefox' } });
await browser.url('https://webdriver.io');
console.log(await browser.getTitle()); // prints "WebdriverIO · Next-gen browser and mobile automation test framework for Node.js | WebdriverIO"

/**
 * kill Geckodriver process
 */
cp.kill();

Note: as you can see in the example above this package does not wait for the driver to be up, you have to manage this yourself through packages like wait-on.

download

Method to download a Geckodriver with a particular version. If a version parameter is omitted it tries to download the latest available version of the driver.

Params: string - version of Geckodriver to download (optional)

CJS Support

In case your module uses CJS you can use this package as follows:

const { start } = require('geckodriver')
// see example above

Options

The start method offers the following options to be passed on to the actual Geckodriver CLI.

allowHosts

List of host names to allow. By default, the value of --host is allowed, and in addition, if that's a well-known local address, other variations on well-known local addresses are allowed. If --allow-hosts is provided only exactly those hosts are allowed.

Type: string[] Default: []

allowOrigins

List of request origins to allow. These must be formatted as scheme://host:port. By default, any request with an origin header is rejected. If --allow-origins is provided then only exactly those origins are allowed.

Type: string[] Default: []

binary

Path to the Firefox binary.

Type: string

connectExisting

Connect to an existing Firefox instance.

Type: boolean Default: false

host

Host IP to use for WebDriver server.

Type: string Default: 0.0.0.0

jsdebugger

Attach browser toolbox debugger for Firefox.

Type: boolean Default: false

log

Set Gecko log level [possible values: fatal, error, warn, info, config, debug, trace].

Type: string

logNoTruncated

Write server log to file instead of stderr, increases log level to INFO.

Type: boolean

marionetteHost

Host to use to connect to Gecko.

Type: boolean Default: 127.0.0.1

marionettePort

Port to use to connect to Gecko.

Type: number Default: 0

port

Port to listen on.

Type: number

profileRoot

Directory in which to create profiles. Defaults to the system temporary directory.

Type: string

geckoDriverVersion

A version of Geckodriver to start. See https://github.com/mozilla/geckodriver/releases for all available versions, platforms and architecture.

Type: string

customGeckoDriverPath

Don't download Geckodriver, instead use a custom path to it, e.g. a cached binary.

Type: string Default: process.env.GECKODRIVER_PATH

cacheDir

The path to the root of the cache directory.

Type: string Default: process.env.GECKODRIVER_CACHE_DIR || os.tmpdir()

spawnOpts

Options to pass into the geckodriver process. This can be useful if needing Firefox to spawn with MOZ_ prefix variables, such as MOZ_HEADLESS_WIDTH. See https://nodejs.org/api/child_process.html#child_processspawncommand-args-options for all options.

Type: SpawnOptionsWithoutStdio | SpawnOptionsWithStdioTuple Default: undefined

Other Browser Driver

If you also look for other browser driver NPM wrappers, you can find them here:


For more information on WebdriverIO see the homepage.