[e2e] Fix flaky memory panel test

Use our helper and an extra drainTask to stabilize the test.

No-Tree-Checks: True
Bug: none
Change-Id: I7f9c9f2846350fc14f9dcb5c8ed9b6e976e005c0
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6765967
Commit-Queue: Nikolay Vitkov <[email protected]>
Reviewed-by: Jack Franklin <[email protected]>
diff --git a/test/e2e/helpers/memory-helpers.ts b/test/e2e/helpers/memory-helpers.ts
index 6e0fdd8..7fc5459 100644
--- a/test/e2e/helpers/memory-helpers.ts
+++ b/test/e2e/helpers/memory-helpers.ts
@@ -24,16 +24,14 @@
 }
 
 export async function takeDetachedElementsProfile(devToolsPage = getBrowserAndPagesWrappers().devToolsPage) {
-  const radioButton = await devToolsPage.$('//label[text()="Detached elements"]', undefined, 'xpath');
-  await devToolsPage.clickElement(radioButton);
+  await devToolsPage.click('xpath///label[text()="Detached elements"]');
   await devToolsPage.click('devtools-button[aria-label="Obtain detached elements"]');
   await devToolsPage.waitForNone('.heap-snapshot-sidebar-tree-item.wait');
   await devToolsPage.waitFor('.heap-snapshot-sidebar-tree-item.selected');
 }
 
 export async function takeAllocationProfile(devToolsPage = getBrowserAndPagesWrappers().devToolsPage) {
-  const radioButton = await devToolsPage.$('//label[text()="Allocation sampling"]', undefined, 'xpath');
-  await devToolsPage.clickElement(radioButton);
+  await devToolsPage.click('xpath///label[text()="Allocation sampling"]');
   await devToolsPage.click('devtools-button[aria-label="Start heap profiling"]');
   await new Promise(r => setTimeout(r, 200));
   await devToolsPage.click('devtools-button[aria-label="Stop heap profiling"]');
@@ -46,8 +44,7 @@
       recordStacks: false,
     },
     devToolsPage = getBrowserAndPagesWrappers().devToolsPage) {
-  const radioButton = await devToolsPage.$('//label[text()="Allocations on timeline"]', undefined, 'xpath');
-  await devToolsPage.clickElement(radioButton);
+  await devToolsPage.click('xpath///label[text()="Allocations on timeline"]');
   if (recordStacks) {
     await devToolsPage.click('[title="Allocation stack traces (more overhead)"]');
   }
@@ -303,8 +300,9 @@
 export async function focusTableRow(
     row: puppeteer.ElementHandle<Element>, devToolsPage = getBrowserAndPagesWrappers().devToolsPage) {
   // Click in a numeric cell, to avoid accidentally clicking a link.
-  const cell = await devToolsPage.waitFor('.numeric-column', row);
-  await devToolsPage.clickElement(cell);
+  await devToolsPage.click('.numeric-column', {
+    root: row,
+  });
 }
 
 export async function expandFocusedRow(devToolsPage = getBrowserAndPagesWrappers().devToolsPage) {
@@ -398,16 +396,19 @@
 export async function clickOnContextMenuForRetainer(
     retainerName: string, menuItem: string, devToolsPage = getBrowserAndPagesWrappers().devToolsPage) {
   const retainersPane = await devToolsPage.waitFor('.retaining-paths-view');
-  const element = await devToolsPage.waitFor(`//span[text()="${retainerName}"]`, retainersPane, undefined, 'xpath');
-  // Push the click right a bit further to avoid the disclosure triangle.
-  await devToolsPage.clickElement(element, {clickOptions: {button: 'right', offset: {x: 35, y: 0}}});
-  const button = await devToolsPage.waitForAria(menuItem);
-  await devToolsPage.clickElement(button);
+  await devToolsPage.click(`xpath///span[text()="${retainerName}"]`, {
+    root: retainersPane,
+    clickOptions: {
+      button: 'right',
+      // Push the click right a bit further to avoid the disclosure triangle.
+      offset: {x: 35, y: 0},
+    },
+  });
+  await devToolsPage.click(`aria/${menuItem}`);
 }
 
 export async function restoreIgnoredRetainers(devToolsPage = getBrowserAndPagesWrappers().devToolsPage) {
-  const element = await devToolsPage.waitFor('devtools-button[aria-label="Restore ignored retainers"]');
-  await devToolsPage.clickElement(element);
+  await devToolsPage.click('devtools-button[aria-label="Restore ignored retainers"]');
 }
 
 export async function setFilterDropdown(filter: string, devToolsPage = getBrowserAndPagesWrappers().devToolsPage) {
diff --git a/test/e2e_non_hosted/memory/memory_test.ts b/test/e2e_non_hosted/memory/memory_test.ts
index 80950c0..10e8c23 100644
--- a/test/e2e_non_hosted/memory/memory_test.ts
+++ b/test/e2e_non_hosted/memory/memory_test.ts
@@ -574,6 +574,7 @@
     await expandFocusedRow(devToolsPage);
     // TODO: pressing arrowDown does not work while UI is rendering.
     await devToolsPage.drainTaskQueue();
+    await devToolsPage.drainTaskQueue();
     await devToolsPage.page.keyboard.press('ArrowDown');
     await clickOnContextMenuForRetainer('x', 'Reveal in Summary view', devToolsPage);
     await waitUntilRetainerChainSatisfies(