# abstractBrowserPlugin<!-- --> \<Library, LibraryOptions, LaunchResult, NewPageOptions, NewPageResult>

The `BrowserPlugin` serves two purposes. First, it is the base class that specialized controllers like `PuppeteerPlugin` or `PlaywrightPlugin` extend. Second, it allows the user to configure the automation libraries and feed them to [BrowserPool](https://crawlee.dev/js/api/browser-pool/class/BrowserPool.md) for use.

### Hierarchy

* *BrowserPlugin*

  * [PlaywrightPlugin](https://crawlee.dev/js/api/browser-pool/class/PlaywrightPlugin.md)
  * [PuppeteerPlugin](https://crawlee.dev/js/api/browser-pool/class/PuppeteerPlugin.md)

## Index[**](#Index)

### Constructors

* [**constructor](#constructor)

### Properties

* [**browserPerProxy](#browserPerProxy)
* [**experimentalContainers](#experimentalContainers)
* [**ignoreProxyCertificate](#ignoreProxyCertificate)
* [**launchOptions](#launchOptions)
* [**library](#library)
* [**name](#name)
* [**proxyUrl](#proxyUrl)
* [**useIncognitoPages](#useIncognitoPages)
* [**userDataDir](#userDataDir)

### Methods

* [**createController](#createController)
* [**createLaunchContext](#createLaunchContext)
* [**launch](#launch)

## Constructors<!-- -->[**](#Constructors)

### [**](#constructor)[**](https://github.com/apify/crawlee/blob/8f2663aedfd2280ca35b9185b4e287f65a2ce969/packages/browser-pool/src/abstract-classes/browser-plugin.ts#L137)constructor

* ****new BrowserPlugin**\<Library, LibraryOptions, LaunchResult, NewPageOptions, NewPageResult>(library, options): [BrowserPlugin](https://crawlee.dev/js/api/browser-pool/class/BrowserPlugin.md)\<Library, LibraryOptions, LaunchResult, NewPageOptions, NewPageResult>

- #### Parameters

  * ##### library: Library
  * ##### options: [BrowserPluginOptions](https://crawlee.dev/js/api/browser-pool/interface/BrowserPluginOptions.md)\<LibraryOptions> = <!-- -->{}

  #### Returns [BrowserPlugin](https://crawlee.dev/js/api/browser-pool/class/BrowserPlugin.md)\<Library, LibraryOptions, LaunchResult, NewPageOptions, NewPageResult>

## Properties<!-- -->[**](#Properties)

### [**](#browserPerProxy)[**](https://github.com/apify/crawlee/blob/8f2663aedfd2280ca35b9185b4e287f65a2ce969/packages/browser-pool/src/abstract-classes/browser-plugin.ts#L133)optionalbrowserPerProxy

**browserPerProxy?

<!-- -->

: boolean

### [**](#experimentalContainers)[**](https://github.com/apify/crawlee/blob/8f2663aedfd2280ca35b9185b4e287f65a2ce969/packages/browser-pool/src/abstract-classes/browser-plugin.ts#L131)experimentalContainers

**experimentalContainers: boolean

### [**](#ignoreProxyCertificate)[**](https://github.com/apify/crawlee/blob/8f2663aedfd2280ca35b9185b4e287f65a2ce969/packages/browser-pool/src/abstract-classes/browser-plugin.ts#L135)optionalignoreProxyCertificate

**ignoreProxyCertificate?

<!-- -->

: boolean

### [**](#launchOptions)[**](https://github.com/apify/crawlee/blob/8f2663aedfd2280ca35b9185b4e287f65a2ce969/packages/browser-pool/src/abstract-classes/browser-plugin.ts#L123)launchOptions

**launchOptions: LibraryOptions

### [**](#library)[**](https://github.com/apify/crawlee/blob/8f2663aedfd2280ca35b9185b4e287f65a2ce969/packages/browser-pool/src/abstract-classes/browser-plugin.ts#L121)library

**library: Library

### [**](#name)[**](https://github.com/apify/crawlee/blob/8f2663aedfd2280ca35b9185b4e287f65a2ce969/packages/browser-pool/src/abstract-classes/browser-plugin.ts#L119)name

**name: string =

<!-- -->

...

### [**](#proxyUrl)[**](https://github.com/apify/crawlee/blob/8f2663aedfd2280ca35b9185b4e287f65a2ce969/packages/browser-pool/src/abstract-classes/browser-plugin.ts#L125)optionalproxyUrl

**proxyUrl?

<!-- -->

: string

### [**](#useIncognitoPages)[**](https://github.com/apify/crawlee/blob/8f2663aedfd2280ca35b9185b4e287f65a2ce969/packages/browser-pool/src/abstract-classes/browser-plugin.ts#L129)useIncognitoPages

**useIncognitoPages: boolean

### [**](#userDataDir)[**](https://github.com/apify/crawlee/blob/8f2663aedfd2280ca35b9185b4e287f65a2ce969/packages/browser-pool/src/abstract-classes/browser-plugin.ts#L127)optionaluserDataDir

**userDataDir?

<!-- -->

: string

## Methods<!-- -->[**](#Methods)

### [**](#createController)[**](https://github.com/apify/crawlee/blob/8f2663aedfd2280ca35b9185b4e287f65a2ce969/packages/browser-pool/src/abstract-classes/browser-plugin.ts#L193)createController

* ****createController**(): [BrowserController](https://crawlee.dev/js/api/browser-pool/class/BrowserController.md)\<Library, LibraryOptions, LaunchResult, NewPageOptions, NewPageResult>

- #### Returns [BrowserController](https://crawlee.dev/js/api/browser-pool/class/BrowserController.md)\<Library, LibraryOptions, LaunchResult, NewPageOptions, NewPageResult>

### [**](#createLaunchContext)[**](https://github.com/apify/crawlee/blob/8f2663aedfd2280ca35b9185b4e287f65a2ce969/packages/browser-pool/src/abstract-classes/browser-plugin.ts#L164)createLaunchContext

* ****createLaunchContext**(options): [LaunchContext](https://crawlee.dev/js/api/browser-pool/class/LaunchContext.md)\<Library, LibraryOptions, LaunchResult, NewPageOptions, NewPageResult>

- Creates a `LaunchContext` with all the information needed to launch a browser. Aside from library specific launch options, it also includes internal properties used by `BrowserPool` for management of the pool and extra features.

  ***

  #### Parameters

  * ##### options: [CreateLaunchContextOptions](https://crawlee.dev/js/api/browser-pool/interface/CreateLaunchContextOptions.md)\<Library, LibraryOptions, LaunchResult, NewPageOptions, NewPageResult> = <!-- -->{}

  #### Returns [LaunchContext](https://crawlee.dev/js/api/browser-pool/class/LaunchContext.md)\<Library, LibraryOptions, LaunchResult, NewPageOptions, NewPageResult>

### [**](#launch)[**](https://github.com/apify/crawlee/blob/8f2663aedfd2280ca35b9185b4e287f65a2ce969/packages/browser-pool/src/abstract-classes/browser-plugin.ts#L200)launch

* ****launch**(launchContext): Promise\<LaunchResult>

- Launches the browser using provided launch context.

  ***

  #### Parameters

  * ##### launchContext: [LaunchContext](https://crawlee.dev/js/api/browser-pool/class/LaunchContext.md)\<Library, LibraryOptions, LaunchResult, NewPageOptions, NewPageResult> = <!-- -->...

  #### Returns Promise\<LaunchResult>
