# class: LocatorAssertions
* langs: java

The [LocatorAssertions] class provides assertion methods that can be used to make assertions about the [Locator] state in the tests. A new instance of [LocatorAssertions] is created by calling [`method: PlaywrightAssertions.assertThatLocator`].

## method: LocatorAssertions.containsText

Ensures the [Locator] points to an element that contains the given text. You can use regular expressions for the value as well.

```java
assertThat(page.locator(".title")).containsText("substring");
```

Note that if array is passed as an expected value, entire lists can be asserted:

```java
assertThat(page.locator("list > .list-item")).containsText(Arrays.asList("Text 1", "Text 4", "Text 5"));
```

### param: LocatorAssertions.containsText.expected
- `expected` <[string]|[RegExp]|[Array]<[string]>|[Array]<[RegExp]>>

Expected substring or RegExp or a list of those.

### option: LocatorAssertions.containsText.useInnerText
- `useInnerText` <[boolean]>

Whether to use `element.innerText` instead of `element.textContent` when retrieving DOM node text.

### option: LocatorAssertions.containsText.timeout = %%-assertions-timeout-%%

## method: LocatorAssertions.hasAttribute

Ensures the [Locator] points to an element with given attribute.

```java
assertThat(page.locator("input")).hasAttribute("type", "text");
```

### param: LocatorAssertions.hasAttribute.name
- `name` <[string]>

Attribute name.

### param: LocatorAssertions.hasAttribute.value
- `value` <[string]|[RegExp]>

Expected attribute value.

### option: LocatorAssertions.hasAttribute.timeout = %%-assertions-timeout-%%

## method: LocatorAssertions.hasClass

Ensures the [Locator] points to an element with given CSS class.

```java
assertThat(page.locator("#component")).hasClass(Pattern.compile("selected"));
```

Note that if array is passed as an expected value, entire lists can be asserted:

```java
assertThat(page.locator("list > .component")).hasClass(Arrays.asList("component", "component selected", "component"));
```

### param: LocatorAssertions.hasClass.expected
- `expected` <[string]|[RegExp]|[Array]<[string]>|[Array]<[RegExp]>>

Expected class or RegExp or a list of those.

### option: LocatorAssertions.hasClass.timeout = %%-assertions-timeout-%%

## method: LocatorAssertions.hasCount

Ensures the [Locator] resolves to an exact number of DOM nodes.

```java
assertThat(page.locator("list > .component")).hasCount(3);
```

### param: LocatorAssertions.hasCount.count
- `count` <[int]>

Expected count.

### option: LocatorAssertions.hasCount.timeout = %%-assertions-timeout-%%

## method: LocatorAssertions.hasCSS

Ensures the [Locator] resolves to an element with the given computed CSS style.

```java
assertThat(page.locator("button")).hasCSS("display", "flex");
```

### param: LocatorAssertions.hasCSS.name
- `name` <[string]>

CSS property name.

### param: LocatorAssertions.hasCSS.value
- `value` <[string]|[RegExp]>

CSS property value.

### option: LocatorAssertions.hasCSS.timeout = %%-assertions-timeout-%%

## method: LocatorAssertions.hasId

Ensures the [Locator] points to an element with the given DOM Node ID.

```java
assertThat(page.locator("input")).hasId("lastname");
```

### param: LocatorAssertions.hasId.id
- `id` <[string]>

Element id.

### option: LocatorAssertions.hasId.timeout = %%-assertions-timeout-%%

## method: LocatorAssertions.hasJSProperty

Ensures the [Locator] points to an element with given JavaScript property. Note that this property can be of a primitive type as well as a plain serializable JavaScript object.

```java
assertThat(page.locator("input")).hasJSProperty("type", "text");
```

### param: LocatorAssertions.hasJSProperty.name
- `name` <[string]>

Property name.

### param: LocatorAssertions.hasJSProperty.value
- `value` <[Serializable]>

Property value.

### option: LocatorAssertions.hasJSProperty.timeout = %%-assertions-timeout-%%

## method: LocatorAssertions.hasText

Ensures the [Locator] points to an element with the given text. You can use regular expressions for the value as well.

```java
assertThat(page.locator(".title")).hasText(Pattern.compile("Welcome, Test User"));
assertThat(page.locator(".title")).hasText(Pattern.compile("Welcome, .*"));
```

Note that if array is passed as an expected value, entire lists can be asserted:

```java
assertThat(page.locator("list > .component")).hasText(Arrays.asList("Text 1", "Text 2", "Text 3"));
```

### param: LocatorAssertions.hasText.expected
- `expected` <[string]|[RegExp]|[Array]<[string]>|[Array]<[RegExp]>>

Expected substring or RegExp or a list of those.

### option: LocatorAssertions.hasText.useInnerText
- `useInnerText` <[boolean]>

Whether to use `element.innerText` instead of `element.textContent` when retrieving DOM node text.

### option: LocatorAssertions.hasText.timeout = %%-assertions-timeout-%%

## method: LocatorAssertions.hasValue

Ensures the [Locator] points to an element with the given input value. You can use regular expressions for the value as well.

```java
assertThat(page.locator("input[type=number]")).hasValue(Pattern.compile("[0-9]"));
```

### param: LocatorAssertions.hasValue.value
- `value` <[string]|[RegExp]>

Expected value.

### option: LocatorAssertions.hasValue.timeout = %%-assertions-timeout-%%

## method: LocatorAssertions.isChecked

Ensures the [Locator] points to a checked input.

```java
assertThat(page.locator(".subscribe")).isChecked();
```

### option: LocatorAssertions.isChecked.timeout = %%-assertions-timeout-%%

## method: LocatorAssertions.isDisabled

Ensures the [Locator] points to a disabled element.

```java
assertThat(page.locator("button.submit")).isDisabled();
```

### option: LocatorAssertions.isDisabled.timeout = %%-assertions-timeout-%%

## method: LocatorAssertions.isEditable

Ensures the [Locator] points to an editable element.

```java
assertThat(page.locator("input")).isEditable();
```

### option: LocatorAssertions.isEditable.timeout = %%-assertions-timeout-%%

## method: LocatorAssertions.isEmpty

Ensures the [Locator] points to an empty editable element or to a DOM node that has no text.

```java
assertThat(page.locator("div.warning")).isEmpty();
```

### option: LocatorAssertions.isEmpty.timeout = %%-assertions-timeout-%%

## method: LocatorAssertions.isEnabled

Ensures the [Locator] points to an enabled element.

```java
assertThat(page.locator("button.submit")).isEnabled();
```

### option: LocatorAssertions.isEnabled.timeout = %%-assertions-timeout-%%

## method: LocatorAssertions.isFocused

Ensures the [Locator] points to a focused DOM node.

```java
assertThat(page.locator("input")).isFocused();
```

### option: LocatorAssertions.isFocused.timeout = %%-assertions-timeout-%%

## method: LocatorAssertions.isHidden

Ensures the [Locator] points to a hidden DOM node, which is the opposite of [visible](./actionability.md#visible).

```java
assertThat(page.locator(".my-element")).isHidden();
```

### option: LocatorAssertions.isHidden.timeout = %%-assertions-timeout-%%

## method: LocatorAssertions.isVisible

Ensures the [Locator] points to a [visible](./actionability.md#visible) DOM node.

```java
assertThat(page.locator(".my-element")).isVisible();
```

### option: LocatorAssertions.isVisible.timeout = %%-assertions-timeout-%%

## method: LocatorAssertions.not
- returns: <[LocatorAssertions]>

Makes the assertion check for the opposite condition. For example, this code tests that the Locator doesn't contain text `"error"`:

```java
assertThat(locator).not().containsText("error");
```
