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

---
title: 'rightclick | Cypress Documentation'
description: Right click a DOM element in Cypress.
sidebar_label: rightclick
slug: /api/commands/rightclick
---

<ProductHeading product="app" />

# rightclick

Right click a DOM element.

It is [unsafe](/app/core-concepts/retry-ability#Only-queries-are-retried) to
chain further commands that rely on the subject after `.rightclick()`.

:::caution

`.rightclick()` will not open context menus native to the browser.
`.rightclick()` should be used to test your app's handling of right click
related events such as `contextmenu`.

:::

## Syntax

```javascript
.rightclick()
.rightclick(options)
.rightclick(position)
.rightclick(position, options)
.rightclick(x, y)
.rightclick(x, y, options)
```

### Usage

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

```javascript
cy.get('.menu').rightclick() // Right click on .menu
cy.focused().rightclick() // Right click on el with focus
cy.contains('Today').rightclick() // Right click on first el containing 'Today'
```

<Icon name="exclamation-triangle" color="red" /> **Incorrect Usage**

```javascript
cy.rightclick('button') // Errors, cannot be chained off 'cy'
cy.window().rightclick() // Errors, 'window' does not yield DOM element
```

### Arguments

<Icon name="angle-right" /> **position _(String)_**

The position where the right click should be issued. The `center` position is
the default position. Valid positions are `topLeft`, `top`, `topRight`, `left`,
`center`, `right`, `bottomLeft`, `bottom`, and `bottomRight`.

<DocsImage
  src="/img/api/coordinates-diagram.jpg"
  alt="cypress-command-positions-diagram"
/>

<Icon name="angle-right" /> **x _(Number)_**

The distance in pixels from the element's left to issue the right click.

<Icon name="angle-right" /> **y _(Number)_**

The distance in pixels from the element's top to issue the right click.

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

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

| Option                       | Default                                                                     | Description                                                                                                                                     |
| ---------------------------- | --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `altKey`                     | `false`                                                                     | Activates the alt key (option key for Mac). Aliases: `optionKey`.                                                                               |
| `animationDistanceThreshold` | [`animationDistanceThreshold`](/app/references/configuration#Actionability) | The distance in pixels an element must exceed over time to be [considered animating](/app/core-concepts/interacting-with-elements#Animations).  |
| `ctrlKey`                    | `false`                                                                     | Activates the control key. Aliases: `controlKey`.                                                                                               |
| `force`                      | `false`                                                                     | Forces the action, disables [waiting for actionability](#Assertions)                                                                            |
| `log`                        | `true`                                                                      | Displays the command in the [Command log](/app/core-concepts/open-mode#Command-Log)                                                             |
| `metaKey`                    | `false`                                                                     | Activates the meta key (Windows key or command key for Mac). Aliases: `commandKey`, `cmdKey`.                                                   |
| `multiple`                   | `false`                                                                     | Serially click multiple elements                                                                                                                |
| `scrollBehavior`             | [`scrollBehavior`](/app/references/configuration#Actionability)             | Viewport position to where an element [should be scrolled](/app/core-concepts/interacting-with-elements#Scrolling) before executing the command |
| `shiftKey`                   | `false`                                                                     | Activates the shift key.                                                                                                                        |
| `timeout`                    | [`defaultCommandTimeout`](/app/references/configuration#Timeouts)           | Time to wait for `.rightclick()` to resolve before [timing out](#Timeouts)                                                                      |
| `waitForAnimations`          | [`waitForAnimations`](/app/references/configuration#Actionability)          | Whether to wait for elements to [finish animating](/app/core-concepts/interacting-with-elements#Animations) before executing the command.       |

<HeaderYields />

- `.rightclick()` yields the same subject it was given.
- It is [unsafe](/app/core-concepts/retry-ability#Only-queries-are-retried)
  to chain further commands that rely on the subject after `.rightclick()`.

## Examples

### No Args

#### Right click the menu

```javascript
cy.get('#open-menu').rightclick()
```

### Position

#### Specify a corner of the element to right click

Right click the top right corner of the DOM element.

```javascript
cy.get('#open-menu').rightclick('topRight')
```

### Coordinates

#### Specify explicit coordinates relative to the top left corner

The right click below will be issued inside of the element (15px from the left
and 40px from the top).

```javascript
cy.get('#open-menu').rightclick(15, 40)
```

### Options

#### Force a right click regardless of its actionable state

Forcing a right click overrides the
[actionable checks](/app/core-concepts/interacting-with-elements#Forcing)
Cypress applies and will automatically fire the events.

```javascript
cy.get('#open-menu').rightclick({ force: true })
```

#### Force a right click with position argument

```javascript
cy.get('#open-menu').rightclick('bottomLeft', { force: true })
```

#### Force a right click with relative coordinates

```javascript
cy.get('#open-menu').rightclick(5, 60, { force: true })
```

#### Right click all buttons found on the page

By default, Cypress will error if you're trying to right click multiple
elements. By passing `{ multiple: true }` Cypress will iteratively apply the
right click to each element and will also log to the
[Command Log](/app/core-concepts/open-mode#Command-Log) multiple times.

```javascript
cy.get('.open-menu').rightclick({ multiple: true })
```

#### Right click with key combinations

The `.rightclick()` command may also be fired with key modifiers in order to
simulate holding key combinations while right clicking, such as
`ALT + rightclick`.

:::info

You can also use key combinations during [.type()](/api/commands/type). This
offers options to hold down keys across multiple commands. See
[Key Combinations](/api/commands/type#Key-Combinations) for more information.

:::

The following key can be combined with `.rightclick()` through the `options`..

| Option     | Notes                                                                                         |
| ---------- | --------------------------------------------------------------------------------------------- |
| `altKey`   | Activates the alt key (option key for Mac). Aliases: `optionKey`.                             |
| `ctrlKey`  | Activates the control key. Aliases: `controlKey`.                                             |
| `metaKey`  | Activates the meta key (Windows key or command key for Mac). Aliases: `commandKey`, `cmdKey`. |
| `shiftKey` | Activates the shift key.                                                                      |

##### Command right click

```js
// execute a CMD + right click on the .menu-item
cy.get('.menu-item').rightclick({
  metaKey: true,
})
```

## Notes

### Actionability

#### The element must first reach actionability

`.rightclick()` is an "action command" that follows all the rules of
[Actionability](/app/core-concepts/interacting-with-elements).

## Rules

<HeaderRequirements />

- `.rightclick()` requires being chained off a command that yields DOM
  element(s).

<HeaderAssertions />

- `.rightclick()` will automatically wait for the element to reach an
  [actionable state](/app/core-concepts/interacting-with-elements).
- `.rightclick()` will automatically
  [retry](/app/core-concepts/retry-ability) until all chained assertions have
  passed.

<HeaderTimeouts />

- `.rightclick()` can time out waiting for the element to reach an
  [actionable state](/app/core-concepts/interacting-with-elements).
- `.rightclick()` can time out waiting for assertions you've added to pass.

## Command Log

**_Right click the DOM element_**

```javascript
cy.get('.rightclick-action-div').rightclick()
```

The commands above will display in the Command Log as:

<DocsImage
  src="/img/api/rightclick/rightclick-dom-element-in-command-log.png"
  alt="Command log for right click"
/>

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

<DocsImage
  src="/img/api/rightclick/rightclick-console-log-with-mouse-events.png"
  alt="console.log for right click"
/>

## History

| Version                                  | Changes                       |
| ---------------------------------------- | ----------------------------- |
| [6.1.0](/app/references/changelog#6-1-0) | Added option `scrollBehavior` |
| [3.5.0](/app/references/changelog#3-5-0) | `.rightclick()` command added |

## See also

- [`.click()`](/api/commands/click)
- [`.dblclick()`](/api/commands/dblclick)
- [`.trigger()`](/api/commands/trigger)