From 249ca50beddbe48607a1f7bbd930dc4728c4f75e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Herrero=20Garc=C3=ADa?= Date: Fri, 24 May 2024 16:45:36 +0200 Subject: [PATCH] Add PENPOT-251 test. CO-36 Copy and Paste Board --- pages/base-page.js | 8 ++------ pages/workspace/layers-panel-page.js | 14 ++++++++++++++ playwright.config.js | 14 ++++++++++++++ tests/composition/composition-board.spec.js | 16 ++++++++++++++++ 4 files changed, 46 insertions(+), 6 deletions(-) diff --git a/pages/base-page.js b/pages/base-page.js index 36d81bf..6839100 100644 --- a/pages/base-page.js +++ b/pages/base-page.js @@ -95,12 +95,8 @@ exports.BasePage = class BasePage { this.duplicateOption = page.locator( 'ul[class*="workspace_context_menu"] span:has-text("Duplicate")', ); - this.copyOption = page.locator( - 'ul[class*="workspace_context_menu"] span:has-text("Copy")', - ); - this.pasteOption = page.locator( - 'ul[class*="workspace_context_menu"] span:has-text("Paste")', - ); + this.copyOption = page.getByRole('listitem').filter({ hasText: 'Copy'}); + this.pasteOption = page.getByRole('listitem').filter({ hasText: 'Paste'}); this.groupOption = page.locator( 'ul[class*="workspace_context_menu"] span:has-text("Group")', ); diff --git a/pages/workspace/layers-panel-page.js b/pages/workspace/layers-panel-page.js index b0b834a..321c36b 100644 --- a/pages/workspace/layers-panel-page.js +++ b/pages/workspace/layers-panel-page.js @@ -10,6 +10,9 @@ exports.LayersPanelPage = class LayersPanelPage extends BasePage { this.layersTab = page.locator('div[data-id="layers"]'); this.layersSidebar = page.locator('#layers'); + this.sidebarLayerItem = page.locator( + 'div[class*="workspace_sidebar_layer_item__layer-row"]', + ); this.createdLayerOnLayersPanelNameInput = page.locator( 'div[class*="element-list-body"] input[class*="element-name"]', ); @@ -261,4 +264,15 @@ exports.LayersPanelPage = class LayersPanelPage extends BasePage { await this.copyComponentLayer.click({ button: 'right', force: true }); await this.detachInstanceOption.click(); } + + async copyLayerViaRightClick(layerName) { + const layerSel = this.page.locator('#layers').getByText(layerName); + await layerSel.last().click({ + button: 'right', + force: true, + }); + await this.copyOption.click(); + } }; + + diff --git a/playwright.config.js b/playwright.config.js index bba63ae..503ea48 100644 --- a/playwright.config.js +++ b/playwright.config.js @@ -72,6 +72,10 @@ const config = { launchOptions: { ignoreDefaultArgs: ['--hide-scrollbars'], }, + contextOptions: { + // chromium-specific permissions + permissions: ['clipboard-read', 'clipboard-write'], + }, }, }, { @@ -88,6 +92,16 @@ const config = { width: 1920, }, }, + launchOptions: { + firefoxUserPrefs: { + 'dom.events.asyncClipboard.readText': true, + 'dom.events.testing.asyncClipboard': true, + }, + }, + contextOptions: { + // chromium-specific permissions + permissions: ['clipboard-read', 'clipboard-write'], + }, }, { name: 'webkit', diff --git a/tests/composition/composition-board.spec.js b/tests/composition/composition-board.spec.js index 16f56be..e00f08a 100644 --- a/tests/composition/composition-board.spec.js +++ b/tests/composition/composition-board.spec.js @@ -450,6 +450,22 @@ test.describe(() => { }, ); + mainTest( + qase(251,'CO-36 Copy and Paste Board'), + async ({ page }) => { + const mainPage = new MainPage(page); + const layersPanelPage = new LayersPanelPage(page); + const board1 = 'Board #1'; + await mainPage.copyLayerViaRightClick(); + await mainPage.pasteLayerViaRightClick(); + await layersPanelPage.copyLayerViaRightClick(board1); + await mainPage.pasteLayerViaRightClick(); + await mainPage.pressCopyShortcut(); + await mainPage.pressPasteShortcut(); + await expect(layersPanelPage.sidebarLayerItem).toHaveCount(5); + }, + ); + mainTest( qase(268,"CO-53 Click 'Focus on' board from right click"), async ({ page }) => {