diff --git a/dotnet/docs/actionability.mdx b/dotnet/docs/actionability.mdx
index adf06b018d..a8accf11ce 100644
--- a/dotnet/docs/actionability.mdx
+++ b/dotnet/docs/actionability.mdx
@@ -66,7 +66,7 @@ Playwright includes auto-retrying assertions that remove flakiness by waiting un
| [Expect(Locator).ToHaveAttributeAsync()](/api/class-locatorassertions.mdx#locator-assertions-to-have-attribute) | Element has a DOM attribute |
| [Expect(Locator).ToHaveClassAsync()](/api/class-locatorassertions.mdx#locator-assertions-to-have-class) | Element has a class property |
| [Expect(Locator).ToHaveCountAsync()](/api/class-locatorassertions.mdx#locator-assertions-to-have-count) | List has exact number of children |
-| [Expect(Locator).ToHaveCSSAsync()](/api/class-locatorassertions.mdx#locator-assertions-to-have-css-1) | Element has CSS property |
+| [Expect(Locator).ToHaveCSSAsync()](/api/class-locatorassertions.mdx#locator-assertions-to-have-css) | Element has CSS property |
| [Expect(Locator).ToHaveIdAsync()](/api/class-locatorassertions.mdx#locator-assertions-to-have-id) | Element has an ID |
| [Expect(Locator).ToHaveJSPropertyAsync()](/api/class-locatorassertions.mdx#locator-assertions-to-have-js-property) | Element has a JavaScript property |
| [Expect(Locator).ToHaveTextAsync()](/api/class-locatorassertions.mdx#locator-assertions-to-have-text) | Element matches text |
diff --git a/dotnet/docs/api/class-locatorassertions.mdx b/dotnet/docs/api/class-locatorassertions.mdx
index ff0fd74174..a36956dd63 100644
--- a/dotnet/docs/api/class-locatorassertions.mdx
+++ b/dotnet/docs/api/class-locatorassertions.mdx
@@ -384,7 +384,7 @@ Let's see how we can use the assertion:
```csharp
// ✓ Contains the right items in the right order
-await Expect(Page.Locator("ul > li")).ToContainTextAsync(new string[] {"Text 1", "Text 3", "Text 4"});
+await Expect(Page.Locator("ul > li")).ToContainTextAsync(new string[] {"Text 1", "Text 3"});
// ✖ Wrong order
await Expect(Page.Locator("ul > li")).ToContainTextAsync(new string[] {"Text 3", "Text 2"});
@@ -609,7 +609,7 @@ await Expect(locator).ToHaveCountAsync(3);
---
-### ToHaveCSSAsync {#locator-assertions-to-have-css-1}
+### ToHaveCSSAsync {#locator-assertions-to-have-css}
Added in: v1.20locatorAssertions.ToHaveCSSAsync
@@ -623,19 +623,19 @@ await Expect(locator).ToHaveCSSAsync("display", "flex");
```
**Arguments**
-- `name` [string] Added in: v1.18#
+- `name` [string] Added in: v1.18#
CSS property name.
-- `value` [string] | [Regex] Added in: v1.18#
+- `value` [string] | [Regex] Added in: v1.18#
CSS property value.
- `options` `LocatorAssertionsToHaveCSSOptions?` *(optional)*
- - `Timeout` [float]? *(optional)* Added in: v1.18#
+ - `Timeout` [float]? *(optional)* Added in: v1.18#
Time to retry the assertion for in milliseconds. Defaults to `5000`.
**Returns**
-- [void]#
+- [void]#
---
diff --git a/dotnet/docs/test-assertions.mdx b/dotnet/docs/test-assertions.mdx
index ebfe9091a4..7b84ee2c5f 100644
--- a/dotnet/docs/test-assertions.mdx
+++ b/dotnet/docs/test-assertions.mdx
@@ -27,7 +27,7 @@ import HTMLCard from '@site/src/components/HTMLCard';
| [Expect(Locator).ToHaveAttributeAsync()](/api/class-locatorassertions.mdx#locator-assertions-to-have-attribute) | Element has a DOM attribute |
| [Expect(Locator).ToHaveClassAsync()](/api/class-locatorassertions.mdx#locator-assertions-to-have-class) | Element has a class property |
| [Expect(Locator).ToHaveCountAsync()](/api/class-locatorassertions.mdx#locator-assertions-to-have-count) | List has exact number of children |
-| [Expect(Locator).ToHaveCSSAsync()](/api/class-locatorassertions.mdx#locator-assertions-to-have-css-1) | Element has CSS property |
+| [Expect(Locator).ToHaveCSSAsync()](/api/class-locatorassertions.mdx#locator-assertions-to-have-css) | Element has CSS property |
| [Expect(Locator).ToHaveIdAsync()](/api/class-locatorassertions.mdx#locator-assertions-to-have-id) | Element has an ID |
| [Expect(Locator).ToHaveJSPropertyAsync()](/api/class-locatorassertions.mdx#locator-assertions-to-have-js-property) | Element has a JavaScript property |
| [Expect(Locator).ToHaveRoleAsync()](/api/class-locatorassertions.mdx#locator-assertions-to-have-role) | Element has a specific [ARIA role](https://www.w3.org/TR/wai-aria-1.2/#roles) |
diff --git a/java/docs/actionability.mdx b/java/docs/actionability.mdx
index 28854b57b0..b56e820111 100644
--- a/java/docs/actionability.mdx
+++ b/java/docs/actionability.mdx
@@ -66,7 +66,7 @@ Playwright includes auto-retrying assertions that remove flakiness by waiting un
| [assertThat(locator).hasAttribute()](/api/class-locatorassertions.mdx#locator-assertions-to-have-attribute) | Element has a DOM attribute |
| [assertThat(locator).hasClass()](/api/class-locatorassertions.mdx#locator-assertions-to-have-class) | Element has a class property |
| [assertThat(locator).hasCount()](/api/class-locatorassertions.mdx#locator-assertions-to-have-count) | List has exact number of children |
-| [assertThat(locator).hasCSS()](/api/class-locatorassertions.mdx#locator-assertions-to-have-css-1) | Element has CSS property |
+| [assertThat(locator).hasCSS()](/api/class-locatorassertions.mdx#locator-assertions-to-have-css) | Element has CSS property |
| [assertThat(locator).hasId()](/api/class-locatorassertions.mdx#locator-assertions-to-have-id) | Element has an ID |
| [assertThat(locator).hasJSProperty()](/api/class-locatorassertions.mdx#locator-assertions-to-have-js-property) | Element has a JavaScript property |
| [assertThat(locator).hasText()](/api/class-locatorassertions.mdx#locator-assertions-to-have-text) | Element matches text |
diff --git a/java/docs/api/class-locatorassertions.mdx b/java/docs/api/class-locatorassertions.mdx
index 44c95d0dbb..3ecb640b41 100644
--- a/java/docs/api/class-locatorassertions.mdx
+++ b/java/docs/api/class-locatorassertions.mdx
@@ -107,7 +107,7 @@ Let's see how we can use the assertion:
```java
// ✓ Contains the right items in the right order
-assertThat(page.locator("ul > li")).containsText(new String[] {"Text 1", "Text 3", "Text 4"});
+assertThat(page.locator("ul > li")).containsText(new String[] {"Text 1", "Text 3"});
// ✖ Wrong order
assertThat(page.locator("ul > li")).containsText(new String[] {"Text 3", "Text 2"});
@@ -328,7 +328,7 @@ assertThat(page.locator("list > .component")).hasCount(3);
---
-### hasCSS {#locator-assertions-to-have-css-1}
+### hasCSS {#locator-assertions-to-have-css}
Added in: v1.20locatorAssertions.hasCSS
@@ -341,19 +341,19 @@ assertThat(page.getByRole(AriaRole.BUTTON)).hasCSS("display", "flex");
```
**Arguments**
-- `name` [String] Added in: v1.18#
+- `name` [String] Added in: v1.18#
CSS property name.
-- `value` [String] | [Pattern] Added in: v1.18#
+- `value` [String] | [Pattern] Added in: v1.18#
CSS property value.
- `options` `LocatorAssertions.HasCSSOptions` *(optional)*
- - `setTimeout` [double] *(optional)* Added in: v1.18#
+ - `setTimeout` [double] *(optional)* Added in: v1.18#
Time to retry the assertion for in milliseconds. Defaults to `5000`.
**Returns**
-- [void]#
+- [void]#
---
diff --git a/java/docs/test-assertions.mdx b/java/docs/test-assertions.mdx
index 42a2c02ab0..88dc40b867 100644
--- a/java/docs/test-assertions.mdx
+++ b/java/docs/test-assertions.mdx
@@ -27,7 +27,7 @@ import HTMLCard from '@site/src/components/HTMLCard';
| [assertThat(locator).hasAttribute()](/api/class-locatorassertions.mdx#locator-assertions-to-have-attribute) | Element has a DOM attribute |
| [assertThat(locator).hasClass()](/api/class-locatorassertions.mdx#locator-assertions-to-have-class) | Element has a class property |
| [assertThat(locator).hasCount()](/api/class-locatorassertions.mdx#locator-assertions-to-have-count) | List has exact number of children |
-| [assertThat(locator).hasCSS()](/api/class-locatorassertions.mdx#locator-assertions-to-have-css-1) | Element has CSS property |
+| [assertThat(locator).hasCSS()](/api/class-locatorassertions.mdx#locator-assertions-to-have-css) | Element has CSS property |
| [assertThat(locator).hasId()](/api/class-locatorassertions.mdx#locator-assertions-to-have-id) | Element has an ID |
| [assertThat(locator).hasJSProperty()](/api/class-locatorassertions.mdx#locator-assertions-to-have-js-property) | Element has a JavaScript property |
| [assertThat(locator).hasRole()](/api/class-locatorassertions.mdx#locator-assertions-to-have-role) | Element has a specific [ARIA role](https://www.w3.org/TR/wai-aria-1.2/#roles) |
diff --git a/nodejs/docs/actionability.mdx b/nodejs/docs/actionability.mdx
index e7efcafc8b..9227ce688b 100644
--- a/nodejs/docs/actionability.mdx
+++ b/nodejs/docs/actionability.mdx
@@ -66,7 +66,7 @@ Playwright includes auto-retrying assertions that remove flakiness by waiting un
| [expect(locator).toHaveAttribute()](/api/class-locatorassertions.mdx#locator-assertions-to-have-attribute) | Element has a DOM attribute |
| [expect(locator).toHaveClass()](/api/class-locatorassertions.mdx#locator-assertions-to-have-class) | Element has a class property |
| [expect(locator).toHaveCount()](/api/class-locatorassertions.mdx#locator-assertions-to-have-count) | List has exact number of children |
-| [expect(locator).toHaveCSS()](/api/class-locatorassertions.mdx#locator-assertions-to-have-css-1) | Element has CSS property |
+| [expect(locator).toHaveCSS()](/api/class-locatorassertions.mdx#locator-assertions-to-have-css) | Element has CSS property |
| [expect(locator).toHaveId()](/api/class-locatorassertions.mdx#locator-assertions-to-have-id) | Element has an ID |
| [expect(locator).toHaveJSProperty()](/api/class-locatorassertions.mdx#locator-assertions-to-have-js-property) | Element has a JavaScript property |
| [expect(locator).toHaveText()](/api/class-locatorassertions.mdx#locator-assertions-to-have-text) | Element matches text |
diff --git a/nodejs/docs/api/class-locatorassertions.mdx b/nodejs/docs/api/class-locatorassertions.mdx
index 594c15e124..e3f22018b3 100644
--- a/nodejs/docs/api/class-locatorassertions.mdx
+++ b/nodejs/docs/api/class-locatorassertions.mdx
@@ -634,9 +634,9 @@ await expect(list).toHaveCount(3);
---
-### toHaveCSS(name, value) {#locator-assertions-to-have-css-1}
+### toHaveCSS {#locator-assertions-to-have-css}
-Added in: v1.20locatorAssertions.toHaveCSS(name, value)
+Added in: v1.20locatorAssertions.toHaveCSS
Ensures the [Locator] resolves to an element with the given computed CSS style.
@@ -648,54 +648,19 @@ await expect(locator).toHaveCSS('display', 'flex');
```
**Arguments**
-- `name` [string] Added in: v1.18#
+- `name` [string] Added in: v1.18#
CSS property name.
-- `value` [string] | [RegExp] Added in: v1.18#
+- `value` [string] | [RegExp] Added in: v1.18#
CSS property value.
- `options` [Object] *(optional)*
- - `timeout` [number] *(optional)* Added in: v1.18#
+ - `timeout` [number] *(optional)* Added in: v1.18#
Time to retry the assertion for in milliseconds. Defaults to `timeout` in `TestConfig.expect`.
**Returns**
-- [Promise]<[void]>#
-
----
-
-### toHaveCSS(styles) {#locator-assertions-to-have-css-2}
-
-Added in: v1.58locatorAssertions.toHaveCSS(styles)
-
-Ensures the [Locator] resolves to an element with the given computed CSS properties.
-
-:::note
-
-The `CSSProperties` object parameter for toHaveCSS requires `react` to be installed for type checking.
-:::
-
-**Usage**
-
-```js
-const locator = page.getByRole('button');
-await expect(locator).toHaveCSS({
- display: 'flex',
- backgroundColor: 'rgb(255, 0, 0)'
-});
-```
-
-**Arguments**
-- `styles` [CSSProperties]#
-
- CSS properties object.
-- `options` [Object] *(optional)*
- - `timeout` [number] *(optional)*#
-
- Time to retry the assertion for in milliseconds. Defaults to `timeout` in `TestConfig.expect`.
-
-**Returns**
-- [Promise]<[void]>#
+- [Promise]<[void]>#
---
diff --git a/nodejs/docs/api/class-page.mdx b/nodejs/docs/api/class-page.mdx
index ad5637ee4a..10b8a3ac60 100644
--- a/nodejs/docs/api/class-page.mdx
+++ b/nodejs/docs/api/class-page.mdx
@@ -279,6 +279,10 @@ await page.agent(options);
- `cacheOutFile` [string] *(optional)*
When specified, generated entries are written into the `cacheOutFile` instead of updating the `cacheFile`.
+ - `expect` [Object] *(optional)*#
+ - `timeout` [number] *(optional)*
+
+ Default timeout for expect calls in milliseconds, defaults to 5000ms.
- `limits` [Object] *(optional)*#
- `maxTokens` [number] *(optional)*
diff --git a/nodejs/docs/api/class-pageagent.mdx b/nodejs/docs/api/class-pageagent.mdx
index f2820ede7d..e53b521f2f 100644
--- a/nodejs/docs/api/class-pageagent.mdx
+++ b/nodejs/docs/api/class-pageagent.mdx
@@ -60,7 +60,7 @@ await agent.expect('"0 items" to be reported');
Maximum number of tokens to consume. The agentic loop will stop after input + output tokens exceed this value. Defaults to context-wide value specified in `agent` property.
- `timeout` [number] *(optional)*#
- Request timeout in milliseconds. Defaults to action timeout. Pass `0` to disable timeout.
+ Expect timeout in milliseconds. Defaults to `5000`. The default value can be changed via `expect.timeout` option in the config, or by specifying the `expect` property of the [expect](/api/class-page.mdx#page-agent-option-expect) option. Pass `0` to disable timeout.
**Returns**
- [Promise]<[void]>#
@@ -102,7 +102,7 @@ await agent.extract('List of items in the cart', z.object({
Maximum number of tokens to consume. The agentic loop will stop after input + output tokens exceed this value. Defaults to context-wide value specified in `agent` property.
- `timeout` [number] *(optional)*#
- Request timeout in milliseconds. Defaults to action timeout. Pass `0` to disable timeout.
+ Extract timeout in milliseconds. Defaults to `5000`. The default value can be changed via `actionTimeout` option in the config, or by using the [browserContext.setDefaultTimeout()](/api/class-browsercontext.mdx#browser-context-set-default-timeout) or [page.setDefaultTimeout()](/api/class-page.mdx#page-set-default-timeout) methods. Pass `0` to disable timeout.
**Returns**
- [Promise]<[Object]>#
@@ -153,7 +153,7 @@ await agent.perform('Click submit button');
Maximum number of tokens to consume. The agentic loop will stop after input + output tokens exceed this value. Defaults to context-wide value specified in `agent` property.
- `timeout` [number] *(optional)*#
- Request timeout in milliseconds. Defaults to action timeout. Pass `0` to disable timeout.
+ Perform timeout in milliseconds. Defaults to `5000`. The default value can be changed via `actionTimeout` option in the config, or by using the [browserContext.setDefaultTimeout()](/api/class-browsercontext.mdx#browser-context-set-default-timeout) or [page.setDefaultTimeout()](/api/class-page.mdx#page-set-default-timeout) methods. Pass `0` to disable timeout.
**Returns**
- [Promise]<[Object]>#
diff --git a/nodejs/docs/release-notes.mdx b/nodejs/docs/release-notes.mdx
index a77011b5f2..daf05dca9b 100644
--- a/nodejs/docs/release-notes.mdx
+++ b/nodejs/docs/release-notes.mdx
@@ -2829,7 +2829,7 @@ List of all new assertions:
- [`expect(locator).toHaveAttribute(name, value)`](./api/class-locatorassertions#locator-assertions-to-have-attribute)
- [`expect(locator).toHaveClass(expected)`](./api/class-locatorassertions#locator-assertions-to-have-class)
- [`expect(locator).toHaveCount(count)`](./api/class-locatorassertions#locator-assertions-to-have-count)
-- [`expect(locator).toHaveCSS(name, value)`](./api/class-locatorassertions#locator-assertions-to-have-css-1)
+- [`expect(locator).toHaveCSS(name, value)`](./api/class-locatorassertions#locator-assertions-to-have-css)
- [`expect(locator).toHaveId(id)`](./api/class-locatorassertions#locator-assertions-to-have-id)
- [`expect(locator).toHaveJSProperty(name, value)`](./api/class-locatorassertions#locator-assertions-to-have-js-property)
- [`expect(locator).toHaveText(expected, options)`](./api/class-locatorassertions#locator-assertions-to-have-text)
diff --git a/nodejs/docs/test-assertions.mdx b/nodejs/docs/test-assertions.mdx
index b2b3aa5359..749e8bd57c 100644
--- a/nodejs/docs/test-assertions.mdx
+++ b/nodejs/docs/test-assertions.mdx
@@ -47,7 +47,7 @@ The following assertions will retry until the assertion passes, or the assertion
| [await expect(locator).toHaveAttribute()](./api/class-locatorassertions.mdx#locator-assertions-to-have-attribute) | Element has a DOM attribute |
| [await expect(locator).toHaveClass()](./api/class-locatorassertions.mdx#locator-assertions-to-have-class) | Element has specified CSS class property |
| [await expect(locator).toHaveCount()](./api/class-locatorassertions.mdx#locator-assertions-to-have-count) | List has exact number of children |
-| [await expect(locator).toHaveCSS()](./api/class-locatorassertions.mdx#locator-assertions-to-have-css-1) | Element has CSS property |
+| [await expect(locator).toHaveCSS()](./api/class-locatorassertions.mdx#locator-assertions-to-have-css) | Element has CSS property |
| [await expect(locator).toHaveId()](./api/class-locatorassertions.mdx#locator-assertions-to-have-id) | Element has an ID |
| [await expect(locator).toHaveJSProperty()](./api/class-locatorassertions.mdx#locator-assertions-to-have-js-property) | Element has a JavaScript property |
| [await expect(locator).toHaveRole()](./api/class-locatorassertions.mdx#locator-assertions-to-have-role) | Element has a specific [ARIA role](https://www.w3.org/TR/wai-aria-1.2/#roles) |
diff --git a/nodejs/docs/test-cli.mdx b/nodejs/docs/test-cli.mdx
index a6e12bf074..8aaeec4b99 100644
--- a/nodejs/docs/test-cli.mdx
+++ b/nodejs/docs/test-cli.mdx
@@ -126,6 +126,18 @@ Options `--test-list` and `--test-list-invert` accept a path to a test list file
# This is a test list file.
# It can include comments and empty lines.
+# Run ALL tests in a file:
+path/to/example.spec.ts
+
+# Run all tests in a file for a specific project:
+[chromium] › path/to/example.spec.ts
+
+# Run all tests in a specific group/suite:
+path/to/example.spec.ts › suite name
+
+# Run all tests in a nested group:
+path/to/example.spec.ts › outer suite › inner suite
+
# Fully qualified test with a project:
[chromium] › path/to/example.spec.ts:3:9 › suite › nested suite › example test
diff --git a/python/docs/actionability.mdx b/python/docs/actionability.mdx
index c473f87fc0..0e579fcbbf 100644
--- a/python/docs/actionability.mdx
+++ b/python/docs/actionability.mdx
@@ -66,7 +66,7 @@ Playwright includes auto-retrying assertions that remove flakiness by waiting un
| [expect(locator).to_have_attribute()](/api/class-locatorassertions.mdx#locator-assertions-to-have-attribute) | Element has a DOM attribute |
| [expect(locator).to_have_class()](/api/class-locatorassertions.mdx#locator-assertions-to-have-class) | Element has a class property |
| [expect(locator).to_have_count()](/api/class-locatorassertions.mdx#locator-assertions-to-have-count) | List has exact number of children |
-| [expect(locator).to_have_css()](/api/class-locatorassertions.mdx#locator-assertions-to-have-css-1) | Element has CSS property |
+| [expect(locator).to_have_css()](/api/class-locatorassertions.mdx#locator-assertions-to-have-css) | Element has CSS property |
| [expect(locator).to_have_id()](/api/class-locatorassertions.mdx#locator-assertions-to-have-id) | Element has an ID |
| [expect(locator).to_have_js_property()](/api/class-locatorassertions.mdx#locator-assertions-to-have-js-property) | Element has a JavaScript property |
| [expect(locator).to_have_text()](/api/class-locatorassertions.mdx#locator-assertions-to-have-text) | Element matches text |
diff --git a/python/docs/api/class-locatorassertions.mdx b/python/docs/api/class-locatorassertions.mdx
index e31712ee5d..ef4ec5aa2c 100644
--- a/python/docs/api/class-locatorassertions.mdx
+++ b/python/docs/api/class-locatorassertions.mdx
@@ -516,7 +516,7 @@ expect(locator).not_to_have_count(count, **kwargs)
Added in: v1.20locatorAssertions.not_to_have_css
-The opposite of [expect(locator).to_have_css()](/api/class-locatorassertions.mdx#locator-assertions-to-have-css-1).
+The opposite of [expect(locator).to_have_css()](/api/class-locatorassertions.mdx#locator-assertions-to-have-css).
**Usage**
@@ -1418,7 +1418,7 @@ Let's see how we can use the assertion:
from playwright.sync_api import expect
# ✓ Contains the right items in the right order
-expect(page.locator("ul > li")).to_contain_text(["Text 1", "Text 3", "Text 4"])
+expect(page.locator("ul > li")).to_contain_text(["Text 1", "Text 3"])
# ✖ Wrong order
expect(page.locator("ul > li")).to_contain_text(["Text 3", "Text 2"])
@@ -1437,7 +1437,7 @@ expect(page.locator("ul")).to_contain_text(["Text 3"])
from playwright.async_api import expect
# ✓ Contains the right items in the right order
-await expect(page.locator("ul > li")).to_contain_text(["Text 1", "Text 3", "Text 4"])
+await expect(page.locator("ul > li")).to_contain_text(["Text 1", "Text 3"])
# ✖ Wrong order
await expect(page.locator("ul > li")).to_contain_text(["Text 3", "Text 2"])
@@ -1822,7 +1822,7 @@ await expect(locator).to_have_count(3)
---
-### to_have_css {#locator-assertions-to-have-css-1}
+### to_have_css {#locator-assertions-to-have-css}
Added in: v1.20locatorAssertions.to_have_css
@@ -1861,18 +1861,18 @@ await expect(locator).to_have_css("display", "flex")
**Arguments**
-- `name` [str] Added in: v1.18#
+- `name` [str] Added in: v1.18#
CSS property name.
-- `value` [str] | [Pattern] Added in: v1.18#
+- `value` [str] | [Pattern] Added in: v1.18#
CSS property value.
-- `timeout` [float] *(optional)* Added in: v1.18#
+- `timeout` [float] *(optional)* Added in: v1.18#
Time to retry the assertion for in milliseconds. Defaults to `5000`.
**Returns**
-- [NoneType]#
+- [NoneType]#
---
diff --git a/python/docs/test-assertions.mdx b/python/docs/test-assertions.mdx
index 8a6de57d9e..f7c9a2ee2e 100644
--- a/python/docs/test-assertions.mdx
+++ b/python/docs/test-assertions.mdx
@@ -27,7 +27,7 @@ import HTMLCard from '@site/src/components/HTMLCard';
| [expect(locator).to_have_attribute()](/api/class-locatorassertions.mdx#locator-assertions-to-have-attribute) | Element has a DOM attribute |
| [expect(locator).to_have_class()](/api/class-locatorassertions.mdx#locator-assertions-to-have-class) | Element has a class property |
| [expect(locator).to_have_count()](/api/class-locatorassertions.mdx#locator-assertions-to-have-count) | List has exact number of children |
-| [expect(locator).to_have_css()](/api/class-locatorassertions.mdx#locator-assertions-to-have-css-1) | Element has CSS property |
+| [expect(locator).to_have_css()](/api/class-locatorassertions.mdx#locator-assertions-to-have-css) | Element has CSS property |
| [expect(locator).to_have_id()](/api/class-locatorassertions.mdx#locator-assertions-to-have-id) | Element has an ID |
| [expect(locator).to_have_js_property()](/api/class-locatorassertions.mdx#locator-assertions-to-have-js-property) | Element has a JavaScript property |
| [expect(locator).to_have_role()](/api/class-locatorassertions.mdx#locator-assertions-to-have-role) | Element has a specific [ARIA role](https://www.w3.org/TR/wai-aria-1.2/#roles) |