From 00939635d18d5f53aa29b8b18f07f568feb1e096 Mon Sep 17 00:00:00 2001 From: Elena Naboko Date: Thu, 23 Dec 2021 23:53:06 +0300 Subject: [PATCH 1/3] [E2E] Save scroll position for Enablement Area test added --- tests/e2e/pageObjects/workbench-page.ts | 4 ++-- .../workbench/command-results.e2e.ts | 7 +++--- .../workbench/default-scripts-area.e2e.ts | 23 +++++++++++++++++++ 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/tests/e2e/pageObjects/workbench-page.ts b/tests/e2e/pageObjects/workbench-page.ts index 839ba9f248..4457f55dbd 100644 --- a/tests/e2e/pageObjects/workbench-page.ts +++ b/tests/e2e/pageObjects/workbench-page.ts @@ -6,7 +6,7 @@ export class WorkbenchPage { cssSelectorPaginationButtonNext: string cssReRunCommandButton: string cssDeleteCommandButton: string - cssQueryCardOutputResponceSuccess: string + cssQueryCardOutputResponseSuccess: string cssTableViewTypeOption: string //------------------------------------------------------------------------------------------ //DECLARATION OF TYPES: DOM ELEMENTS and UI COMPONENTS @@ -62,7 +62,7 @@ export class WorkbenchPage { this.cssSelectorPaginationButtonNext = '[data-test-subj=pagination-button-next]'; this.cssReRunCommandButton = '[data-testid=re-run-command]'; this.cssDeleteCommandButton = '[data-testid=delete-command]'; - this.cssQueryCardOutputResponceSuccess = '[data-testid=query-card-output-response-success]'; + this.cssQueryCardOutputResponseSuccess = '[data-testid=query-card-output-response-success]'; this.cssTableViewTypeOption = '[data-testid=view-type-selected-Plugin-redisearch__redisearch]'; //------------------------------------------------------------------------------------------- //DECLARATION OF SELECTORS diff --git a/tests/e2e/tests/critical-path/workbench/command-results.e2e.ts b/tests/e2e/tests/critical-path/workbench/command-results.e2e.ts index 9c5a657dd9..96f5c9578e 100644 --- a/tests/e2e/tests/critical-path/workbench/command-results.e2e.ts +++ b/tests/e2e/tests/critical-path/workbench/command-results.e2e.ts @@ -1,6 +1,5 @@ import { addNewStandaloneDatabase } from '../../../helpers/database'; -import { WorkbenchPage } from '../../../pageObjects/workbench-page'; -import { MyRedisDatabasePage, UserAgreementPage, AddRedisDatabasePage } from '../../../pageObjects'; +import { MyRedisDatabasePage, UserAgreementPage, AddRedisDatabasePage, WorkbenchPage } from '../../../pageObjects'; import { commonUrl, ossStandaloneConfig @@ -51,7 +50,7 @@ test('Verify that user can see expanded result after command re-run at the top o const containerOfCommand = await workbenchPage.getCardContainerByCommand(commandForSend1); await t.click(containerOfCommand.find(workbenchPage.cssReRunCommandButton)); //Verify that re-executed command is expanded - await t.expect(await workbenchPage.queryCardContainer.nth(0).find(workbenchPage.cssQueryCardOutputResponceSuccess).visible).ok('Re-executed command is expanded'); + await t.expect(await workbenchPage.queryCardContainer.nth(0).find(workbenchPage.cssQueryCardOutputResponseSuccess).visible).ok('Re-executed command is expanded'); //Verify that re-executed command is at the top of results await t.expect(workbenchPage.queryCardCommand.nth(0).textContent).eql(commandForSend1, 'The re-executed command is at the top of results table'); }); @@ -71,7 +70,7 @@ test('Verify that user can see the results found in the table view by default fo 'FT.AGGREGATE' ]; //Send commands and check table view is default - for(let command of commands) { + for(const command of commands) { await workbenchPage.sendCommandInWorkbench(command); await t.expect(await workbenchPage.queryCardContainer.nth(0).find(workbenchPage.cssTableViewTypeOption).visible).ok(`The table view is selected by default for command ${command}`); } diff --git a/tests/e2e/tests/regression/workbench/default-scripts-area.e2e.ts b/tests/e2e/tests/regression/workbench/default-scripts-area.e2e.ts index 1fc3c9f0b0..f5c7c55dac 100644 --- a/tests/e2e/tests/regression/workbench/default-scripts-area.e2e.ts +++ b/tests/e2e/tests/regression/workbench/default-scripts-area.e2e.ts @@ -72,3 +72,26 @@ test('Verify that user can see saved article in Enablement area when he leaves W //Check that user is on Workbench page and "Working with Hashes" page is displayed await t.expect(workbenchPage.preselectHashCreate.visible).ok('The end of the page is visible'); }); +test('Verify that user can see saved scroll position in Enablement area when he leaves Workbench page and goes back again', async t => { + //Open Working with Hashes section + await t.click(workbenchPage.internalLinkWorkingWithHashes); + //Evaluate the last button in Enablement Area + const buttonsQuantity = await workbenchPage.preselectButtons.count; + const lastButton = workbenchPage.preselectButtons.nth(buttonsQuantity - 1); + //Scroll to the very bottom of the page + await t.scrollIntoView(lastButton); + //Check the scroll position + const scrollPosition = await workbenchPage.scrolledEnablementArea.scrollTop; + //Go to Browser page + await t.click(myRedisDatabasePage.browserButton); + //Go back to Workbench page + await t.click(myRedisDatabasePage.workbenchButton); + //Check that scroll position is saved + await t.expect(workbenchPage.scrolledEnablementArea.scrollTop).eql(scrollPosition, 'Scroll position is correct'); + //Go to list of DBs page + await t.click(myRedisDatabasePage.myRedisDBButton); + //Go back to active DB again + await myRedisDatabasePage.clickOnDBByName(ossStandaloneConfig.databaseName); + //Check that scroll position is saved + await t.expect(workbenchPage.scrolledEnablementArea.scrollTop).eql(scrollPosition, 'Scroll position is correct'); +}); From 0b6a6dc85197cb5c826e9745293a5474b73d8399 Mon Sep 17 00:00:00 2001 From: Elena Naboko Date: Fri, 24 Dec 2021 10:59:12 +0300 Subject: [PATCH 2/3] [E2E] Run Commands custom menu option test added --- tests/e2e/pageObjects/workbench-page.ts | 8 ++++++++ .../regression/workbench/scripting-area.e2e.ts | 16 ++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/tests/e2e/pageObjects/workbench-page.ts b/tests/e2e/pageObjects/workbench-page.ts index 4457f55dbd..525cc5f25f 100644 --- a/tests/e2e/pageObjects/workbench-page.ts +++ b/tests/e2e/pageObjects/workbench-page.ts @@ -8,6 +8,7 @@ export class WorkbenchPage { cssDeleteCommandButton: string cssQueryCardOutputResponseSuccess: string cssTableViewTypeOption: string + cssMonacoCommandPaletteLine: string //------------------------------------------------------------------------------------------ //DECLARATION OF TYPES: DOM ELEMENTS and UI COMPONENTS //*Assign the 'Selector' type to any element/component nested within the constructor. @@ -43,6 +44,9 @@ export class WorkbenchPage { monacoCloseCommandDetails: Selector monacoSuggestion: Selector monacoCommandIndicator: Selector + monacoContextMenu: Selector + monacoShortcutInput: Selector + monacoSuggestionOption: Selector iframe: Selector internalLinkWorkingWithHashes: Selector preselectExactSearch: Selector @@ -64,6 +68,7 @@ export class WorkbenchPage { this.cssDeleteCommandButton = '[data-testid=delete-command]'; this.cssQueryCardOutputResponseSuccess = '[data-testid=query-card-output-response-success]'; this.cssTableViewTypeOption = '[data-testid=view-type-selected-Plugin-redisearch__redisearch]'; + this.cssMonacoCommandPaletteLine = '[aria-label="Command Palette"]'; //------------------------------------------------------------------------------------------- //DECLARATION OF SELECTORS //*Declare all elements/components of the relevant page. @@ -105,6 +110,9 @@ export class WorkbenchPage { this.monacoCommandDetails = Selector('div.suggest-details-container'); this.monacoCloseCommandDetails = Selector('span.codicon-close'); this.monacoSuggestion = Selector('span.monaco-icon-name-container'); + this.monacoContextMenu = Selector('div.shadow-root-host').shadowRoot(); + this.monacoShortcutInput = Selector('input.input'); + this.monacoSuggestionOption = Selector('div.monaco-list-row'); this.iframe = Selector('.pluginIframe', { timeout: 90000 }); this.monacoHintWithArguments = Selector('[widgetid="editor.widget.parameterHintsWidget"]'); this.noCommandHistorySection = Selector('[data-testid=wb_no-results]'); diff --git a/tests/e2e/tests/regression/workbench/scripting-area.e2e.ts b/tests/e2e/tests/regression/workbench/scripting-area.e2e.ts index 34c8c9f689..c3ff4d2f86 100644 --- a/tests/e2e/tests/regression/workbench/scripting-area.e2e.ts +++ b/tests/e2e/tests/regression/workbench/scripting-area.e2e.ts @@ -80,3 +80,19 @@ test('Verify that user can see an indication (green triangle) of commands from t //Compare number of indicator displayed and expected value await t.expect(workbenchPage.monacoCommandIndicator.count).eql(numberOfCommands, 'Number of command indicator'); }); +test('Verify that user can find (using right click) "Run Commands" custom shortcut option in monaco menu and run a command', async t => { + const command = 'HSET key field value'; + //Put a command in Editing Area + await t.typeText(workbenchPage.queryInput, command); + //Right click to get context menu + await t.rightClick(workbenchPage.queryInput); + //Select Command Palette option + await t.click(workbenchPage.monacoContextMenu.find(workbenchPage.cssMonacoCommandPaletteLine)); + //Print "Run Commands" shortcut + await t.typeText(workbenchPage.monacoShortcutInput, 'Run Commands'); + //Select "Run Commands" from menu + await t.click(workbenchPage.monacoSuggestionOption); + //Check the result with sent command + const commandTextInResult = await workbenchPage.queryCardCommand.withExactText(command); + await t.expect(commandTextInResult.exists).ok('Result of sent command exists'); +}); From b60aa81f28252f9460cbe52783d689c9c1073da4 Mon Sep 17 00:00:00 2001 From: Elena Naboko Date: Mon, 27 Dec 2021 19:28:41 +0300 Subject: [PATCH 3/3] [E2E] Fix messages wording for expect function --- .../e2e/tests/regression/workbench/default-scripts-area.e2e.ts | 2 +- tests/e2e/tests/regression/workbench/scripting-area.e2e.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/e2e/tests/regression/workbench/default-scripts-area.e2e.ts b/tests/e2e/tests/regression/workbench/default-scripts-area.e2e.ts index f5c7c55dac..2da18df549 100644 --- a/tests/e2e/tests/regression/workbench/default-scripts-area.e2e.ts +++ b/tests/e2e/tests/regression/workbench/default-scripts-area.e2e.ts @@ -87,7 +87,7 @@ test('Verify that user can see saved scroll position in Enablement area when he //Go back to Workbench page await t.click(myRedisDatabasePage.workbenchButton); //Check that scroll position is saved - await t.expect(workbenchPage.scrolledEnablementArea.scrollTop).eql(scrollPosition, 'Scroll position is correct'); + await t.expect(workbenchPage.scrolledEnablementArea.scrollTop).eql(scrollPosition, 'The scroll position status'); //Go to list of DBs page await t.click(myRedisDatabasePage.myRedisDBButton); //Go back to active DB again diff --git a/tests/e2e/tests/regression/workbench/scripting-area.e2e.ts b/tests/e2e/tests/regression/workbench/scripting-area.e2e.ts index c3ff4d2f86..037e1e4ce1 100644 --- a/tests/e2e/tests/regression/workbench/scripting-area.e2e.ts +++ b/tests/e2e/tests/regression/workbench/scripting-area.e2e.ts @@ -94,5 +94,5 @@ test('Verify that user can find (using right click) "Run Commands" custom shortc await t.click(workbenchPage.monacoSuggestionOption); //Check the result with sent command const commandTextInResult = await workbenchPage.queryCardCommand.withExactText(command); - await t.expect(commandTextInResult.exists).ok('Result of sent command exists'); + await t.expect(commandTextInResult.exists).ok('The result of sent command'); });