From c089c87630c1c8d0be7b239cc29828a27239624c Mon Sep 17 00:00:00 2001 From: Eugenio Romano Date: Thu, 9 Aug 2018 01:17:57 +0100 Subject: [PATCH] [no-issue-e2e] directive crete folder new e2e (#3677) * new folder directive e2e * fix search test * fix pr-deploy script --- .../directives/create_folder_directive.e2e.ts | 140 ++++++++++++++++++ e2e/content-services/search_component.e2e.ts | 5 +- e2e/core/header_component.e2e.ts | 2 +- .../viewer_content_services_component.e2e.ts | 3 +- e2e/pages/adf/contentServicesPage.js | 9 +- e2e/pages/adf/dialog/createFolderDialog.js | 23 ++- e2e/pages/adf/dialog/searchDialog.js | 2 +- e2e/pages/adf/viewerPage.js | 5 + .../dialogs/folder.dialog.html | 7 +- scripts/pr-deploy.js | 30 +++- 10 files changed, 202 insertions(+), 24 deletions(-) create mode 100644 e2e/content-services/directives/create_folder_directive.e2e.ts diff --git a/e2e/content-services/directives/create_folder_directive.e2e.ts b/e2e/content-services/directives/create_folder_directive.e2e.ts new file mode 100644 index 0000000000..b1cb493b8c --- /dev/null +++ b/e2e/content-services/directives/create_folder_directive.e2e.ts @@ -0,0 +1,140 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import LoginPage = require('../../pages/adf/loginPage'); +import ContentServicesPage = require('../../pages/adf/contentServicesPage'); +import CreateFolderDialog = require('../../pages/adf/dialog/createFolderDialog'); +import NotificationPage = require('../../pages/adf/notificationPage'); +import MetadataViewPage = require('../../pages/adf/metadataViewPage'); +import ContentListPage = require('../../pages/adf/dialog/contentList'); + +import AcsUserModel = require('../../models/ACS/acsUserModel'); + +import TestConfig = require('../../test.config'); + +import AlfrescoApi = require('alfresco-js-api-node'); +import CONSTANTS = require('../../util/constants'); + +import { browser, protractor } from 'protractor'; + +describe('Document List - Pagination', function () { + + let loginPage = new LoginPage(); + let contentServicesPage = new ContentServicesPage(); + let createFolderDialog = new CreateFolderDialog(); + let notificationPage = new NotificationPage(); + let metadataViewPage = new MetadataViewPage(); + let contentListPage = new ContentListPage(); + + let acsUser = new AcsUserModel(); + let consumerUser = new AcsUserModel(); + let site; + + beforeAll(async (done) => { + this.alfrescoJsApi = new AlfrescoApi({ + provider: 'ECM', + hostEcm: TestConfig.adf.url + }); + + await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + + await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser); + + loginPage.loginToContentServicesUsingUserModel(acsUser); + + contentServicesPage.goToDocumentList(); + + done(); + }); + + afterEach(() => { + browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); + }); + + it('[C260154] Should not create the folder if cancel button is clicked', () => { + let folderName = 'cancelFolder'; + contentServicesPage.clickOnCreateNewFolder(); + + createFolderDialog.addFolderName(folderName); + createFolderDialog.clickOnCancelButton(); + + contentServicesPage.checkContentIsNotDisplayed(folderName); + }); + + it('[C260155] Should enable the Create button only when a folder name is present', () => { + let folderName = 'NotEnableFolder'; + contentServicesPage.clickOnCreateNewFolder(); + + createFolderDialog.checkCreateBtnIsDisabled(); + + createFolderDialog.addFolderName(folderName); + + createFolderDialog.checkCreateBtnIsEnabled(); + }); + + it('[C260156] Should not be possible create two folder with the same name', () => { + let folderName = 'duplicate'; + contentServicesPage.createNewFolder(folderName); + + contentServicesPage.checkContentIsDisplayed(folderName); + + contentServicesPage.createNewFolder(folderName); + + notificationPage.checkNotifyContains('There\'s already a folder with this name. Try a different name.'); + }); + + it('[C260157] Should be possible create a folder under a folder with the same name', () => { + let folderName = 'sameSubFolder'; + + contentServicesPage.createNewFolder(folderName); + contentServicesPage.checkContentIsDisplayed(folderName); + + contentServicesPage.navigateToFolder(folderName); + + contentServicesPage.createNewFolder(folderName); + contentServicesPage.checkContentIsDisplayed(folderName); + }); + + it('[C260158] Should be possible add a folder description when create a new folder', () => { + let folderName = 'folderDescription'; + let description = 'this is the description'; + + contentServicesPage.clickOnCreateNewFolder(); + + createFolderDialog.addFolderName(folderName); + createFolderDialog.addFolderDescription(description); + + createFolderDialog.clickOnCreateButton(); + + contentServicesPage.checkContentIsDisplayed(folderName); + + contentListPage.metadataContent(folderName); + + expect(metadataViewPage.getPropertyText('properties.cm:description')).toEqual('this is the description'); + }); + + it('[C260159] Should not be possible create a folder with banned carachter', () => { + let bannedChar = ['* ', '<', '>', '\\', '/', '?', ':', '|']; + + contentServicesPage.clickOnCreateNewFolder(); + + bannedChar.forEach((currentChar) => { + createFolderDialog.addFolderName(currentChar); + createFolderDialog.checkCreateBtnIsDisabled(); + }); + }); +}); diff --git a/e2e/content-services/search_component.e2e.ts b/e2e/content-services/search_component.e2e.ts index a6130fd610..21404e9348 100644 --- a/e2e/content-services/search_component.e2e.ts +++ b/e2e/content-services/search_component.e2e.ts @@ -214,20 +214,19 @@ describe('Search component - Search Bar', () => { searchResultPage.checkContentIsDisplayed(firstFileModel.name); }); - xit('[C91321] Should be able to use down arrow key when navigating throw suggestions', () => { + it('[C91321] Should be able to use down arrow key when navigating throw suggestions', () => { contentServicesPage.goToDocumentList(); searchDialog .clickOnSearchIcon() .enterText(secondFolder.shortName) .pressDownArrowAndEnter(); - searchDialog.pressDownArrowAndEnter(); contentServicesPage.checkAcsContainer(); expect(contentServicesPage.currentFolderName()).toEqual(secondFolder.name); }); - xit('[C260254] The search bar gets closed when clicking on another browser tab', () => { + it('[C260254] The search bar gets closed when clicking on another browser tab', () => { contentServicesPage.goToDocumentList(); searchDialog diff --git a/e2e/core/header_component.e2e.ts b/e2e/core/header_component.e2e.ts index 90d7c042c5..245e36b450 100644 --- a/e2e/core/header_component.e2e.ts +++ b/e2e/core/header_component.e2e.ts @@ -17,7 +17,7 @@ import LoginPage = require('../pages/adf/loginPage'); import NavigationBarPage = require('../pages/adf/navigationBarPage'); import { HeaderPage } from '../pages/adf/core/headerPage'; -import SettingsPage = require('../pages/adf/settingsPage') +import SettingsPage = require('../pages/adf/settingsPage'); import TestConfig = require('../test.config'); diff --git a/e2e/core/viewer_content_services_component.e2e.ts b/e2e/core/viewer_content_services_component.e2e.ts index 65ab7df9f8..a864ea755a 100644 --- a/e2e/core/viewer_content_services_component.e2e.ts +++ b/e2e/core/viewer_content_services_component.e2e.ts @@ -348,8 +348,7 @@ describe('Content Services Viewer', () => { it('[C269109] Should not be able to open thumbnail pane before the pdf is loaded', () => { viewerPage.viewFile(pdfFile.name); - viewerPage.clickThumbnailsBtn(); - viewerPage.checkThumbnailsContentIsNotDisplayed(); + viewerPage.checkThumbnailsBtnIsDisabled(); viewerPage.clickCloseButton(); }); diff --git a/e2e/pages/adf/contentServicesPage.js b/e2e/pages/adf/contentServicesPage.js index b566d16f9a..f2db686558 100644 --- a/e2e/pages/adf/contentServicesPage.js +++ b/e2e/pages/adf/contentServicesPage.js @@ -249,9 +249,14 @@ var ContentServicesPage = function () { return this; }; - this.createNewFolder = function (folder) { + this.clickOnCreateNewFolder = function () { Util.waitUntilElementIsVisible(createFolderButton); createFolderButton.click(); + return this; + }; + + this.createNewFolder = function (folder) { + this.clickOnCreateNewFolder(); createFolderDialog.addFolderName(folder); createFolderDialog.clickOnCreateButton(); return this; @@ -363,7 +368,7 @@ var ContentServicesPage = function () { }; this.uploadButtonIsEnabled = function () { - return uploadFileButton.isEnabled() + return uploadFileButton.isEnabled(); }; this.deleteContent = function (content) { diff --git a/e2e/pages/adf/dialog/createFolderDialog.js b/e2e/pages/adf/dialog/createFolderDialog.js index 8c4b57b0fa..4580f8c0a2 100644 --- a/e2e/pages/adf/dialog/createFolderDialog.js +++ b/e2e/pages/adf/dialog/createFolderDialog.js @@ -19,10 +19,10 @@ var Util = require('../../../util/util'); var CreateFolderDialog = function () { - var folderNameField = element(by.css("input[placeholder='Name']")); - var folderDescriptionField = element(by.css("textarea[placeholder='Description']")); - var createButton = element(by.cssContainingText("button span", "Create")); - var cancelButton = element(by.cssContainingText("button span", "Cancel")); + var folderNameField = element(by.id('adf-folder-name-input')); + var folderDescriptionField = element(by.id('adf-folder-description-input')); + var createButton = element(by.id('adf-folder-create-button')); + var cancelButton = element(by.id('adf-folder-cancel-button')); this.clickOnCreateButton = function () { Util.waitUntilElementIsVisible(createButton); @@ -30,6 +30,16 @@ var CreateFolderDialog = function () { return this; }; + this.checkCreateBtnIsDisabled = function () { + Util.waitUntilElementIsVisible(createButton.getAttribute("disabled")); + return this; + }; + + this.checkCreateBtnIsEnabled = function () { + createButton.isEnabled(); + return this; + }; + this.clickOnCancelButton = function () { Util.waitUntilElementIsVisible(cancelButton); cancelButton.click(); @@ -38,13 +48,14 @@ var CreateFolderDialog = function () { this.addFolderName = function (folderName) { Util.waitUntilElementIsVisible(folderNameField); - folderNameField.sendKeys(folderName); + folderNameField.clear().sendKeys(folderName); + browser.driver.sleep(500); return this; }; this.addFolderDescription = function (folderDescription) { Util.waitUntilElementIsVisible(folderDescriptionField); - folderDescriptionField.sendKeys(folderDescription); + folderDescriptionField.clear().sendKeys(folderDescription); return this; }; diff --git a/e2e/pages/adf/dialog/searchDialog.js b/e2e/pages/adf/dialog/searchDialog.js index f1c9881b65..2a63f83f3c 100644 --- a/e2e/pages/adf/dialog/searchDialog.js +++ b/e2e/pages/adf/dialog/searchDialog.js @@ -30,7 +30,7 @@ var SearchDialog = function () { var allRows = element.all(by.css("h4[class*='adf-search-fixed-text']")); this.pressDownArrowAndEnter = function () { - element(by.css("adf-search-control div[style*='translateX(0%)'] input")).sendKeys(protractor.Key.ARROW_DOWN); + element(by.css("adf-search-control div input")).sendKeys(protractor.Key.ARROW_DOWN); return browser.actions().sendKeys(protractor.Key.ENTER).perform(); }; diff --git a/e2e/pages/adf/viewerPage.js b/e2e/pages/adf/viewerPage.js index 1f86c870cb..78f2c4c051 100644 --- a/e2e/pages/adf/viewerPage.js +++ b/e2e/pages/adf/viewerPage.js @@ -139,6 +139,11 @@ var ViewerToolbarPage = function () { Util.waitUntilElementIsVisible(thumbnailsBtn); }; + this.checkThumbnailsBtnIsDisabled = function () { + Util.waitUntilElementIsVisible(thumbnailsBtn.getAttribute("disabled")); + return this; + }; + this.checkThumbnailsContentIsDisplayed = function () { Util.waitUntilElementIsVisible(thumbnailsContent); }; diff --git a/lib/content-services/dialogs/folder.dialog.html b/lib/content-services/dialogs/folder.dialog.html index ec69e2c791..89368d2986 100644 --- a/lib/content-services/dialogs/folder.dialog.html +++ b/lib/content-services/dialogs/folder.dialog.html @@ -6,11 +6,11 @@
+ [formControl]="form.controls['name']"/> @@ -28,6 +28,7 @@