# Cypress Documentation
# Source: https://raw.githubusercontent.com/cypress-io/cypress-documentation/main/docs/api/commands/go.mdx
# Path: docs/api/commands/go.mdx

---
title: 'go | Cypress Documentation'
description: Navigate back or forward to the previous or next URL in the browser's history in Cypress.
sidebar_label: go
e2eSpecific: true
---

<ProductHeading product="app" />

# go

Navigate back or forward to the previous or next URL in the browser's history.

## Syntax

```javascript
cy.go(direction)
cy.go(direction, options)
```

### Usage

<Icon name="check-circle" color="green" /> **Correct Usage**

```javascript
cy.go('back')
```

### Arguments

<Icon name="angle-right" /> **direction _(String, Number)_**

The direction to navigate.

You can use `back` or `forward` to go one step back or forward. You could also
navigate to a specific history position (`-1` goes back one page, `1` goes
forward one page, etc).

<Icon name="angle-right" /> **options _(Object)_**

Pass in an options object to change the default behavior of `cy.go()`.

| Option    | Default                                                     | Description                                                                         |
| --------- | ----------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| `log`     | `true`                                                      | Displays the command in the [Command log](/app/core-concepts/open-mode#Command-Log) |
| `timeout` | [`pageLoadTimeout`](/app/references/configuration#Timeouts) | Time to wait for `cy.go()` to resolve before [timing out](#Timeouts)                |

<HeaderYields />

- `cy.go()` yields the `window` object after the page finishes loading.
- It is [unsafe](/app/core-concepts/retry-ability#Only-queries-are-retried)
  to chain further commands that rely on the yielded `window` after `cy.go()`.

## Examples

### Direction

#### Go back in browser's history

```javascript
cy.go('back') // equivalent to clicking back button
```

#### Go forward in browser's history

```javascript
cy.go('forward') // equivalent to clicking forward button
```

### Number

#### Go back in browser's history

```javascript
cy.go(-1) // equivalent to clicking back button
```

#### Go forward in browser's history

```javascript
cy.go(1) // equivalent to clicking forward button
```

## Notes

### Refreshing and loading the page

If going forward or back causes a full page refresh, Cypress will wait for the
new page to load before moving on to new commands.

Cypress additionally handles situations where a page load was not caused (such
as hash routing) and will resolve immediately.

## Rules

<HeaderRequirements />

- `cy.go()` requires being chained off of `cy`.
- `cy.go()` requires the response to be `content-type: text/html`.
- `cy.go()` requires the response code to be `2xx` after following redirects.
- `cy.go()` requires the load `load` event to eventually fire.

<HeaderAssertions />

- `cy.go()` will automatically wait for assertions you have chained to pass.

<HeaderTimeouts />

- `cy.go()` can time out waiting for the page to fire its `load` event.
- `cy.go()` can time out waiting for assertions you've added to pass.

## Command Log

**_Go back in browser's history_**

```javascript
cy.visit('http://localhost:8000/folders').go('back')
```

The commands above will display in the Command Log as:

<DocsImage
  src="/img/api/go/test-showing-go-back-browser-button.png"
  alt="Command Log go"
/>

When clicking on the `go` command within the command log, the console outputs
the following:

<DocsImage
  src="/img/api/go/window-is-logged-when-go-back-in-browser-history.png"
  alt="console Log go"
/>

## See also

- [`cy.reload()`](/api/commands/reload)
- [`cy.visit()`](/api/commands/visit)