( items: MatMenuItemHarness[], itemFilter: Omit<MenuItemHarnessFilters, 'ancestor'>, subItemFilters: Omit<MenuItemHarnessFilters, 'ancestor'>[], )
| 214 | } |
| 215 | |
| 216 | export async function clickItemImplementation( |
| 217 | items: MatMenuItemHarness[], |
| 218 | itemFilter: Omit<MenuItemHarnessFilters, 'ancestor'>, |
| 219 | subItemFilters: Omit<MenuItemHarnessFilters, 'ancestor'>[], |
| 220 | ): Promise<void> { |
| 221 | if (!items.length) { |
| 222 | throw Error(`Could not find item matching ${JSON.stringify(itemFilter)}`); |
| 223 | } |
| 224 | |
| 225 | if (!subItemFilters.length) { |
| 226 | return await items[0].click(); |
| 227 | } |
| 228 | |
| 229 | const menu = await items[0].getSubmenu(); |
| 230 | if (!menu) { |
| 231 | throw Error(`Item matching ${JSON.stringify(itemFilter)} does not have a submenu`); |
| 232 | } |
| 233 | return menu.clickItem(...(subItemFilters as [Omit<MenuItemHarnessFilters, 'ancestor'>])); |
| 234 | } |
no test coverage detected