[🏠 Home](./README.md) > **Governance**

# Governance

> **6 Components** | **63 Files** | **933 Tests** | **1598 Scenarios** 🚀

## Table of Contents
- [Custom Properties](#custom-properties)
- [Metrics](#metrics)
- [Domains & Data Products](#domains-data-products)
- [Glossary](#glossary)
- [Tags](#tags)
- [Data Contracts](#data-contracts)

---

<div id="custom-properties"></div>

## Custom Properties

<details open>
<summary>📄 <b>Customproperties-part1.spec.ts</b> (191 tests, 195 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Pages/Customproperties-part1.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Customproperties-part1.spec.ts)

### Custom properties without custom property config

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Custom properties without custom property config** - Integer | Integer |
| 2 | **Custom properties without custom property config** - String | String |
| 3 | **Custom properties without custom property config** - Markdown | Markdown |
| 4 | **Custom properties without custom property config** - Duration | Duration |
| 5 | **Custom properties without custom property config** - Email | Email |
| 6 | **Custom properties without custom property config** - Number | Number |
| 7 | **Custom properties without custom property config** - Sql Query | Sql Query |
| 8 | **Custom properties without custom property config** - Time Interval | Time Interval |
| 9 | **Custom properties without custom property config** - Timestamp | Timestamp |
| 10 | **Custom properties without custom property config** - Hyperlink | Hyperlink |
| 11 | **Custom properties without custom property config** - Integer | Integer |
| 12 | **Custom properties without custom property config** - String | String |
| 13 | **Custom properties without custom property config** - Markdown | Markdown |
| 14 | **Custom properties without custom property config** - Duration | Duration |
| 15 | **Custom properties without custom property config** - Email | Email |
| 16 | **Custom properties without custom property config** - Number | Number |
| 17 | **Custom properties without custom property config** - Sql Query | Sql Query |
| 18 | **Custom properties without custom property config** - Time Interval | Time Interval |
| 19 | **Custom properties without custom property config** - Timestamp | Timestamp |
| 20 | **Custom properties without custom property config** - Hyperlink | Hyperlink |
| 21 | **Custom properties without custom property config** - Integer | Integer |
| 22 | **Custom properties without custom property config** - String | String |
| 23 | **Custom properties without custom property config** - Markdown | Markdown |
| 24 | **Custom properties without custom property config** - Duration | Duration |
| 25 | **Custom properties without custom property config** - Email | Email |
| 26 | **Custom properties without custom property config** - Number | Number |
| 27 | **Custom properties without custom property config** - Sql Query | Sql Query |
| 28 | **Custom properties without custom property config** - Time Interval | Time Interval |
| 29 | **Custom properties without custom property config** - Timestamp | Timestamp |
| 30 | **Custom properties without custom property config** - Hyperlink | Hyperlink |
| 31 | **Custom properties without custom property config** - Integer | Integer |
| 32 | **Custom properties without custom property config** - String | String |
| 33 | **Custom properties without custom property config** - Markdown | Markdown |
| 34 | **Custom properties without custom property config** - Duration | Duration |
| 35 | **Custom properties without custom property config** - Email | Email |
| 36 | **Custom properties without custom property config** - Number | Number |
| 37 | **Custom properties without custom property config** - Sql Query | Sql Query |
| 38 | **Custom properties without custom property config** - Time Interval | Time Interval |
| 39 | **Custom properties without custom property config** - Timestamp | Timestamp |
| 40 | **Custom properties without custom property config** - Hyperlink | Hyperlink |
| 41 | **Custom properties without custom property config** - Integer | Integer |
| 42 | **Custom properties without custom property config** - String | String |
| 43 | **Custom properties without custom property config** - Markdown | Markdown |
| 44 | **Custom properties without custom property config** - Duration | Duration |
| 45 | **Custom properties without custom property config** - Email | Email |
| 46 | **Custom properties without custom property config** - Number | Number |
| 47 | **Custom properties without custom property config** - Sql Query | Sql Query |
| 48 | **Custom properties without custom property config** - Time Interval | Time Interval |
| 49 | **Custom properties without custom property config** - Timestamp | Timestamp |
| 50 | **Custom properties without custom property config** - Hyperlink | Hyperlink |
| 51 | **Custom properties without custom property config** - Integer | Integer |
| 52 | **Custom properties without custom property config** - String | String |
| 53 | **Custom properties without custom property config** - Markdown | Markdown |
| 54 | **Custom properties without custom property config** - Duration | Duration |
| 55 | **Custom properties without custom property config** - Email | Email |
| 56 | **Custom properties without custom property config** - Number | Number |
| 57 | **Custom properties without custom property config** - Sql Query | Sql Query |
| 58 | **Custom properties without custom property config** - Time Interval | Time Interval |
| 59 | **Custom properties without custom property config** - Timestamp | Timestamp |
| 60 | **Custom properties without custom property config** - Hyperlink | Hyperlink |
| 61 | **Custom properties without custom property config** - Integer | Integer |
| 62 | **Custom properties without custom property config** - String | String |
| 63 | **Custom properties without custom property config** - Markdown | Markdown |
| 64 | **Custom properties without custom property config** - Duration | Duration |
| 65 | **Custom properties without custom property config** - Email | Email |
| 66 | **Custom properties without custom property config** - Number | Number |
| 67 | **Custom properties without custom property config** - Sql Query | Sql Query |
| 68 | **Custom properties without custom property config** - Time Interval | Time Interval |
| 69 | **Custom properties without custom property config** - Timestamp | Timestamp |
| 70 | **Custom properties without custom property config** - Hyperlink | Hyperlink |
| 71 | **Custom properties without custom property config** - Integer | Integer |
| 72 | **Custom properties without custom property config** - String | String |
| 73 | **Custom properties without custom property config** - Markdown | Markdown |
| 74 | **Custom properties without custom property config** - Duration | Duration |
| 75 | **Custom properties without custom property config** - Email | Email |
| 76 | **Custom properties without custom property config** - Number | Number |
| 77 | **Custom properties without custom property config** - Sql Query | Sql Query |
| 78 | **Custom properties without custom property config** - Time Interval | Time Interval |
| 79 | **Custom properties without custom property config** - Timestamp | Timestamp |
| 80 | **Custom properties without custom property config** - Hyperlink | Hyperlink |
| 81 | **Custom properties without custom property config** - Integer | Integer |
| 82 | **Custom properties without custom property config** - String | String |
| 83 | **Custom properties without custom property config** - Markdown | Markdown |
| 84 | **Custom properties without custom property config** - Duration | Duration |
| 85 | **Custom properties without custom property config** - Email | Email |
| 86 | **Custom properties without custom property config** - Number | Number |
| 87 | **Custom properties without custom property config** - Sql Query | Sql Query |
| 88 | **Custom properties without custom property config** - Time Interval | Time Interval |
| 89 | **Custom properties without custom property config** - Timestamp | Timestamp |
| 90 | **Custom properties without custom property config** - Hyperlink | Hyperlink |
| 91 | **Custom properties without custom property config** - Integer | Integer |
| 92 | **Custom properties without custom property config** - String | String |
| 93 | **Custom properties without custom property config** - Markdown | Markdown |
| 94 | **Custom properties without custom property config** - Duration | Duration |
| 95 | **Custom properties without custom property config** - Email | Email |
| 96 | **Custom properties without custom property config** - Number | Number |
| 97 | **Custom properties without custom property config** - Sql Query | Sql Query |
| 98 | **Custom properties without custom property config** - Time Interval | Time Interval |
| 99 | **Custom properties without custom property config** - Timestamp | Timestamp |
| 100 | **Custom properties without custom property config** - Hyperlink | Hyperlink |
| 101 | **Custom properties without custom property config** - Integer | Integer |
| 102 | **Custom properties without custom property config** - String | String |
| 103 | **Custom properties without custom property config** - Markdown | Markdown |
| 104 | **Custom properties without custom property config** - Duration | Duration |
| 105 | **Custom properties without custom property config** - Email | Email |
| 106 | **Custom properties without custom property config** - Number | Number |
| 107 | **Custom properties without custom property config** - Sql Query | Sql Query |
| 108 | **Custom properties without custom property config** - Time Interval | Time Interval |
| 109 | **Custom properties without custom property config** - Timestamp | Timestamp |
| 110 | **Custom properties without custom property config** - Hyperlink | Hyperlink |
| 111 | **Custom properties without custom property config** - Integer | Integer |
| 112 | **Custom properties without custom property config** - String | String |
| 113 | **Custom properties without custom property config** - Markdown | Markdown |
| 114 | **Custom properties without custom property config** - Duration | Duration |
| 115 | **Custom properties without custom property config** - Email | Email |
| 116 | **Custom properties without custom property config** - Number | Number |
| 117 | **Custom properties without custom property config** - Sql Query | Sql Query |
| 118 | **Custom properties without custom property config** - Time Interval | Time Interval |
| 119 | **Custom properties without custom property config** - Timestamp | Timestamp |
| 120 | **Custom properties without custom property config** - Hyperlink | Hyperlink |
| 121 | **Custom properties without custom property config** - Integer | Integer |
| 122 | **Custom properties without custom property config** - String | String |
| 123 | **Custom properties without custom property config** - Markdown | Markdown |
| 124 | **Custom properties without custom property config** - Duration | Duration |
| 125 | **Custom properties without custom property config** - Email | Email |
| 126 | **Custom properties without custom property config** - Number | Number |
| 127 | **Custom properties without custom property config** - Sql Query | Sql Query |
| 128 | **Custom properties without custom property config** - Time Interval | Time Interval |
| 129 | **Custom properties without custom property config** - Timestamp | Timestamp |
| 130 | **Custom properties without custom property config** - Hyperlink | Hyperlink |
| 131 | **Custom properties without custom property config** - Integer | Integer |
| 132 | **Custom properties without custom property config** - String | String |
| 133 | **Custom properties without custom property config** - Markdown | Markdown |
| 134 | **Custom properties without custom property config** - Duration | Duration |
| 135 | **Custom properties without custom property config** - Email | Email |
| 136 | **Custom properties without custom property config** - Number | Number |
| 137 | **Custom properties without custom property config** - Sql Query | Sql Query |
| 138 | **Custom properties without custom property config** - Time Interval | Time Interval |
| 139 | **Custom properties without custom property config** - Timestamp | Timestamp |
| 140 | **Custom properties without custom property config** - Hyperlink | Hyperlink |
| 141 | **Custom properties without custom property config** - Integer | Integer |
| 142 | **Custom properties without custom property config** - String | String |
| 143 | **Custom properties without custom property config** - Markdown | Markdown |
| 144 | **Custom properties without custom property config** - Duration | Duration |
| 145 | **Custom properties without custom property config** - Email | Email |
| 146 | **Custom properties without custom property config** - Number | Number |
| 147 | **Custom properties without custom property config** - Sql Query | Sql Query |
| 148 | **Custom properties without custom property config** - Time Interval | Time Interval |
| 149 | **Custom properties without custom property config** - Timestamp | Timestamp |
| 150 | **Custom properties without custom property config** - Hyperlink | Hyperlink |
| 151 | **Custom properties without custom property config** - Integer | Integer |
| 152 | **Custom properties without custom property config** - String | String |
| 153 | **Custom properties without custom property config** - Markdown | Markdown |
| 154 | **Custom properties without custom property config** - Duration | Duration |
| 155 | **Custom properties without custom property config** - Email | Email |
| 156 | **Custom properties without custom property config** - Number | Number |
| 157 | **Custom properties without custom property config** - Sql Query | Sql Query |
| 158 | **Custom properties without custom property config** - Time Interval | Time Interval |
| 159 | **Custom properties without custom property config** - Timestamp | Timestamp |
| 160 | **Custom properties without custom property config** - Hyperlink | Hyperlink |
| 161 | **Custom properties without custom property config** - Integer | Integer |
| 162 | **Custom properties without custom property config** - String | String |
| 163 | **Custom properties without custom property config** - Markdown | Markdown |
| 164 | **Custom properties without custom property config** - Duration | Duration |
| 165 | **Custom properties without custom property config** - Email | Email |
| 166 | **Custom properties without custom property config** - Number | Number |
| 167 | **Custom properties without custom property config** - Sql Query | Sql Query |
| 168 | **Custom properties without custom property config** - Time Interval | Time Interval |
| 169 | **Custom properties without custom property config** - Timestamp | Timestamp |
| 170 | **Custom properties without custom property config** - Hyperlink | Hyperlink |
| 171 | **Custom properties without custom property config** - Integer | Integer |
| 172 | **Custom properties without custom property config** - String | String |
| 173 | **Custom properties without custom property config** - Markdown | Markdown |
| 174 | **Custom properties without custom property config** - Duration | Duration |
| 175 | **Custom properties without custom property config** - Email | Email |
| 176 | **Custom properties without custom property config** - Number | Number |
| 177 | **Custom properties without custom property config** - Sql Query | Sql Query |
| 178 | **Custom properties without custom property config** - Time Interval | Time Interval |
| 179 | **Custom properties without custom property config** - Timestamp | Timestamp |
| 180 | **Custom properties without custom property config** - Hyperlink | Hyperlink |
| 181 | **Custom properties without custom property config** - Integer | Integer |
| 182 | **Custom properties without custom property config** - String | String |
| 183 | **Custom properties without custom property config** - Markdown | Markdown |
| 184 | **Custom properties without custom property config** - Duration | Duration |
| 185 | **Custom properties without custom property config** - Email | Email |
| 186 | **Custom properties without custom property config** - Number | Number |
| 187 | **Custom properties without custom property config** - Sql Query | Sql Query |
| 188 | **Custom properties without custom property config** - Time Interval | Time Interval |
| 189 | **Custom properties without custom property config** - Timestamp | Timestamp |
| 190 | **Custom properties without custom property config** - Hyperlink | Hyperlink |
| 191 | **Custom properties without custom property config** - sqlQuery shows scrollable CodeMirror container and no expand toggle | SqlQuery shows scrollable CodeMirror container and no expand toggle |
| | ↳ *Create sqlQuery property* | |
| | ↳ *Set multi-line SQL value* | |
| | ↳ *Verify .CodeMirror-scroll is height-constrained and scrollable* | |
| | ↳ *Verify expand/collapse toggle is hidden* | |
| | ↳ *Cleanup property* | |

</details>

<details open>
<summary>📄 <b>Customproperties-part2.spec.ts</b> (135 tests, 145 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Pages/Customproperties-part2.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Customproperties-part2.spec.ts)

### Custom properties with custom property config

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Custom properties with custom property config** - Enum | Enum |
| 2 | **Custom properties with custom property config** - Table | Table |
| 3 | **Custom properties with custom property config** - Entity Reference | Entity Reference |
| 4 | **Custom properties with custom property config** - Entity Reference List | Entity Reference List |
| 5 | **Custom properties with custom property config** - Date | Date |
| 6 | **Custom properties with custom property config** - Time | Time |
| 7 | **Custom properties with custom property config** - Date Time | Date Time |
| 8 | **Custom properties with custom property config** - Enum | Enum |
| 9 | **Custom properties with custom property config** - Table | Table |
| 10 | **Custom properties with custom property config** - Entity Reference | Entity Reference |
| 11 | **Custom properties with custom property config** - Entity Reference List | Entity Reference List |
| 12 | **Custom properties with custom property config** - Date | Date |
| 13 | **Custom properties with custom property config** - Time | Time |
| 14 | **Custom properties with custom property config** - Date Time | Date Time |
| 15 | **Custom properties with custom property config** - Enum | Enum |
| 16 | **Custom properties with custom property config** - Table | Table |
| 17 | **Custom properties with custom property config** - Entity Reference | Entity Reference |
| 18 | **Custom properties with custom property config** - Entity Reference List | Entity Reference List |
| 19 | **Custom properties with custom property config** - Date | Date |
| 20 | **Custom properties with custom property config** - Time | Time |
| 21 | **Custom properties with custom property config** - Date Time | Date Time |
| 22 | **Custom properties with custom property config** - Enum | Enum |
| 23 | **Custom properties with custom property config** - Table | Table |
| 24 | **Custom properties with custom property config** - Entity Reference | Entity Reference |
| 25 | **Custom properties with custom property config** - Entity Reference List | Entity Reference List |
| 26 | **Custom properties with custom property config** - Date | Date |
| 27 | **Custom properties with custom property config** - Time | Time |
| 28 | **Custom properties with custom property config** - Date Time | Date Time |
| 29 | **Custom properties with custom property config** - Enum | Enum |
| 30 | **Custom properties with custom property config** - Table | Table |
| 31 | **Custom properties with custom property config** - Entity Reference | Entity Reference |
| 32 | **Custom properties with custom property config** - Entity Reference List | Entity Reference List |
| 33 | **Custom properties with custom property config** - Date | Date |
| 34 | **Custom properties with custom property config** - Time | Time |
| 35 | **Custom properties with custom property config** - Date Time | Date Time |
| 36 | **Custom properties with custom property config** - Enum | Enum |
| 37 | **Custom properties with custom property config** - Table | Table |
| 38 | **Custom properties with custom property config** - Entity Reference | Entity Reference |
| 39 | **Custom properties with custom property config** - Entity Reference List | Entity Reference List |
| 40 | **Custom properties with custom property config** - Date | Date |
| 41 | **Custom properties with custom property config** - Time | Time |
| 42 | **Custom properties with custom property config** - Date Time | Date Time |
| 43 | **Custom properties with custom property config** - Enum | Enum |
| 44 | **Custom properties with custom property config** - Table | Table |
| 45 | **Custom properties with custom property config** - Entity Reference | Entity Reference |
| 46 | **Custom properties with custom property config** - Entity Reference List | Entity Reference List |
| 47 | **Custom properties with custom property config** - Date | Date |
| 48 | **Custom properties with custom property config** - Time | Time |
| 49 | **Custom properties with custom property config** - Date Time | Date Time |
| 50 | **Custom properties with custom property config** - Enum | Enum |
| 51 | **Custom properties with custom property config** - Table | Table |
| 52 | **Custom properties with custom property config** - Entity Reference | Entity Reference |
| 53 | **Custom properties with custom property config** - Entity Reference List | Entity Reference List |
| 54 | **Custom properties with custom property config** - Date | Date |
| 55 | **Custom properties with custom property config** - Time | Time |
| 56 | **Custom properties with custom property config** - Date Time | Date Time |
| 57 | **Custom properties with custom property config** - Enum | Enum |
| 58 | **Custom properties with custom property config** - Table | Table |
| 59 | **Custom properties with custom property config** - Entity Reference | Entity Reference |
| 60 | **Custom properties with custom property config** - Entity Reference List | Entity Reference List |
| 61 | **Custom properties with custom property config** - Date | Date |
| 62 | **Custom properties with custom property config** - Time | Time |
| 63 | **Custom properties with custom property config** - Date Time | Date Time |
| 64 | **Custom properties with custom property config** - Enum | Enum |
| 65 | **Custom properties with custom property config** - Table | Table |
| 66 | **Custom properties with custom property config** - Entity Reference | Entity Reference |
| 67 | **Custom properties with custom property config** - Entity Reference List | Entity Reference List |
| 68 | **Custom properties with custom property config** - Date | Date |
| 69 | **Custom properties with custom property config** - Time | Time |
| 70 | **Custom properties with custom property config** - Date Time | Date Time |
| 71 | **Custom properties with custom property config** - Enum | Enum |
| 72 | **Custom properties with custom property config** - Table | Table |
| 73 | **Custom properties with custom property config** - Entity Reference | Entity Reference |
| 74 | **Custom properties with custom property config** - Entity Reference List | Entity Reference List |
| 75 | **Custom properties with custom property config** - Date | Date |
| 76 | **Custom properties with custom property config** - Time | Time |
| 77 | **Custom properties with custom property config** - Date Time | Date Time |
| 78 | **Custom properties with custom property config** - Enum | Enum |
| 79 | **Custom properties with custom property config** - Table | Table |
| 80 | **Custom properties with custom property config** - Entity Reference | Entity Reference |
| 81 | **Custom properties with custom property config** - Entity Reference List | Entity Reference List |
| 82 | **Custom properties with custom property config** - Date | Date |
| 83 | **Custom properties with custom property config** - Time | Time |
| 84 | **Custom properties with custom property config** - Date Time | Date Time |
| 85 | **Custom properties with custom property config** - Enum | Enum |
| 86 | **Custom properties with custom property config** - Table | Table |
| 87 | **Custom properties with custom property config** - Entity Reference | Entity Reference |
| 88 | **Custom properties with custom property config** - Entity Reference List | Entity Reference List |
| 89 | **Custom properties with custom property config** - Date | Date |
| 90 | **Custom properties with custom property config** - Time | Time |
| 91 | **Custom properties with custom property config** - Date Time | Date Time |
| 92 | **Custom properties with custom property config** - Enum | Enum |
| 93 | **Custom properties with custom property config** - Table | Table |
| 94 | **Custom properties with custom property config** - Entity Reference | Entity Reference |
| 95 | **Custom properties with custom property config** - Entity Reference List | Entity Reference List |
| 96 | **Custom properties with custom property config** - Date | Date |
| 97 | **Custom properties with custom property config** - Time | Time |
| 98 | **Custom properties with custom property config** - Date Time | Date Time |
| 99 | **Custom properties with custom property config** - Enum | Enum |
| 100 | **Custom properties with custom property config** - Table | Table |
| 101 | **Custom properties with custom property config** - Entity Reference | Entity Reference |
| 102 | **Custom properties with custom property config** - Entity Reference List | Entity Reference List |
| 103 | **Custom properties with custom property config** - Date | Date |
| 104 | **Custom properties with custom property config** - Time | Time |
| 105 | **Custom properties with custom property config** - Date Time | Date Time |
| 106 | **Custom properties with custom property config** - Enum | Enum |
| 107 | **Custom properties with custom property config** - Table | Table |
| 108 | **Custom properties with custom property config** - Entity Reference | Entity Reference |
| 109 | **Custom properties with custom property config** - Entity Reference List | Entity Reference List |
| 110 | **Custom properties with custom property config** - Date | Date |
| 111 | **Custom properties with custom property config** - Time | Time |
| 112 | **Custom properties with custom property config** - Date Time | Date Time |
| 113 | **Custom properties with custom property config** - Enum | Enum |
| 114 | **Custom properties with custom property config** - Table | Table |
| 115 | **Custom properties with custom property config** - Entity Reference | Entity Reference |
| 116 | **Custom properties with custom property config** - Entity Reference List | Entity Reference List |
| 117 | **Custom properties with custom property config** - Date | Date |
| 118 | **Custom properties with custom property config** - Time | Time |
| 119 | **Custom properties with custom property config** - Date Time | Date Time |
| 120 | **Custom properties with custom property config** - Enum | Enum |
| 121 | **Custom properties with custom property config** - Table | Table |
| 122 | **Custom properties with custom property config** - Entity Reference | Entity Reference |
| 123 | **Custom properties with custom property config** - Entity Reference List | Entity Reference List |
| 124 | **Custom properties with custom property config** - Date | Date |
| 125 | **Custom properties with custom property config** - Time | Time |
| 126 | **Custom properties with custom property config** - Date Time | Date Time |
| 127 | **Custom properties with custom property config** - Enum | Enum |
| 128 | **Custom properties with custom property config** - Table | Table |
| 129 | **Custom properties with custom property config** - Entity Reference | Entity Reference |
| 130 | **Custom properties with custom property config** - Entity Reference List | Entity Reference List |
| 131 | **Custom properties with custom property config** - Date | Date |
| 132 | **Custom properties with custom property config** - Time | Time |
| 133 | **Custom properties with custom property config** - Date Time | Date Time |
| 134 | **Custom properties with custom property config** - entityReferenceList shows item count, scrollable list, no expand toggle | EntityReferenceList shows item count, scrollable list, no expand toggle |
| | ↳ *Create entityReferenceList property* | |
| | ↳ *Set 5 user references as value* | |
| | ↳ *Verify item count (5) in property name* | |
| | ↳ *Verify .entity-list-body is scrollable* | |
| | ↳ *Verify expand/collapse toggle is hidden* | |
| | ↳ *Cleanup property* | |
| 135 | **Custom properties with custom property config** - table-cp shows row count, scrollable container, no expand toggle | Table-cp shows row count, scrollable container, no expand toggle |
| | ↳ *Create table-cp property* | |
| | ↳ *Add 5 rows of data to table property* | |
| | ↳ *Verify row count (5) in property name* | |
| | ↳ *Verify .custom-property-scrollable-container is scrollable* | |
| | ↳ *Verify expand/collapse toggle is hidden* | |
| | ↳ *Cleanup property* | |

</details>

<details open>
<summary>📄 <b>CustomPropertyAdvanceSeach.spec.ts</b> (19 tests, 19 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Flow/AdvanceSearchFilter/CustomPropertyAdvanceSeach.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Flow/AdvanceSearchFilter/CustomPropertyAdvanceSeach.spec.ts)

### Custom Property Advanced Search Filter for Dashboard

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Custom Property Advanced Search Filter for Dashboard** - String CP with all operators | String CP with all operators |
| 2 | **Custom Property Advanced Search Filter for Dashboard** - Email CP with all operators | Email CP with all operators |
| 3 | **Custom Property Advanced Search Filter for Dashboard** - Markdown CP with all operators | Markdown CP with all operators |
| 4 | **Custom Property Advanced Search Filter for Dashboard** - SQL Query CP with all operators | SQL Query CP with all operators |
| 5 | **Custom Property Advanced Search Filter for Dashboard** - Duration CP with all operators | Duration CP with all operators |
| 6 | **Custom Property Advanced Search Filter for Dashboard** - Time CP with all operators | Time CP with all operators |
| 7 | **Custom Property Advanced Search Filter for Dashboard** - Integer CP with all operators | Integer CP with all operators |
| 8 | **Custom Property Advanced Search Filter for Dashboard** - Number CP with all operators | Number CP with all operators |
| 9 | **Custom Property Advanced Search Filter for Dashboard** - Timestamp CP with all operators | Timestamp CP with all operators |
| 10 | **Custom Property Advanced Search Filter for Dashboard** - Entity Reference CP with all operators | Entity Reference CP with all operators |
| 11 | **Custom Property Advanced Search Filter for Dashboard** - Entity Reference List CP with all operators | Entity Reference List CP with all operators |
| 12 | **Custom Property Advanced Search Filter for Dashboard** - DateTime CP with all operators | DateTime CP with all operators |
| 13 | **Custom Property Advanced Search Filter for Dashboard** - Date CP with all operators | Date CP with all operators |
| 14 | **Custom Property Advanced Search Filter for Dashboard** - Enum CP with all operators | Enum CP with all operators |
| 15 | **Custom Property Advanced Search Filter for Dashboard** - Time Interval CP with operators | Time Interval CP with operators |
| 16 | **Custom Property Advanced Search Filter for Dashboard** - Hyperlink CP with operators | Hyperlink CP with operators |
| 17 | **Custom Property Advanced Search Filter for Dashboard** - Table CP - Name column with all operators | Table CP - Name column with all operators |
| 18 | **Custom Property Advanced Search Filter for Dashboard** - Table CP - Role column with all operators | Table CP - Role column with all operators |
| 19 | **Custom Property Advanced Search Filter for Dashboard** - Table CP - Sr No column with all operators | Table CP - Sr No column with all operators |

</details>

<details open>
<summary>📄 <b>HyperlinkCustomProperty.spec.ts</b> (4 tests, 4 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Pages/HyperlinkCustomProperty.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/HyperlinkCustomProperty.spec.ts)

### Hyperlink Custom Property Tests

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Hyperlink Custom Property Tests** - should reject javascript: protocol URLs for XSS protection | Reject javascript: protocol URLs for XSS protection |
| 2 | **Hyperlink Custom Property Tests** - should accept valid http and https URLs | Accept valid http and https URLs |
| 3 | **Hyperlink Custom Property Tests** - should display URL when no display text is provided | Display URL when no display text is provided |
| 4 | **Hyperlink Custom Property Tests** - should show No Data placeholder when hyperlink has no value | Show No Data placeholder when hyperlink has no value |

</details>

<details open>
<summary>📄 <b>CustomPropertySearchSettings.spec.ts</b> (3 tests, 10 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/CustomPropertySearchSettings.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/CustomPropertySearchSettings.spec.ts)

### Custom Property Search Settings

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Custom Property Search Settings** - Create custom properties and configure search for Dashboard | Create custom properties and configure search for Dashboard |
| | ↳ *Create and assign custom property to Dashboard* | |
| | ↳ *Configure search settings for Dashboard custom property* | |
| | ↳ *Search for Dashboard using custom property value* | |
| | ↳ *Verify dashboard is indexed* | |
| | ↳ *Search for Dashboard using custom property value* | |
| 2 | **Custom Property Search Settings** - Create custom properties and configure search for Pipeline | Create custom properties and configure search for Pipeline |
| | ↳ *Create and assign custom property to Pipeline* | |
| | ↳ *Configure search settings for Pipeline custom property* | |
| | ↳ *Search for Pipeline using custom property value* | |
| 3 | **Custom Property Search Settings** - Verify custom property fields are persisted in search settings | Custom property fields are persisted in search settings |
| | ↳ *Verify Dashboard custom property persists* | |
| | ↳ *Verify Pipeline custom property persists* | |

</details>

<details open>
<summary>📄 <b>AdvanceSearchCustomProperty.spec.ts</b> (1 tests, 2 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/AdvanceSearchCustomProperty.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/AdvanceSearchCustomProperty.spec.ts)

### Advanced Search Custom Property

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Advanced Search Custom Property** - Create, Assign and Test Advance Search for Duration | Create, Assign and Test Advance Search for Duration |
| | ↳ *Create and Assign Custom Property Value* | |
| | ↳ *Verify Duration Type in Advance Search * | |

</details>

<details open>
<summary>📄 <b>EnumCustomPropertyWidget.spec.ts</b> (1 tests, 1 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/EnumCustomPropertyWidget.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/EnumCustomPropertyWidget.spec.ts)

### Enum Custom Property on Table Right Panel

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Enum Custom Property on Table Right Panel** - Create Enum Property, Add Value, Verify, Remove Value | Create Enum Property, Add Value, Verify, Remove Value |

</details>


---

<div id="metrics"></div>

## Metrics

<details open>
<summary>📄 <b>Metric.spec.ts</b> (6 tests, 6 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Flow/Metric.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Flow/Metric.spec.ts)

### Metric Entity Special Test Cases

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Metric Entity Special Test Cases** - Metric creation flow should work | Metric creation flow should work |
| 2 | **Metric Entity Special Test Cases** - Verify Metric Type Update | Metric Type Update |
| 3 | **Metric Entity Special Test Cases** - Verify Unit of Measurement Update | Unit of Measurement Update |
| 4 | **Metric Entity Special Test Cases** - Verify Granularity Update | Granularity Update |
| 5 | **Metric Entity Special Test Cases** - verify metric expression update | Metric expression update |
| 6 | **Metric Entity Special Test Cases** - Verify Related Metrics Update | Related Metrics Update |

</details>

<details open>
<summary>📄 <b>CustomMetric.spec.ts</b> (2 tests, 4 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/CustomMetric.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/CustomMetric.spec.ts)

### Standalone Tests

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | Table custom metric | Table custom metric |
| | ↳ *Create* | |
| | ↳ *Delete* | |
| 2 | Column custom metric | Column custom metric |
| | ↳ *Create* | |
| | ↳ *Delete* | |

</details>

<details open>
<summary>📄 <b>MetricCustomUnitFlow.spec.ts</b> (1 tests, 6 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/MetricCustomUnitFlow.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/MetricCustomUnitFlow.spec.ts)

### Metric Custom Unit of Measurement Flow

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Metric Custom Unit of Measurement Flow** - Should create metric and test unit of measurement updates | Create metric and test unit of measurement updates |
| | ↳ *Navigate to Metrics and create a metric* | |
| | ↳ *Verify initial unit of measurement is displayed* | |
| | ↳ *Update unit of measurement to Dollars* | |
| | ↳ *Remove unit of measurement* | |
| | ↳ *Set unit back to Percentage* | |
| | ↳ *Clean up - delete the metric* | |

</details>


---

<div id="domains-data-products"></div>

## Domains & Data Products

<details open>
<summary>📄 <b>Domains.spec.ts</b> (40 tests, 69 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Pages/Domains.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Domains.spec.ts)

### Domains

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Domains** - Create domains and add assets | Create domains and add assets |
| | ↳ *Create domain* | |
| | ↳ *Add assets to domain* | |
| | ↳ *Delete domain using delete modal* | |
| 2 | **Domains** - Create DataProducts and add remove assets | Create DataProducts and add remove assets |
| | ↳ *Add assets to domain* | |
| | ↳ *Create DataProducts* | |
| | ↳ *Follow & Un-follow DataProducts* | |
| | ↳ *Verify empty assets message and Add Asset button* | |
| | ↳ *Add assets to DataProducts* | |
| | ↳ *Remove assets from DataProducts* | |
| 3 | **Domains** - Follow & Un-follow domain | Follow & Un-follow domain |
| 4 | **Domains** - Add, Update custom properties for data product | Add, Update custom properties for data product |
| | ↳ *Create DataProduct and custom properties for it* | |
| | ↳ *Set ${...} Custom Property* | |
| | ↳ *Update ${...} Custom Property* | |
| 5 | **Domains** - Rename domain | Rename domain |
| 6 | **Domains** - Follow/unfollow subdomain and create nested sub domain | Follow/unfollow subdomain and create nested sub domain |
| 7 | **Domains** - Should clear assets from data products after deletion of data product in Domain | Clear assets from data products after deletion of data product in Domain |
| | ↳ *Delete domain & recreate the same domain and data product* | |
| 8 | **Domains** - Should inherit owners and experts from parent domain | Inherit owners and experts from parent domain |
| 9 | **Domains** - Domain owner should able to edit description of domain | Domain owner should able to edit description of domain |
| 10 | **Domains** - Verify domain and subdomain asset count accuracy | Domain and subdomain asset count accuracy |
| | ↳ *Create domain and subdomain via API* | |
| | ↳ *Add assets to domain* | |
| | ↳ *Add assets to subdomain* | |
| | ↳ *Verify domain asset count matches displayed cards* | |
| | ↳ *Verify subdomain asset count matches displayed cards* | |
| 11 | **Domains** - Verify domain data products count includes subdomain data products | Domain data products count includes subdomain data products |
| | ↳ *Create domain, subdomain, and data products via API* | |
| | ↳ *Verify domain data products tab shows both domain and subdomain data products* | |
| | ↳ *Verify subdomain data products tab shows only its own data products* | |
| | ↳ *Delete subdomain and verify its data products are not visible in domain* | |
| | ↳ *Verify deeply nested subdomain data products are visible at each level* | |
| 12 | **Domains** - Verify domain tags and glossary terms | Domain tags and glossary terms |
| 13 | **Domains** - Create domain with tags using MUITagSuggestion | Create domain with tags using MUITagSuggestion |
| | ↳ *Navigate to add domain* | |
| | ↳ *Fill domain form* | |
| | ↳ *Search and select tag via MUITagSuggestion* | |
| | ↳ *Save domain and verify tag is applied* | |
| 14 | **Domains** - Create subdomain with tags using MUITagSuggestion | Create subdomain with tags using MUITagSuggestion |
| | ↳ *Navigate to domain and open subdomain modal* | |
| | ↳ *Fill subdomain form* | |
| | ↳ *Search and select tag via MUITagSuggestion* | |
| | ↳ *Save subdomain and verify tag is applied* | |
| 15 | **Domains** - Verify data product tags and glossary terms | Data product tags and glossary terms |
| 16 | **Domains** - Verify clicking All Domains sets active domain to default value | Clicking All Domains sets active domain to default value |
| 17 | **Domains** - Verify redirect path on data product delete | Redirect path on data product delete |
| 18 | **Domains** - Verify duplicate domain creation | Duplicate domain creation |
| 19 | **Domains** - Create domain custom property and verify value persistence | Create domain custom property and verify value persistence |
| | ↳ *Create custom property for domain entity* | |
| | ↳ *Navigate to domain and assign custom property value* | |
| | ↳ *Reload and verify custom property value persists* | |
| | ↳ *Cleanup custom property* | |
| 20 | **Domains** - Domain announcement create, edit & delete | Domain announcement create, edit & delete |
| 21 | **Domains** - Data Product announcement create, edit & delete | Data Product announcement create, edit & delete |
| 22 | **Domains** - should handle domain after description is deleted | Tests that verify UI handles entities with deleted descriptions gracefully. The issue occurs when: 1. An entity is created with a description 2. The description is later deleted/cleared via API patch 3. The API returns the entity without a description field (due to @JsonInclude(NON_NULL)) 4. UI should handle this gracefully instead of crashing |
| 23 | **Domains** - should handle data product after description is deleted | Handle data product after description is deleted |

### Domain Rename Comprehensive Tests

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Domain Rename Comprehensive Tests** - Rename domain with subdomains attached verifies subdomain accessibility | Rename domain with subdomains attached verifies subdomain accessibility |
| 2 | **Domain Rename Comprehensive Tests** - Rename domain with deeply nested subdomains (3+ levels) verifies FQN propagation | Rename domain with deeply nested subdomains (3+ levels) verifies FQN propagation |
| 3 | **Domain Rename Comprehensive Tests** - Rename domain with data products attached at domain and subdomain levels | Rename domain with data products attached at domain and subdomain levels |
| 4 | **Domain Rename Comprehensive Tests** - Rename domain with tags and glossary terms preserves associations | Rename domain with tags and glossary terms preserves associations |
| 5 | **Domain Rename Comprehensive Tests** - Rename domain with assets (tables, topics, dashboards) preserves associations | Rename domain with assets (tables, topics, dashboards) preserves associations |
| 6 | **Domain Rename Comprehensive Tests** - Rename domain with owners and experts preserves assignments | Rename domain with owners and experts preserves assignments |
| 7 | **Domain Rename Comprehensive Tests** - Subdomain rename does not affect parent domain and updates nested children | Subdomain rename does not affect parent domain and updates nested children |
| 8 | **Domain Rename Comprehensive Tests** - Comprehensive domain rename with ALL relationships preserved | Comprehensive domain rename with ALL relationships preserved |
| 9 | **Domain Rename Comprehensive Tests** - Multiple consecutive domain renames preserve all associations | Multiple consecutive domain renames preserve all associations |
| 10 | **Domain Rename Comprehensive Tests** - Rename to existing domain name shows appropriate error | Rename to existing domain name shows appropriate error |

### Domains Rbac

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Domains Rbac** - Domain Rbac | Domain Rbac |
| | ↳ *Assign assets to domains* | |
| | ↳ *User with access to multiple domains* | |

### Data Consumer Domain Ownership

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Consumer Domain Ownership** - Data consumer can manage domain as owner | Data consumer can manage domain as owner |
| | ↳ *Check domain management permissions for data consumer owner* | |

### Domain Access with hasDomain() Rule

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Domain Access with hasDomain() Rule** - User with hasDomain() rule can access domain and subdomain assets | User with hasDomain() rule can access domain and subdomain assets |
| | ↳ *Verify user can access domain assets* | |
| | ↳ *Verify user can access subdomain assets* | |

### Domain Access with noDomain() Rule

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Domain Access with noDomain() Rule** - User with noDomain() rule cannot access tables without domain | User with noDomain() rule cannot access tables without domain |
| | ↳ *Verify user can access domain-assigned table* | |
| | ↳ *Verify user gets permission error for table without domain* | |

### Domain Tree View Functionality

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Domain Tree View Functionality** - should render the domain tree view with correct details | Render the domain tree view with correct details |
| 2 | **Domain Tree View Functionality** - Verify Domain entity API calls do not include invalid domains field in glossary term assets | Domain entity API calls do not include invalid domains field in glossary term assets |
| 3 | **Domain Tree View Functionality** - Verify Domain entity API calls do not include invalid domains field in tag assets | Domain entity API calls do not include invalid domains field in tag assets |

</details>

<details open>
<summary>📄 <b>DomainUIInteractions.spec.ts</b> (20 tests, 20 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Pages/DomainUIInteractions.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/DomainUIInteractions.spec.ts)

### Domain Owner Management

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Domain Owner Management** - Add owner to domain via UI | Add owner to domain via UI |
| 2 | **Domain Owner Management** - Remove owner from domain via UI | Remove owner from domain via UI |

### Domain Expert Management

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Domain Expert Management** - Add expert to domain via UI | Add expert to domain via UI |

### Domain Style Editing

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Domain Style Editing** - Edit domain style - change icon URL | Edit domain style - change icon URL |

### Data Product UI Operations

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Product UI Operations** - Rename data product via UI | Rename data product via UI |
| 2 | **Data Product UI Operations** - Delete data product via UI | Delete data product via UI |
| 3 | **Data Product UI Operations** - Add owner to data product via UI | Add owner to data product via UI |

### Subdomain Management

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Subdomain Management** - Delete subdomain via UI | Delete subdomain via UI |
| 2 | **Subdomain Management** - Rename subdomain via UI | Rename subdomain via UI |

### Domain Form Validation

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Domain Form Validation** - Domain name validation - special characters | Domain name validation - special characters |
| 2 | **Domain Form Validation** - Domain name validation - max length | Domain name validation - max length |
| 3 | **Domain Form Validation** - Domain description required validation | Domain description required validation |

### Domain Assets Tab Operations

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Domain Assets Tab Operations** - Search assets within domain | Search assets within domain |

### Domain Global Dropdown

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Domain Global Dropdown** - Select domain from global dropdown filters explore | Select domain from global dropdown filters explore |
| 2 | **Domain Global Dropdown** - Clear domain selection returns to All Domains | Clear domain selection returns to All Domains |

### Domain Breadcrumb Navigation

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Domain Breadcrumb Navigation** - Navigate from subdomain to parent domain via breadcrumb | Navigate from subdomain to parent domain via breadcrumb |
| 2 | **Domain Breadcrumb Navigation** - Navigate from data product to parent domain | Navigate from data product to parent domain |

### Delete Domain with Dependencies

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Delete Domain with Dependencies** - Delete domain with subdomains shows warning | Delete domain with subdomains shows warning |
| 2 | **Delete Domain with Dependencies** - Delete domain with assets removes domain from assets | Delete domain with assets removes domain from assets |

### Copy FQN Functionality

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Copy FQN Functionality** - Copy domain FQN to clipboard | Copy domain FQN to clipboard |

</details>

<details open>
<summary>📄 <b>DomainAdvanced.spec.ts</b> (19 tests, 19 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Pages/DomainAdvanced.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/DomainAdvanced.spec.ts)

### Domain Expert Permissions

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Domain Expert Permissions** - Domain expert can edit domain description and tags | Domain expert can edit domain description and tags |
| 2 | **Domain Expert Permissions** - Domain expert can manage data products | Domain expert can manage data products |

### Move Assets Between Domains

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Move Assets Between Domains** - Move table from one domain to another via API | Move table from one domain to another via API |
| 2 | **Move Assets Between Domains** - Move asset from domain to subdomain via API | Move asset from domain to subdomain via API |

### Subdomain Permissions

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Subdomain Permissions** - User with domain access can view subdomains | User with domain access can view subdomains |
| 2 | **Subdomain Permissions** - User can access subdomain details page | User can access subdomain details page |

### Domain Version History

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Domain Version History** - Domain version history shows changes | Domain version history shows changes |
| 2 | **Domain Version History** - Data product version history shows changes | Data product version history shows changes |

### Domain Description Editing

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Domain Description Editing** - Admin can edit domain description | Admin can edit domain description |
| 2 | **Domain Description Editing** - Admin can edit data product description | Admin can edit data product description |

### Bulk Domain Asset Operations

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Bulk Domain Asset Operations** - Add multiple assets to domain at once | Add multiple assets to domain at once |
| 2 | **Bulk Domain Asset Operations** - Remove multiple assets from domain at once | Remove multiple assets from domain at once |

### Cross-Domain Access Denial

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Cross-Domain Access Denial** - User can access assets in their domain | User can access assets in their domain |
| 2 | **Cross-Domain Access Denial** - User with domain policy is restricted by policy rules | User with domain policy is restricted by policy rules |

### Domain Type Behavior

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Domain Type Behavior** - Create domain with Source System type | Create domain with Source System type |
| 2 | **Domain Type Behavior** - Create domain with Consumer-aligned type | Create domain with Consumer-aligned type |

### Data Product Asset Management

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Product Asset Management** - Move assets between data products | Move assets between data products |

### Domain Search and Filter

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Domain Search and Filter** - Search for domain by name | Search for domain by name |
| 2 | **Domain Search and Filter** - Filter assets by domain from explore page | Filter assets by domain from explore page |

</details>

<details open>
<summary>📄 <b>DataProductAndSubdomains.spec.ts</b> (17 tests, 17 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Pages/DataProductAndSubdomains.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/DataProductAndSubdomains.spec.ts)

### Data Product Comprehensive Tests

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Product Comprehensive Tests** - Create data product via UI with description | Create data product via UI with description |
| 2 | **Data Product Comprehensive Tests** - Edit data product description via UI | Edit data product description via UI |
| 3 | **Data Product Comprehensive Tests** - Add expert to data product via UI | Add expert to data product via UI |
| 4 | **Data Product Comprehensive Tests** - Add tags to data product via UI | Add tags to data product via UI |
| 5 | **Data Product Comprehensive Tests** - Add assets to data product and verify count | Add assets to data product and verify count |
| 6 | **Data Product Comprehensive Tests** - Data product linked to subdomain | Data product linked to subdomain |

### Multiple Subdomains Tests

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Multiple Subdomains Tests** - Create multiple sibling subdomains under a domain | Create multiple sibling subdomains under a domain |
| 2 | **Multiple Subdomains Tests** - Create nested subdomain (subdomain of subdomain) | Create nested subdomain (subdomain of subdomain) |
| 3 | **Multiple Subdomains Tests** - Navigate between sibling subdomains | Navigate between sibling subdomains |
| 4 | **Multiple Subdomains Tests** - Assign assets to different subdomains | Assign assets to different subdomains |
| 5 | **Multiple Subdomains Tests** - Data products under different subdomains | Data products under different subdomains |
| 6 | **Multiple Subdomains Tests** - Subdomain assets count reflects in parent domain | Subdomain assets count reflects in parent domain |
| 7 | **Multiple Subdomains Tests** - Delete subdomain with data products shows proper cleanup | Delete subdomain with data products shows proper cleanup |

### Data Product Search and Filter

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Product Search and Filter** - Search data products by name | Search data products by name |
| 2 | **Data Product Search and Filter** - Filter data products by domain in global selector | Filter data products by domain in global selector |

### Data Product Name in Entity Name Cell

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Product Name in Entity Name Cell** - Entity name cell shows both display name and name | Entity name cell shows both display name and name |
| 2 | **Data Product Name in Entity Name Cell** - Search data products by name | Search data products by name |

</details>

<details open>
<summary>📄 <b>DomainFilterQueryFilter.spec.ts</b> (12 tests, 12 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/DomainFilterQueryFilter.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/DomainFilterQueryFilter.spec.ts)

### Domain Filter - User Behavior Tests

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Domain Filter - User Behavior Tests** - Assets from selected domain should be visible in explore page | Assets from selected domain should be visible in explore page |
| 2 | **Domain Filter - User Behavior Tests** - Subdomain assets should be visible when parent domain is selected | Subdomain assets should be visible when parent domain is selected |
| 3 | **Domain Filter - User Behavior Tests** - Domain filter should persist across page navigation | Domain filter should persist across page navigation |
| 4 | **Domain Filter - User Behavior Tests** - Domain filter should work with different asset types | Domain filter should work with different asset types |
| 5 | **Domain Filter - User Behavior Tests** - Domain page assets tab should show only domain assets | Domain page assets tab should show only domain assets |
| 6 | **Domain Filter - User Behavior Tests** - 3-level domain hierarchy: SubSubDomain assets visible when SubDomain selected | 3-level domain hierarchy: SubSubDomain assets visible when SubDomain selected |
| 7 | **Domain Filter - User Behavior Tests** - Search suggestions should be filtered by selected domain | Search suggestions should be filtered by selected domain |
| 8 | **Domain Filter - User Behavior Tests** - Domain filter should use exact match and prefix with dot to prevent false positives | Domain filter should use exact match and prefix with dot to prevent false positives |
| 9 | **Domain Filter - User Behavior Tests** - Quick filters should persist when domain filter is applied and cleared | Quick filters should persist when domain filter is applied and cleared |
| 10 | **Domain Filter - User Behavior Tests** - Domain assets tab should NOT show assets from other domains | Domain assets tab should NOT show assets from other domains |
| 11 | **Domain Filter - User Behavior Tests** - Domain Data Products tab should NOT show data products from other domains | Domain Data Products tab should NOT show data products from other domains |
| 12 | **Domain Filter - User Behavior Tests** - Multi-nested domain hierarchy: filters should scope correctly at every level | Multi-nested domain hierarchy: filters should scope correctly at every level |

</details>

<details open>
<summary>📄 <b>DomainDataProductsRightPanel.spec.ts</b> (9 tests, 9 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Pages/DomainDataProductsRightPanel.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/DomainDataProductsRightPanel.spec.ts)

### Domain Data Products Tab - Right Panel

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Domain Data Products Tab - Right Panel** - Should open right panel when clicking data product card in domain | Open right panel when clicking data product card in domain |
| 2 | **Domain Data Products Tab - Right Panel** - Should display data product name link in panel in domain context | Display data product name link in panel in domain context |
| 3 | **Domain Data Products Tab - Right Panel** - Should display overview tab for data product | Display overview tab for data product |
| 4 | **Domain Data Products Tab - Right Panel** - Should edit description for data product from domain context | Edit description for data product from domain context |
| 5 | **Domain Data Products Tab - Right Panel** - Should display overview tab content for data product in domain context | Display overview tab content for data product in domain context |
| 6 | **Domain Data Products Tab - Right Panel** - Should edit tags for data product from domain context | Edit tags for data product from domain context |
| 7 | **Domain Data Products Tab - Right Panel** - Should assign tier for data product from domain context | Assign tier for data product from domain context |
| 8 | **Domain Data Products Tab - Right Panel** - Should edit owners for data product from domain context | Edit owners for data product from domain context |
| 9 | **Domain Data Products Tab - Right Panel** - Should not display glossary terms section in domain data products context | Not display glossary terms section in domain data products context |

</details>

<details open>
<summary>📄 <b>DomainTierCertificationVoting.spec.ts</b> (8 tests, 8 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/DomainTierCertificationVoting.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/DomainTierCertificationVoting.spec.ts)

### Domain & DataProduct - Tier, Certification, and Voting

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Domain & DataProduct - Tier, Certification, and Voting** - Domain - Tier assign, update, and remove | Domain - Tier assign, update, and remove |
| 2 | **Domain & DataProduct - Tier, Certification, and Voting** - Domain - Certification assign, update, and remove | Domain - Certification assign, update, and remove |
| 3 | **Domain & DataProduct - Tier, Certification, and Voting** - Domain - UpVote and DownVote | Domain - UpVote and DownVote |
| 4 | **Domain & DataProduct - Tier, Certification, and Voting** - DataProduct - Tier assign, update, and remove | DataProduct - Tier assign, update, and remove |
| 5 | **Domain & DataProduct - Tier, Certification, and Voting** - DataProduct - Certification assign, update, and remove | DataProduct - Certification assign, update, and remove |
| 6 | **Domain & DataProduct - Tier, Certification, and Voting** - DataProduct - UpVote and DownVote | DataProduct - UpVote and DownVote |
| 7 | **Domain & DataProduct - Tier, Certification, and Voting** - Edit buttons not visible on Domain | Edit buttons not visible on Domain |
| 8 | **Domain & DataProduct - Tier, Certification, and Voting** - Edit buttons not visible on DataProduct | Edit buttons not visible on DataProduct |

</details>

<details open>
<summary>📄 <b>DataProducts.spec.ts</b> (8 tests, 43 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Pages/DataProducts.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/DataProducts.spec.ts)

### Data Products

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Products** - Data Product List Page - Initial Load | Data Product List Page - Initial Load |
| | ↳ *Navigate to Data Products page* | |
| | ↳ *Verify page header and controls* | |
| | ↳ *Verify view toggle buttons* | |
| 2 | **Data Products** - Create Data Product and Manage Assets | Create Data Product and Manage Assets |
| | ↳ *Setup test assets* | |
| | ↳ *Navigate to Data Products page* | |
| | ↳ *Create new data product* | |
| | ↳ *Open data product details* | |
| | ↳ *Add assets to data product* | |
| | ↳ *Verify asset count* | |
| | ↳ *Remove assets from data product* | |
| | ↳ *Delete data product* | |
| | ↳ *Cleanup test assets* | |
| 3 | **Data Products** - Search Data Products | Search Data Products |
| | ↳ *Create test data products* | |
| | ↳ *Navigate to Data Products page* | |
| | ↳ *Search for specific data product* | |
| | ↳ *Clear search* | |
| | ↳ *Cleanup test data products* | |
| 4 | **Data Products** - View Toggle - Table and Card Views | View Toggle - Table and Card Views |
| | ↳ *Create test data product* | |
| | ↳ *Navigate to Data Products page* | |
| | ↳ *Verify table view is default* | |
| | ↳ *Switch to card view* | |
| | ↳ *Switch back to table view* | |
| | ↳ *Cleanup test data product* | |
| 5 | **Data Products** - Pagination | Pagination |
| | ↳ *Create 30 test data products* | |
| | ↳ *Navigate to Data Products page* | |
| | ↳ *Verify pagination controls are visible* | |
| | ↳ *Navigate to page 2* | |
| | ↳ *Navigate back to page 1* | |
| | ↳ *Cleanup test data products* | |
| 6 | **Data Products** - Empty State - No Data Products | Empty State - No Data Products |
| | ↳ *Mock API to return empty data products list* | |
| | ↳ *Navigate to Data Products page* | |
| | ↳ *Verify empty state is shown* | |
| | ↳ *Click add button from empty state* | |
| 7 | **Data Products** - Data Product - Follow/Unfollow | Data Product - Follow/Unfollow |
| | ↳ *Create test data product* | |
| | ↳ *Navigate to data product details* | |
| | ↳ *Follow data product* | |
| | ↳ *Verify follow button is changed to unfollow* | |
| | ↳ *Cleanup test data product* | |
| 8 | **Data Products** - Create data product with tags using MUITagSuggestion | Create data product with tags using MUITagSuggestion |
| | ↳ *Navigate to add data product* | |
| | ↳ *Fill data product form* | |
| | ↳ *Search and select tag via MUITagSuggestion* | |
| | ↳ *Save and verify tag is applied* | |
| | ↳ *Cleanup* | |

</details>

<details open>
<summary>📄 <b>DomainDataProductsWidgets.spec.ts</b> (6 tests, 6 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/LandingPageWidgets/DomainDataProductsWidgets.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/LandingPageWidgets/DomainDataProductsWidgets.spec.ts)

### Domain and Data Product Asset Counts

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Domain and Data Product Asset Counts** - Assign Widgets | Assign Widgets |
| 2 | **Domain and Data Product Asset Counts** - Verify Widgets are having 0 count initially | Widgets are having 0 count initially |
| 3 | **Domain and Data Product Asset Counts** - Domain asset count should update when assets are added | Domain asset count should update when assets are added |
| 4 | **Domain and Data Product Asset Counts** - Data Product asset count should update when assets are added | Data Product asset count should update when assets are added |
| 5 | **Domain and Data Product Asset Counts** - Domain asset count should update when assets are removed | Domain asset count should update when assets are removed |
| 6 | **Domain and Data Product Asset Counts** - Data Product asset count should update when assets are removed | Data Product asset count should update when assets are removed |

</details>

<details open>
<summary>📄 <b>DataProductRename.spec.ts</b> (4 tests, 4 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/DataProductRename.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/DataProductRename.spec.ts)

### Data Product Rename

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Product Rename** - should rename data product and verify assets are still associated | Rename data product and verify assets are still associated |
| 2 | **Data Product Rename** - should update only display name without changing the actual name | Update only display name without changing the actual name |
| 3 | **Data Product Rename** - should handle multiple consecutive renames and preserve assets | Handle multiple consecutive renames and preserve assets |
| 4 | **Data Product Rename** - should show error when renaming to a name that already exists | Show error when renaming to a name that already exists |

</details>

<details open>
<summary>📄 <b>DataProductRenameConsolidation.spec.ts</b> (4 tests, 4 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/DataProductRenameConsolidation.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/DataProductRenameConsolidation.spec.ts)

### Data Product Rename + Field Update Consolidation

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Product Rename + Field Update Consolidation** - Rename then update description - assets should be preserved | Rename then update description - assets should be preserved |
| 2 | **Data Product Rename + Field Update Consolidation** - Rename then add tags - assets should be preserved | Rename then add tags - assets should be preserved |
| 3 | **Data Product Rename + Field Update Consolidation** - Rename then change owner - assets should be preserved | Rename then change owner - assets should be preserved |
| 4 | **Data Product Rename + Field Update Consolidation** - Multiple rename + update cycles - assets should be preserved | Multiple rename + update cycles - assets should be preserved |

</details>

<details open>
<summary>📄 <b>DataProductPermissions.spec.ts</b> (3 tests, 3 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/Permissions/DataProductPermissions.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Permissions/DataProductPermissions.spec.ts)

### Data Product Permissions

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Product Permissions** - Data Product allow operations | Data Product allow operations |
| 2 | **Data Product Permissions** - Data Product deny operations | Data Product deny operations |
| 3 | **Data Product Permissions** - Data Product expert can edit data product details | Data Product expert can edit data product details |

</details>

<details open>
<summary>📄 <b>SampleDataDomainDataProduct.spec.ts</b> (3 tests, 3 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/SampleDataDomainDataProduct.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/SampleDataDomainDataProduct.spec.ts)

### Sample Data Domain and Data Product Validation

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Sample Data Domain and Data Product Validation** - Verify TestDomain exists from sample data ingestion | TestDomain exists from sample data ingestion |
| 2 | **Sample Data Domain and Data Product Validation** - Verify TestDataProduct exists under TestDomain | TestDataProduct exists under TestDomain |
| 3 | **Sample Data Domain and Data Product Validation** - Verify TestDataProduct shows correct details and domain association | TestDataProduct shows correct details and domain association |

</details>

<details open>
<summary>📄 <b>DataProductDomainMigration.spec.ts</b> (2 tests, 2 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/DataProductDomainMigration.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/DataProductDomainMigration.spec.ts)

### Data Product Domain Migration

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Product Domain Migration** - Changing data product domain via API migrates assets to new domain | Changing data product domain via API migrates assets to new domain |
| 2 | **Data Product Domain Migration** - Data product with no assets can change domain without confirmation | Data product with no assets can change domain without confirmation |

</details>

<details open>
<summary>📄 <b>DataProductPersonaCustomization.spec.ts</b> (2 tests, 7 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/DataProductPersonaCustomization.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/DataProductPersonaCustomization.spec.ts)

### Data Product Persona customization

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Product Persona customization** - Data Product - customization should work | Data Product - customization should work |
| | ↳ *pre-requisite* | |
| | ↳ *should show all the tabs & widget as default when no customization is done* | |
| | ↳ *apply customization* | |
| | ↳ *Validate customization* | |
| 2 | **Data Product Persona customization** - Data Product - customize tab label should only render if it's customized by user | Data Product - customize tab label should only render if it's customized by user |
| | ↳ *pre-requisite* | |
| | ↳ *apply tab label customization for Data Product* | |
| | ↳ *validate applied label change for Data Product Documentation tab* | |

</details>

<details open>
<summary>📄 <b>DomainWidgetFilter.spec.ts</b> (2 tests, 2 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/LandingPageWidgets/DomainWidgetFilter.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/LandingPageWidgets/DomainWidgetFilter.spec.ts)

### Domain Widget Filter

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Domain Widget Filter** - Setup Domains widget on landing page | Setup Domains widget on landing page |
| 2 | **Domain Widget Filter** - Domains widget should show only selected domain when domain filter is active | Domains widget should show only selected domain when domain filter is active |

</details>

<details open>
<summary>📄 <b>DomainPermissions.spec.ts</b> (2 tests, 2 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/Permissions/DomainPermissions.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Permissions/DomainPermissions.spec.ts)

### Standalone Tests

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | Domain allow operations | Domain allow operations |
| 2 | Domain deny operations | Domain deny operations |

</details>

<details open>
<summary>📄 <b>SubDomainPagination.spec.ts</b> (1 tests, 4 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Pages/SubDomainPagination.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/SubDomainPagination.spec.ts)

### SubDomain Pagination

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **SubDomain Pagination** - Verify subdomain count and pagination functionality | Subdomain count and pagination functionality |
| | ↳ *Verify subdomain count in tab label* | |
| | ↳ *Navigate to subdomains tab and verify initial data load* | |
| | ↳ *Test pagination navigation* | |
| | ↳ *Create new subdomain and verify count updates* | |

</details>


---

<div id="glossary"></div>

## Glossary

<details open>
<summary>📄 <b>Glossary.spec.ts</b> (45 tests, 70 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Pages/Glossary.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Glossary.spec.ts)

### Glossary tests

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Glossary tests** - Glossary & terms creation for reviewer as user | Glossary & terms creation for reviewer as user |
| | ↳ *Create Glossary* | |
| | ↳ *Create Glossary Terms* | |
| | ↳ *Approve Glossary Term from Glossary Listing for reviewer user* | |
| 2 | **Glossary tests** - Glossary & terms creation for reviewer as team | Glossary & terms creation for reviewer as team |
| | ↳ *Create Glossary* | |
| | ↳ *Create Glossary Terms* | |
| | ↳ *Approve Glossary Term from Glossary Listing for reviewer team* | |
| 3 | **Glossary tests** - Update Glossary and Glossary Term | Update Glossary and Glossary Term |
| | ↳ *Update Glossary* | |
| | ↳ *Update Glossary Term* | |
| 4 | **Glossary tests** - Add, Update and Verify Data Glossary Term | Add, Update and Verify Data Glossary Term |
| 5 | **Glossary tests** - Approve and reject glossary term from Glossary Listing | Approve and reject glossary term from Glossary Listing |
| | ↳ *Create Glossary and Terms* | |
| | ↳ *Approve and Reject Glossary Term* | |
| 6 | **Glossary tests** - Add and Remove Assets | Add and Remove Assets |
| | ↳ *Add asset to glossary term using entity* | |
| 7 | **Glossary tests** - Rename Glossary Term and verify assets | Rename Glossary Term and verify assets |
| | ↳ *Assign Glossary Term to table column* | |
| | ↳ *Rename Glossary Term* | |
| | ↳ *Verify the entity page by clicking on asset* | |
| | ↳ *Rename the same entity again* | |
| 8 | **Glossary tests** - Verify asset selection modal filters are shown upfront | Asset selection modal filters are shown upfront |
| | ↳ *Verify filters are visible upfront and can be applied* | |
| 9 | **Glossary tests** - Drag and Drop Glossary Term | Drag and Drop Glossary Term |
| | ↳ *Drag and Drop Glossary Term* | |
| | ↳ *Drag and Drop Glossary Term back at parent level* | |
| 10 | **Glossary tests** - Drag and Drop Glossary Term Approved Terms having reviewer | Drag and Drop Glossary Term Approved Terms having reviewer |
| | ↳ *Update Glossary Term Reviewer* | |
| | ↳ *Drag and Drop Glossary Term* | |
| 11 | **Glossary tests** - Change glossary term hierarchy using menu options | Change glossary term hierarchy using menu options |
| 12 | **Glossary tests** - Change glossary term hierarchy using menu options across glossary | Change glossary term hierarchy using menu options across glossary |
| | ↳ *Delete glossary to verify broken relation* | |
| 13 | **Glossary tests** - Assign Glossary Term to entity and check assets | Assign Glossary Term to entity and check assets |
| 14 | **Glossary tests** - Request description task for Glossary | Request description task for Glossary |
| 15 | **Glossary tests** - Request description task for Glossary Term | Request description task for Glossary Term |
| 16 | **Glossary tests** - Request tags for Glossary | Request tags for Glossary |
| 17 | **Glossary tests** - Delete Glossary and Glossary Term using Delete Modal | Delete Glossary and Glossary Term using Delete Modal |
| 18 | **Glossary tests** - Async Delete - single delete success | Async Delete - single delete success |
| 19 | **Glossary tests** - Async Delete - WebSocket failure triggers recovery | Async Delete - WebSocket failure triggers recovery |
| 20 | **Glossary tests** - Async Delete - multiple deletes all succeed | Async Delete - multiple deletes all succeed |
| 21 | **Glossary tests** - Async Delete - multiple deletes with mixed results | Async Delete - multiple deletes with mixed results |
| 22 | **Glossary tests** - Verify Expand All For Nested Glossary Terms | Expand All For Nested Glossary Terms |
| 23 | **Glossary tests** - Column selection and visibility for Glossary Terms table | Column selection and visibility for Glossary Terms table |
| | ↳ *Open column dropdown and select columns and check if they are visible* | |
| | ↳ *Open column dropdown and deselect columns and check if they are hidden* | |
| | ↳ *View All columns selection* | |
| | ↳ *Hide All columns selection* | |
| 24 | **Glossary tests** - Glossary Terms Table Status filtering | Glossary Terms Table Status filtering |
| | ↳ *Deselect status and check if the table has filtered rows* | |
| | ↳ *Re-select the status and check if it appears again* | |
| 25 | **Glossary tests** - Column dropdown drag-and-drop functionality for Glossary Terms table | Column dropdown drag-and-drop functionality for Glossary Terms table |
| 26 | **Glossary tests** - Glossary Term Update in Glossary Page should persist tree | Glossary Term Update in Glossary Page should persist tree |
| 27 | **Glossary tests** - Add Glossary Term inside another Term | Add Glossary Term inside another Term |
| 28 | **Glossary tests** - Check for duplicate Glossary Term | For duplicate Glossary Term |
| | ↳ *Create Glossary Term One* | |
| | ↳ *Create Glossary Term Two* | |
| 29 | **Glossary tests** - Check for duplicate Glossary Term with Glossary having dot in name | For duplicate Glossary Term with Glossary having dot in name |
| | ↳ *Create Glossary Term One* | |
| | ↳ *Create Glossary Term Two* | |
| 30 | **Glossary tests** - Verify Glossary Deny Permission | Glossary Deny Permission |
| 31 | **Glossary tests** - Verify Glossary Term Deny Permission | Glossary Term Deny Permission |
| 32 | **Glossary tests** - Term should stay approved when changes made by reviewer | Term should stay approved when changes made by reviewer |
| | ↳ *Navigate to glossary and verify workflow widget* | |
| | ↳ *Perform Changes by reviewer* | |
| 33 | **Glossary tests** - Glossary creation with domain selection | Glossary creation with domain selection |
| | ↳ *Create domain* | |
| | ↳ *Navigate to Glossary page* | |
| | ↳ *Open Add Glossary form* | |
| | ↳ *Save glossary and verify creation with domain* | |
| 34 | **Glossary tests** - Create glossary, change language to Dutch, and delete glossary | Create glossary, change language to Dutch, and delete glossary |
| | ↳ *Create Glossary via API* | |
| | ↳ *Navigate to Glossary page* | |
| | ↳ *Change application language to German* | |
| | ↳ *Open delete modal and verify delete confirmation* | |
| | ↳ *Change language back to English* | |
| 35 | **Glossary tests** - should handle glossary after description is deleted | Tests that verify UI handles entities with deleted descriptions gracefully. The issue occurs when: 1. An entity is created with a description 2. The description is later deleted/cleared via API patch 3. The API returns the entity without a description field (due to @JsonInclude(NON_NULL)) 4. UI should handle this gracefully instead of crashing |
| 36 | **Glossary tests** - should handle glossary term after description is deleted | Handle glossary term after description is deleted |
| 37 | **Glossary tests** - Create glossary with all optional fields (tags, owners, reviewers, domain) | Create glossary with all optional fields (tags, owners, reviewers, domain) |
| 38 | **Glossary tests** - Create glossary term via row action (+) button | Create glossary term via row action (+) button |
| 39 | **Glossary tests** - Create term with synonyms during creation | Create term with synonyms during creation |
| 40 | **Glossary tests** - Create term with references during creation | Create term with references during creation |
| 41 | **Glossary tests** - Create term with related terms, tags and owners during creation | Create term with related terms, tags and owners during creation |
| 42 | **Glossary tests** - Update glossary term display name via edit modal | Update glossary term display name via edit modal |
| 43 | **Glossary tests** - Update glossary display name via rename modal | Update glossary display name via rename modal |
| 44 | **Glossary tests** - Cancel glossary delete operation | Cancel glossary delete operation |
| 45 | **Glossary tests** - Cancel glossary term delete operation | Cancel glossary term delete operation |

</details>

<details open>
<summary>📄 <b>GlossaryAdvancedOperations.spec.ts</b> (27 tests, 27 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryAdvancedOperations.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryAdvancedOperations.spec.ts)

### Glossary Advanced Operations

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Glossary Advanced Operations** - should create glossary with mutually exclusive toggle OFF | Create glossary with mutually exclusive toggle OFF |
| 2 | **Glossary Advanced Operations** - should create glossary with multiple owners (users + teams) | Create glossary with multiple owners (users + teams) |
| 3 | **Glossary Advanced Operations** - should replace owner on glossary | Replace owner on glossary |
| 4 | **Glossary Advanced Operations** - should replace reviewer on glossary | Replace reviewer on glossary |
| 5 | **Glossary Advanced Operations** - should remove domain from glossary | Remove domain from glossary |
| 6 | **Glossary Advanced Operations** - should change domain on glossary | Change domain on glossary |
| 7 | **Glossary Advanced Operations** - should create term with custom style color | Create term with custom style color |
| 8 | **Glossary Advanced Operations** - should create term with custom style icon URL | Create term with custom style icon URL |
| 9 | **Glossary Advanced Operations** - should update term style to set color | Update term style to set color |
| 10 | **Glossary Advanced Operations** - should update term style to set icon URL | Update term style to set icon URL |
| 11 | **Glossary Advanced Operations** - should clear all synonyms from term | Clear all synonyms from term |
| 12 | **Glossary Advanced Operations** - should edit reference name | Edit reference name |
| 13 | **Glossary Advanced Operations** - should edit reference URL | Edit reference URL |
| 14 | **Glossary Advanced Operations** - should remove individual reference from term | Remove individual reference from term |
| 15 | **Glossary Advanced Operations** - should remove related term | Remove related term |
| 16 | **Glossary Advanced Operations** - should remove owner from term | Remove owner from term |
| 17 | **Glossary Advanced Operations** - should remove reviewer from term | Remove reviewer from term |
| 18 | **Glossary Advanced Operations** - should create term with related terms | Create term with related terms |
| 19 | **Glossary Advanced Operations** - should remove tags from term | Remove tags from term |
| 20 | **Glossary Advanced Operations** - should cancel glossary creation without saving | Cancel glossary creation without saving |
| 21 | **Glossary Advanced Operations** - should cancel term creation without saving | Cancel term creation without saving |
| 22 | **Glossary Advanced Operations** - should update term display name via manage menu | Update term display name via manage menu |
| 23 | **Glossary Advanced Operations** - should show bidirectional related term link | Show bidirectional related term link |
| 24 | **Glossary Advanced Operations** - should handle term with very long name | Handle term with very long name |
| 25 | **Glossary Advanced Operations** - should handle term with very long description | Handle term with very long description |
| 26 | **Glossary Advanced Operations** - should show error when glossary name exceeds limit | Show error when glossary name exceeds limit |
| 27 | **Glossary Advanced Operations** - should show error when term name exceeds limit | Show error when term name exceeds limit |

</details>

<details open>
<summary>📄 <b>GlossaryP3Tests.spec.ts</b> (23 tests, 23 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryP3Tests.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryP3Tests.spec.ts)

### Glossary P3 Tests

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Glossary P3 Tests** - should create glossary with unicode characters in name | Create glossary with unicode characters in name |
| 2 | **Glossary P3 Tests** - should remove color style from term via API | Remove color style from term via API |
| 3 | **Glossary P3 Tests** - should remove icon style from term via API | Remove icon style from term via API |
| 4 | **Glossary P3 Tests** - should handle special characters in search | Handle special characters in search |
| 5 | **Glossary P3 Tests** - should display vote count correctly | Display vote count correctly |
| 6 | **Glossary P3 Tests** - should navigate to activity feed for potential reply | Navigate to activity feed for potential reply |
| 7 | **Glossary P3 Tests** - should access activity feed for comment editing | Access activity feed for comment editing |
| 8 | **Glossary P3 Tests** - should access activity feed for comment deletion | Access activity feed for comment deletion |
| 9 | **Glossary P3 Tests** - should handle back/forward browser navigation | Handle back/forward browser navigation |
| 10 | **Glossary P3 Tests** - should show loading state during navigation | Show loading state during navigation |
| 11 | **Glossary P3 Tests** - should toggle right panel if available | Toggle right panel if available |
| 12 | **Glossary P3 Tests** - should handle special characters in term fields | Handle special characters in term fields |
| 13 | **Glossary P3 Tests** - should handle unicode and emoji in description | Handle unicode and emoji in description |
| 14 | **Glossary P3 Tests** - should handle concurrent edits gracefully | Handle concurrent edits gracefully |
| 15 | **Glossary P3 Tests** - should handle slow network gracefully | Handle slow network gracefully |
| 16 | **Glossary P3 Tests** - should maintain session during normal operations | Maintain session during normal operations |
| 17 | **Glossary P3 Tests** - should handle deep nesting | Handle deep nesting |
| 18 | **Glossary P3 Tests** - should handle rapid UI interactions | Handle rapid UI interactions |
| 19 | **Glossary P3 Tests** - should handle multiple rapid API calls | Handle multiple rapid API calls |
| 20 | **Glossary P3 Tests** - should show error state when navigating to non-existent glossary | Show error state when navigating to non-existent glossary |
| 21 | **Glossary P3 Tests** - should show error state when navigating to non-existent term | Show error state when navigating to non-existent term |
| 22 | **Glossary P3 Tests** - should validate reference URL requires http/https prefix when creating term | Validate reference URL requires http/https prefix when creating term |
| 23 | **Glossary P3 Tests** - should validate reference URL requires http/https prefix when editing term | Validate reference URL requires http/https prefix when editing term |

</details>

<details open>
<summary>📄 <b>GlossaryStatusFilterLargeDataset.spec.ts</b> (19 tests, 19 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryStatusFilterLargeDataset.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryStatusFilterLargeDataset.spec.ts)

### Glossary Status Filter - Large Dataset

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Glossary Status Filter - Large Dataset** - should display only Draft terms when filtered | Display only Draft terms when filtered |
| 2 | **Glossary Status Filter - Large Dataset** - should display only Approved terms when filtered | Display only Approved terms when filtered |
| 3 | **Glossary Status Filter - Large Dataset** - should display only In Review terms when filtered | Display only In Review terms when filtered |
| 4 | **Glossary Status Filter - Large Dataset** - should display only Deprecated terms when filtered | Display only Deprecated terms when filtered |
| 5 | **Glossary Status Filter - Large Dataset** - should display only Rejected terms when filtered | Display only Rejected terms when filtered |
| 6 | **Glossary Status Filter - Large Dataset** - should display terms matching multiple selected statuses | Display terms matching multiple selected statuses |
| 7 | **Glossary Status Filter - Large Dataset** - should display all terms when All is selected | Display all terms when All is selected |
| 8 | **Glossary Status Filter - Large Dataset** - should maintain filter state across pagination | Maintain filter state across pagination |
| 9 | **Glossary Status Filter - Large Dataset** - should return matching terms for search query | Return matching terms for search query |
| 10 | **Glossary Status Filter - Large Dataset** - should show no results for non-matching query | Show no results for non-matching query |
| 11 | **Glossary Status Filter - Large Dataset** - should restore all terms when search is cleared | Restore all terms when search is cleared |
| 12 | **Glossary Status Filter - Large Dataset** - should paginate through search results | Paginate through search results |
| 13 | **Glossary Status Filter - Large Dataset** - should filter search results by selected status | Filter search results by selected status |
| 14 | **Glossary Status Filter - Large Dataset** - should paginate combined search and status results | Paginate combined search and status results |
| 15 | **Glossary Status Filter - Large Dataset** - should maintain status filter when search is cleared | Maintain status filter when search is cleared |
| 16 | **Glossary Status Filter - Large Dataset** - should maintain search when status filter is changed | Maintain search when status filter is changed |
| 17 | **Glossary Status Filter - Large Dataset** - should revert changes when Cancel is clicked | Revert changes when Cancel is clicked |
| 18 | **Glossary Status Filter - Large Dataset** - should reset pagination when filter changes | Reset pagination when filter changes |
| 19 | **Glossary Status Filter - Large Dataset** - should apply status filter within acceptable time | Apply status filter within acceptable time |

</details>

<details open>
<summary>📄 <b>GlossaryStatusFilterNestedTerms.spec.ts</b> (19 tests, 19 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryStatusFilterNestedTerms.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryStatusFilterNestedTerms.spec.ts)

### Glossary Status Filter - Nested Terms

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Glossary Status Filter - Nested Terms** - filter by parent status shows parent and allows expansion to see children | Filter by parent status shows parent and allows expansion to see children |
| 2 | **Glossary Status Filter - Nested Terms** - filter by child status shows child as flat result even if parent does not match | Filter by child status shows child as flat result even if parent does not match |
| 3 | **Glossary Status Filter - Nested Terms** - filter shows parent when status matches and all children on expand | Filter shows parent when status matches and all children on expand |
| 4 | **Glossary Status Filter - Nested Terms** - multiple status filter shows terms matching any selected status | Multiple status filter shows terms matching any selected status |
| 5 | **Glossary Status Filter - Nested Terms** - filter by grandparent status shows only approved terms | Filter by grandparent status shows only approved terms |
| 6 | **Glossary Status Filter - Nested Terms** - expanding grandparent shows parent with any status | Expanding grandparent shows parent with any status |
| 7 | **Glossary Status Filter - Nested Terms** - filter by middle level status shows nested term as flat result | Filter by middle level status shows nested term as flat result |
| 8 | **Glossary Status Filter - Nested Terms** - filter by leaf level status shows nested term as flat result | Filter by leaf level status shows nested term as flat result |
| 9 | **Glossary Status Filter - Nested Terms** - search for child term name + apply non-matching status filter shows no results | Search for child term name + apply non-matching status filter shows no results |
| 10 | **Glossary Status Filter - Nested Terms** - search for child term name + matching status shows child | Search for child term name + matching status shows child |
| 11 | **Glossary Status Filter - Nested Terms** - search for parent term name with child status filter shows no results | Search for parent term name with child status filter shows no results |
| 12 | **Glossary Status Filter - Nested Terms** - clearing search maintains status filter | Clearing search maintains status filter |
| 13 | **Glossary Status Filter - Nested Terms** - clearing status filter maintains search results | Clearing status filter maintains search results |
| 14 | **Glossary Status Filter - Nested Terms** - apply filter, expand parent, verify children shown | Apply filter, expand parent, verify children shown |
| 15 | **Glossary Status Filter - Nested Terms** - change filter while expanded updates visible root terms | Change filter while expanded updates visible root terms |
| 16 | **Glossary Status Filter - Nested Terms** - expand all button loads all terms | Expand all button loads all terms |
| 17 | **Glossary Status Filter - Nested Terms** - deeply nested term (5 levels) - filter shows matching terms as flat results | Deeply nested term (5 levels) - filter shows matching terms as flat results |
| 18 | **Glossary Status Filter - Nested Terms** - all children have same status different from parent | All children have same status different from parent |
| 19 | **Glossary Status Filter - Nested Terms** - only leaf nodes match filter - parent chain does not | Only leaf nodes match filter - parent chain does not |

</details>

<details open>
<summary>📄 <b>GlossaryCRUDOperations.spec.ts</b> (13 tests, 13 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryCRUDOperations.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryCRUDOperations.spec.ts)

### Glossary CRUD Operations

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Glossary CRUD Operations** - should create glossary with tags, owners, and description | Create glossary with tags, owners, and description |
| 2 | **Glossary CRUD Operations** - should create glossary with mutually exclusive enabled | Create glossary with mutually exclusive enabled |
| 3 | **Glossary CRUD Operations** - should create term with synonyms | Create term with synonyms |
| 4 | **Glossary CRUD Operations** - should create term with references | Create term with references |
| 5 | **Glossary CRUD Operations** - should remove owner from glossary | Remove owner from glossary |
| 6 | **Glossary CRUD Operations** - should remove reviewer from glossary | Remove reviewer from glossary |
| 7 | **Glossary CRUD Operations** - should delete parent term and cascade delete children | Delete parent term and cascade delete children |
| 8 | **Glossary CRUD Operations** - should display parent term with children for drag operation | Display parent term with children for drag operation |
| 9 | **Glossary CRUD Operations** - should navigate between tabs on term page | Navigate between tabs on term page |
| 10 | **Glossary CRUD Operations** - should create child term via row action button | Create child term via row action button |
| 11 | **Glossary CRUD Operations** - should create term with tags | Create term with tags |
| 12 | **Glossary CRUD Operations** - should remove synonym from term | Remove synonym from term |
| 13 | **Glossary CRUD Operations** - should remove tag from glossary | Remove tag from glossary |

</details>

<details open>
<summary>📄 <b>GlossaryAssets.spec.ts</b> (10 tests, 10 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryAssets.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryAssets.spec.ts)

### Glossary Asset Operations

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Glossary Asset Operations** - should add topic asset to glossary term | Add topic asset to glossary term |
| 2 | **Glossary Asset Operations** - should add pipeline asset to glossary term | Add pipeline asset to glossary term |
| 3 | **Glossary Asset Operations** - should open summary panel when clicking asset card | Open summary panel when clicking asset card |
| 4 | **Glossary Asset Operations** - should search within assets tab | Search within assets tab |
| 5 | **Glossary Asset Operations** - should remove asset from glossary term | Remove asset from glossary term |
| 6 | **Glossary Asset Operations** - should remove glossary term tag from entity page | Remove glossary term tag from entity page |
| 7 | **Glossary Asset Operations** - should bulk select and remove multiple assets | Bulk select and remove multiple assets |
| 8 | **Glossary Asset Operations** - should filter assets by entity type | Filter assets by entity type |
| 9 | **Glossary Asset Operations** - should add asset via Add Assets dropdown button | Add asset via Add Assets dropdown button |
| 10 | **Glossary Asset Operations** - should paginate through assets | Paginate through assets |

</details>

<details open>
<summary>📄 <b>GlossaryWorkflow.spec.ts</b> (10 tests, 10 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryWorkflow.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryWorkflow.spec.ts)

### Term Status Transitions

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Term Status Transitions** - should start term as Approved when glossary has no reviewers | Start term as Approved when glossary has no reviewers |
| 2 | **Term Status Transitions** - should start term as Draft when glossary has reviewers | Start term as Draft when glossary has reviewers |
| 3 | **Term Status Transitions** - should inherit reviewers from glossary when term is created | Inherit reviewers from glossary when term is created |

### Workflow History

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Workflow History** - should show workflow history popover on status badge hover | Show workflow history popover on status badge hover |
| 2 | **Workflow History** - should view workflow history on term details page | View workflow history on term details page |

### Standalone Tests

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | non-reviewer should not see approve/reject buttons | Non-reviewer should not see approve/reject buttons |
| 2 | should display correct status badge color and icon | Display correct status badge color and icon |
| 3 | owner should not see approve/reject buttons if not a reviewer | Owner should not see approve/reject buttons if not a reviewer |
| 4 | should change status when non-reviewer edits approved term | Change status when non-reviewer edits approved term |
| 5 | should delete parent term and cascade delete children | Delete parent term and cascade delete children |

</details>

<details open>
<summary>📄 <b>GlossaryTermRightPanel.spec.ts</b> (10 tests, 10 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Pages/GlossaryTermRightPanel.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/GlossaryTermRightPanel.spec.ts)

### Glossary Term Assets Tab - Right Panel

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Glossary Term Assets Tab - Right Panel** - Should open right panel when clicking asset in glossary term assets tab | Open right panel when clicking asset in glossary term assets tab |
| 2 | **Glossary Term Assets Tab - Right Panel** - Should display correct tabs for table entity in glossary term assets context | Display correct tabs for table entity in glossary term assets context |
| 3 | **Glossary Term Assets Tab - Right Panel** - Should edit description from glossary term assets context | Edit description from glossary term assets context |
| 4 | **Glossary Term Assets Tab - Right Panel** - Should display entity name link in panel header in glossary term assets context | Display entity name link in panel header in glossary term assets context |
| 5 | **Glossary Term Assets Tab - Right Panel** - Should display overview tab content in glossary term assets context | Display overview tab content in glossary term assets context |
| 6 | **Glossary Term Assets Tab - Right Panel** - Should edit tags from glossary term assets context | Edit tags from glossary term assets context |
| 7 | **Glossary Term Assets Tab - Right Panel** - Should assign tier from glossary term assets context | Assign tier from glossary term assets context |
| 8 | **Glossary Term Assets Tab - Right Panel** - Should edit owners from glossary term assets context | Edit owners from glossary term assets context |
| 9 | **Glossary Term Assets Tab - Right Panel** - Should edit domain from glossary term assets context | Edit domain from glossary term assets context |
| 10 | **Glossary Term Assets Tab - Right Panel** - Should edit glossary terms from glossary term assets context | Edit glossary terms from glossary term assets context |

</details>

<details open>
<summary>📄 <b>GlossaryNavigation.spec.ts</b> (9 tests, 9 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryNavigation.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryNavigation.spec.ts)

### Glossary Navigation

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Glossary Navigation** - should navigate between tabs on glossary page | Navigate between tabs on glossary page |
| 2 | **Glossary Navigation** - should navigate between tabs on glossary term page | Navigate between tabs on glossary term page |
| 3 | **Glossary Navigation** - should navigate via breadcrumbs | Navigate via breadcrumbs |
| 4 | **Glossary Navigation** - should navigate to nested term via deep link | Navigate to nested term via deep link |
| 5 | **Glossary Navigation** - should show empty state when glossary has no terms | Show empty state when glossary has no terms |
| 6 | **Glossary Navigation** - should view activity feed on glossary | View activity feed on glossary |
| 7 | **Glossary Navigation** - should view activity feed on glossary term | View activity feed on glossary term |
| 8 | **Glossary Navigation** - should post comment on glossary activity feed | Post comment on glossary activity feed |
| 9 | **Glossary Navigation** - should post comment on glossary term activity feed | Post comment on glossary term activity feed |

</details>

<details open>
<summary>📄 <b>LargeGlossaryPerformance.spec.ts</b> (9 tests, 9 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/Glossary/LargeGlossaryPerformance.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Glossary/LargeGlossaryPerformance.spec.ts)

### Large Glossary Performance Tests

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Large Glossary Performance Tests** - should handle large number of glossary terms with pagination | Handle large number of glossary terms with pagination |
| 2 | **Large Glossary Performance Tests** - should search and filter glossary terms | Search and filter glossary terms |
| 3 | **Large Glossary Performance Tests** - should expand and collapse all terms | Expand and collapse all terms |
| 4 | **Large Glossary Performance Tests** - should expand individual terms | Expand individual terms |
| 5 | **Large Glossary Performance Tests** - should maintain scroll position when loading more terms | Maintain scroll position when loading more terms |
| 6 | **Large Glossary Performance Tests** - should handle status filtering | Handle status filtering |
| 7 | **Large Glossary Performance Tests** - should show term count in glossary listing | Show term count in glossary listing |
| 8 | **Large Glossary Performance Tests** - should handle drag and drop for term reordering | Handle drag and drop for term reordering |

### Large Glossary Child Term Performace

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Large Glossary Child Term Performace** - should handle large number of glossary child term with pagination | Handle large number of glossary child term with pagination |

</details>

<details open>
<summary>📄 <b>GlossaryPermissions.spec.ts</b> (9 tests, 9 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/Permissions/GlossaryPermissions.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Permissions/GlossaryPermissions.spec.ts)

### Glossary Permissions

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Glossary Permissions** - Glossary allow operations | Glossary allow operations |
| 2 | **Glossary Permissions** - Glossary deny operations | Glossary deny operations |
| 3 | **Glossary Permissions** - EditDescription only permission | EditDescription only permission |
| 4 | **Glossary Permissions** - EditOwners only permission | EditOwners only permission |
| 5 | **Glossary Permissions** - EditTags only permission | EditTags only permission |
| 6 | **Glossary Permissions** - Delete only permission | Delete only permission |
| 7 | **Glossary Permissions** - Create only permission | Create only permission |
| 8 | **Glossary Permissions** - ViewBasic permission shows read-only access | ViewBasic permission shows read-only access |
| 9 | **Glossary Permissions** - Team-based permissions work correctly | Team-based permissions work correctly |

</details>

<details open>
<summary>📄 <b>GlossaryImportExport.spec.ts</b> (7 tests, 18 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Pages/GlossaryImportExport.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/GlossaryImportExport.spec.ts)

### Glossary Bulk Import Export

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Glossary Bulk Import Export** - Glossary Bulk Import Export | Glossary Bulk Import Export |
| | ↳ *create custom properties for extension edit* | |
| | ↳ *should export data glossary term details* | |
| | ↳ *should import and edit with one additional glossaryTerm* | |
| | ↳ *should verify bulk import details in version history* | |
| | ↳ *delete custom properties* | |
| 2 | **Glossary Bulk Import Export** - Check for Circular Reference in Glossary Import | For Circular Reference in Glossary Import |
| | ↳ *Create glossary for circular reference test* | |
| | ↳ *Import initial glossary terms* | |
| | ↳ *Import CSV with circular reference and verify error* | |
| 3 | **Glossary Bulk Import Export** - Import validation - missing required fields | Import validation - missing required fields |
| | ↳ *Create glossary for validation test* | |
| | ↳ *Import CSV with missing required name field* | |
| 4 | **Glossary Bulk Import Export** - Import validation - invalid parent reference | Import validation - invalid parent reference |
| | ↳ *Create glossary for parent ref test* | |
| | ↳ *Import CSV with invalid parent reference* | |
| 5 | **Glossary Bulk Import Export** - Import partial success - some terms pass, some fail | Import partial success - some terms pass, some fail |
| | ↳ *Create glossary for partial success test* | |
| | ↳ *Import CSV with mixed valid and invalid terms* | |
| 6 | **Glossary Bulk Import Export** - Export large glossary with many terms | Export large glossary with many terms |
| | ↳ *Create glossary with many terms* | |
| | ↳ *Export glossary and verify all terms* | |
| 7 | **Glossary Bulk Import Export** - Export maintains hierarchy structure in CSV | Export maintains hierarchy structure in CSV |
| | ↳ *Create glossary with hierarchical terms* | |
| | ↳ *Export and verify hierarchy in CSV* | |

</details>

<details open>
<summary>📄 <b>GlossaryVersionPage.spec.ts</b> (7 tests, 9 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/VersionPages/GlossaryVersionPage.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/VersionPages/GlossaryVersionPage.spec.ts)

### Standalone Tests

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | Glossary | Glossary |
| | ↳ *Version changes* | |
| | ↳ *Should display the owner & reviewer changes* | |
| 2 | GlossaryTerm | GlossaryTerm |
| | ↳ *Version changes* | |
| | ↳ *Should display the owner & reviewer changes* | |
| 3 | Navigate between versions | Navigate between versions |
| 4 | Return to current version from history | Return to current version from history |
| 5 | Version diff shows synonym changes | Version diff shows synonym changes |
| 6 | Version diff shows reference changes | Version diff shows reference changes |
| 7 | Version diff shows related term changes | Version diff shows related term changes |

</details>

<details open>
<summary>📄 <b>GlossaryHierarchy.spec.ts</b> (6 tests, 6 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryHierarchy.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryHierarchy.spec.ts)

### Glossary Hierarchy

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Glossary Hierarchy** - should move nested term to root level of same glossary | Move nested term to root level of same glossary |
| 2 | **Glossary Hierarchy** - should move term to root of different glossary | Move term to root of different glossary |
| 3 | **Glossary Hierarchy** - should move term with children to different glossary | Move term with children to different glossary |
| 4 | **Glossary Hierarchy** - should cancel move operation | Cancel move operation |
| 5 | **Glossary Hierarchy** - should navigate 5+ levels deep in hierarchy | Navigate 5+ levels deep in hierarchy |
| 6 | **Glossary Hierarchy** - should cancel drag and drop operation | Cancel drag and drop operation |

</details>

<details open>
<summary>📄 <b>GlossaryPagination.spec.ts</b> (6 tests, 6 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryPagination.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryPagination.spec.ts)

### Glossary tests

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Glossary tests** - should check for glossary term search | For glossary term search |
| 2 | **Glossary tests** - should check for nested glossary term search | For nested glossary term search |
| 3 | **Glossary tests** - should perform case-insensitive search | Perform case-insensitive search |
| 4 | **Glossary tests** - should show empty state when search returns no results | Show empty state when search returns no results |
| 5 | **Glossary tests** - should filter by InReview status | Filter by InReview status |
| 6 | **Glossary tests** - should filter by multiple statuses | Filter by multiple statuses |

</details>

<details open>
<summary>📄 <b>GlossaryRemoveOperations.spec.ts</b> (6 tests, 6 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryRemoveOperations.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryRemoveOperations.spec.ts)

### Glossary Remove Operations

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Glossary Remove Operations** - should add and remove owner from glossary | Add and remove owner from glossary |
| 2 | **Glossary Remove Operations** - should add and remove reviewer from glossary | Add and remove reviewer from glossary |
| 3 | **Glossary Remove Operations** - should add and remove owner from glossary term | Add and remove owner from glossary term |
| 4 | **Glossary Remove Operations** - should add and remove reviewer from glossary term | Add and remove reviewer from glossary term |
| 5 | **Glossary Remove Operations** - should add and remove tags from glossary | Add and remove tags from glossary |
| 6 | **Glossary Remove Operations** - should add and remove tags from glossary term | Add and remove tags from glossary term |

</details>

<details open>
<summary>📄 <b>GlossaryTermDetails.spec.ts</b> (6 tests, 6 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryTermDetails.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryTermDetails.spec.ts)

### Glossary Term Details Operations

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Glossary Term Details Operations** - should add and remove synonyms from glossary term | Add and remove synonyms from glossary term |
| 2 | **Glossary Term Details Operations** - should add and remove references from glossary term | Add and remove references from glossary term |
| 3 | **Glossary Term Details Operations** - should add and remove related terms from glossary term | Add and remove related terms from glossary term |
| 4 | **Glossary Term Details Operations** - should verify bidirectional related term link | Bidirectional related term link |
| 5 | **Glossary Term Details Operations** - should edit term via pencil icon in table row | Edit term via pencil icon in table row |
| 6 | **Glossary Term Details Operations** - should create term with all optional fields populated | Create term with all optional fields populated |

</details>

<details open>
<summary>📄 <b>GlossaryMiscOperations.spec.ts</b> (5 tests, 5 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryMiscOperations.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryMiscOperations.spec.ts)

### Glossary Miscellaneous Operations

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Glossary Miscellaneous Operations** - should delete glossary and remove tags from assets | Delete glossary and remove tags from assets |
| 2 | **Glossary Miscellaneous Operations** - should update child FQN when parent is renamed | Update child FQN when parent is renamed |
| 3 | **Glossary Miscellaneous Operations** - should delete term and remove tag from assets | Delete term and remove tag from assets |
| 4 | **Glossary Miscellaneous Operations** - should delete parent term and remove both parent and child tags from assets | Delete parent term and remove both parent and child tags from assets |
| 5 | **Glossary Miscellaneous Operations** - should not allow dragging term to itself | Not allow dragging term to itself |

</details>

<details open>
<summary>📄 <b>GlossaryP2Tests.spec.ts</b> (5 tests, 5 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryP2Tests.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryP2Tests.spec.ts)

### Glossary P2 Tests

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Glossary P2 Tests** - should create glossary with special characters in name | Create glossary with special characters in name |
| 2 | **Glossary P2 Tests** - should view workflow history on term | View workflow history on term |
| 3 | **Glossary P2 Tests** - should show history popover on status badge hover | Show history popover on status badge hover |
| 4 | **Glossary P2 Tests** - should create term with Draft status when no reviewers | Create term with Draft status when no reviewers |
| 5 | **Glossary P2 Tests** - should show column settings with custom properties option | Show column settings with custom properties option |

</details>

<details open>
<summary>📄 <b>GlossaryFormValidation.spec.ts</b> (5 tests, 5 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Pages/GlossaryFormValidation.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/GlossaryFormValidation.spec.ts)

### Glossary Form Validation

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Glossary Form Validation** - should show error when glossary name is empty | Show error when glossary name is empty |
| 2 | **Glossary Form Validation** - should show error when glossary description is empty | Show error when glossary description is empty |
| 3 | **Glossary Form Validation** - should show error when creating glossary with duplicate name | Show error when creating glossary with duplicate name |
| 4 | **Glossary Form Validation** - should show error when term name is empty | Show error when term name is empty |
| 5 | **Glossary Form Validation** - should show error when term description is empty | Show error when term description is empty |

</details>

<details open>
<summary>📄 <b>GlossaryBulkOperations.spec.ts</b> (4 tests, 4 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryBulkOperations.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryBulkOperations.spec.ts)

### Glossary Bulk Operations

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Glossary Bulk Operations** - should navigate to bulk edit page when clicking bulk edit button | Navigate to bulk edit page when clicking bulk edit button |
| 2 | **Glossary Bulk Operations** - should be able to select multiple terms for bulk operations | Be able to select multiple terms for bulk operations |
| 3 | **Glossary Bulk Operations** - should prevent dragging parent to its own child | Prevent dragging parent to its own child |
| 4 | **Glossary Bulk Operations** - should be able to toggle mutually exclusive setting | Be able to toggle mutually exclusive setting |

</details>

<details open>
<summary>📄 <b>GlossaryExpandAllWithStatusFilter.spec.ts</b> (4 tests, 9 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryExpandAllWithStatusFilter.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryExpandAllWithStatusFilter.spec.ts)

### Glossary Expand All with Status Filter

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Glossary Expand All with Status Filter** - Expand All with Draft filter shows all terms including children of non-matching parents | Expand All with Draft filter shows all terms including children of non-matching parents |
| | ↳ *Apply Draft status filter* | |
| | ↳ *Expand all and verify all terms are visible* | |
| 2 | **Glossary Expand All with Status Filter** - Expand All with Approved filter shows all terms | Expand All with Approved filter shows all terms |
| | ↳ *Apply Approved status filter* | |
| | ↳ *Expand all and verify all terms are visible* | |
| 3 | **Glossary Expand All with Status Filter** - Expand All with default filter shows all terms | Expand All with default filter shows all terms |
| | ↳ *Expand all and verify all terms are visible* | |
| 4 | **Glossary Expand All with Status Filter** - Expand All shows all children regardless of status filter | Expand All shows all children regardless of status filter |
| | ↳ *Apply Draft filter and expand all* | |
| | ↳ *Verify MixedStatusChild (Draft) appears under ApprovedParent* | |
| | ↳ *Collapse all and verify filter re-applies* | |
| | ↳ *Switch to Approved filter and expand again* | |

</details>

<details open>
<summary>📄 <b>GlossaryVoting.spec.ts</b> (3 tests, 3 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryVoting.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/Glossary/GlossaryVoting.spec.ts)

### Glossary Voting

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Glossary Voting** - should upvote, downvote, and remove vote on glossary | Upvote, downvote, and remove vote on glossary |
| 2 | **Glossary Voting** - should upvote, downvote, and remove vote on glossary term | Upvote, downvote, and remove vote on glossary term |
| 3 | **Glossary Voting** - should persist vote after page reload | Persist vote after page reload |

</details>


---

<div id="tags"></div>

## Tags

<details open>
<summary>📄 <b>Tag.spec.ts</b> (21 tests, 28 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Pages/Tag.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Tag.spec.ts)

### Tag Page with Admin Roles

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Tag Page with Admin Roles** - Verify Tag UI | Tag UI |
| 2 | **Tag Page with Admin Roles** - Certification Page should not have Asset button | Certification Page should not have Asset button |
| 3 | **Tag Page with Admin Roles** - Rename Tag name | Rename Tag name |
| 4 | **Tag Page with Admin Roles** - Restyle Tag | Restyle Tag |
| 5 | **Tag Page with Admin Roles** - Edit Tag Description | Edit Tag Description |
| 6 | **Tag Page with Admin Roles** - Delete a Tag | Delete a Tag |
| 7 | **Tag Page with Admin Roles** - Add and Remove Assets | Add and Remove Assets |
| | ↳ *Add Asset * | |
| | ↳ *Verify EntityType Filter* | |
| | ↳ *Delete Asset* | |
| 8 | **Tag Page with Admin Roles** - Create tag with domain | Create tag with domain |
| 9 | **Tag Page with Admin Roles** - Verify Owner Add Delete | Owner Add Delete |
| 10 | **Tag Page with Admin Roles** - Verify tag enable/disable toggle | Tag enable/disable toggle |
| 11 | **Tag Page with Admin Roles** - Tag toggle should be disabled when classification is disabled | Tag toggle should be disabled when classification is disabled |

### Tag Page with Data Consumer Roles

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Tag Page with Data Consumer Roles** - Verify Tag UI for Data Consumer | Tag UI for Data Consumer |
| 2 | **Tag Page with Data Consumer Roles** - Certification Page should not have Asset button for Data Consumer | Certification Page should not have Asset button for Data Consumer |
| 3 | **Tag Page with Data Consumer Roles** - Edit Tag Description for Data Consumer | Edit Tag Description for Data Consumer |
| 4 | **Tag Page with Data Consumer Roles** - Add and Remove Assets for Data Consumer | Add and Remove Assets for Data Consumer |
| | ↳ *Add Asset * | |
| | ↳ *Verify EntityType Filter* | |
| | ↳ *Delete Asset* | |
| 5 | **Tag Page with Data Consumer Roles** - Tag toggle should be disabled for user without EditAll permission | Tag toggle should be disabled for user without EditAll permission |

### Tag Page with Data Steward Roles

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Tag Page with Data Steward Roles** - Verify Tag UI for Data Steward | Tag UI for Data Steward |
| 2 | **Tag Page with Data Steward Roles** - Certification Page should not have Asset button for Data Steward | Certification Page should not have Asset button for Data Steward |
| 3 | **Tag Page with Data Steward Roles** - Edit Tag Description for Data Steward | Edit Tag Description for Data Steward |
| 4 | **Tag Page with Data Steward Roles** - Add and Remove Assets for Data Steward | Add and Remove Assets for Data Steward |
| | ↳ *Add Asset * | |
| | ↳ *Verify EntityType Filter* | |
| | ↳ *Delete Asset* | |

### Tag Page with Limited EditTag Permission

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Tag Page with Limited EditTag Permission** - Add and Remove Assets and Check Restricted Entity | Add and Remove Assets and Check Restricted Entity |
| | ↳ *Add Asset * | |
| | ↳ *Delete Asset* | |

</details>

<details open>
<summary>📄 <b>TagPageRightPanel.spec.ts</b> (11 tests, 11 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Pages/TagPageRightPanel.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/TagPageRightPanel.spec.ts)

### Tag Page Assets - Right Panel

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Tag Page Assets - Right Panel** - Should open right panel when clicking asset in tag assets page | Open right panel when clicking asset in tag assets page |
| 2 | **Tag Page Assets - Right Panel** - Should display correct tabs for table entity in tag assets page context | Display correct tabs for table entity in tag assets page context |
| 3 | **Tag Page Assets - Right Panel** - Should edit description from tag assets page context | Edit description from tag assets page context |
| 4 | **Tag Page Assets - Right Panel** - Should display entity name link in panel header in tag assets page context | Display entity name link in panel header in tag assets page context |
| 5 | **Tag Page Assets - Right Panel** - Should display overview tab content in tag assets page context | Display overview tab content in tag assets page context |
| 6 | **Tag Page Assets - Right Panel** - Panel should not be visible before any asset is selected | Panel should not be visible before any asset is selected |
| 7 | **Tag Page Assets - Right Panel** - Should edit tags from tag assets page context | Edit tags from tag assets page context |
| 8 | **Tag Page Assets - Right Panel** - Should assign tier from tag assets page context | Assign tier from tag assets page context |
| 9 | **Tag Page Assets - Right Panel** - Should edit owners from tag assets page context | Edit owners from tag assets page context |
| 10 | **Tag Page Assets - Right Panel** - Should edit domain from tag assets page context | Edit domain from tag assets page context |
| 11 | **Tag Page Assets - Right Panel** - Should edit glossary terms from tag assets page context | Edit glossary terms from tag assets page context |

</details>

<details open>
<summary>📄 <b>Tags.spec.ts</b> (5 tests, 13 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Pages/Tags.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Tags.spec.ts)

### Standalone Tests

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | Classification Page | Classification Page |
| | ↳ *Should render basic elements on page* | |
| | ↳ *Disabled system tags should not render* | |
| | ↳ *Create classification with validation checks* | |
| | ↳ *Create tag with validation checks* | |
| | ↳ *Verify classification term count* | |
| | ↳ *Assign tag to table* | |
| | ↳ *Assign tag using Task & Suggestion flow to DatabaseSchema* | |
| | ↳ *Delete tag* | |
| | ↳ *Remove classification* | |
| 2 | Search tag using classification display name should work | Search tag using classification display name should work |
| 3 | Verify system classification term counts | System classification term counts |
| 4 | Verify Owner Add Delete | Owner Add Delete |
| 5 | Disabled tag should not allow adding assets from Assets tab | Disabled tag should not allow adding assets from Assets tab |

</details>

<details open>
<summary>📄 <b>TagsSuggestion.spec.ts</b> (3 tests, 6 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/TagsSuggestion.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/TagsSuggestion.spec.ts)

### Tags Suggestions Table Entity

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Tags Suggestions Table Entity** - View, Close, Reject and Accept the Suggestions | View, Close, Reject and Accept the Suggestions |
| | ↳ *View and Open the Suggestions* | |
| | ↳ *Accept Single Suggestion* | |
| | ↳ *Reject Single Suggestion* | |
| | ↳ *Accept all Suggestion* | |
| 2 | **Tags Suggestions Table Entity** - Accept the Suggestions for Tier Card | Accept the Suggestions for Tier Card |
| 3 | **Tags Suggestions Table Entity** - Reject All Suggestions | Reject All Suggestions |

</details>

<details open>
<summary>📄 <b>SystemCertificationTags.spec.ts</b> (2 tests, 2 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/SystemCertificationTags.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/SystemCertificationTags.spec.ts)

### System Level Certification Tags

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **System Level Certification Tags** - should NOT show disabled system certification tag in dropdown | NOT show disabled system certification tag in dropdown |
| 2 | **System Level Certification Tags** - should NOT show any system certification tags when classification is disabled | NOT show any system certification tags when classification is disabled |

</details>

<details open>
<summary>📄 <b>MutuallyExclusiveColumnTags.spec.ts</b> (1 tests, 1 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Features/MutuallyExclusiveColumnTags.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Features/MutuallyExclusiveColumnTags.spec.ts)

### Standalone Tests

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | Should show error toast when adding mutually exclusive tags to column | Show error toast when adding mutually exclusive tags to column |

</details>

<details open>
<summary>📄 <b>AutoClassification.spec.ts</b> (1 tests, 1 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/nightly/AutoClassification.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/nightly/AutoClassification.spec.ts)

### Auto Classification

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Auto Classification** - should be able to auto classify data | Be able to auto classify data |

</details>

<details open>
<summary>📄 <b>ClassificationVersionPage.spec.ts</b> (1 tests, 1 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/VersionPages/ClassificationVersionPage.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/VersionPages/ClassificationVersionPage.spec.ts)

### Standalone Tests

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | Classification version page | Classification version page |

</details>


---

<div id="data-contracts"></div>

## Data Contracts

<details open>
<summary>📄 <b>DataContracts.spec.ts</b> (48 tests, 423 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Pages/DataContracts.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/DataContracts.spec.ts)

### Data Contracts

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts** - Create Data Contract and validate for Table | Create Data Contract and validate for Table |
| | ↳ *Redirect to Home Page and visit entity* | |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Fill Contract Details form* | |
| | ↳ *Fill the Terms of Service Detail* | |
| | ↳ *Fill Contract Schema form* | |
| | ↳ *Fill first Contract Semantics form* | |
| | ↳ *Add second semantic and delete it* | |
| | ↳ *Save contract and validate for semantics* | |
| | ↳ *Add table test case and validate for quality* | |
| | ↳ *Validate inside the Observability, bundle test suites, that data contract test suite is present* | |
| | ↳ *Edit quality expectations from the data contract and validate* | |
| | ↳ *Verify YAML view* | |
| | ↳ *Export YAML* | |
| | ↳ *Export ODCS YAML* | |
| | ↳ *Edit and Validate Contract data* | |
| | ↳ *Delete contract* | |
| | ↳ *Import contract from ODCS YAML* | |
| | ↳ *Delete imported contract* | |
| | ↳ *Import contract from OM YAML* | |
| | ↳ *Export OM YAML* | |
| | ↳ *Delete OM imported contract* | |
| 2 | **Data Contracts** - Create Data Contract and validate for Topic | Create Data Contract and validate for Topic |
| | ↳ *Redirect to Home Page and visit entity* | |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Fill Contract Details form* | |
| | ↳ *Fill the Terms of Service Detail* | |
| | ↳ *Fill Contract Schema form* | |
| | ↳ *Fill first Contract Semantics form* | |
| | ↳ *Add second semantic and delete it* | |
| | ↳ *Save contract and validate for semantics* | |
| | ↳ *Add table test case and validate for quality* | |
| | ↳ *Validate inside the Observability, bundle test suites, that data contract test suite is present* | |
| | ↳ *Edit quality expectations from the data contract and validate* | |
| | ↳ *Verify YAML view* | |
| | ↳ *Export YAML* | |
| | ↳ *Export ODCS YAML* | |
| | ↳ *Edit and Validate Contract data* | |
| | ↳ *Delete contract* | |
| | ↳ *Import contract from ODCS YAML* | |
| | ↳ *Delete imported contract* | |
| | ↳ *Import contract from OM YAML* | |
| | ↳ *Export OM YAML* | |
| | ↳ *Delete OM imported contract* | |
| 3 | **Data Contracts** - Create Data Contract and validate for Dashboard | Create Data Contract and validate for Dashboard |
| | ↳ *Redirect to Home Page and visit entity* | |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Fill Contract Details form* | |
| | ↳ *Fill the Terms of Service Detail* | |
| | ↳ *Fill Contract Schema form* | |
| | ↳ *Fill first Contract Semantics form* | |
| | ↳ *Add second semantic and delete it* | |
| | ↳ *Save contract and validate for semantics* | |
| | ↳ *Add table test case and validate for quality* | |
| | ↳ *Validate inside the Observability, bundle test suites, that data contract test suite is present* | |
| | ↳ *Edit quality expectations from the data contract and validate* | |
| | ↳ *Verify YAML view* | |
| | ↳ *Export YAML* | |
| | ↳ *Export ODCS YAML* | |
| | ↳ *Edit and Validate Contract data* | |
| | ↳ *Delete contract* | |
| | ↳ *Import contract from ODCS YAML* | |
| | ↳ *Delete imported contract* | |
| | ↳ *Import contract from OM YAML* | |
| | ↳ *Export OM YAML* | |
| | ↳ *Delete OM imported contract* | |
| 4 | **Data Contracts** - Create Data Contract and validate for DashboardDataModel | Create Data Contract and validate for DashboardDataModel |
| | ↳ *Redirect to Home Page and visit entity* | |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Fill Contract Details form* | |
| | ↳ *Fill the Terms of Service Detail* | |
| | ↳ *Fill Contract Schema form* | |
| | ↳ *Fill first Contract Semantics form* | |
| | ↳ *Add second semantic and delete it* | |
| | ↳ *Save contract and validate for semantics* | |
| | ↳ *Add table test case and validate for quality* | |
| | ↳ *Validate inside the Observability, bundle test suites, that data contract test suite is present* | |
| | ↳ *Edit quality expectations from the data contract and validate* | |
| | ↳ *Verify YAML view* | |
| | ↳ *Export YAML* | |
| | ↳ *Export ODCS YAML* | |
| | ↳ *Edit and Validate Contract data* | |
| | ↳ *Delete contract* | |
| | ↳ *Import contract from ODCS YAML* | |
| | ↳ *Delete imported contract* | |
| | ↳ *Import contract from OM YAML* | |
| | ↳ *Export OM YAML* | |
| | ↳ *Delete OM imported contract* | |
| 5 | **Data Contracts** - Create Data Contract and validate for Pipeline | Create Data Contract and validate for Pipeline |
| | ↳ *Redirect to Home Page and visit entity* | |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Fill Contract Details form* | |
| | ↳ *Fill the Terms of Service Detail* | |
| | ↳ *Fill Contract Schema form* | |
| | ↳ *Fill first Contract Semantics form* | |
| | ↳ *Add second semantic and delete it* | |
| | ↳ *Save contract and validate for semantics* | |
| | ↳ *Add table test case and validate for quality* | |
| | ↳ *Validate inside the Observability, bundle test suites, that data contract test suite is present* | |
| | ↳ *Edit quality expectations from the data contract and validate* | |
| | ↳ *Verify YAML view* | |
| | ↳ *Export YAML* | |
| | ↳ *Export ODCS YAML* | |
| | ↳ *Edit and Validate Contract data* | |
| | ↳ *Delete contract* | |
| | ↳ *Import contract from ODCS YAML* | |
| | ↳ *Delete imported contract* | |
| | ↳ *Import contract from OM YAML* | |
| | ↳ *Export OM YAML* | |
| | ↳ *Delete OM imported contract* | |
| 6 | **Data Contracts** - Create Data Contract and validate for MlModel | Create Data Contract and validate for MlModel |
| | ↳ *Redirect to Home Page and visit entity* | |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Fill Contract Details form* | |
| | ↳ *Fill the Terms of Service Detail* | |
| | ↳ *Fill Contract Schema form* | |
| | ↳ *Fill first Contract Semantics form* | |
| | ↳ *Add second semantic and delete it* | |
| | ↳ *Save contract and validate for semantics* | |
| | ↳ *Add table test case and validate for quality* | |
| | ↳ *Validate inside the Observability, bundle test suites, that data contract test suite is present* | |
| | ↳ *Edit quality expectations from the data contract and validate* | |
| | ↳ *Verify YAML view* | |
| | ↳ *Export YAML* | |
| | ↳ *Export ODCS YAML* | |
| | ↳ *Edit and Validate Contract data* | |
| | ↳ *Delete contract* | |
| | ↳ *Import contract from ODCS YAML* | |
| | ↳ *Delete imported contract* | |
| | ↳ *Import contract from OM YAML* | |
| | ↳ *Export OM YAML* | |
| | ↳ *Delete OM imported contract* | |
| 7 | **Data Contracts** - Create Data Contract and validate for Container | Create Data Contract and validate for Container |
| | ↳ *Redirect to Home Page and visit entity* | |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Fill Contract Details form* | |
| | ↳ *Fill the Terms of Service Detail* | |
| | ↳ *Fill Contract Schema form* | |
| | ↳ *Fill first Contract Semantics form* | |
| | ↳ *Add second semantic and delete it* | |
| | ↳ *Save contract and validate for semantics* | |
| | ↳ *Add table test case and validate for quality* | |
| | ↳ *Validate inside the Observability, bundle test suites, that data contract test suite is present* | |
| | ↳ *Edit quality expectations from the data contract and validate* | |
| | ↳ *Verify YAML view* | |
| | ↳ *Export YAML* | |
| | ↳ *Export ODCS YAML* | |
| | ↳ *Edit and Validate Contract data* | |
| | ↳ *Delete contract* | |
| | ↳ *Import contract from ODCS YAML* | |
| | ↳ *Delete imported contract* | |
| | ↳ *Import contract from OM YAML* | |
| | ↳ *Export OM YAML* | |
| | ↳ *Delete OM imported contract* | |
| 8 | **Data Contracts** - Create Data Contract and validate for SearchIndex | Create Data Contract and validate for SearchIndex |
| | ↳ *Redirect to Home Page and visit entity* | |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Fill Contract Details form* | |
| | ↳ *Fill the Terms of Service Detail* | |
| | ↳ *Fill Contract Schema form* | |
| | ↳ *Fill first Contract Semantics form* | |
| | ↳ *Add second semantic and delete it* | |
| | ↳ *Save contract and validate for semantics* | |
| | ↳ *Add table test case and validate for quality* | |
| | ↳ *Validate inside the Observability, bundle test suites, that data contract test suite is present* | |
| | ↳ *Edit quality expectations from the data contract and validate* | |
| | ↳ *Verify YAML view* | |
| | ↳ *Export YAML* | |
| | ↳ *Export ODCS YAML* | |
| | ↳ *Edit and Validate Contract data* | |
| | ↳ *Delete contract* | |
| | ↳ *Import contract from ODCS YAML* | |
| | ↳ *Delete imported contract* | |
| | ↳ *Import contract from OM YAML* | |
| | ↳ *Export OM YAML* | |
| | ↳ *Delete OM imported contract* | |
| 9 | **Data Contracts** - Create Data Contract and validate for Store Procedure | Create Data Contract and validate for Store Procedure |
| | ↳ *Redirect to Home Page and visit entity* | |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Fill Contract Details form* | |
| | ↳ *Fill the Terms of Service Detail* | |
| | ↳ *Fill Contract Schema form* | |
| | ↳ *Fill first Contract Semantics form* | |
| | ↳ *Add second semantic and delete it* | |
| | ↳ *Save contract and validate for semantics* | |
| | ↳ *Add table test case and validate for quality* | |
| | ↳ *Validate inside the Observability, bundle test suites, that data contract test suite is present* | |
| | ↳ *Edit quality expectations from the data contract and validate* | |
| | ↳ *Verify YAML view* | |
| | ↳ *Export YAML* | |
| | ↳ *Export ODCS YAML* | |
| | ↳ *Edit and Validate Contract data* | |
| | ↳ *Delete contract* | |
| | ↳ *Import contract from ODCS YAML* | |
| | ↳ *Delete imported contract* | |
| | ↳ *Import contract from OM YAML* | |
| | ↳ *Export OM YAML* | |
| | ↳ *Delete OM imported contract* | |
| 10 | **Data Contracts** - Create Data Contract and validate for ApiEndpoint | Create Data Contract and validate for ApiEndpoint |
| | ↳ *Redirect to Home Page and visit entity* | |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Fill Contract Details form* | |
| | ↳ *Fill the Terms of Service Detail* | |
| | ↳ *Fill Contract Schema form* | |
| | ↳ *Fill first Contract Semantics form* | |
| | ↳ *Add second semantic and delete it* | |
| | ↳ *Save contract and validate for semantics* | |
| | ↳ *Add table test case and validate for quality* | |
| | ↳ *Validate inside the Observability, bundle test suites, that data contract test suite is present* | |
| | ↳ *Edit quality expectations from the data contract and validate* | |
| | ↳ *Verify YAML view* | |
| | ↳ *Export YAML* | |
| | ↳ *Export ODCS YAML* | |
| | ↳ *Edit and Validate Contract data* | |
| | ↳ *Delete contract* | |
| | ↳ *Import contract from ODCS YAML* | |
| | ↳ *Delete imported contract* | |
| | ↳ *Import contract from OM YAML* | |
| | ↳ *Export OM YAML* | |
| | ↳ *Delete OM imported contract* | |
| 11 | **Data Contracts** - Create Data Contract and validate for Api Collection | Create Data Contract and validate for Api Collection |
| | ↳ *Redirect to Home Page and visit entity* | |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Fill Contract Details form* | |
| | ↳ *Fill the Terms of Service Detail* | |
| | ↳ *Fill Contract Schema form* | |
| | ↳ *Fill first Contract Semantics form* | |
| | ↳ *Add second semantic and delete it* | |
| | ↳ *Save contract and validate for semantics* | |
| | ↳ *Add table test case and validate for quality* | |
| | ↳ *Validate inside the Observability, bundle test suites, that data contract test suite is present* | |
| | ↳ *Edit quality expectations from the data contract and validate* | |
| | ↳ *Verify YAML view* | |
| | ↳ *Export YAML* | |
| | ↳ *Export ODCS YAML* | |
| | ↳ *Edit and Validate Contract data* | |
| | ↳ *Delete contract* | |
| | ↳ *Import contract from ODCS YAML* | |
| | ↳ *Delete imported contract* | |
| | ↳ *Import contract from OM YAML* | |
| | ↳ *Export OM YAML* | |
| | ↳ *Delete OM imported contract* | |
| 12 | **Data Contracts** - Create Data Contract and validate for Chart | Create Data Contract and validate for Chart |
| | ↳ *Redirect to Home Page and visit entity* | |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Fill Contract Details form* | |
| | ↳ *Fill the Terms of Service Detail* | |
| | ↳ *Fill Contract Schema form* | |
| | ↳ *Fill first Contract Semantics form* | |
| | ↳ *Add second semantic and delete it* | |
| | ↳ *Save contract and validate for semantics* | |
| | ↳ *Add table test case and validate for quality* | |
| | ↳ *Validate inside the Observability, bundle test suites, that data contract test suite is present* | |
| | ↳ *Edit quality expectations from the data contract and validate* | |
| | ↳ *Verify YAML view* | |
| | ↳ *Export YAML* | |
| | ↳ *Export ODCS YAML* | |
| | ↳ *Edit and Validate Contract data* | |
| | ↳ *Delete contract* | |
| | ↳ *Import contract from ODCS YAML* | |
| | ↳ *Delete imported contract* | |
| | ↳ *Import contract from OM YAML* | |
| | ↳ *Export OM YAML* | |
| | ↳ *Delete OM imported contract* | |
| 13 | **Data Contracts** - Create Data Contract and validate for Directory | Create Data Contract and validate for Directory |
| | ↳ *Redirect to Home Page and visit entity* | |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Fill Contract Details form* | |
| | ↳ *Fill the Terms of Service Detail* | |
| | ↳ *Fill Contract Schema form* | |
| | ↳ *Fill first Contract Semantics form* | |
| | ↳ *Add second semantic and delete it* | |
| | ↳ *Save contract and validate for semantics* | |
| | ↳ *Add table test case and validate for quality* | |
| | ↳ *Validate inside the Observability, bundle test suites, that data contract test suite is present* | |
| | ↳ *Edit quality expectations from the data contract and validate* | |
| | ↳ *Verify YAML view* | |
| | ↳ *Export YAML* | |
| | ↳ *Export ODCS YAML* | |
| | ↳ *Edit and Validate Contract data* | |
| | ↳ *Delete contract* | |
| | ↳ *Import contract from ODCS YAML* | |
| | ↳ *Delete imported contract* | |
| | ↳ *Import contract from OM YAML* | |
| | ↳ *Export OM YAML* | |
| | ↳ *Delete OM imported contract* | |
| 14 | **Data Contracts** - Create Data Contract and validate for File | Create Data Contract and validate for File |
| | ↳ *Redirect to Home Page and visit entity* | |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Fill Contract Details form* | |
| | ↳ *Fill the Terms of Service Detail* | |
| | ↳ *Fill Contract Schema form* | |
| | ↳ *Fill first Contract Semantics form* | |
| | ↳ *Add second semantic and delete it* | |
| | ↳ *Save contract and validate for semantics* | |
| | ↳ *Add table test case and validate for quality* | |
| | ↳ *Validate inside the Observability, bundle test suites, that data contract test suite is present* | |
| | ↳ *Edit quality expectations from the data contract and validate* | |
| | ↳ *Verify YAML view* | |
| | ↳ *Export YAML* | |
| | ↳ *Export ODCS YAML* | |
| | ↳ *Edit and Validate Contract data* | |
| | ↳ *Delete contract* | |
| | ↳ *Import contract from ODCS YAML* | |
| | ↳ *Delete imported contract* | |
| | ↳ *Import contract from OM YAML* | |
| | ↳ *Export OM YAML* | |
| | ↳ *Delete OM imported contract* | |
| 15 | **Data Contracts** - Create Data Contract and validate for Spreadsheet | Create Data Contract and validate for Spreadsheet |
| | ↳ *Redirect to Home Page and visit entity* | |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Fill Contract Details form* | |
| | ↳ *Fill the Terms of Service Detail* | |
| | ↳ *Fill Contract Schema form* | |
| | ↳ *Fill first Contract Semantics form* | |
| | ↳ *Add second semantic and delete it* | |
| | ↳ *Save contract and validate for semantics* | |
| | ↳ *Add table test case and validate for quality* | |
| | ↳ *Validate inside the Observability, bundle test suites, that data contract test suite is present* | |
| | ↳ *Edit quality expectations from the data contract and validate* | |
| | ↳ *Verify YAML view* | |
| | ↳ *Export YAML* | |
| | ↳ *Export ODCS YAML* | |
| | ↳ *Edit and Validate Contract data* | |
| | ↳ *Delete contract* | |
| | ↳ *Import contract from ODCS YAML* | |
| | ↳ *Delete imported contract* | |
| | ↳ *Import contract from OM YAML* | |
| | ↳ *Export OM YAML* | |
| | ↳ *Delete OM imported contract* | |
| 16 | **Data Contracts** - Create Data Contract and validate for Worksheet | Create Data Contract and validate for Worksheet |
| | ↳ *Redirect to Home Page and visit entity* | |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Fill Contract Details form* | |
| | ↳ *Fill the Terms of Service Detail* | |
| | ↳ *Fill Contract Schema form* | |
| | ↳ *Fill first Contract Semantics form* | |
| | ↳ *Add second semantic and delete it* | |
| | ↳ *Save contract and validate for semantics* | |
| | ↳ *Add table test case and validate for quality* | |
| | ↳ *Validate inside the Observability, bundle test suites, that data contract test suite is present* | |
| | ↳ *Edit quality expectations from the data contract and validate* | |
| | ↳ *Verify YAML view* | |
| | ↳ *Export YAML* | |
| | ↳ *Export ODCS YAML* | |
| | ↳ *Edit and Validate Contract data* | |
| | ↳ *Delete contract* | |
| | ↳ *Import contract from ODCS YAML* | |
| | ↳ *Delete imported contract* | |
| | ↳ *Import contract from OM YAML* | |
| | ↳ *Export OM YAML* | |
| | ↳ *Delete OM imported contract* | |
| 17 | **Data Contracts** - Create Data Contract and validate for Database | Create Data Contract and validate for Database |
| | ↳ *Redirect to Home Page and visit entity* | |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Fill Contract Details form* | |
| | ↳ *Fill the Terms of Service Detail* | |
| | ↳ *Fill Contract Schema form* | |
| | ↳ *Fill first Contract Semantics form* | |
| | ↳ *Add second semantic and delete it* | |
| | ↳ *Save contract and validate for semantics* | |
| | ↳ *Add table test case and validate for quality* | |
| | ↳ *Validate inside the Observability, bundle test suites, that data contract test suite is present* | |
| | ↳ *Edit quality expectations from the data contract and validate* | |
| | ↳ *Verify YAML view* | |
| | ↳ *Export YAML* | |
| | ↳ *Export ODCS YAML* | |
| | ↳ *Edit and Validate Contract data* | |
| | ↳ *Delete contract* | |
| | ↳ *Import contract from ODCS YAML* | |
| | ↳ *Delete imported contract* | |
| | ↳ *Import contract from OM YAML* | |
| | ↳ *Export OM YAML* | |
| | ↳ *Delete OM imported contract* | |
| 18 | **Data Contracts** - Create Data Contract and validate for Database Schema | Create Data Contract and validate for Database Schema |
| | ↳ *Redirect to Home Page and visit entity* | |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Fill Contract Details form* | |
| | ↳ *Fill the Terms of Service Detail* | |
| | ↳ *Fill Contract Schema form* | |
| | ↳ *Fill first Contract Semantics form* | |
| | ↳ *Add second semantic and delete it* | |
| | ↳ *Save contract and validate for semantics* | |
| | ↳ *Add table test case and validate for quality* | |
| | ↳ *Validate inside the Observability, bundle test suites, that data contract test suite is present* | |
| | ↳ *Edit quality expectations from the data contract and validate* | |
| | ↳ *Verify YAML view* | |
| | ↳ *Export YAML* | |
| | ↳ *Export ODCS YAML* | |
| | ↳ *Edit and Validate Contract data* | |
| | ↳ *Delete contract* | |
| | ↳ *Import contract from ODCS YAML* | |
| | ↳ *Delete imported contract* | |
| | ↳ *Import contract from OM YAML* | |
| | ↳ *Export OM YAML* | |
| | ↳ *Delete OM imported contract* | |
| 19 | **Data Contracts** - Pagination in Schema Tab with Selection Persistent | Pagination in Schema Tab with Selection Persistent |
| | ↳ *Redirect to Home Page and visit entity* | |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Fill Contract Details form* | |
| | ↳ *Fill Contract Schema form* | |
| | ↳ *Save contract and validate for schema* | |
| | ↳ *Update the Schema and Validate* | |
| | ↳ *Re-select some columns on page 1, save and validate* | |
| | ↳ *Delete contract* | |
| 20 | **Data Contracts** - Semantic with Contains Operator should work for Tier, Tag and Glossary | Semantic with Contains Operator should work for Tier, Tag and Glossary |
| 21 | **Data Contracts** - Semantic with Not_Contains Operator should work for Tier, Tag and Glossary | Semantic with Not_Contains Operator should work for Tier, Tag and Glossary |
| 22 | **Data Contracts** - Nested Column should not be selectable | Nested Column should not be selectable |
| 23 | **Data Contracts** - Operation on Old Schema Columns Contract | Operation on Old Schema Columns Contract |
| 24 | **Data Contracts** - should allow adding a semantic with multiple rules | Allow adding a semantic with multiple rules |
| 25 | **Data Contracts** - should allow adding a second semantic and verify its rule | Allow adding a second semantic and verify its rule |
| 26 | **Data Contracts** - should allow editing a semantic and reflect changes | Allow editing a semantic and reflect changes |
| 27 | **Data Contracts** - should allow deleting a semantic and remove it from the list | Allow deleting a semantic and remove it from the list |
| 28 | **Data Contracts** - Add and update Security and SLA tabs | Add and update Security and SLA tabs |
| | ↳ *Add Security and SLA Details* | |
| | ↳ *Validate Security and SLA Details* | |
| | ↳ *Update Security and SLA Details* | |
| | ↳ *Validate the updated values Security and SLA Details* | |
| | ↳ *Validate after removing security policies* | |
| 29 | **Data Contracts** - ODCS Import Modal with Merge Mode should preserve existing contract ID | ODCS Import Modal with Merge Mode should preserve existing contract ID |
| | ↳ *Create initial contract via ODCS import* | |
| | ↳ *Import again via modal with merge mode (default)* | |
| | ↳ *Cleanup: Delete contract* | |
| 30 | **Data Contracts** - ODCS Import Modal with Replace Mode should overwrite all fields | ODCS Import Modal with Replace Mode should overwrite all fields |
| | ↳ *Create initial contract with SLA via ODCS import* | |
| | ↳ *Import again via modal with replace mode* | |
| | ↳ *Cleanup: Delete contract* | |

### Data Contracts With Persona Table

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts With Persona Table** - Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona | Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona |

### Data Contracts With Persona Topic

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts With Persona Topic** - Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona | Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona |

### Data Contracts With Persona Dashboard

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts With Persona Dashboard** - Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona | Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona |

### Data Contracts With Persona DashboardDataModel

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts With Persona DashboardDataModel** - Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona | Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona |

### Data Contracts With Persona Pipeline

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts With Persona Pipeline** - Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona | Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona |

### Data Contracts With Persona MlModel

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts With Persona MlModel** - Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona | Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona |

### Data Contracts With Persona Container

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts With Persona Container** - Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona | Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona |

### Data Contracts With Persona SearchIndex

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts With Persona SearchIndex** - Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona | Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona |

### Data Contracts With Persona Store Procedure

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts With Persona Store Procedure** - Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona | Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona |

### Data Contracts With Persona ApiEndpoint

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts With Persona ApiEndpoint** - Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona | Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona |

### Data Contracts With Persona Api Collection

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts With Persona Api Collection** - Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona | Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona |

### Data Contracts With Persona Chart

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts With Persona Chart** - Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona | Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona |

### Data Contracts With Persona Directory

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts With Persona Directory** - Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona | Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona |

### Data Contracts With Persona File

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts With Persona File** - Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona | Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona |

### Data Contracts With Persona Spreadsheet

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts With Persona Spreadsheet** - Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona | Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona |

### Data Contracts With Persona Worksheet

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts With Persona Worksheet** - Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona | Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona |

### Data Contracts With Persona Database

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts With Persona Database** - Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona | Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona |

### Data Contracts With Persona Database Schema

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts With Persona Database Schema** - Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona | Contract Status badge should be visible on condition if Contract Tab is present/hidden by Persona |

</details>

<details open>
<summary>📄 <b>DataContractsSemanticRules.spec.ts</b> (40 tests, 120 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Pages/DataContractsSemanticRules.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/DataContractsSemanticRules.spec.ts)

### Data Contracts Semantics Rule Owner

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts Semantics Rule Owner** - Validate Owner Rule Is | Validate Owner Rule Is |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Owner with is condition should passed with same team owner* | |
| | ↳ *Owner with is condition should failed with different owner* | |
| 2 | **Data Contracts Semantics Rule Owner** - Validate Owner Rule Is_Not | Validate Owner Rule Is_Not |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Owner with is not condition should passed with different owner* | |
| | ↳ *Owner with is not condition should failed with same owner* | |
| 3 | **Data Contracts Semantics Rule Owner** - Validate Owner Rule Any_In | Validate Owner Rule Any_In |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Should Failed since entity owner doesn't make the list of any_in* | |
| | ↳ *Should Passed since entity owner present in the list of any_in* | |
| 4 | **Data Contracts Semantics Rule Owner** - Validate Owner Rule Not_In | Validate Owner Rule Not_In |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Should Passed since entity owner doesn't make the list of not_in* | |
| | ↳ *Should Failed since entity owner present in the list of not_in* | |
| 5 | **Data Contracts Semantics Rule Owner** - Validate Owner Rule Is_Set | Validate Owner Rule Is_Set |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Should Failed since entity don't have owner* | |
| | ↳ *Should Passed since entity has owner* | |
| 6 | **Data Contracts Semantics Rule Owner** - Validate Owner Rule Is_Not_Set | Validate Owner Rule Is_Not_Set |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Should Passed since entity don't have owner* | |
| | ↳ *Should Failed since entity has owner* | |

### Data Contracts Semantics Rule Description

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts Semantics Rule Description** - Validate Description Rule Contains | Validate Description Rule Contains |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Description with contains condition should passed* | |
| | ↳ *Description with contains and wrong value should failed* | |
| 2 | **Data Contracts Semantics Rule Description** - Validate Description Rule Not Contains | Validate Description Rule Not Contains |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Description with not_contains condition should failed* | |
| | ↳ *Description with not_contains condition should passed* | |
| 3 | **Data Contracts Semantics Rule Description** - Validate Description Rule Is_Set | Validate Description Rule Is_Set |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Description with is_set condition should passed* | |
| | ↳ *Description with is_set condition should failed* | |
| 4 | **Data Contracts Semantics Rule Description** - Validate Description Rule Is_Not_Set | Validate Description Rule Is_Not_Set |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Description with is_not_set condition should failed* | |
| | ↳ *Description with is_not_set condition should passed* | |

### Data Contracts Semantics Rule Domain

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts Semantics Rule Domain** - Validate Domain Rule Is | Validate Domain Rule Is |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Domain with Is condition should passed* | |
| | ↳ *Domain with Is condition should failed* | |
| 2 | **Data Contracts Semantics Rule Domain** - Validate Domain Rule Is Not | Validate Domain Rule Is Not |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Domain with IsNot condition should passed* | |
| | ↳ *Domain with IsNot condition should failed* | |
| 3 | **Data Contracts Semantics Rule Domain** - Validate Domain Rule Any_In | Validate Domain Rule Any_In |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Domain with AnyIn condition should passed* | |
| | ↳ *Domain with AnyIn condition should failed* | |
| 4 | **Data Contracts Semantics Rule Domain** - Validate Domain Rule Not_In | Validate Domain Rule Not_In |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Domain with NotIn condition should passed* | |
| | ↳ *Domain with NotIn condition should failed* | |
| 5 | **Data Contracts Semantics Rule Domain** - Validate Domain Rule Is_Set | Validate Domain Rule Is_Set |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Domain with IsSet condition should passed* | |
| | ↳ *Domain with IsSet condition should failed* | |
| 6 | **Data Contracts Semantics Rule Domain** - Validate Domain Rule Is_Not_Set | Validate Domain Rule Is_Not_Set |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Domain with IsNotSet condition should passed* | |
| | ↳ *Domain with IsNotSet condition should failed* | |

### Data Contracts Semantics Rule Version

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts Semantics Rule Version** - Validate Entity Version Is | Validate Entity Version Is |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Correct entity version should passed* | |
| | ↳ *Non-Correct entity version should failed* | |
| 2 | **Data Contracts Semantics Rule Version** - Validate Entity Version Is Not | Validate Entity Version Is Not |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Contract with is_not condition for version should passed* | |
| | ↳ *Contract with is_not condition for version should failed* | |
| 3 | **Data Contracts Semantics Rule Version** - Validate Entity Version Less than < | Validate Entity Version Less than < |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Contract with < condition for version should passed* | |
| | ↳ *Contract with < condition for version should failed* | |
| 4 | **Data Contracts Semantics Rule Version** - Validate Entity Version Greater than > | Validate Entity Version Greater than > |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Contract with > condition for version should failed* | |
| | ↳ *Contract with > condition for version should passed* | |
| 5 | **Data Contracts Semantics Rule Version** - Validate Entity Version Less than equal <= | Validate Entity Version Less than equal <= |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Contract with <= condition for version should passed* | |
| | ↳ *Contract with <= condition for version should failed* | |
| 6 | **Data Contracts Semantics Rule Version** - Validate Entity Version Greater than equal >= | Validate Entity Version Greater than equal >= |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *Contract with >= condition for version should passed* | |
| | ↳ *Contract with >= condition for version should failed* | |

### Data Contracts Semantics Rule DataProduct

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts Semantics Rule DataProduct** - Validate DataProduct Rule Is | Validate DataProduct Rule Is |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *DataProduct with Is condition should passed* | |
| | ↳ *DataProduct with Is condition should failed* | |
| 2 | **Data Contracts Semantics Rule DataProduct** - Validate DataProduct Rule Is Not | Validate DataProduct Rule Is Not |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *DataProduct with Is Not condition should passed* | |
| | ↳ *DataProduct with Is Not condition should passed* | |
| 3 | **Data Contracts Semantics Rule DataProduct** - Validate DataProduct Rule Any_In | Validate DataProduct Rule Any_In |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *DataProduct with Any In condition should failed* | |
| | ↳ *DataProduct with Any In condition should passed* | |
| 4 | **Data Contracts Semantics Rule DataProduct** - Validate DataProduct Rule Not_In | Validate DataProduct Rule Not_In |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *DataProduct with Not In condition should passed* | |
| | ↳ *DataProduct with Any In condition should passed* | |
| 5 | **Data Contracts Semantics Rule DataProduct** - Validate DataProduct Rule Is_Set | Validate DataProduct Rule Is_Set |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *DataProduct with IsSet condition should passed* | |
| | ↳ *Domain with IsSet condition should failed* | |
| 6 | **Data Contracts Semantics Rule DataProduct** - Validate DataProduct Rule Is_Not_Set | Validate DataProduct Rule Is_Not_Set |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *DataProduct with IsNotSet condition should passed* | |
| | ↳ *DataProduct with IsNotSet condition should failed* | |

### Data Contracts Semantics Rule DisplayName

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts Semantics Rule DisplayName** - Validate DisplayName Rule Is | Validate DisplayName Rule Is |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *DisplayName with Is condition should passed* | |
| | ↳ *DisplayName with Is condition should failed* | |
| 2 | **Data Contracts Semantics Rule DisplayName** - Validate DisplayName Rule Is Not | Validate DisplayName Rule Is Not |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *DisplayName with Is Not condition should failed* | |
| | ↳ *DisplayName with Is Not condition should passed* | |
| 3 | **Data Contracts Semantics Rule DisplayName** - Validate DisplayName Rule Any_In | Validate DisplayName Rule Any_In |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *DisplayName with Any In condition should passed* | |
| | ↳ *DisplayName with Any In condition should failed* | |
| 4 | **Data Contracts Semantics Rule DisplayName** - Validate DisplayName Rule Not_In | Validate DisplayName Rule Not_In |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *DisplayName with Not In condition should failed* | |
| | ↳ *DisplayName with Not In condition should passed* | |
| 5 | **Data Contracts Semantics Rule DisplayName** - Validate DisplayName Rule Is_Set | Validate DisplayName Rule Is_Set |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *DisplayName with IsSet condition should passed* | |
| | ↳ *DisplayName with IsSet condition should failed* | |
| 6 | **Data Contracts Semantics Rule DisplayName** - Validate DisplayName Rule Is_Not_Set | Validate DisplayName Rule Is_Not_Set |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *DisplayName with IsNotSet condition should failed* | |
| | ↳ *DisplayName with IsNotSet condition should passed* | |

### Data Contracts Semantics Rule Updated on

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contracts Semantics Rule Updated on** - Validate UpdatedOn Rule Between | Validate UpdatedOn Rule Between |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *UpdatedOn with Between condition should passed* | |
| | ↳ *UpdatedOn with Between condition should failed* | |
| 2 | **Data Contracts Semantics Rule Updated on** - Validate UpdatedOn Rule Not_Between | Validate UpdatedOn Rule Not_Between |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *UpdatedOn with Between condition should failed* | |
| | ↳ *UpdatedOn with Between condition should passed* | |
| 3 | **Data Contracts Semantics Rule Updated on** - Validate UpdatedOn Rule Less than | Validate UpdatedOn Rule Less than |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *UpdatedOn with Less than condition should failed* | |
| | ↳ *UpdatedOn with Less than condition should passed* | |
| 4 | **Data Contracts Semantics Rule Updated on** - Validate UpdatedOn Rule Greater than | Validate UpdatedOn Rule Greater than |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *UpdatedOn with Greater than condition should failed* | |
| | ↳ *UpdatedOn with Greater than condition should passed* | |
| 5 | **Data Contracts Semantics Rule Updated on** - Validate UpdatedOn Rule Less than Equal | Validate UpdatedOn Rule Less than Equal |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *UpdatedOn with LessThanEqual condition should passed* | |
| | ↳ *UpdatedOn with Less than condition should failed* | |
| 6 | **Data Contracts Semantics Rule Updated on** - Validate UpdatedOn Rule Greater Than Equal | Validate UpdatedOn Rule Greater Than Equal |
| | ↳ *Open contract section and start adding contract* | |
| | ↳ *UpdatedOn with GreaterThanEqual condition should passed* | |
| | ↳ *UpdatedOn with GreaterThanEqual condition should failed* | |

</details>

<details open>
<summary>📄 <b>DataContractInheritance.spec.ts</b> (8 tests, 56 scenarios)</summary>

> Source: [`src/main/resources/ui/playwright/e2e/Pages/DataContractInheritance.spec.ts`](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/DataContractInheritance.spec.ts)

### Data Contract Inheritance

| # | Test Case | Description |
|---|-----------|-------------|
| 1 | **Data Contract Inheritance** - Full Contract Inheritance - Asset inherits full contract from Data Product | Full Contract Inheritance - Asset inherits full contract from Data Product |
| | ↳ *Navigate to Data Product and add contract* | |
| | ↳ *Fill Data Product contract details* | |
| | ↳ *Fill Terms of Service* | |
| | ↳ *Fill Semantics* | |
| | ↳ *Fill SLA* | |
| | ↳ *Save contract* | |
| | ↳ *Add asset to Data Product* | |
| | ↳ *Navigate to asset and verify inherited contract* | |
| 2 | **Data Contract Inheritance** - Partial Contract Inheritance - Asset contract merges with Data Product contract | Partial Contract Inheritance - Asset contract merges with Data Product contract |
| | ↳ *Navigate to asset and add contract with semantics* | |
| | ↳ *Fill asset contract details* | |
| | ↳ *Fill asset semantics* | |
| | ↳ *Save asset contract* | |
| | ↳ *Navigate to second Data Product and add contract with different semantics and SLA* | |
| | ↳ *Fill Data Product contract details* | |
| | ↳ *Fill Data Product Terms of Service* | |
| | ↳ *Fill Data Product semantics (different from asset)* | |
| | ↳ *Fill Data Product SLA* | |
| | ↳ *Save Data Product contract* | |
| | ↳ *Add asset with contract to Data Product* | |
| | ↳ *Navigate to asset and verify merged contract* | |
| 3 | **Data Contract Inheritance** - Edit Asset Contract - Add SLA when inheriting SLA from Data Product (PATCH should use /add not /replace) | Edit Asset Contract - Add SLA when inheriting SLA from Data Product (PATCH should use /add not /replace) |
| | ↳ *Navigate to Data Product and add contract with SLA* | |
| | ↳ *Fill Data Product contract with SLA* | |
| | ↳ *Fill Data Product SLA* | |
| | ↳ *Save Data Product contract* | |
| | ↳ *Add asset to Data Product* | |
| | ↳ *Navigate to asset and add contract WITHOUT SLA* | |
| | ↳ *Fill asset contract details (without SLA initially)* | |
| | ↳ *Save asset contract without SLA - should be POST (create new)* | |
| | ↳ *Edit contract again to ADD its own SLA* | |
| | ↳ *Fill asset own SLA (this tests PATCH uses /add not /replace)* | |
| | ↳ *Save contract with own SLA - PATCH should succeed* | |
| | ↳ *Verify asset now has its own SLA (no inherited icon)* | |
| 4 | **Data Contract Inheritance** - Edit Inherited Contract - Creates new asset contract instead of modifying parent | Edit Inherited Contract - Creates new asset contract instead of modifying parent |
| | ↳ *Create Data Product with contract* | |
| | ↳ *Add asset to Data Product* | |
| | ↳ *Navigate to asset and verify inherited contract* | |
| | ↳ *Click Edit on inherited contract - should open ADD form, not EDIT* | |
| | ↳ *Fill new asset contract details* | |
| | ↳ *Save new asset contract - should create, not update* | |
| | ↳ *Verify asset now has its own contract (non-inherited)* | |
| | ↳ *Verify Data Product contract was NOT modified* | |
| 5 | **Data Contract Inheritance** - Delete Button Disabled - Fully inherited contracts cannot be deleted | Delete Button Disabled - Fully inherited contracts cannot be deleted |
| | ↳ *Create Data Product with contract* | |
| | ↳ *Add asset to Data Product* | |
| | ↳ *Navigate to asset and verify delete is disabled for inherited contract* | |
| 6 | **Data Contract Inheritance** - Run Validation - Inherited contract validation uses entity-based validation | Run Validation - Inherited contract validation uses entity-based validation |
| | ↳ *Create Data Product with contract* | |
| | ↳ *Add asset to Data Product* | |
| | ↳ *Navigate to asset and run validation on inherited contract* | |
| 7 | **Data Contract Inheritance** - Remove Asset - Inherited contract no longer shown when asset is removed from Data Product | Remove Asset - Inherited contract no longer shown when asset is removed from Data Product |
| | ↳ *Create Data Product with contract* | |
| | ↳ *Add asset to Data Product* | |
| | ↳ *Verify asset shows inherited contract* | |
| | ↳ *Remove asset from Data Product* | |
| | ↳ *Verify asset no longer shows inherited contract* | |
| 8 | **Data Contract Inheritance** - Delete Asset Contract - Falls back to showing inherited contract from Data Product | Delete Asset Contract - Falls back to showing inherited contract from Data Product |
| | ↳ *Create Data Product with contract* | |
| | ↳ *Add asset to Data Product* | |
| | ↳ *Create asset own contract* | |
| | ↳ *Delete asset own contract* | |
| | ↳ *Verify asset now shows inherited contract from Data Product* | |

</details>


---

