https://github.com/airtap/the-last-browser-launcher
Detect, launch and stop browsers. Temporary fork.
https://github.com/airtap/the-last-browser-launcher
browser-launcher browsers fork nodejs npm-package
Last synced: about 1 year ago
JSON representation
Detect, launch and stop browsers. Temporary fork.
- Host: GitHub
- URL: https://github.com/airtap/the-last-browser-launcher
- Owner: airtap
- License: other
- Created: 2020-09-20T16:09:05.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-08-01T05:46:28.000Z (almost 3 years ago)
- Last Synced: 2024-05-13T16:24:03.394Z (about 2 years ago)
- Topics: browser-launcher, browsers, fork, nodejs, npm-package
- Language: JavaScript
- Homepage:
- Size: 448 KB
- Stars: 2
- Watchers: 5
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# the-last-browser-launcher
**Detect the browsers installed on your system and launch them in an isolated profile for automation & testing purposes. Supports Linux, Mac and Windows.**
[](https://www.npmjs.org/package/the-last-browser-launcher)
[](https://www.npmjs.org/package/the-last-browser-launcher)
[](http://travis-ci.com/airtap/the-last-browser-launcher)
[](https://standardjs.com)
This project is the latest in a long series, each forked from the last:
- [`substack/browser-launcher`](https://github.com/substack/browser-launcher) (lightly maintained)
- [`benderjs/browser-launcher2`](https://github.com/benderjs/browser-launcher2) (unmaintained).
- [`james-proxy/james-browser-launcher`](https://github.com/james-proxy/james-browser-launcher) (unmaintained)
- [`httptoolkit/browser-launcher`](https://github.com/httptoolkit/browser-launcher) (actively maintained)
They all have their problems. This fork is temporary, meant to consolidate fixes and reduce API surface, after which it will be split up into small, community-owned modules. In other words, this fork exists so that the project can die a good death. Its API is subject to change without warning.
## Supported browsers
- Chrome
- Chromium
- Firefox
- IE (Windows only)
- Chromium-based Edge (Windows & Mac only)
- Brave
- Opera
- Safari
## Install
```
npm install the-last-browser-launcher
```
## Example
### Browser launch
```js
const launcher = require('the-last-browser-launcher')
launcher.detect(function(err, manifests) {
if (err) throw err
launcher.launch(manifests[0], 'http://example.com/', function(err, instance) {
if (err) throw err
console.log('Instance started with PID:', instance.pid)
instance.on('stop', function(code) {
console.log('Instance stopped with exit code:', code)
})
})
})
```
Outputs:
```
$ node example/launch.js
Instance started with PID: 12345
Instance stopped with exit code: 0
```
## API
``` js
const launcher = require('the-last-browser-launcher')
```
### `launcher.detect(callback)`
Get available browsers.
**Parameters:**
- *Function* `callback(err, manifests)`
### `launcher.launch(manifest, uri[, options], callback)`
Open given URI in a browser and yield an `instance` of it.
**Parameters:**
- *Object* `manifest` - A manifest from `detect()`
- *String* `uri` - URI to open in a newly started browser
- *Object* `options`:
- *String* `proxy` - URI of the proxy server
- *Array* `args` - additional command line arguments
- *Boolean* `skipDefaults` - don't supply any default args to browser
- *Boolean* `detached` - if true, then killing your script will not kill the opened browser
- *Array|String* `noProxy` - An array of strings, containing proxy routes to skip over
- *Boolean* `headless` - run in headless mode. Supported cross-platform by Chromium, Chrome, Edge, Brave and Firefox.
- *Function* `callback(err, instance)`
### `instance`
Browser instance object.
**Properties:**
- *Object* `process` - reference to instance's process started with Node's `child_process.spawn` API
- *Number* `pid` - instance's process PID
- *Stream* `stdout` - instance's process STDOUT stream
- *Stream* `stderr` - instance's process STDERR stream
**Events:**
- `stop` - fired when instance stops
**Methods:**
- `unref()`
- `stop(callback)` - stop the instance and fire the callback once stopped
## Known Issues
- IE8: after several starts and stops, if you manually open IE it will come up with a pop-up asking if we want to restore tabs (#21)
- Chrome @ OSX: it's not possible to launch multiple instances of Chrome at once
## License
MIT