> For the complete documentation index, see [llms.txt](https://docs.does.qa/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.does.qa/test-steps/vision/element-position.md).

# Element Position

Detect positional differences between the current run and a control.

Element Position compares where an Element sits on screen with a saved control. Use it when layout drift or movement matters more than pixels inside the control.

![Element position Test Step](https://static.does.qa/assets/nodes/change_element_position.png)

## When to use it

* Catch a button, banner, or nav item that moved after a layout change.
* Confirm sticky headers, sidebars, or modals stay in the expected place.
* Pair with [Element Snapshot](/test-steps/vision/element-snapshot.md) when you care about both position and appearance.

The first successful Run stores the current position as the control. Later Runs compare against that control.

For a Flow Builder walkthrough, see [Add visual checks](/better-coverage/add-visual-checks.md).

## Configure

### Basics

| Field       | What to set                                            |
| ----------- | ------------------------------------------------------ |
| **Element** | The [Element](/elements/creating-elements.md) to watch |

### Advanced

| Field                                                    | What to set                                                                                                     |
| -------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| **Generate new control position after testcase changes** | When on, creates a new control after Flow edits. Leave off to keep the current control across Flow changes      |
| **Control key**                                          | Optional key for manually managed controls. Set the same key on multiple steps to share one control across them |
| **Status on fail**                                       | [Failed Status](/test-step-options/failed-status.md)                                                            |

{% hint style="info" %}
**Pro tip:** Use a stable [Element](/elements/creating-elements.md) selector so the step tracks the same control on every Run. See [Choose durable selectors](/better-coverage/choose-durable-selectors.md).
{% endhint %}

## Related

* [Element Snapshot](/test-steps/vision/element-snapshot.md)
* [AI Vision](/test-steps/vision/ai-vision.md)
* [Vision](/test-steps/vision.md)
* [Add visual checks](/better-coverage/add-visual-checks.md)

**Tags:** `vision`, `element`, `position`, `visual`, `regression`
