# saveScreenshot

Save a screenshot of the current browsing context to a PNG file on your OS. Be aware that some browser drivers take screenshots of the whole document (e.g. Geckodriver with Firefox) and others only of the current viewport (e.g. Chromedriver with Chrome).

## Usage[​](#usage "Direct link to Usage")

```
await browser.saveScreenshot(filepath, { fullPage, format, quality, clip })
```

## Parameters[​](#parameters "Direct link to Parameters")

| Name                                     | Type      | Details                                                                                     |
| ---------------------------------------- | --------- | ------------------------------------------------------------------------------------------- |
| `filepath`                               | `String`  | path to the generated image (`.png` suffix is required) relative to the execution directory |
| `options`                                | `Object`  | screenshot options                                                                          |
| `options.fullPage=false`<br />*optional* | `Boolean` | whether to take a screenshot of the full page or just the current viewport                  |
| `options.format='png'`<br />*optional*   | `String`  | the format of the screenshot (either `png` or `jpeg`)                                       |
| `options.quality=100`<br />*optional*    | `Number`  | the quality of the screenshot in case of JPEG format in range 0-100 percent                 |
| `options.clip`<br />*optional*           | `Object`  | clipping a rectangle of the screenshot                                                      |

## Examples[​](#examples "Direct link to Examples")

saveScreenshot.js

```
it('should save a screenshot of the browser viewport', async () => {
    await browser.saveScreenshot('./some/path/screenshot.png');
});

it('should save a screenshot of the full page', async () => {
    await browser.saveScreenshot('./some/path/screenshot.png', { fullPage: true });
});

it('should save a screenshot of a specific rectangle', async () => {
    await browser.saveScreenshot('./some/path/screenshot.png', { clip: { x: 0, y: 0, width: 100, height: 100 } });
});

it('should save a screenshot of the full page in JPEG format', async () => {
    await browser.saveScreenshot('./some/path/screenshot.jpeg', { fullPage: true, format: 'jpeg' });
});

it('should save a screenshot of the full page in JPEG format with quality 50', async () => {
    await browser.saveScreenshot('./some/path/screenshot.jpeg', { fullPage: true, format: 'jpeg', quality: 50 });
});

 running from a hook, make sure to explicitly define the hook as async:
```

wdio.conf.js

```
afterTest: async function(test) {
    await browser.saveScreenshot('./some/path/screenshot.png');
}
```

## Returns[​](#returns "Direct link to Returns")

* **\<Buffer>** **`return`:** screenshot buffer
