+:::note
+This rule has been implemented but not released yet. It will be available in the next release.
+:::
+## Summary
+- Diagnostic Category: [`lint/a11y/useValidAriaRole`](/reference/diagnostics#diagnostic-category)
+- This rule is **recommended**, which means is enabled by default.
+- This rule has an [**unsafe**](/linter/#unsafe-fixes) fix.
+- The default severity of this rule is [**error**](/reference/diagnostics#error).
+- Sources:
+ - Same as [`jsx-a11y/aria-role`](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/aria-role.md)
+
+## How to configure
+```json title="biome.json"
+{
+ "linter": {
+ "rules": {
+ "a11y": {
+ "useValidAriaRole": "error"
+ }
+ }
+ }
+}
+
+```
+## Description
+Elements with ARIA roles must use a valid, non-abstract ARIA role.
+
+Remember that this rule only supports static values for the `role` attribute.
+Dynamic `role` values are not checked.
+
+## Examples
+
+### Invalid
+
+```html
+
+```
+
+code-block.html:1:1 lint/a11y/useValidAriaRole FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Enforce that elements with ARIA roles must use a valid, non-abstract ARIA role.
> 1 │ <div role="datepicker"></div>
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2 │
ℹ Check WAI-ARIA for valid roles or provide options accordingly.
ℹ Unsafe fix: Remove the invalid role attribute.
Check the list of all valid role attributes.
1 │ <div·role="datepicker"></div>
│ -----------------
+
+```html
+
+```
+
+code-block.html:1:1 lint/a11y/useValidAriaRole FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Enforce that elements with ARIA roles must use a valid, non-abstract ARIA role.
> 1 │ <div role="range"></div>
│ ^^^^^^^^^^^^^^^^^^^^^^^^
2 │
ℹ Check WAI-ARIA for valid roles or provide options accordingly.
ℹ Unsafe fix: Remove the invalid role attribute.
Check the list of all valid role attributes.
1 │ <div·role="range"></div>
│ ------------
+
+```html
+
+```
+
+code-block.html:1:1 lint/a11y/useValidAriaRole FIXABLE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Enforce that elements with ARIA roles must use a valid, non-abstract ARIA role.
> 1 │ <div role=""></div>
│ ^^^^^^^^^^^^^^^^^^^
2 │
ℹ Check WAI-ARIA for valid roles or provide options accordingly.
ℹ Unsafe fix: Remove the invalid role attribute.
Check the list of all valid role attributes.
1 │ <div·role=""></div>
│ -------
+
+### Valid
+
+```html
+
+
+```
+
+## Options
+
+### `allowInvalidRoles`
+
+It allows specifying a list of roles that might be invalid otherwise
+
+```json title='biome.json'
+{
+ "linter": {
+ "rules": {
+ "a11y": {
+ "useValidAriaRole": {
+ "options": {
+ "allowInvalidRoles": [
+ "datepicker"
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+
+```
+
+```html
+
+```
+
+## Accessibility guidelines
+
+- [WCAG 4.1.2](https://www.w3.org/WAI/WCAG21/Understanding/name-role-value)
+
+## Resources
+
+- [Chrome Audit Rules, AX_ARIA_01](https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_aria_01)
+- [DPUB-ARIA roles](https://www.w3.org/TR/dpub-aria-1.0/)
+- [MDN: Using ARIA: Roles, states, and properties](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques)
+
+## Related links
+
+- [Disable a rule](/linter/#disable-a-rule)
+- [Configure the code fix](/linter#configure-the-code-fix)
+- [Rule options](/linter/#rule-options)
+- [Source Code](https://github.com/biomejs/biome/blob/main/crates/biome_html_analyze/src/lint/a11y/use_valid_aria_role.rs)
+- [Test Cases](https://github.com/biomejs/biome/blob/main/crates/biome_html_analyze/tests/specs/a11y/useValidAriaRole)
+
diff --git a/src/pages/metadata/rules.json.js b/src/pages/metadata/rules.json.js
index 6054d1cf9..ca2314e69 100644
--- a/src/pages/metadata/rules.json.js
+++ b/src/pages/metadata/rules.json.js
@@ -717,6 +717,23 @@ export function GET() {
}
],
"docs": " Enforces the usage of the attribute `title` for the element `iframe`.\n\n :::note\n In `.html` files, this rule matches `iframe` elements case-insensitively (e.g., `