## node-geckodriver [![Build Status](https://github.com/vladikoff/node-geckodriver/workflows/Tests/badge.svg)](https://github.com/vladikoff/node-geckodriver/actions?workflow=Tests) [![npm package](https://img.shields.io/npm/v/geckodriver.svg)](https://www.npmjs.com/package/geckodriver)

> Downloader for [github.com/mozilla/geckodriver/releases](https://github.com/mozilla/geckodriver/releases)

This puts `geckodriver` or `geckodriver.exe` into root of this module.

## Install

```
npm install geckodriver
```

## Usage

There are several ways to use this module:

### Use the provided `geckodriver` from `bin` directory.

```
bin/geckodriver [args]
```

### Use it by requiring:

```
require('geckodriver');
```

### Use it by setting WebDriver capabilities:

```
profile.setPreference('marionette', true);
// Add log level if needed:
// profile.setPreference('marionette.logging', 'TRACE');
```

### Use it globally:

```
npm install -g geckodriver
geckodriver [args]
```

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
```

## 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.

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.

## Setting a specific version

Use `GECKODRIVER_VERSION` if you require a specific version of gecko driver for your browser version.

## Using a cached download

Use `GECKODRIVER_FILEPATH` to point to a pre-downloaded geckodriver archive that should be extracted during installation.

## Skipping geckodriver download

Use `GECKODRIVER_SKIP_DOWNLOAD` to skip the download of the geckodriver file.


## Related Projects

* [node-chromedriver](https://github.com/giggio/node-chromedriver)

## Versions

* [npm module version] - [geckodriver version]
* 3.2.0 - geckodriver 0.32.0, arm64 support.
* 3.1.0 - geckodriver 0.31.0
* 3.0.x - geckodriver 0.30.0, refactored logic, dependency updates.
* 2.00.x - geckodriver 0.29.1, support changed to node v12+
* 1.22.x - geckodriver 0.29.0
* 1.21.x - geckodriver 0.28.0
* 1.20.x - geckodriver 0.27.0
* 1.19.x - geckodriver 0.26.0
* 1.18.x - geckodriver 0.26.0
* 1.17.x - geckodriver 0.25.0
* 1.16.x - geckodriver 0.24.0 and `GECKODRIVER_VERSION` env support
* 1.15.x - geckodriver 0.24.0
* 1.14.x - geckodriver 0.23.0
* 1.13.x - geckodriver 0.22.0
* 1.12.x - geckodriver 0.21.0
* 1.11.x - geckodriver 0.20.0
* 1.10.x - geckodriver 0.19.1
* 1.9.x - geckodriver 0.19.0
* 1.8.x - geckodriver 0.18.0
* 1.7.x - geckodriver 0.17.0
* 1.6.x - geckodriver 0.16.1
* 1.5.x - geckodriver 0.15.0
* 1.4.x - geckodriver 0.14.0
* 1.3.x - geckodriver 0.13.0
* 1.2.x - geckodriver 0.11.1
* 1.1.x - geckodriver 0.10

## Changelog

* 3.2.0 - geckodriver 0.32.0, arm64 support for Mac, Linux and Windows, added `GECKODRIVER_ARCH` for custom arch downloads.
* 3.1.0 - geckodriver 0.31.0
* 2.0.1 - fixed proxy download behaviour.
* 1.20.0 - geckodriver 27. Requires node 8 and higher. Support `HTTPS_PROXY` env and npm_config_geckodriver_version variables.
* 1.19.0 - geckodriver 26. Dependency updates.
* 1.18.0 - geckodriver 26.
* 1.17.0 - geckodriver 25.
* 1.16.2 - fix issue with 'tar' dependency.
* 1.16.1 - added support for `GECKODRIVER_FILEPATH` env variable. 
* 1.16.0 - added support for `GECKODRIVER_VERSION` env variable. Set it to `'0.24.0'` to fetch that version.
* 1.15.1 - fix for the new `.npmignore` pattern matching
* 1.15.0 - geckodriver 0.24.0
* 1.14.0 - geckodriver 0.23.0
* 1.13.0 - geckodriver 0.22.0
* 1.12.2 - add proxy settings
* 1.12.1 - adm-zip security fix
* 1.12.0 - geckodriver 0.21.0
* 1.11.0 - geckodriver 0.20.0
* 1.10.0 - geckodriver 0.19.1, switch tar package, enable Win32 builds again, process.env.npm_config_geckodriver_cdnurl support
* 1.9.0 - updated to geckodriver 0.19.0 32-bit windows support removed.
* 1.8.1 - added geckodriver.exe bin for Windows
* 1.8.0 - updated to geckodriver 0.18.0
* 1.7.1 - 'GECKODRIVER_CDNURL' support added.
* 1.7.0 - updated to geckodriver 0.17.0  32-bit linux support added.
* 1.6.1 - updated to geckodriver 0.16.1
* 1.6.0 - updated to geckodriver 0.16.0. 32-bit linux support removed.
* 1.5.0 - updated to geckodriver 0.15.0.
* 1.4.0 - updated to geckodriver 0.14.0.
* 1.3.0 - updated to geckodriver 0.13.0.
* 1.2.1 - added support for Linux 32-bit.
* 1.2.0 - updated to geckodriver 0.11.1.
* 1.1.3 - adds Windows support, fixes Windows tests.
* 1.1.2 - fixed `require` by pointing `package.json main` property to the `lib` file.
* 1.1.0 - programmatic usage, added `bin` support.
* 1.0.0 - init release
