# back

Go one step back in the joint session history of the current top-level browsing context. This is equivalent to pressing the browser back button or calling `window.history.back()`.

The command takes no arguments and resolves with no value.

On a WebDriver BiDi session it calls [`browsingContext.traverseHistory`](https://w3c.github.io/webdriver-bidi/#command-browsingContext-traverseHistory) with `delta: -1` for the top-level context. A frame selected with [`switchFrame`](/docs/api/browser/switchFrame.md) does not change that target. After the traversal is accepted, the command waits for the same document readiness [`url`](/docs/api/browser/url.md) maps from `pageLoadStrategy`:

* `none` does not wait
* `eager` waits for `browsingContext.domContentLoaded`
* `normal` (the default) waits for `browsingContext.load`

The wait uses the session page-load timeout (`timeouts.pageLoad`, 300000 ms when it has not been set). A same-document traversal, such as a fragment change, finishes without a load event. A back-forward cache restore commits a document that is already complete and does not emit `browsingContext.load`; the command returns once that document's `readyState` matches the strategy.

A classic session posts to the WebDriver [back](/docs/api/webdriver.md#back) endpoint. There is no previous entry in either mode when the command rejects with `no such history entry`.

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

```
await browser.back()
```

## Example[​](#example "Direct link to Example")

back.js

```
it('should go back and forward', async () => {

    await browser.url('https://webdriver.io')

    await browser.url('https://webdriver.io/docs/gettingstarted')

    await browser.back()

    console.log(await browser.getUrl()) // outputs the first page

    await browser.forward()

    console.log(await browser.getUrl()) // outputs the second page

});
```
