Skip to content

Commit 559907c

Browse files
authored
E2E test: make triggerAndClick default to not exact text match (#12983)
Cleaning up an error I accidentally introduced by requiring exact text match with triggerAncClick ### QA Notes
1 parent ad8763d commit 559907c

2 files changed

Lines changed: 12 additions & 8 deletions

File tree

test/e2e/pages/dialog-contextMenu.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ export class ContextMenu {
1717
private get page(): Page { return this.code.driver.page; }
1818
private isNativeMenu: boolean;
1919
private get contextMenu(): Locator { return this.page.locator('.monaco-menu'); }
20-
private getContextMenuItem(label: string | RegExp): Locator { return this.contextMenu.getByRole('menuitem', { name: label, exact: true }); }
21-
private getContextMenuCheckboxItem(label: string | RegExp): Locator { return this.contextMenu.getByRole('menuitemcheckbox', { name: label, exact: true }); }
20+
private getContextMenuItem(label: string | RegExp, exact = false): Locator { return this.contextMenu.getByRole('menuitem', { name: label, exact }); }
21+
private getContextMenuCheckboxItem(label: string | RegExp, exact = false): Locator { return this.contextMenu.getByRole('menuitemcheckbox', { name: label, exact }); }
2222

2323
constructor(private code: Code) {
2424
// Check if we're on macOS AND we have an Electron app instance
@@ -68,12 +68,13 @@ export class ContextMenu {
6868
* @param menuItemLabel The label of the menu item to click
6969
* @param menuItemType The type of the menu item, either 'menuitemcheckbox' or 'menuitem'
7070
* @param menuTriggerButton The mouse button to use when clicking the menu trigger (default: 'left')
71+
* @param exact Whether to use exact match for the menu item label (default: false)
7172
*/
72-
async triggerAndClick({ menuTrigger, menuItemLabel, menuItemType = 'menuitem', menuTriggerButton = 'left' }: ContextMenuClick): Promise<void> {
73+
async triggerAndClick({ menuTrigger, menuItemLabel, menuItemType = 'menuitem', menuTriggerButton = 'left', exact = false }: ContextMenuClick): Promise<void> {
7374
await test.step(`Trigger context menu and click '${menuItemLabel}'`, async () => {
7475
if (this.isNativeMenu) {
7576
this.code.logger.log(`Using native menu to select: ${menuItemLabel}`);
76-
await this.nativeMenuTriggerAndClick({ menuTrigger, menuItemLabel, menuTriggerButton });
77+
await this.nativeMenuTriggerAndClick({ menuTrigger, menuItemLabel, menuTriggerButton, exact });
7778
} else {
7879
this.code.logger.log(`Using web menu to select: ${menuItemLabel}`);
7980

@@ -89,8 +90,8 @@ export class ContextMenu {
8990
await expect(this.contextMenu).toBeVisible({ timeout: 2000 });
9091

9192
const menuItem = menuItemType === 'menuitemcheckbox'
92-
? this.getContextMenuCheckboxItem(menuItemLabel)
93-
: this.getContextMenuItem(menuItemLabel);
93+
? this.getContextMenuCheckboxItem(menuItemLabel, exact)
94+
: this.getContextMenuItem(menuItemLabel, exact);
9495

9596
await menuItem.hover({ timeout: 2000 });
9697
await this.page.waitForTimeout(200);
@@ -199,8 +200,9 @@ export class ContextMenu {
199200
*
200201
* @param menuTrigger The locator that will trigger the context menu when clicked
201202
* @param menuItemLabel The label of the menu item to click
203+
* @param exact Whether to use exact match (native menus always use exact match for strings)
202204
*/
203-
private async nativeMenuTriggerAndClick({ menuTrigger, menuItemLabel, menuTriggerButton = 'left' }: Omit<ContextMenuClick, 'menuItemType'> & { clickButton?: ClickButton }): Promise<void> {
205+
private async nativeMenuTriggerAndClick({ menuTrigger, menuItemLabel, menuTriggerButton = 'left', exact = false }: Omit<ContextMenuClick, 'menuItemType'> & { clickButton?: ClickButton }): Promise<void> {
204206
const menuItems = await this.triggerMenu(menuTrigger, menuTriggerButton);
205207

206208
if (!menuItems) {
@@ -305,4 +307,5 @@ interface ContextMenuClick {
305307
menuItemLabel: string | RegExp;
306308
menuItemType?: 'menuitemcheckbox' | 'menuitem';
307309
menuTriggerButton?: ClickButton;
310+
exact?: boolean;
308311
}

test/e2e/pages/packages.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,8 @@ export class Packages {
135135
// Open the package actions menu and click "Install Package"
136136
await this.contextMenu.triggerAndClick({
137137
menuTrigger: this.packageActionsButton,
138-
menuItemLabel: 'Install Package'
138+
menuItemLabel: 'Install Package',
139+
exact: true
139140
});
140141

141142
// Wait for the quick input to appear

0 commit comments

Comments
 (0)