diff --git a/tests/playwright/pages/Dashboard/Grid/index.ts b/tests/playwright/pages/Dashboard/Grid/index.ts index 745d5ba1a9..9e3f3b507b 100644 --- a/tests/playwright/pages/Dashboard/Grid/index.ts +++ b/tests/playwright/pages/Dashboard/Grid/index.ts @@ -308,18 +308,41 @@ export class GridPage extends BasePage { } async copyWithKeyboard() { - await this.get().press((await this.isMacOs()) ? 'Meta+C' : 'Control+C'); - await this.verifyToast({ message: 'Copied to clipboard' }); - - return this.getClipboardText(); + // retry to avoid flakiness, until text is copied to clipboard + // + let text = ''; + let retryCount = 5; + while (text === '') { + await this.get().press((await this.isMacOs()) ? 'Meta+C' : 'Control+C'); + await this.verifyToast({ message: 'Copied to clipboard' }); + text = await this.getClipboardText(); + + // retry if text is empty till count is reached + retryCount--; + if (0 === retryCount) { + break; + } + } + return text; } async copyWithMouse({ index, columnHeader }: CellProps) { - await this.cell.get({ index, columnHeader }).click({ button: 'right' }); - await this.get().page().getByTestId('context-menu-item-copy').click(); - - await this.verifyToast({ message: 'Copied to clipboard' }); - - return this.getClipboardText(); + // retry to avoid flakiness, until text is copied to clipboard + // + let text = ''; + let retryCount = 5; + while (text === '') { + await this.cell.get({ index, columnHeader }).click({ button: 'right' }); + await this.get().page().getByTestId('context-menu-item-copy').click(); + await this.verifyToast({ message: 'Copied to clipboard' }); + text = await this.getClipboardText(); + + // retry if text is empty till count is reached + retryCount--; + if (0 === retryCount) { + break; + } + } + return text; } }