diff --git a/cspell.json b/cspell.json index 3812092713..dcde13fef3 100644 --- a/cspell.json +++ b/cspell.json @@ -124,7 +124,8 @@ "hardend", "filedata", "uncheck", - "subfolders" + "subfolders", + "ECMBPM" ], "dictionaries": [ "html", diff --git a/e2e/content-services/comments/comment-component.e2e.ts b/e2e/content-services/comments/comment-component.e2e.ts index 6c68e9e274..3e4983be0a 100644 --- a/e2e/content-services/comments/comment-component.e2e.ts +++ b/e2e/content-services/comments/comment-component.e2e.ts @@ -27,7 +27,7 @@ import { FileModel } from '../../models/ACS/fileModel'; import TestConfig = require('../../test.config'); import resources = require('../../util/resources'); import CONSTANTS = require('../../util/constants'); -import { Util } from '../../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import { UploadActions } from '../../actions/ACS/upload.actions'; @@ -183,7 +183,7 @@ describe('Comment Component', () => { await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); site = await this.alfrescoJsApi.core.sitesApi.createSite({ - title: Util.generateRandomString(8), + title: StringUtil.generateRandomString(8), visibility: 'PUBLIC' }); diff --git a/e2e/content-services/directives/create-library-directive.e2e.ts b/e2e/content-services/directives/create-library-directive.e2e.ts index c97abf56e3..e93d2835c9 100644 --- a/e2e/content-services/directives/create-library-directive.e2e.ts +++ b/e2e/content-services/directives/create-library-directive.e2e.ts @@ -24,7 +24,7 @@ import { AcsUserModel } from '../../models/ACS/acsUserModel'; import TestConfig = require('../../test.config'); import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import { browser, Key } from 'protractor'; -import { Util } from '../../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; describe('Create library directive', function () { @@ -56,14 +56,14 @@ describe('Create library directive', function () { loginPage.loginToContentServicesUsingUserModel(acsUser); createSite = await this.alfrescoJsApi.core.sitesApi.createSite({ - 'title': Util.generateRandomString(20).toLowerCase(), + 'title': StringUtil.generateRandomString(20).toLowerCase(), 'visibility': 'PUBLIC' }); done(); }); - beforeEach( (done) => { + beforeEach((done) => { contentServicesPage.goToDocumentList(); contentServicesPage.openCreateLibraryDialog(); done(); @@ -98,8 +98,8 @@ describe('Create library directive', function () { }); it('[C290160] Should create a public library', () => { - const libraryName = Util.generateRandomString(); - const libraryDescription = Util.generateRandomString(); + const libraryName = StringUtil.generateRandomString(); + const libraryDescription = StringUtil.generateRandomString(); createLibraryDialog.typeLibraryName(libraryName); createLibraryDialog.typeLibraryDescription(libraryDescription); createLibraryDialog.selectPublic(); @@ -119,8 +119,8 @@ describe('Create library directive', function () { }); it('[C290173] Should create a private library', () => { - const libraryName = Util.generateRandomString(); - const libraryDescription = Util.generateRandomString(); + const libraryName = StringUtil.generateRandomString(); + const libraryDescription = StringUtil.generateRandomString(); createLibraryDialog.typeLibraryName(libraryName); createLibraryDialog.typeLibraryDescription(libraryDescription); createLibraryDialog.selectPrivate(); @@ -140,9 +140,9 @@ describe('Create library directive', function () { }); it('[C290174, C290175] Should create a moderated library with a given Library ID', () => { - const libraryName = Util.generateRandomString(); - const libraryId = Util.generateRandomString(); - const libraryDescription = Util.generateRandomString(); + const libraryName = StringUtil.generateRandomString(); + const libraryId = StringUtil.generateRandomString(); + const libraryDescription = StringUtil.generateRandomString(); createLibraryDialog.typeLibraryName(libraryName); createLibraryDialog.typeLibraryId(libraryId); createLibraryDialog.typeLibraryDescription(libraryDescription); @@ -163,7 +163,7 @@ describe('Create library directive', function () { }); it('[C290163] Should disable Create button when a mandatory field is not filled in', () => { - const inputValue = Util.generateRandomString(); + const inputValue = StringUtil.generateRandomString(); createLibraryDialog.typeLibraryName(inputValue); createLibraryDialog.clearLibraryId(); @@ -214,7 +214,7 @@ describe('Create library directive', function () { it('[C291793] Should display error for Name field filled in with spaces only', () => { const name = ' '; - const libraryId = Util.generateRandomString(); + const libraryId = StringUtil.generateRandomString(); createLibraryDialog.typeLibraryName(name); createLibraryDialog.typeLibraryId(libraryId); @@ -225,7 +225,7 @@ describe('Create library directive', function () { it('[C290177] Should not accept a duplicate Library Id', () => { const name = 'My Library'; - const libraryId = Util.generateRandomString(); + const libraryId = StringUtil.generateRandomString(); createLibraryDialog.typeLibraryName(name); createLibraryDialog.typeLibraryId(libraryId); @@ -242,7 +242,7 @@ describe('Create library directive', function () { it('[C290178] Should accept the same library name but different Library Ids', () => { const name = createSite.entry.title; - const libraryId = Util.generateRandomString(); + const libraryId = StringUtil.generateRandomString(); createLibraryDialog.typeLibraryName(name.toUpperCase()); createLibraryDialog.typeLibraryId(libraryId); @@ -257,9 +257,9 @@ describe('Create library directive', function () { }); it('[C290179] Should not accept more than the expected characters for input fields', () => { - const name = Util.generateRandomString(257); - const libraryId = Util.generateRandomString(73); - const libraryDescription = Util.generateRandomString(513); + const name = StringUtil.generateRandomString(257); + const libraryId = StringUtil.generateRandomString(73); + const libraryDescription = StringUtil.generateRandomString(513); createLibraryDialog.typeLibraryName(name); createLibraryDialog.typeLibraryId(libraryId); diff --git a/e2e/content-services/document-list/document-list-actions.e2e.ts b/e2e/content-services/document-list/document-list-actions.e2e.ts index c1f3e98284..f14b564c43 100644 --- a/e2e/content-services/document-list/document-list-actions.e2e.ts +++ b/e2e/content-services/document-list/document-list-actions.e2e.ts @@ -24,7 +24,7 @@ import resources = require('../../util/resources'); import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import { UploadActions } from '../../actions/ACS/upload.actions'; import { FileModel } from '../../models/ACS/fileModel'; -import { Util } from '../../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; describe('Document List Component - Actions', () => { @@ -59,7 +59,7 @@ describe('Document List Component - Actions', () => { beforeEach(async (done) => { acsUser = new AcsUserModel(); - folderName = `TATSUMAKY_${Util.generateRandomString(5)}_SENPOUKYAKU`; + folderName = `TATSUMAKY_${StringUtil.generateRandomString(5)}_SENPOUKYAKU`; await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser); await this.alfrescoJsApi.login(acsUser.id, acsUser.password); @@ -147,8 +147,8 @@ describe('Document List Component - Actions', () => { beforeEach(async (done) => { acsUser = new AcsUserModel(); - folderName = `TATSUMAKY_${Util.generateRandomString(5)}_SENPOUKYAKU`; - secondFolderName = `TATSUMAKY_${Util.generateRandomString(5)}_SENPOUKYAKU`; + folderName = `TATSUMAKY_${StringUtil.generateRandomString(5)}_SENPOUKYAKU`; + secondFolderName = `TATSUMAKY_${StringUtil.generateRandomString(5)}_SENPOUKYAKU`; await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser); await this.alfrescoJsApi.login(acsUser.id, acsUser.password); diff --git a/e2e/content-services/document-list/document-list-component.e2e.ts b/e2e/content-services/document-list/document-list-component.e2e.ts index 15ceebb10b..f648f41114 100644 --- a/e2e/content-services/document-list/document-list-component.e2e.ts +++ b/e2e/content-services/document-list/document-list-component.e2e.ts @@ -23,7 +23,7 @@ import { AcsUserModel } from '../../models/ACS/acsUserModel'; import { ViewerPage } from '../../pages/adf/viewerPage'; import TestConfig = require('../../test.config'); import resources = require('../../util/resources'); -import { Util } from '../../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import { UploadActions } from '../../actions/ACS/upload.actions'; import { ErrorPage } from '../../pages/adf/errorPage'; @@ -74,8 +74,8 @@ describe('Document List Component', () => { beforeAll(async (done) => { acsUser = new AcsUserModel(); - const siteName = `PRIVATE_TEST_SITE_${Util.generateRandomString(5)}`; - const folderName = `MEESEEKS_${Util.generateRandomString(5)}`; + const siteName = `PRIVATE_TEST_SITE_${StringUtil.generateRandomString(5)}`; + const folderName = `MEESEEKS_${StringUtil.generateRandomString(5)}`; const privateSiteBody = { visibility: 'PRIVATE', title: siteName }; await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); @@ -149,7 +149,7 @@ describe('Document List Component', () => { acsUser = new AcsUserModel(); /* cspell:disable-next-line */ - folderName = `MEESEEKS_${Util.generateRandomString(5)}_LOOK_AT_ME`; + folderName = `MEESEEKS_${StringUtil.generateRandomString(5)}_LOOK_AT_ME`; await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); @@ -331,7 +331,7 @@ describe('Document List Component', () => { }); acsUser = new AcsUserModel(); /* cspell:disable-next-line */ - const folderName = `MEESEEKS_${Util.generateRandomString(5)}_LOOK_AT_ME`; + const folderName = `MEESEEKS_${StringUtil.generateRandomString(5)}_LOOK_AT_ME`; await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser); await this.alfrescoJsApi.login(acsUser.id, acsUser.password); @@ -362,8 +362,8 @@ describe('Document List Component', () => { it('[C279970] Should display Islocked field for folders', async (done) => { acsUser = new AcsUserModel(); - const folderNameA = `MEESEEKS_${Util.generateRandomString(5)}_LOOK_AT_ME`; - const folderNameB = `MEESEEKS_${Util.generateRandomString(5)}_LOOK_AT_ME`; + const folderNameA = `MEESEEKS_${StringUtil.generateRandomString(5)}_LOOK_AT_ME`; + const folderNameB = `MEESEEKS_${StringUtil.generateRandomString(5)}_LOOK_AT_ME`; await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser); await this.alfrescoJsApi.login(acsUser.id, acsUser.password); @@ -455,7 +455,7 @@ describe('Document List Component', () => { 'name': resources.Files.ADF_DOCUMENTS.DOCX.file_name, 'location': resources.Files.ADF_DOCUMENTS.DOCX.file_location }); - const folderName = `MEESEEKS_${Util.generateRandomString(5)}_LOOK_AT_ME`; + const folderName = `MEESEEKS_${StringUtil.generateRandomString(5)}_LOOK_AT_ME`; let filePdfNode, fileTestNode, fileDocxNode, folderNode; beforeAll(async (done) => { @@ -562,7 +562,7 @@ describe('Document List Component', () => { 'name': resources.Files.ADF_DOCUMENTS.DOCX.file_name, 'location': resources.Files.ADF_DOCUMENTS.DOCX.file_location }); - const folderName = `MEESEEKS_${Util.generateRandomString(5)}_LOOK_AT_ME`; + const folderName = `MEESEEKS_${StringUtil.generateRandomString(5)}_LOOK_AT_ME`; let filePdfNode, fileTestNode, fileDocxNode, folderNode, filePDFSubNode; beforeAll(async (done) => { diff --git a/e2e/content-services/lock-file.e2e.ts b/e2e/content-services/lock-file.e2e.ts index 4e317f8768..1739c05a48 100644 --- a/e2e/content-services/lock-file.e2e.ts +++ b/e2e/content-services/lock-file.e2e.ts @@ -25,7 +25,7 @@ import { AcsUserModel } from '../models/ACS/acsUserModel'; import { FileModel } from '../models/ACS/fileModel'; import CONSTANTS = require('../util/constants'); -import { Util } from '../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; import TestConfig = require('../test.config'); import resources = require('../util/resources'); @@ -70,7 +70,7 @@ describe('Lock File', () => { await this.alfrescoJsApi.login(adminUser.id, adminUser.password); site = await this.alfrescoJsApi.core.sitesApi.createSite({ - title: Util.generateRandomString(), + title: StringUtil.generateRandomString(), visibility: 'PRIVATE' }); diff --git a/e2e/content-services/permissions/permissions-component.e2e.ts b/e2e/content-services/permissions/permissions-component.e2e.ts index 3a4d6cb312..1d76745ef0 100644 --- a/e2e/content-services/permissions/permissions-component.e2e.ts +++ b/e2e/content-services/permissions/permissions-component.e2e.ts @@ -16,117 +16,71 @@ */ import { PermissionsPage } from '../../pages/adf/permissionsPage'; - import { LoginPage } from '../../pages/adf/loginPage'; - import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; - import { AcsUserModel } from '../../models/ACS/acsUserModel'; - import TestConfig = require('../../test.config'); - import resources = require('../../util/resources'); - import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; - import { FileModel } from '../../models/ACS/fileModel'; - import { UploadActions } from '../../actions/ACS/upload.actions'; - -import { Util } from '../../util/util'; - +import { StringUtil } from '@alfresco/adf-testing'; import { browser, protractor } from 'protractor'; - import { FolderModel } from '../../models/ACS/folderModel'; - import { SearchDialog } from '../../pages/adf/dialog/searchDialog'; - import { ViewerPage } from '../../pages/adf/viewerPage'; - import { NotificationPage } from '../../pages/adf/notificationPage'; - import { MetadataViewPage } from '../../pages/adf/metadataViewPage'; - import { UploadDialog } from '../../pages/adf/dialog/uploadDialog'; describe('Permissions Component', function () { const loginPage = new LoginPage(); - const contentServicesPage = new ContentServicesPage(); - const permissionsPage = new PermissionsPage(); - const uploadActions = new UploadActions(); const contentList = contentServicesPage.getDocumentList(); const searchDialog = new SearchDialog(); - const viewerPage = new ViewerPage(); - const metadataViewPage = new MetadataViewPage(); - const notificationPage = new NotificationPage(); - const uploadDialog = new UploadDialog(); - let fileOwnerUser, filePermissionUser, file; - const fileModel = new FileModel({ - 'name': resources.Files.ADF_DOCUMENTS.TXT_0B.file_name, - 'location': resources.Files.ADF_DOCUMENTS.TXT_0B.file_location - }); const testFileModel = new FileModel({ - 'name': resources.Files.ADF_DOCUMENTS.TEST.file_name, - 'location': resources.Files.ADF_DOCUMENTS.TEST.file_location - }); const pngFileModel = new FileModel({ - 'name': resources.Files.ADF_DOCUMENTS.PNG.file_name, - 'location': resources.Files.ADF_DOCUMENTS.PNG.file_location - }); const groupBody = { - - id: Util.generateRandomString(), - - displayName: Util.generateRandomString() - + id: StringUtil.generateRandomString(), + displayName: StringUtil.generateRandomString() }; const alfrescoJsApi = new AlfrescoApi({ - provider: 'ECM', - hostEcm: TestConfig.adf.url - }); - const roleConsumerFolderModel = new FolderModel({'name': 'roleConsumer' + Util.generateRandomString()}); - - const roleCoordinatorFolderModel = new FolderModel({'name': 'roleCoordinator' + Util.generateRandomString()}); - - const roleCollaboratorFolderModel = new FolderModel({'name': 'roleCollaborator' + Util.generateRandomString()}); - - const roleContributorFolderModel = new FolderModel({'name': 'roleContributor' + Util.generateRandomString()}); - - const roleEditorFolderModel = new FolderModel({'name': 'roleEditor' + Util.generateRandomString()}); + const roleConsumerFolderModel = new FolderModel({ 'name': 'roleConsumer' + StringUtil.generateRandomString() }); + const roleCoordinatorFolderModel = new FolderModel({ 'name': 'roleCoordinator' + StringUtil.generateRandomString() }); + const roleCollaboratorFolderModel = new FolderModel({ 'name': 'roleCollaborator' + StringUtil.generateRandomString() }); + const roleContributorFolderModel = new FolderModel({ 'name': 'roleContributor' + StringUtil.generateRandomString() }); + const roleEditorFolderModel = new FolderModel({ 'name': 'roleEditor' + StringUtil.generateRandomString() }); let roleConsumerFolder, roleCoordinatorFolder, roleContributorFolder, roleCollaboratorFolder, roleEditorFolder; - let folders; - fileOwnerUser = new AcsUserModel(); filePermissionUser = new AcsUserModel(); diff --git a/e2e/content-services/permissions/site-permissions.e2e.ts b/e2e/content-services/permissions/site-permissions.e2e.ts index 28018959a2..105c674833 100644 --- a/e2e/content-services/permissions/site-permissions.e2e.ts +++ b/e2e/content-services/permissions/site-permissions.e2e.ts @@ -33,7 +33,7 @@ import { FileModel } from '../../models/ACS/fileModel'; import { UploadActions } from '../../actions/ACS/upload.actions'; -import { Util } from '../../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; import { browser, protractor } from 'protractor'; @@ -143,11 +143,11 @@ describe('Permissions Component', function () { await alfrescoJsApi.login(folderOwnerUser.id, folderOwnerUser.password); - const publicSiteName = `PUBLIC_TEST_SITE_${Util.generateRandomString(5)}`; + const publicSiteName = `PUBLIC_TEST_SITE_${StringUtil.generateRandomString(5)}`; - const privateSiteName = `PRIVATE_TEST_SITE_${Util.generateRandomString(5)}`; + const privateSiteName = `PRIVATE_TEST_SITE_${StringUtil.generateRandomString(5)}`; - folderName = `MEESEEKS_${Util.generateRandomString(5)}`; + folderName = `MEESEEKS_${StringUtil.generateRandomString(5)}`; const publicSiteBody = {visibility: 'PUBLIC', title: publicSiteName}; diff --git a/e2e/content-services/share-file/unshare-file.e2e.ts b/e2e/content-services/share-file/unshare-file.e2e.ts index d9b8d96b7f..b4ca80e061 100644 --- a/e2e/content-services/share-file/unshare-file.e2e.ts +++ b/e2e/content-services/share-file/unshare-file.e2e.ts @@ -16,7 +16,7 @@ */ import CONSTANTS = require('../../util/constants'); -import { Util } from '../../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; import { LoginPage } from '../../pages/adf/loginPage'; import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; @@ -38,7 +38,7 @@ describe('Unshare file', () => { const navBar = new NavigationBarPage(); const errorPage = new ErrorPage(); const shareDialog = new ShareDialog(); - const siteName = `PRIVATE-TEST-SITE-${Util.generateRandomString(5)}`; + const siteName = `PRIVATE-TEST-SITE-${StringUtil.generateRandomString(5)}`; const acsUser = new AcsUserModel(); const uploadActions = new UploadActions(); @@ -63,10 +63,10 @@ describe('Unshare file', () => { }; nodeBody = { - name: Util.generateRandomString(5), + name: StringUtil.generateRandomString(5), nodeType: 'cm:content', properties: { - 'cm:title': Util.generateRandomString(5) + 'cm:title': StringUtil.generateRandomString(5) } }; diff --git a/e2e/content-services/sso/sso-download-directive-component.e2e.ts b/e2e/content-services/sso/sso-download-directive-component.e2e.ts new file mode 100644 index 0000000000..6bc59d5037 --- /dev/null +++ b/e2e/content-services/sso/sso-download-directive-component.e2e.ts @@ -0,0 +1,166 @@ +/*! + * @license + * Copyright 2019 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 { SettingsPage } from '../../pages/adf/settingsPage'; +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; +import TestConfig = require('../../test.config'); +import { browser } from 'protractor'; +import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; +import { ApiService, LoginSSOPage } from '@alfresco/adf-testing'; +import { UploadActions } from '../../actions/ACS/upload.actions'; +import { FileModel } from '../../models/ACS/fileModel'; +import { ViewerPage } from '../../pages/adf/viewerPage'; +import resources = require('../../util/resources'); +import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; +import * as path from 'path'; +import { Util } from '../../util/util'; +import { IdentityService } from '@alfresco/adf-testing'; +import { StringUtil, UserModel } from '@alfresco/adf-testing'; + +describe('SSO in ADF using ACS and AIS, Download Directive, Viewer, DocumentList, implicitFlow true', () => { + + const settingsPage = new SettingsPage(); + const navigationBarPage = new NavigationBarPage(); + const contentServicesPage = new ContentServicesPage(); + const contentListPage = contentServicesPage.getDocumentList(); + const loginSsoPage = new LoginSSOPage(); + const viewerPage = new ViewerPage(); + let silentLogin; + let implicitFlow; + const uploadActions = new UploadActions(); + const firstPdfFileModel = new FileModel({ + 'name': resources.Files.ADF_DOCUMENTS.PDF_B.file_name, + 'location': resources.Files.ADF_DOCUMENTS.PDF_B.file_location + }); + + const pngFileModel = new FileModel({ + 'name': resources.Files.ADF_DOCUMENTS.PNG.file_name, + 'location': resources.Files.ADF_DOCUMENTS.PNG.file_location + }); + + let pdfUploadedFile, pngUploadedFile, folder; + + this.alfrescoJsApi = new AlfrescoApi({ + provider: 'ECM', + hostEcm: TestConfig.adf.url + }); + const downloadedPngFile = path.join(__dirname, 'downloads', pngFileModel.name); + const downloadedMultipleFiles = path.join(__dirname, 'downloads', 'archive.zip'); + const folderName = StringUtil.generateRandomString(5); + const acsUser = new UserModel(); + let identityService: IdentityService; + + describe('SSO in ADF using ACS and AIS, implicit flow set', () => { + + beforeAll(async (done) => { + await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + + const apiService = new ApiService('alfresco', TestConfig.adf.url, TestConfig.adf.hostSso, 'ECM'); + await apiService.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + + identityService = new IdentityService(apiService); + + await identityService.createIdentityUserAndSyncECMBPM(acsUser); + + await this.alfrescoJsApi.login(acsUser.id, acsUser.password); + + folder = await uploadActions.createFolder(this.alfrescoJsApi, folderName, '-my-'); + + pdfUploadedFile = await uploadActions.uploadFile(this.alfrescoJsApi, firstPdfFileModel.location, firstPdfFileModel.name, folder.entry.id); + + pngUploadedFile = await uploadActions.uploadFile(this.alfrescoJsApi, pngFileModel.location, pngFileModel.name, folder.entry.id); + + silentLogin = false; + implicitFlow = true; + settingsPage.setProviderEcmSso(TestConfig.adf.url, TestConfig.adf.hostSso, TestConfig.adf.hostIdentity, silentLogin, implicitFlow, 'alfresco'); + loginSsoPage.clickOnSSOButton(); + loginSsoPage.loginSSOIdentityService(acsUser.id, acsUser.password); + + navigationBarPage.clickContentServicesButton(); + contentServicesPage.checkAcsContainer(); + contentListPage.doubleClickRow(folderName); + contentListPage.waitForTableBody(); + done(); + }); + + afterAll(async (done) => { + try { + await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, folder.entry.id); + await identityService.deleteIdentityUser(acsUser.id); + } catch (error) { + } + await this.alfrescoJsApi.logout(); + browser.executeScript('window.sessionStorage.clear();'); + browser.executeScript('window.localStorage.clear();'); + done(); + }); + + afterEach(async (done) => { + browser.refresh(); + contentListPage.waitForTableBody(); + done(); + }); + + it('[C291936] Should be able to download a file', async (done) => { + contentListPage.selectRow(pngFileModel.name); + contentServicesPage.clickDownloadButton(); + expect(Util.fileExists(downloadedPngFile, 30)).toBe(true); + done(); + }); + + it('[C291938] Should be able to open a document', async (done) => { + contentServicesPage.doubleClickRow(firstPdfFileModel.name); + viewerPage.checkFileIsLoaded(); + viewerPage.checkFileNameIsDisplayed(firstPdfFileModel.name); + viewerPage.clickCloseButton(); + contentListPage.waitForTableBody(); + done(); + }); + + it('[C291942] Should be able to open an image', async (done) => { + viewerPage.viewFile(pngFileModel.name); + viewerPage.checkImgViewerIsDisplayed(); + viewerPage.checkFileNameIsDisplayed(pngFileModel.name); + viewerPage.clickCloseButton(); + contentListPage.waitForTableBody(); + done(); + }); + + it('[C291941] Should be able to download multiple files', async (done) => { + contentServicesPage.clickMultiSelectToggle(); + contentServicesPage.checkAcsContainer(); + contentListPage.dataTablePage().checkAllRows(); + contentListPage.dataTablePage().checkRowIsChecked('Display name', pngFileModel.name); + contentListPage.dataTablePage().checkRowIsChecked('Display name', firstPdfFileModel.name); + contentServicesPage.clickDownloadButton(); + expect(Util.fileExists(downloadedMultipleFiles, 30)).toBe(true); + done(); + }); + + it('[C291940] Should be able to view thumbnails when enabled', async (done) => { + contentServicesPage.enableThumbnails(); + contentServicesPage.checkAcsContainer(); + contentListPage.waitForTableBody(); + const filePdfIconUrl = await contentServicesPage.getRowIconImageUrl(firstPdfFileModel.name); + expect(filePdfIconUrl).toContain(`/versions/1/nodes/${pdfUploadedFile.entry.id}/renditions`); + const filePngIconUrl = await contentServicesPage.getRowIconImageUrl(pngFileModel.name); + expect(filePngIconUrl).toContain(`/versions/1/nodes/${pngUploadedFile.entry.id}/renditions`); + done(); + }); + }); +}); diff --git a/e2e/content-services/tag-component.e2e.ts b/e2e/content-services/tag-component.e2e.ts index 20f79b4611..42fb4cdadd 100644 --- a/e2e/content-services/tag-component.e2e.ts +++ b/e2e/content-services/tag-component.e2e.ts @@ -28,7 +28,7 @@ import resources = require('../util/resources'); import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import { UploadActions } from '../actions/ACS/upload.actions'; -import { Util } from '../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; import { browser } from 'protractor'; describe('Tag component', () => { @@ -40,14 +40,14 @@ describe('Tag component', () => { const acsUser = new AcsUserModel(); const uploadActions = new UploadActions(); const pdfFileModel = new FileModel({ 'name': resources.Files.ADF_DOCUMENTS.PDF.file_name }); - const deleteFile = new FileModel({ 'name': Util.generateRandomString() }); - const sameTag = Util.generateRandomStringToLowerCase(); + const deleteFile = new FileModel({ 'name': StringUtil.generateRandomString() }); + const sameTag = StringUtil.generateRandomString().toLowerCase(); const tagList = [ - Util.generateRandomStringToLowerCase(), - Util.generateRandomStringToLowerCase(), - Util.generateRandomStringToLowerCase(), - Util.generateRandomStringToLowerCase()]; + StringUtil.generateRandomString().toLowerCase(), + StringUtil.generateRandomString().toLowerCase(), + StringUtil.generateRandomString().toLowerCase(), + StringUtil.generateRandomString().toLowerCase()]; const tags = [ { tag: 'test-tag-01' }, { tag: 'test-tag-02' }, { tag: 'test-tag-03' }, { tag: 'test-tag-04' }, { tag: 'test-tag-05' }, @@ -57,9 +57,9 @@ describe('Tag component', () => { { tag: 'test-tag-21' }, { tag: 'test-tag-22' }, { tag: 'test-tag-23' }, { tag: 'test-tag-24' }, { tag: 'test-tag-25' }, { tag: 'test-tag-26' }, { tag: 'test-tag-27' }, { tag: 'test-tag-28' }, { tag: 'test-tag-29' }, { tag: 'test-tag-30' }]; - const uppercaseTag = Util.generateRandomStringToUpperCase(); - const digitsTag = Util.generateRandomStringDigits(); - const nonLatinTag = Util.generateRandomStringNonLatin(); + const uppercaseTag = StringUtil.generateRandomString().toUpperCase(); + const digitsTag = StringUtil.generateRandomStringDigits(); + const nonLatinTag = StringUtil.generateRandomStringNonLatin(); let pdfUploadedFile, nodeId; beforeAll(async (done) => { @@ -160,7 +160,7 @@ describe('Tag component', () => { }); it('[C260375] Should be possible to delete a tag', () => { - const deleteTag = Util.generateRandomStringToUpperCase(); + const deleteTag = StringUtil.generateRandomString().toUpperCase(); tagPage.insertNodeId(deleteFile.id); diff --git a/e2e/content-services/upload/uploader-component.e2e.ts b/e2e/content-services/upload/uploader-component.e2e.ts index e23fb66c18..75c144f0b2 100644 --- a/e2e/content-services/upload/uploader-component.e2e.ts +++ b/e2e/content-services/upload/uploader-component.e2e.ts @@ -28,7 +28,7 @@ import { FolderModel } from '../../models/ACS/folderModel'; import TestConfig = require('../../test.config'); import resources = require('../../util/resources'); -import { Util } from '../../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; @@ -365,7 +365,7 @@ describe('Upload component', () => { }); it('[C291921] Should display tooltip for uploading files on a not found location', async () => { - const folderName = Util.generateRandomString(8); + const folderName = StringUtil.generateRandomString(8); const folderUploadedModel = await browser.controlFlow().execute(async () => { return await uploadActions.createFolder(this.alfrescoJsApi, folderName, '-my-'); diff --git a/e2e/content-services/upload/user-permission.e2e.ts b/e2e/content-services/upload/user-permission.e2e.ts index 675cf5a1a9..66bdb41a59 100644 --- a/e2e/content-services/upload/user-permission.e2e.ts +++ b/e2e/content-services/upload/user-permission.e2e.ts @@ -17,7 +17,7 @@ import { browser } from 'protractor'; -import { Util } from '../../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; import { LoginPage } from '../../pages/adf/loginPage'; import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; @@ -88,12 +88,12 @@ describe('Upload - User permission', () => { loginPage.loginToContentServicesUsingUserModel(acsUser); this.consumerSite = await this.alfrescoJsApi.core.sitesApi.createSite({ - title: Util.generateRandomString(), + title: StringUtil.generateRandomString(), visibility: 'PUBLIC' }); this.managerSite = await this.alfrescoJsApi.core.sitesApi.createSite({ - title: Util.generateRandomString(), + title: StringUtil.generateRandomString(), visibility: 'PUBLIC' }); diff --git a/e2e/content-services/version/version-actions.e2e.ts b/e2e/content-services/version/version-actions.e2e.ts index 77ea27701f..7326f326a1 100644 --- a/e2e/content-services/version/version-actions.e2e.ts +++ b/e2e/content-services/version/version-actions.e2e.ts @@ -32,6 +32,7 @@ import { UploadActions } from '../../actions/ACS/upload.actions'; import { Util } from '../../util/util'; import path = require('path'); import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; +import { BrowserVisibility } from '@alfresco/adf-testing'; describe('Version component actions', () => { @@ -86,14 +87,14 @@ describe('Version component actions', () => { versionManagePage.clickActionButton('1.0'); expect(element(by.css(`[id="adf-version-list-action-delete-1.0"]`)).isEnabled()).toBe(false); versionManagePage.closeActionButton(); - Util.waitUntilElementIsNotOnPage(element(by.css(`[id="adf-version-list-action-delete-1.0"]`))); + BrowserVisibility.waitUntilElementIsNotOnPage(element(by.css(`[id="adf-version-list-action-delete-1.0"]`))); }); it('[C280004] Should not be possible restore the version if there is only one version', () => { versionManagePage.clickActionButton('1.0'); expect(element(by.css(`[id="adf-version-list-action-restore-1.0"]`)).isEnabled()).toBe(false); versionManagePage.closeActionButton(); - Util.waitUntilElementIsNotOnPage(element(by.css(`[id="adf-version-list-action-restore-1.0"]`))); + BrowserVisibility.waitUntilElementIsNotOnPage(element(by.css(`[id="adf-version-list-action-restore-1.0"]`))); }); it('[C280005] Should be showed all the default action when you have more then one version', () => { diff --git a/e2e/content-services/version/version-permissions.e2e.ts b/e2e/content-services/version/version-permissions.e2e.ts index 02ffce4376..f132b3edf7 100644 --- a/e2e/content-services/version/version-permissions.e2e.ts +++ b/e2e/content-services/version/version-permissions.e2e.ts @@ -34,7 +34,7 @@ import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import { UploadActions } from '../../actions/ACS/upload.actions'; import { NodeActions } from '../../actions/ACS/node.actions'; -import { Util } from '../../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; import CONSTANTS = require('../../util/constants'); describe('Version component permissions', () => { @@ -89,7 +89,7 @@ describe('Version component permissions', () => { await this.alfrescoJsApi.core.peopleApi.addPerson(fileCreatorUser); site = await this.alfrescoJsApi.core.sitesApi.createSite({ - title: Util.generateRandomString(), + title: StringUtil.generateRandomString(), visibility: 'PUBLIC' }); diff --git a/e2e/content-services/version/version-properties.e2e.ts b/e2e/content-services/version/version-properties.e2e.ts index db897c9a20..7a8d6ab4f8 100644 --- a/e2e/content-services/version/version-properties.e2e.ts +++ b/e2e/content-services/version/version-properties.e2e.ts @@ -29,8 +29,8 @@ import resources = require('../../util/resources'); import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import { UploadActions } from '../../actions/ACS/upload.actions'; -import { Util } from '../../util/util'; import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; +import { BrowserVisibility } from '@alfresco/adf-testing'; describe('Version Properties', () => { @@ -86,7 +86,7 @@ describe('Version Properties', () => { versionManagePage.clickActionButton('1.0'); - Util.waitUntilElementIsNotVisible(element(by.css(`[id="adf-version-list-action-download-1.0"]`))); + BrowserVisibility.waitUntilElementIsNotVisible(element(by.css(`[id="adf-version-list-action-download-1.0"]`))); versionManagePage.closeActionButton(); }); @@ -96,7 +96,7 @@ describe('Version Properties', () => { versionManagePage.clickActionButton('1.0'); - Util.waitUntilElementIsVisible(element(by.css(`[id="adf-version-list-action-download-1.0"]`))); + BrowserVisibility.waitUntilElementIsVisible(element(by.css(`[id="adf-version-list-action-download-1.0"]`))); versionManagePage.closeActionButton(); }); @@ -113,28 +113,28 @@ describe('Version Properties', () => { versionManagePage.disableComments(); - Util.waitUntilElementIsNotVisible(element(by.css(`[id="adf-version-list-item-comment-1.1"]`))); + BrowserVisibility.waitUntilElementIsNotVisible(element(by.css(`[id="adf-version-list-item-comment-1.1"]`))); }); it('[C277277] Should show/hide actions menu when readOnly is true/false', () => { versionManagePage.disableReadOnly(); - Util.waitUntilElementIsVisible(element(by.css(`[id="adf-version-list-action-menu-button-1.0"]`))); + BrowserVisibility.waitUntilElementIsVisible(element(by.css(`[id="adf-version-list-action-menu-button-1.0"]`))); versionManagePage.enableReadOnly(); - Util.waitUntilElementIsNotVisible(element(by.css(`[id="adf-version-list-action-menu-button-1.0"]`))); + BrowserVisibility.waitUntilElementIsNotVisible(element(by.css(`[id="adf-version-list-action-menu-button-1.0"]`))); }); it('[C279994] Should show/hide upload new version button when readOnly is true/false', () => { versionManagePage.disableReadOnly(); - Util.waitUntilElementIsVisible(versionManagePage.showNewVersionButton); + BrowserVisibility.waitUntilElementIsVisible(versionManagePage.showNewVersionButton); versionManagePage.enableReadOnly(); - Util.waitUntilElementIsNotVisible(versionManagePage.showNewVersionButton); - Util.waitUntilElementIsNotVisible(versionManagePage.uploadNewVersionButton); + BrowserVisibility.waitUntilElementIsNotVisible(versionManagePage.showNewVersionButton); + BrowserVisibility.waitUntilElementIsNotVisible(versionManagePage.uploadNewVersionButton); }); }); diff --git a/e2e/content-services/version/version-smoke-tests.e2e.ts b/e2e/content-services/version/version-smoke-tests.e2e.ts index 188c4d2d85..dd541953dd 100644 --- a/e2e/content-services/version/version-smoke-tests.e2e.ts +++ b/e2e/content-services/version/version-smoke-tests.e2e.ts @@ -29,8 +29,8 @@ import resources = require('../../util/resources'); import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import { UploadActions } from '../../actions/ACS/upload.actions'; -import { Util } from '../../util/util'; import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; +import { BrowserVisibility } from '@alfresco/adf-testing'; describe('Version component', () => { @@ -109,25 +109,25 @@ describe('Version component', () => { browser.driver.sleep(300); - Util.waitUntilElementIsVisible(versionManagePage.cancelButton); - Util.waitUntilElementIsVisible(versionManagePage.majorRadio); - Util.waitUntilElementIsVisible(versionManagePage.minorRadio); - Util.waitUntilElementIsVisible(versionManagePage.cancelButton); - Util.waitUntilElementIsVisible(versionManagePage.commentText); - Util.waitUntilElementIsVisible(versionManagePage.uploadNewVersionButton); + BrowserVisibility.waitUntilElementIsVisible(versionManagePage.cancelButton); + BrowserVisibility.waitUntilElementIsVisible(versionManagePage.majorRadio); + BrowserVisibility.waitUntilElementIsVisible(versionManagePage.minorRadio); + BrowserVisibility.waitUntilElementIsVisible(versionManagePage.cancelButton); + BrowserVisibility.waitUntilElementIsVisible(versionManagePage.commentText); + BrowserVisibility.waitUntilElementIsVisible(versionManagePage.uploadNewVersionButton); versionManagePage.cancelButton.click(); browser.driver.sleep(300); - Util.waitUntilElementIsNotVisible(versionManagePage.cancelButton); - Util.waitUntilElementIsNotVisible(versionManagePage.majorRadio); - Util.waitUntilElementIsNotVisible(versionManagePage.minorRadio); - Util.waitUntilElementIsNotVisible(versionManagePage.cancelButton); - Util.waitUntilElementIsNotVisible(versionManagePage.commentText); - Util.waitUntilElementIsNotVisible(versionManagePage.uploadNewVersionButton); + BrowserVisibility.waitUntilElementIsNotVisible(versionManagePage.cancelButton); + BrowserVisibility.waitUntilElementIsNotVisible(versionManagePage.majorRadio); + BrowserVisibility.waitUntilElementIsNotVisible(versionManagePage.minorRadio); + BrowserVisibility.waitUntilElementIsNotVisible(versionManagePage.cancelButton); + BrowserVisibility.waitUntilElementIsNotVisible(versionManagePage.commentText); + BrowserVisibility.waitUntilElementIsNotVisible(versionManagePage.uploadNewVersionButton); - Util.waitUntilElementIsVisible(versionManagePage.showNewVersionButton); + BrowserVisibility.waitUntilElementIsVisible(versionManagePage.showNewVersionButton); }); it('[C260244] Should show the version history when select a file with multiple version', () => { diff --git a/e2e/core/card-view/card-view-component.e2e.ts b/e2e/core/card-view/card-view-component.e2e.ts index 8524558eff..62452ef936 100644 --- a/e2e/core/card-view/card-view-component.e2e.ts +++ b/e2e/core/card-view/card-view-component.e2e.ts @@ -23,7 +23,7 @@ import { MetadataViewPage } from '../../pages/adf/metadataViewPage'; import TestConfig = require('../../test.config'); import { CardViewComponentPage } from '../../pages/adf/cardViewComponentPage'; -import { Util } from '../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; describe('CardView Component', () => { const loginPage = new LoginPage(); @@ -47,7 +47,7 @@ describe('CardView Component', () => { it('[C279938] Should the label be present', () => { const label = element(by.css('div[data-automation-id="card-key-value-pairs-label-key-value-pairs"]')); - Util.waitUntilElementIsPresent(label); + BrowserVisibility.waitUntilElementIsPresent(label); }); it('[C279898] Should be possible edit key-value pair properties', () => { @@ -69,7 +69,7 @@ describe('CardView Component', () => { it('[C279939] Should the label be present', () => { const label = element(by.css('div[data-automation-id="card-select-label-select"]')); - Util.waitUntilElementIsPresent(label); + BrowserVisibility.waitUntilElementIsPresent(label); }); it('[C279899] Should be possible edit selectBox item', () => { @@ -86,7 +86,7 @@ describe('CardView Component', () => { it('[C279937] Should the label be present', () => { const label = element(by.css('div[data-automation-id="card-textitem-label-name"]')); - Util.waitUntilElementIsPresent(label); + BrowserVisibility.waitUntilElementIsPresent(label); }); it('[C279943] Should be present a default value', () => { @@ -117,7 +117,7 @@ describe('CardView Component', () => { it('[C279940] Should the label be present', () => { const label = element(by.css('div[data-automation-id="card-textitem-label-int"]')); - Util.waitUntilElementIsPresent(label); + BrowserVisibility.waitUntilElementIsPresent(label); }); it('[C279945] Should be present a default value', () => { @@ -191,7 +191,7 @@ describe('CardView Component', () => { it('[C279941] Should the label be present', () => { const label = element(by.css('div[data-automation-id="card-textitem-label-float"]')); - Util.waitUntilElementIsPresent(label); + BrowserVisibility.waitUntilElementIsPresent(label); }); it('[C279952] Should be present a default value', () => { @@ -241,7 +241,7 @@ describe('CardView Component', () => { it('[C279942] Should the label be present', () => { const label = element(by.css('div[data-automation-id="card-boolean-label-boolean"]')); - Util.waitUntilElementIsPresent(label); + BrowserVisibility.waitUntilElementIsPresent(label); }); it('[C279957] Should be possible edit the checkbox value when click on it', () => { @@ -260,11 +260,11 @@ describe('CardView Component', () => { it('[C279961] Should the label be present', () => { const labelDate = element(by.css('div[data-automation-id="card-dateitem-label-date"]')); - Util.waitUntilElementIsPresent(labelDate); + BrowserVisibility.waitUntilElementIsPresent(labelDate); const labelDatetime = element(by.css('div[data-automation-id="card-dateitem-label-datetime"]')); - Util.waitUntilElementIsPresent(labelDatetime); + BrowserVisibility.waitUntilElementIsPresent(labelDatetime); }); it('[C279962] Should be present a default value', () => { @@ -283,10 +283,10 @@ describe('CardView Component', () => { const editIconKey = element(by.css('mat-icon[data-automation-id="card-key-value-pairs-button-key-value-pairs"]')); const editIconData = element(by.css('mat-datetimepicker-toggle')); - Util.waitUntilElementIsNotVisible(editIconText); - Util.waitUntilElementIsNotVisible(editIconInt); - Util.waitUntilElementIsNotVisible(editIconFloat); - Util.waitUntilElementIsNotVisible(editIconKey); - Util.waitUntilElementIsNotVisible(editIconData); + BrowserVisibility.waitUntilElementIsNotVisible(editIconText); + BrowserVisibility.waitUntilElementIsNotVisible(editIconInt); + BrowserVisibility.waitUntilElementIsNotVisible(editIconFloat); + BrowserVisibility.waitUntilElementIsNotVisible(editIconKey); + BrowserVisibility.waitUntilElementIsNotVisible(editIconData); }); }); diff --git a/e2e/core/card-view/metadata-permissions.e2e.ts b/e2e/core/card-view/metadata-permissions.e2e.ts index b688e7899d..eeb338b902 100644 --- a/e2e/core/card-view/metadata-permissions.e2e.ts +++ b/e2e/core/card-view/metadata-permissions.e2e.ts @@ -29,7 +29,7 @@ import resources = require('../../util/resources'); import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import { UploadActions } from '../../actions/ACS/upload.actions'; -import { Util } from '../../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; import CONSTANTS = require('../../util/constants'); describe('permissions', () => { @@ -78,7 +78,7 @@ describe('permissions', () => { await this.alfrescoJsApi.core.peopleApi.addPerson(contributorUser); site = await this.alfrescoJsApi.core.sitesApi.createSite({ - title: Util.generateRandomString(), + title: StringUtil.generateRandomString(), visibility: 'PUBLIC' }); diff --git a/e2e/core/error-component.e2e.ts b/e2e/core/error-component.e2e.ts index d17f7d4f54..e774dc6594 100644 --- a/e2e/core/error-component.e2e.ts +++ b/e2e/core/error-component.e2e.ts @@ -20,7 +20,7 @@ import { AcsUserModel } from '../models/ACS/acsUserModel'; import TestConfig = require('../test.config'); import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import { ErrorPage } from '../pages/adf/errorPage'; -import { browser } from '../../node_modules/protractor'; +import { browser } from 'protractor'; describe('Error Component', () => { diff --git a/e2e/core/login/login-component.e2e.ts b/e2e/core/login/login-component.e2e.ts index 21dc1db9a4..4843c3d63e 100644 --- a/e2e/core/login/login-component.e2e.ts +++ b/e2e/core/login/login-component.e2e.ts @@ -259,7 +259,7 @@ describe('Login component', () => { settingsPage.setProviderEcmBpm(); loginPage.enableLogoSwitch(); loginPage.enterLogo('https://rawgit.com/Alfresco/alfresco-ng2-components/master/assets/angular2.png'); - loginPage.checkLoginImgURL('https://rawgit.com/Alfresco/alfresco-ng2-components/master/assets/angular2.png'); + loginPage.checkLoginImgURL(); }); it('[C291854] Should be possible login in valid credentials', () => { diff --git a/e2e/core/login/redirection.e2e.ts b/e2e/core/login/redirection.e2e.ts index f5d51f0250..2c366e3cc9 100644 --- a/e2e/core/login/redirection.e2e.ts +++ b/e2e/core/login/redirection.e2e.ts @@ -29,7 +29,7 @@ import { SettingsPage } from '../../pages/adf/settingsPage'; import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; -import { Util } from '../../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; import { UploadActions } from '../../actions/ACS/upload.actions'; import { LogoutPage } from '../../pages/adf/demo-shell/logoutPage'; @@ -64,7 +64,7 @@ describe('Login component - Redirect', () => { await this.alfrescoJsApi.login(user.id, user.password); - uploadedFolder = await uploadActions.createFolder(this.alfrescoJsApi, 'protecteFolder' + Util.generateRandomString(), '-my-'); + uploadedFolder = await uploadActions.createFolder(this.alfrescoJsApi, 'protecteFolder' + StringUtil.generateRandomString(), '-my-'); done(); }); diff --git a/e2e/core/user-info-component-cloud.e2e.ts b/e2e/core/user-info-component-cloud.e2e.ts index 9b1350f308..88990d88d2 100644 --- a/e2e/core/user-info-component-cloud.e2e.ts +++ b/e2e/core/user-info-component-cloud.e2e.ts @@ -18,10 +18,9 @@ import { LoginSSOPage } from '@alfresco/adf-testing'; import { SettingsPage } from '../pages/adf/settingsPage'; import TestConfig = require('../test.config'); -import { browser } from 'protractor'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { UserInfoPage } from '@alfresco/adf-testing'; -import { Identity } from '../actions/APS-cloud/identity'; +import { IdentityService, ApiService } from '@alfresco/adf-testing'; describe('User Info - SSO', () => { @@ -29,21 +28,25 @@ describe('User Info - SSO', () => { const loginSSOPage = new LoginSSOPage(); const navigationBarPage = new NavigationBarPage(); const userInfoPage = new UserInfoPage(); - const identityService: Identity = new Identity(); let silentLogin, identityUser; + let identityService: IdentityService; beforeAll(async () => { - await identityService.init(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword, 'alfresco'); + const apiService = new ApiService('alfresco', TestConfig.adf.url, TestConfig.adf.hostSso, 'ECM'); + await apiService.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + + identityService = new IdentityService(apiService); identityUser = await identityService.createIdentityUser(); + silentLogin = false; settingsPage.setProviderEcmSso(TestConfig.adf.url, TestConfig.adf.hostSso, TestConfig.adf.hostIdentity, silentLogin, true, 'alfresco'); loginSSOPage.clickOnSSOButton(); - browser.ignoreSynchronization = true; - loginSSOPage.loginSSOIdentityService(identityUser.username, identityUser.password); + + loginSSOPage.loginSSOIdentityService(identityUser.email, identityUser.password); }); afterAll(async () => { - await identityService.deleteIdentityUser(identityUser.id); + await identityService.deleteIdentityUser(identityUser.idIdentityService); }); it('[C290066] Should display UserInfo when login using SSO', () => { diff --git a/e2e/core/user-info-component.e2e.ts b/e2e/core/user-info-component.e2e.ts index 0dd4243b27..0d6758bba1 100644 --- a/e2e/core/user-info-component.e2e.ts +++ b/e2e/core/user-info-component.e2e.ts @@ -81,7 +81,7 @@ describe('User Info component', () => { expect(userInfoPage.getContentHeaderTitle()).toEqual(contentUserModel.firstName + ' ' + contentUserModel.lastName); expect(userInfoPage.getContentTitle()).toEqual(contentUserModel.firstName + ' ' + contentUserModel.lastName); expect(userInfoPage.getContentEmail()).toEqual(contentUserModel.email); - expect(userInfoPage.getContentJobTitle()).toEqual(contentUserModel.jobTitle); + expect(userInfoPage.getContentJobTitle()).toEqual('N/A'); userInfoPage.checkInitialImage(); userInfoPage.APSProfileImageNotDisplayed(); @@ -91,7 +91,7 @@ describe('User Info component', () => { expect(userInfoPage.getContentHeaderTitle()).toEqual(contentUserModel.firstName + ' ' + contentUserModel.lastName); expect(userInfoPage.getContentTitle()).toEqual(contentUserModel.firstName + ' ' + contentUserModel.lastName); expect(userInfoPage.getContentEmail()).toEqual(contentUserModel.email); - expect(userInfoPage.getContentJobTitle()).toEqual(contentUserModel.jobTitle); + expect(userInfoPage.getContentJobTitle()).toEqual('N/A'); userInfoPage.checkInitialImage(); userInfoPage.APSProfileImageNotDisplayed(); @@ -99,9 +99,9 @@ describe('User Info component', () => { userInfoPage.clickOnProcessServicesTab(); userInfoPage.checkProcessServicesTabIsSelected(); - expect(userInfoPage.getProcessHeaderTitle()).toEqual(processUserModel.firstName + ' ' + processUserModel.lastName); - expect(userInfoPage.getProcessTitle()).toEqual(processUserModel.firstName + ' ' + processUserModel.lastName); - expect(userInfoPage.getProcessEmail()).toEqual(processUserModel.email); + expect(userInfoPage.getProcessHeaderTitle()).toEqual(contentUserModel.firstName + ' ' + contentUserModel.lastName); + expect(userInfoPage.getProcessTitle()).toEqual(contentUserModel.firstName + ' ' + processUserModel.lastName); + expect(userInfoPage.getProcessEmail()).toEqual(contentUserModel.email); userInfoPage.checkInitialImage(); userInfoPage.APSProfileImageNotDisplayed(); @@ -120,7 +120,7 @@ describe('User Info component', () => { expect(userInfoPage.getContentHeaderTitle()).toEqual(contentUserModel.firstName + ' ' + contentUserModel.lastName); expect(userInfoPage.getContentTitle()).toEqual(contentUserModel.firstName + ' ' + contentUserModel.lastName); expect(userInfoPage.getContentEmail()).toEqual(contentUserModel.email); - expect(userInfoPage.getContentJobTitle()).toEqual(contentUserModel.jobTitle); + expect(userInfoPage.getContentJobTitle()).toEqual('N/A'); userInfoPage.checkInitialImage(); userInfoPage.APSProfileImageNotDisplayed(); @@ -150,7 +150,7 @@ describe('User Info component', () => { it('[C260117] Should display UserInfo with profile image uploaded in ACS', async(done) => { browser.controlFlow().execute(async() => { await PeopleAPI.updateAvatarViaAPI(contentUserModel, acsAvatarFileModel, '-me-'); - await PeopleAPI.getAvatarViaAPI(4, contentUserModel, '-me-', function (result) {}); + await PeopleAPI.getAvatarViaAPI(4, contentUserModel, '-me-', function () {}); }); loginPage.goToLoginPage(); diff --git a/e2e/core/viewer/viewer-component.e2e.ts b/e2e/core/viewer/viewer-component.e2e.ts index be020f6a3c..9d313f9b68 100644 --- a/e2e/core/viewer/viewer-component.e2e.ts +++ b/e2e/core/viewer/viewer-component.e2e.ts @@ -26,7 +26,7 @@ import { AboutPage } from '../../pages/adf/demo-shell/aboutPage'; import CONSTANTS = require('../../util/constants'); import resources = require('../../util/resources'); -import { Util } from '../../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; import { FileModel } from '../../models/ACS/fileModel'; import { FolderModel } from '../../models/ACS/folderModel'; @@ -106,7 +106,7 @@ xdescribe('Viewer', () => { await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser); site = await this.alfrescoJsApi.core.sitesApi.createSite({ - title: Util.generateRandomString(8), + title: StringUtil.generateRandomString(8), visibility: 'PUBLIC' }); diff --git a/e2e/models/ACS/acsUserModel.ts b/e2e/models/ACS/acsUserModel.ts index fbae7eecdb..ea2d41622a 100644 --- a/e2e/models/ACS/acsUserModel.ts +++ b/e2e/models/ACS/acsUserModel.ts @@ -15,16 +15,15 @@ * limitations under the License. */ -import { Util } from '../../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; export class AcsUserModel { - firstName = Util.generateRandomString(); - lastName = Util.generateRandomString(); - password = Util.generateRandomString(); - email = Util.generateRandomString(); - id = Util.generateRandomString(); - jobTitle = 'N/A'; + firstName = StringUtil.generateRandomString(); + lastName = StringUtil.generateRandomString(); + password = StringUtil.generateRandomString(); + email = StringUtil.generateRandomString(); + id = StringUtil.generateRandomString(); constructor(details?: any) { Object.assign(this, details); diff --git a/e2e/models/ACS/createdByModel.ts b/e2e/models/ACS/createdByModel.ts index ed1bf0f008..773d2fe6b6 100644 --- a/e2e/models/ACS/createdByModel.ts +++ b/e2e/models/ACS/createdByModel.ts @@ -15,11 +15,11 @@ * limitations under the License. */ -import { Util } from '../../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; export class CreatedByModel { - displayName = Util.generateRandomString(); - id = Util.generateRandomString(); + displayName = StringUtil.generateRandomString(); + id = StringUtil.generateRandomString(); constructor(details?: any) { Object.assign(this, details); diff --git a/e2e/models/ACS/fileModel.ts b/e2e/models/ACS/fileModel.ts index 6dbe3f1914..074d166810 100644 --- a/e2e/models/ACS/fileModel.ts +++ b/e2e/models/ACS/fileModel.ts @@ -19,12 +19,12 @@ import resources = require('../../util/resources'); import ContentModel = require('./contentModel'); import ContentPropertiesModel = require('./contentProperties'); import { CreatedByModel } from './createdByModel'; -import { Util } from '../../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; export class FileModel { - id = Util.generateRandomString(); - name = Util.generateRandomString(); + id = StringUtil.generateRandomString(); + name = StringUtil.generateRandomString(); shortName = this.name; location = resources.Files.ADF_DOCUMENTS.PDF.file_location; tooltip = this.name; diff --git a/e2e/models/ACS/folderModel.ts b/e2e/models/ACS/folderModel.ts index a3dccc61c2..0c4f59e7e4 100644 --- a/e2e/models/ACS/folderModel.ts +++ b/e2e/models/ACS/folderModel.ts @@ -15,12 +15,12 @@ * limitations under the License. */ -import { Util } from '../../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; export class FolderModel { - id = Util.generateRandomString(); - name = Util.generateRandomString(); + id = StringUtil.generateRandomString(); + name = StringUtil.generateRandomString(); shortName = this.name; tooltip = this.name; location = ''; diff --git a/e2e/models/APS/standaloneTask.ts b/e2e/models/APS/standaloneTask.ts index 4b129712d3..29c819a844 100644 --- a/e2e/models/APS/standaloneTask.ts +++ b/e2e/models/APS/standaloneTask.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Util } from '../../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; /** * Create Json Object for standalone task @@ -25,7 +25,7 @@ import { Util } from '../../util/util'; */ export class StandaloneTask { - name = Util.generateRandomString(); + name = StringUtil.generateRandomString(); constructor(details?: any) { Object.assign(this, details); diff --git a/e2e/models/APS/tenant.ts b/e2e/models/APS/tenant.ts index d27d1ad2f5..dbf7c416ef 100644 --- a/e2e/models/APS/tenant.ts +++ b/e2e/models/APS/tenant.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Util } from '../../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; /** * Create tenant JSON Object @@ -29,7 +29,7 @@ export class Tenant { configuration = 'DefaultConfig'; domain = 'DefaultDomain'; maxUsers = 10; - name = Util.generateRandomString(); + name = StringUtil.generateRandomString(); constructor(details?: any) { Object.assign(this, details); diff --git a/e2e/models/APS/user.ts b/e2e/models/APS/user.ts index 4e1b1c2acf..00dde1aebc 100644 --- a/e2e/models/APS/user.ts +++ b/e2e/models/APS/user.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Util } from '../../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; /** * Create tenant JSON Object @@ -25,10 +25,10 @@ import { Util } from '../../util/util'; */ export class User { - email = Util.generateRandomEmail(); - firstName = Util.generateRandomString(); - lastName = Util.generateRandomString(); - password = Util.generatePasswordString(); + email = StringUtil.generateRandomEmail('@activiti.test.com'); + firstName = StringUtil.generateRandomString(); + lastName = StringUtil.generateRandomString(); + password = StringUtil.generatePasswordString(); type = 'enterprise'; tenantId = '1'; company = null; diff --git a/e2e/pages/adf/cardViewComponentPage.ts b/e2e/pages/adf/cardViewComponentPage.ts index 4e64f48d32..fe9a9119fd 100644 --- a/e2e/pages/adf/cardViewComponentPage.ts +++ b/e2e/pages/adf/cardViewComponentPage.ts @@ -16,7 +16,7 @@ */ import { by, element } from 'protractor'; -import { Util } from '../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class CardViewComponentPage { @@ -38,45 +38,45 @@ export class CardViewComponentPage { editableSwitch = element(by.id('adf-toggle-editable')); clickOnAddButton() { - Util.waitUntilElementIsVisible(this.addButton); + BrowserVisibility.waitUntilElementIsVisible(this.addButton); this.addButton.click(); return this; } clickOnResetButton() { - Util.waitUntilElementIsVisible(this.resetButton); + BrowserVisibility.waitUntilElementIsVisible(this.resetButton); this.resetButton.click(); return this; } clickOnTextField() { const toggleText = element(by.css(`div[data-automation-id='card-textitem-edit-toggle-name']`)); - Util.waitUntilElementIsVisible(toggleText); + BrowserVisibility.waitUntilElementIsVisible(toggleText); toggleText.click(); - Util.waitUntilElementIsVisible(this.textField); + BrowserVisibility.waitUntilElementIsVisible(this.textField); return this; } clickOnTextClearIcon() { const clearIcon = element(by.css(`mat-icon[data-automation-id="card-textitem-reset-name"]`)); - Util.waitUntilElementIsVisible(clearIcon); + BrowserVisibility.waitUntilElementIsVisible(clearIcon); return clearIcon.click(); } clickOnTextSaveIcon() { const saveIcon = element(by.css(`mat-icon[data-automation-id="card-textitem-update-name"]`)); - Util.waitUntilElementIsVisible(saveIcon); + BrowserVisibility.waitUntilElementIsVisible(saveIcon); return saveIcon.click(); } getTextFieldText() { const textField = element(by.css(`span[data-automation-id="card-textitem-value-name"]`)); - Util.waitUntilElementIsVisible(textField); + BrowserVisibility.waitUntilElementIsVisible(textField); return textField.getText(); } enterTextField(text) { - Util.waitUntilElementIsVisible(this.textField); + BrowserVisibility.waitUntilElementIsVisible(this.textField); this.textField.sendKeys(''); this.textField.clear(); this.textField.sendKeys(text); @@ -85,26 +85,26 @@ export class CardViewComponentPage { clickOnIntField() { const toggleText = element(by.css('div[data-automation-id="card-textitem-edit-toggle-int"]')); - Util.waitUntilElementIsVisible(toggleText); + BrowserVisibility.waitUntilElementIsVisible(toggleText); toggleText.click(); - Util.waitUntilElementIsVisible(this.intField); + BrowserVisibility.waitUntilElementIsVisible(this.intField); return this; } clickOnIntClearIcon() { const clearIcon = element(by.css('mat-icon[data-automation-id="card-textitem-reset-int"]')); - Util.waitUntilElementIsVisible(clearIcon); + BrowserVisibility.waitUntilElementIsVisible(clearIcon); return clearIcon.click(); } clickOnIntSaveIcon() { const saveIcon = element(by.css('mat-icon[data-automation-id="card-textitem-update-int"]')); - Util.waitUntilElementIsVisible(saveIcon); + BrowserVisibility.waitUntilElementIsVisible(saveIcon); return saveIcon.click(); } enterIntField(text) { - Util.waitUntilElementIsVisible(this.intField); + BrowserVisibility.waitUntilElementIsVisible(this.intField); this.intField.sendKeys(''); this.intField.clear(); this.intField.sendKeys(text); @@ -113,38 +113,38 @@ export class CardViewComponentPage { getIntFieldText() { const textField = element(by.css('span[data-automation-id="card-textitem-value-int"]')); - Util.waitUntilElementIsVisible(textField); + BrowserVisibility.waitUntilElementIsVisible(textField); return textField.getText(); } getErrorInt() { const errorElement = element(by.css('mat-error[data-automation-id="card-textitem-error-int"]')); - Util.waitUntilElementIsVisible(errorElement); + BrowserVisibility.waitUntilElementIsVisible(errorElement); return errorElement.getText(); } clickOnFloatField() { const toggleText = element(by.css('div[data-automation-id="card-textitem-edit-toggle-float"]')); - Util.waitUntilElementIsVisible(toggleText); + BrowserVisibility.waitUntilElementIsVisible(toggleText); toggleText.click(); - Util.waitUntilElementIsVisible(this.floatField); + BrowserVisibility.waitUntilElementIsVisible(this.floatField); return this; } clickOnFloatClearIcon() { const clearIcon = element(by.css(`mat-icon[data-automation-id="card-textitem-reset-float"]`)); - Util.waitUntilElementIsVisible(clearIcon); + BrowserVisibility.waitUntilElementIsVisible(clearIcon); return clearIcon.click(); } clickOnFloatSaveIcon() { const saveIcon = element(by.css(`mat-icon[data-automation-id="card-textitem-update-float"]`)); - Util.waitUntilElementIsVisible(saveIcon); + BrowserVisibility.waitUntilElementIsVisible(saveIcon); return saveIcon.click(); } enterFloatField(text) { - Util.waitUntilElementIsVisible(this.floatField); + BrowserVisibility.waitUntilElementIsVisible(this.floatField); this.floatField.sendKeys(''); this.floatField.clear(); this.floatField.sendKeys(text); @@ -153,30 +153,30 @@ export class CardViewComponentPage { getFloatFieldText() { const textField = element(by.css('span[data-automation-id="card-textitem-value-float"]')); - Util.waitUntilElementIsVisible(textField); + BrowserVisibility.waitUntilElementIsVisible(textField); return textField.getText(); } getErrorFloat() { const errorElement = element(by.css('mat-error[data-automation-id="card-textitem-error-float"]')); - Util.waitUntilElementIsVisible(errorElement); + BrowserVisibility.waitUntilElementIsVisible(errorElement); return errorElement.getText(); } setName(name) { - Util.waitUntilElementIsVisible(this.nameInputField); + BrowserVisibility.waitUntilElementIsVisible(this.nameInputField); this.nameInputField.sendKeys(name); return this; } setValue(value) { - Util.waitUntilElementIsVisible(this.valueInputField); + BrowserVisibility.waitUntilElementIsVisible(this.valueInputField); this.valueInputField.sendKeys(value); return this; } waitForOutput() { - Util.waitUntilElementIsVisible(this.consoleLog); + BrowserVisibility.waitUntilElementIsVisible(this.consoleLog); return this; } @@ -185,13 +185,13 @@ export class CardViewComponentPage { } deletePairsValues() { - Util.waitUntilElementIsVisible(this.deleteButton); + BrowserVisibility.waitUntilElementIsVisible(this.deleteButton); this.deleteButton.click(); return this; } checkNameAndValueVisibility(index) { - Util.waitUntilElementIsNotOnPage(this.getKeyValueRow(index)); + BrowserVisibility.waitUntilElementIsNotOnPage(this.getKeyValueRow(index)); return this; } @@ -206,7 +206,7 @@ export class CardViewComponentPage { clickSelectBox() { this.select.click(); - Util.waitUntilElementIsVisible(this.listContent); + BrowserVisibility.waitUntilElementIsVisible(this.listContent); } checkboxClick() { @@ -215,7 +215,7 @@ export class CardViewComponentPage { selectValueFromComboBox(index) { const value = this.getMatSelectValue(index).click(); - Util.waitUntilElementIsVisible(value); + BrowserVisibility.waitUntilElementIsVisible(value); return this; } @@ -224,7 +224,7 @@ export class CardViewComponentPage { } disableEdit() { - Util.waitUntilElementIsVisible(this.editableSwitch); + BrowserVisibility.waitUntilElementIsVisible(this.editableSwitch); this.editableSwitch.getAttribute('class').then((check) => { if (check.indexOf('mat-checked') > -1) { diff --git a/e2e/pages/adf/commentsPage.ts b/e2e/pages/adf/commentsPage.ts index 9fce3b0640..0c6b7c02cc 100644 --- a/e2e/pages/adf/commentsPage.ts +++ b/e2e/pages/adf/commentsPage.ts @@ -17,8 +17,8 @@ import { element, by } from 'protractor'; -import { Util } from '../../util/util'; import { TabsPage } from '@alfresco/adf-testing'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class CommentsPage { @@ -32,36 +32,36 @@ export class CommentsPage { addCommentButton = element(by.css("[data-automation-id='comments-input-add']")); getTotalNumberOfComments() { - Util.waitUntilElementIsVisible(this.numberOfComments); + BrowserVisibility.waitUntilElementIsVisible(this.numberOfComments); return this.numberOfComments.getText(); } checkUserIconIsDisplayed(position) { - Util.waitUntilElementIsVisible(this.commentUserIcon); + BrowserVisibility.waitUntilElementIsVisible(this.commentUserIcon); return this.commentUserIcon.get(position); } getUserName(position) { - Util.waitUntilElementIsVisible(this.commentUserName); + BrowserVisibility.waitUntilElementIsVisible(this.commentUserName); return this.commentUserName.get(position).getText(); } getMessage(position) { - Util.waitUntilElementIsVisible(this.commentMessage); + BrowserVisibility.waitUntilElementIsVisible(this.commentMessage); return this.commentMessage.get(position).getText(); } getTime(position) { - Util.waitUntilElementIsVisible(this.commentTime); + BrowserVisibility.waitUntilElementIsVisible(this.commentTime); return this.commentTime.get(position).getText(); } checkCommentInputIsNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.commentInput); + BrowserVisibility.waitUntilElementIsNotVisible(this.commentInput); } addComment(comment) { - Util.waitUntilElementIsVisible(this.commentInput); + BrowserVisibility.waitUntilElementIsVisible(this.commentInput); this.commentInput.sendKeys(comment); return this.addCommentButton.click(); } @@ -71,6 +71,6 @@ export class CommentsPage { } checkCommentInputIsDisplayed() { - Util.waitUntilElementIsVisible(this.commentInput); + BrowserVisibility.waitUntilElementIsVisible(this.commentInput); } } diff --git a/e2e/pages/adf/configEditorPage.ts b/e2e/pages/adf/configEditorPage.ts index aebf4585ae..306319baea 100644 --- a/e2e/pages/adf/configEditorPage.ts +++ b/e2e/pages/adf/configEditorPage.ts @@ -16,20 +16,20 @@ */ import { element, by, browser } from 'protractor'; -import { Util } from '../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class ConfigEditorPage { enterConfiguration(text) { const textField = element(by.css('#adf-code-configuration-editor div.overflow-guard > textarea')); - Util.waitUntilElementIsVisible(textField); + BrowserVisibility.waitUntilElementIsVisible(textField); textField.sendKeys(text); return this; } enterBigConfigurationText(text) { const textField = element(by.css('#adf-code-configuration-editor div.overflow-guard > textarea')); - Util.waitUntilElementIsVisible(textField); + BrowserVisibility.waitUntilElementIsVisible(textField); browser.executeScript('this.monaco.editor.getModels()[0].setValue(`' + text + '`)'); return this; @@ -37,64 +37,64 @@ export class ConfigEditorPage { clickSaveButton() { const saveButton = element(by.id('adf-configuration-save')); - Util.waitUntilElementIsVisible(saveButton); - Util.waitUntilElementIsClickable(saveButton); + BrowserVisibility.waitUntilElementIsVisible(saveButton); + BrowserVisibility.waitUntilElementIsClickable(saveButton); return saveButton.click(); } clickClearButton() { const clearButton = element(by.id('adf-configuration-clear')); - Util.waitUntilElementIsVisible(clearButton); - Util.waitUntilElementIsClickable(clearButton); + BrowserVisibility.waitUntilElementIsVisible(clearButton); + BrowserVisibility.waitUntilElementIsClickable(clearButton); return clearButton.click(); } clickFileConfiguration() { const button = element(by.id('adf-file-conf')); - Util.waitUntilElementIsVisible(button); - Util.waitUntilElementIsClickable(button); + BrowserVisibility.waitUntilElementIsVisible(button); + BrowserVisibility.waitUntilElementIsClickable(button); return button.click(); } clickSearchConfiguration() { const button = element(by.id('adf-search-conf')); - Util.waitUntilElementIsVisible(button); - Util.waitUntilElementIsClickable(button); + BrowserVisibility.waitUntilElementIsVisible(button); + BrowserVisibility.waitUntilElementIsClickable(button); return button.click(); } clickProcessListCloudConfiguration() { const button = element(by.id('adf-process-list-cloud-conf')); - Util.waitUntilElementIsVisible(button); - Util.waitUntilElementIsClickable(button); + BrowserVisibility.waitUntilElementIsVisible(button); + BrowserVisibility.waitUntilElementIsClickable(button); return button.click(); } clickEditProcessCloudConfiguration() { const button = element(by.id('adf-edit-process-filter-conf')); - Util.waitUntilElementIsVisible(button); - Util.waitUntilElementIsClickable(button); + BrowserVisibility.waitUntilElementIsVisible(button); + BrowserVisibility.waitUntilElementIsClickable(button); return button.click(); } clickEditTaskConfiguration() { const button = element(by.id('adf-edit-task-filter-conf')); - Util.waitUntilElementIsVisible(button); - Util.waitUntilElementIsClickable(button); + BrowserVisibility.waitUntilElementIsVisible(button); + BrowserVisibility.waitUntilElementIsClickable(button); return button.click(); } clickTaskListCloudConfiguration() { const button = element(by.id('adf-task-list-cloud-conf')); - Util.waitUntilElementIsVisible(button); - Util.waitUntilElementIsClickable(button); + BrowserVisibility.waitUntilElementIsVisible(button); + BrowserVisibility.waitUntilElementIsClickable(button); return button.click(); } clickInfinitePaginationConfiguration() { const button = element(by.id('adf-infinite-pagination-conf')); - Util.waitUntilElementIsVisible(button); - Util.waitUntilElementIsClickable(button); + BrowserVisibility.waitUntilElementIsVisible(button); + BrowserVisibility.waitUntilElementIsClickable(button); return button.click(); } } diff --git a/e2e/pages/adf/content-services/documentListPage.ts b/e2e/pages/adf/content-services/documentListPage.ts index 13afd6e0b3..034930ec6d 100644 --- a/e2e/pages/adf/content-services/documentListPage.ts +++ b/e2e/pages/adf/content-services/documentListPage.ts @@ -17,7 +17,7 @@ import { by, element, ElementFinder, browser } from 'protractor'; import { DataTableComponentPage } from '../dataTableComponentPage'; -import { Util } from '../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class DocumentListPage { @@ -34,21 +34,21 @@ export class DocumentListPage { } checkLockedIcon(content) { - const row = this.dataTable.getRowParentElement('Display name', content); + const row = this.dataTable.getRow('Display name', content); const lockIcon = row.element(by.cssContainingText('div[title="Lock"] mat-icon', 'lock')); - Util.waitUntilElementIsVisible(lockIcon); + BrowserVisibility.waitUntilElementIsVisible(lockIcon); return this; } checkUnlockedIcon(content) { - const row = this.dataTable.getRowParentElement('Display name', content); + const row = this.dataTable.getRow('Display name', content); const lockIcon = row.element(by.cssContainingText('div[title="Lock"] mat-icon', 'lock_open')); - Util.waitUntilElementIsVisible(lockIcon); + BrowserVisibility.waitUntilElementIsVisible(lockIcon); return this; } waitForTableBody() { - return Util.waitUntilElementIsVisible(this.tableBody); + return BrowserVisibility.waitUntilElementIsVisible(this.tableBody); } getTooltip(nodeName) { @@ -64,15 +64,15 @@ export class DocumentListPage { } clickOnActionMenu(content) { - const row = this.dataTable.getRowParentElement('Display name', content); + const row = this.dataTable.getRow('Display name', content); row.element(this.optionButton).click(); - Util.waitUntilElementIsVisible(this.actionMenu); + BrowserVisibility.waitUntilElementIsVisible(this.actionMenu); browser.sleep(500); return this; } checkActionMenuIsNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.actionMenu); + BrowserVisibility.waitUntilElementIsNotVisible(this.actionMenu); return this; } diff --git a/e2e/pages/adf/content-services/search/components/dateRangeFilterPage.ts b/e2e/pages/adf/content-services/search/components/dateRangeFilterPage.ts index 1af248d5cc..2be8311358 100644 --- a/e2e/pages/adf/content-services/search/components/dateRangeFilterPage.ts +++ b/e2e/pages/adf/content-services/search/components/dateRangeFilterPage.ts @@ -15,9 +15,9 @@ * limitations under the License. */ -import { Util } from '../../../../../util/util'; import { by, browser, protractor } from 'protractor'; import { DatePickerPage } from '../../../material/datePickerPage'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class DateRangeFilterPage { @@ -54,25 +54,25 @@ export class DateRangeFilterPage { } openFromDatePicker() { - Util.waitUntilElementIsClickable(this.filter.element(this.fromDateToggle)); + BrowserVisibility.waitUntilElementIsClickable(this.filter.element(this.fromDateToggle)); this.filter.element(this.fromDateToggle).click(); return new DatePickerPage().checkDatePickerIsDisplayed(); } openToDatePicker() { - Util.waitUntilElementIsClickable(this.filter.element(this.toDateToggle)); + BrowserVisibility.waitUntilElementIsClickable(this.filter.element(this.toDateToggle)); this.filter.element(this.toDateToggle).click(); return new DatePickerPage().checkDatePickerIsDisplayed(); } clickFromField() { - Util.waitUntilElementIsClickable(this.filter.element(this.fromField)); + BrowserVisibility.waitUntilElementIsClickable(this.filter.element(this.fromField)); this.filter.element(this.fromField).click(); return this; } checkFromErrorMessageIsDisplayed(msg) { - Util.waitUntilElementIsVisible(this.filter.element(this.fromErrorMessage)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.fromErrorMessage)); browser.controlFlow().execute(async () => { await expect(this.filter.element(this.fromErrorMessage).getText()).toEqual(msg); }); @@ -80,17 +80,17 @@ export class DateRangeFilterPage { } checkFromErrorMessageIsNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.filter.element(this.fromErrorMessage)); + BrowserVisibility.waitUntilElementIsNotVisible(this.filter.element(this.fromErrorMessage)); return this; } checkFromFieldIsDisplayed() { - Util.waitUntilElementIsVisible(this.filter.element(this.fromField)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.fromField)); return this; } checkFromDateToggleIsDisplayed() { - Util.waitUntilElementIsVisible(this.filter.element(this.fromDateToggle)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.fromDateToggle)); return this; } @@ -107,13 +107,13 @@ export class DateRangeFilterPage { } clickToField() { - Util.waitUntilElementIsClickable(this.filter.element(this.toField)); + BrowserVisibility.waitUntilElementIsClickable(this.filter.element(this.toField)); this.filter.element(this.toField).click(); return this; } checkToErrorMessageIsDisplayed(msg) { - Util.waitUntilElementIsVisible(this.filter.element(this.toErrorMessage)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.toErrorMessage)); browser.controlFlow().execute(async () => { await expect(this.filter.element(this.toErrorMessage).getText()).toEqual(msg); }); @@ -121,23 +121,23 @@ export class DateRangeFilterPage { } checkToFieldIsDisplayed() { - Util.waitUntilElementIsVisible(this.filter.element(this.toField)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.toField)); return this; } checkToDateToggleIsDisplayed() { - Util.waitUntilElementIsVisible(this.filter.element(this.toDateToggle)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.toDateToggle)); return this; } clickApplyButton() { - Util.waitUntilElementIsClickable(this.filter.element(this.applyButton)); + BrowserVisibility.waitUntilElementIsClickable(this.filter.element(this.applyButton)); this.filter.element(this.applyButton).click(); return this; } checkApplyButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.filter.element(this.applyButton)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.applyButton)); return this; } @@ -156,7 +156,7 @@ export class DateRangeFilterPage { } checkClearButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.filter.element(this.clearButton)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.clearButton)); return this; } } diff --git a/e2e/pages/adf/content-services/search/components/numberRangeFilterPage.ts b/e2e/pages/adf/content-services/search/components/numberRangeFilterPage.ts index 8b94a215c2..287eec5af2 100644 --- a/e2e/pages/adf/content-services/search/components/numberRangeFilterPage.ts +++ b/e2e/pages/adf/content-services/search/components/numberRangeFilterPage.ts @@ -14,8 +14,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Util } from '../../../../../util/util'; import { by, protractor } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class NumberRangeFilterPage { @@ -33,7 +33,7 @@ export class NumberRangeFilterPage { this.filter = filter; } clearFromField() { - Util.waitUntilElementIsClickable(this.filter.element(this.fromInput)); + BrowserVisibility.waitUntilElementIsClickable(this.filter.element(this.fromInput)); this.filter.element(this.fromInput).getAttribute('value').then((value) => { for (let i = value.length; i >= 0; i--) { this.filter.element(this.fromInput).sendKeys(protractor.Key.BACK_SPACE); @@ -52,27 +52,27 @@ export class NumberRangeFilterPage { return this; } getFromErrorRequired() { - Util.waitUntilElementIsVisible(this.filter.element(this.fromErrorRequired)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.fromErrorRequired)); return this.filter.element(this.fromErrorRequired).getText(); } checkFromErrorRequiredIsDisplayed() { - Util.waitUntilElementIsVisible(this.filter.element(this.fromErrorRequired)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.fromErrorRequired)); return this; } getFromErrorInvalid() { - Util.waitUntilElementIsVisible(this.filter.element(this.fromErrorInvalid)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.fromErrorInvalid)); return this.filter.element(this.fromErrorInvalid).getText(); } checkFromErrorInvalidIsDisplayed() { - Util.waitUntilElementIsVisible(this.filter.element(this.fromErrorInvalid)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.fromErrorInvalid)); return this; } checkFromFieldIsDisplayed() { - Util.waitUntilElementIsVisible(this.filter.element(this.fromInput)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.fromInput)); return this; } clearToField() { - Util.waitUntilElementIsClickable(this.filter.element(this.toInput)); + BrowserVisibility.waitUntilElementIsClickable(this.filter.element(this.toInput)); this.filter.element(this.toInput).getAttribute('value').then((value) => { for (let i = value.length; i >= 0; i--) { this.filter.element(this.toInput).sendKeys(protractor.Key.BACK_SPACE); @@ -91,51 +91,51 @@ export class NumberRangeFilterPage { return this; } getToErrorRequired() { - Util.waitUntilElementIsVisible(this.filter.element(this.toErrorRequired)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.toErrorRequired)); return this.filter.element(this.toErrorRequired).getText(); } checkToErrorRequiredIsDisplayed() { - Util.waitUntilElementIsVisible(this.filter.element(this.toErrorRequired)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.toErrorRequired)); return this; } getToErrorInvalid() { - Util.waitUntilElementIsVisible(this.filter.element(this.toErrorInvalid)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.toErrorInvalid)); return this.filter.element(this.toErrorInvalid).getText(); } checkToErrorInvalidIsDisplayed() { - Util.waitUntilElementIsVisible(this.filter.element(this.toErrorInvalid)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.toErrorInvalid)); return this; } checkToFieldIsDisplayed() { - Util.waitUntilElementIsVisible(this.filter.element(this.toInput)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.toInput)); return this; } clickApplyButton() { - Util.waitUntilElementIsClickable(this.filter.element(this.applyButton)); + BrowserVisibility.waitUntilElementIsClickable(this.filter.element(this.applyButton)); this.filter.element(this.applyButton).click(); return this; } checkApplyButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.filter.element(this.applyButton)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.applyButton)); return this; } checkApplyButtonIsEnabled() { return this.filter.element(this.applyButton).isEnabled(); } clickClearButton() { - Util.waitUntilElementIsClickable(this.filter.element(this.clearButton)); + BrowserVisibility.waitUntilElementIsClickable(this.filter.element(this.clearButton)); this.filter.element(this.clearButton).click(); return this; } checkClearButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.filter.element(this.clearButton)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.clearButton)); return this; } checkNoErrorMessageIsDisplayed() { - Util.waitUntilElementIsNotVisible(this.filter.element(this.fromErrorInvalid)); - Util.waitUntilElementIsNotVisible(this.filter.element(this.fromErrorRequired)); - Util.waitUntilElementIsNotVisible(this.filter.element(this.toErrorInvalid)); - Util.waitUntilElementIsNotVisible(this.filter.element(this.toErrorRequired)); + BrowserVisibility.waitUntilElementIsNotVisible(this.filter.element(this.fromErrorInvalid)); + BrowserVisibility.waitUntilElementIsNotVisible(this.filter.element(this.fromErrorRequired)); + BrowserVisibility.waitUntilElementIsNotVisible(this.filter.element(this.toErrorInvalid)); + BrowserVisibility.waitUntilElementIsNotVisible(this.filter.element(this.toErrorRequired)); return this; } } diff --git a/e2e/pages/adf/content-services/search/components/search-checkList.ts b/e2e/pages/adf/content-services/search/components/search-checkList.ts index e980b88239..57c51e5660 100644 --- a/e2e/pages/adf/content-services/search/components/search-checkList.ts +++ b/e2e/pages/adf/content-services/search/components/search-checkList.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import { Util } from '../../../../../util/util'; import { element, by, ElementFinder } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class SearchCheckListPage { @@ -31,26 +31,26 @@ export class SearchCheckListPage { } clickCheckListOption(option) { - Util.waitUntilElementIsVisible(this.filter); + BrowserVisibility.waitUntilElementIsVisible(this.filter); const result = this.filter.all(by.css(`mat-checkbox[data-automation-id*='-${option}'] .mat-checkbox-inner-container`)).first(); - Util.waitUntilElementIsVisible(result); - Util.waitUntilElementIsClickable(result); + BrowserVisibility.waitUntilElementIsVisible(result); + BrowserVisibility.waitUntilElementIsClickable(result); result.click(); } checkChipIsDisplayed(option) { - Util.waitUntilElementIsVisible(element(by.cssContainingText('mat-chip', option)).element(by.css('mat-icon'))); + BrowserVisibility.waitUntilElementIsVisible(element(by.cssContainingText('mat-chip', option)).element(by.css('mat-icon'))); return this; } checkChipIsNotDisplayed(option) { - Util.waitUntilElementIsNotOnPage(element(by.cssContainingText('mat-chip', option)).element(by.css('mat-icon'))); + BrowserVisibility.waitUntilElementIsNotOnPage(element(by.cssContainingText('mat-chip', option)).element(by.css('mat-icon'))); return this; } removeFilterOption(option) { const cancelChipButton = element(by.cssContainingText('mat-chip', option)).element(by.css('mat-icon')); - Util.waitUntilElementIsClickable(cancelChipButton); + BrowserVisibility.waitUntilElementIsClickable(cancelChipButton); cancelChipButton.click(); return this; } @@ -63,14 +63,14 @@ export class SearchCheckListPage { } checkSearchFilterInputIsDisplayed() { - Util.waitUntilElementIsVisible(this.filter.all(this.inputBy).first()); + BrowserVisibility.waitUntilElementIsVisible(this.filter.all(this.inputBy).first()); return this; } searchInFilter(option) { - Util.waitUntilElementIsClickable(this.filter); + BrowserVisibility.waitUntilElementIsClickable(this.filter); const inputElement = this.filter.all(this.inputBy).first(); - Util.waitUntilElementIsClickable(inputElement); + BrowserVisibility.waitUntilElementIsClickable(inputElement); inputElement.clear(); this.filter.all(this.inputBy).first().sendKeys(option); @@ -78,22 +78,22 @@ export class SearchCheckListPage { } checkShowLessButtonIsNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.filter.element(this.showLessBy)); + BrowserVisibility.waitUntilElementIsNotVisible(this.filter.element(this.showLessBy)); return this; } checkShowLessButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.filter.element(this.showLessBy)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.showLessBy)); return this; } checkShowMoreButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.filter.element(this.showMoreBy)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.showMoreBy)); return this; } checkShowMoreButtonIsNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.filter.element(this.showMoreBy)); + BrowserVisibility.waitUntilElementIsNotVisible(this.filter.element(this.showMoreBy)); return this; } @@ -104,7 +104,7 @@ export class SearchCheckListPage { this.clickShowMoreButtonUntilIsNotDisplayed(); } - }, (err) => { + }, () => { }); return this; } @@ -116,14 +116,14 @@ export class SearchCheckListPage { this.clickShowLessButtonUntilIsNotDisplayed(); } - }, (err) => { + }, () => { }); return this; } getBucketNumberOfFilterType(option) { const fileTypeFilter = this.filter.all(by.css('mat-checkbox[data-automation-id*=".' + option + '"] span')).first(); - Util.waitUntilElementIsVisible(fileTypeFilter); + BrowserVisibility.waitUntilElementIsVisible(fileTypeFilter); const bucketNumber = fileTypeFilter.getText().then((valueOfBucket) => { const numberOfBucket = valueOfBucket.split('(')[1]; const totalNumberOfBucket = numberOfBucket.split(')')[0]; @@ -134,49 +134,49 @@ export class SearchCheckListPage { } checkCheckListOptionIsDisplayed(option) { - Util.waitUntilElementIsVisible(this.filter); + BrowserVisibility.waitUntilElementIsVisible(this.filter); const result = this.filter.element(by.css(`mat-checkbox[data-automation-id*='-${option}']`)); - return Util.waitUntilElementIsVisible(result); + return BrowserVisibility.waitUntilElementIsVisible(result); } checkCheckListOptionIsNotSelected(option) { - Util.waitUntilElementIsVisible(this.filter); + BrowserVisibility.waitUntilElementIsVisible(this.filter); const result = this.filter.element(by.css(`mat-checkbox[data-automation-id*='-${option}'][class*='checked']`)); - return Util.waitUntilElementIsNotVisible(result); + return BrowserVisibility.waitUntilElementIsNotVisible(result); } checkCheckListOptionIsSelected(option) { - Util.waitUntilElementIsVisible(this.filter); + BrowserVisibility.waitUntilElementIsVisible(this.filter); const result = this.filter.element(by.css(`mat-checkbox[data-automation-id*='-${option}'][class*='checked']`)); - return Util.waitUntilElementIsVisible(result); + return BrowserVisibility.waitUntilElementIsVisible(result); } checkClearAllButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.filter); + BrowserVisibility.waitUntilElementIsVisible(this.filter); const result = this.filter.element(this.clearAllButton); - return Util.waitUntilElementIsVisible(result); + return BrowserVisibility.waitUntilElementIsVisible(result); } clickClearAllButton() { - Util.waitUntilElementIsVisible(this.filter); + BrowserVisibility.waitUntilElementIsVisible(this.filter); const result = this.filter.element(this.clearAllButton); - Util.waitUntilElementIsVisible(result); + BrowserVisibility.waitUntilElementIsVisible(result); return result.click(); } getCheckListOptionsNumberOnPage() { - Util.waitUntilElementIsVisible(this.filter); + BrowserVisibility.waitUntilElementIsVisible(this.filter); const checkListOptions = this.filter.all(by.css('div[class="checklist"] mat-checkbox')); return checkListOptions.count(); } clickShowMoreButton() { - Util.waitUntilElementIsVisible(this.filter.element(this.showMoreBy)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.showMoreBy)); return this.filter.element(this.showMoreBy).click(); } clickShowLessButton() { - Util.waitUntilElementIsVisible(this.filter.element(this.showLessBy)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.showLessBy)); return this.filter.element(this.showLessBy).click(); } diff --git a/e2e/pages/adf/content-services/search/components/search-radio.ts b/e2e/pages/adf/content-services/search/components/search-radio.ts index 251980bfd3..b72300ba3a 100644 --- a/e2e/pages/adf/content-services/search/components/search-radio.ts +++ b/e2e/pages/adf/content-services/search/components/search-radio.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import { Util } from '../../../../../util/util'; import { element, by, browser } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class SearchRadioPage { @@ -30,12 +30,12 @@ export class SearchRadioPage { checkFilterRadioButtonIsDisplayed(filterName) { const filterType = element(by.css('mat-radio-button[data-automation-id="search-radio-' + filterName + '"]')); - return Util.waitUntilElementIsVisible(filterType); + return BrowserVisibility.waitUntilElementIsVisible(filterType); } checkFilterRadioButtonIsChecked(filterName) { const selectedFilterType = element(by.css('mat-radio-button[data-automation-id="search-radio-' + filterName + '"][class*="checked"]')); - return Util.waitUntilElementIsVisible(selectedFilterType); + return BrowserVisibility.waitUntilElementIsVisible(selectedFilterType); } clickFilterRadioButton(filterName) { @@ -48,28 +48,28 @@ export class SearchRadioPage { } checkShowMoreButtonIsDisplayed() { - return Util.waitUntilElementIsVisible(this.showMoreButton); + return BrowserVisibility.waitUntilElementIsVisible(this.showMoreButton); } checkShowLessButtonIsDisplayed() { - return Util.waitUntilElementIsVisible(this.showLessButton); + return BrowserVisibility.waitUntilElementIsVisible(this.showLessButton); } checkShowMoreButtonIsNotDisplayed() { - return Util.waitUntilElementIsNotVisible(this.showMoreButton); + return BrowserVisibility.waitUntilElementIsNotVisible(this.showMoreButton); } checkShowLessButtonIsNotDisplayed() { - return Util.waitUntilElementIsNotVisible(this.showLessButton); + return BrowserVisibility.waitUntilElementIsNotVisible(this.showLessButton); } clickShowMoreButton() { - Util.waitUntilElementIsVisible(this.showMoreButton); + BrowserVisibility.waitUntilElementIsVisible(this.showMoreButton); return this.showMoreButton.click(); } clickShowLessButton() { - Util.waitUntilElementIsVisible(this.showLessButton); + BrowserVisibility.waitUntilElementIsVisible(this.showLessButton); return this.showLessButton.click(); } diff --git a/e2e/pages/adf/content-services/search/components/search-slider.page.ts b/e2e/pages/adf/content-services/search/components/search-slider.page.ts index b1c920bc45..dfc835f612 100644 --- a/e2e/pages/adf/content-services/search/components/search-slider.page.ts +++ b/e2e/pages/adf/content-services/search/components/search-slider.page.ts @@ -16,7 +16,7 @@ */ import { browser, by } from 'protractor'; -import { Util } from '../../../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class SearchSliderPage { @@ -51,17 +51,17 @@ export class SearchSliderPage { } checkSliderIsDisplayed() { - Util.waitUntilElementIsVisible(this.filter.element(this.slider)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.slider)); return this; } checkSliderWithThumbLabelIsNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.filter.element(this.sliderWithThumbLabel)); + BrowserVisibility.waitUntilElementIsNotVisible(this.filter.element(this.sliderWithThumbLabel)); return this; } clickClearButton() { - Util.waitUntilElementIsClickable(this.filter.element(this.clearButton)); + BrowserVisibility.waitUntilElementIsClickable(this.filter.element(this.clearButton)); this.filter.element(this.clearButton).click(); return this; } @@ -71,7 +71,7 @@ export class SearchSliderPage { } checkClearButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.filter.element(this.clearButton)); + BrowserVisibility.waitUntilElementIsVisible(this.filter.element(this.clearButton)); return this; } } diff --git a/e2e/pages/adf/content-services/search/components/search-sortingPicker.page.ts b/e2e/pages/adf/content-services/search/components/search-sortingPicker.page.ts index 3f18daea60..f00c5ebd37 100644 --- a/e2e/pages/adf/content-services/search/components/search-sortingPicker.page.ts +++ b/e2e/pages/adf/content-services/search/components/search-sortingPicker.page.ts @@ -16,7 +16,7 @@ */ import { browser, by, element, protractor } from 'protractor'; -import { Util } from '../../../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class SearchSortingPickerPage { @@ -25,18 +25,18 @@ export class SearchSortingPickerPage { optionsDropdown = element(by.css('div[class*="mat-select-panel"]')); sortBy(sortOrder, sortType) { - Util.waitUntilElementIsClickable(this.sortingSelector); + BrowserVisibility.waitUntilElementIsClickable(this.sortingSelector); this.sortingSelector.click(); const selectedSortingOption = element(by.cssContainingText('span[class="mat-option-text"]', sortType)); - Util.waitUntilElementIsClickable(selectedSortingOption); + BrowserVisibility.waitUntilElementIsClickable(selectedSortingOption); selectedSortingOption.click(); this.sortByOrder(sortOrder); } sortByOrder(sortOrder) { - Util.waitUntilElementIsVisible(this.orderArrow); + BrowserVisibility.waitUntilElementIsVisible(this.orderArrow); this.orderArrow.getText().then((result) => { if (sortOrder === true) { if (result !== 'arrow_upward') { @@ -52,42 +52,42 @@ export class SearchSortingPickerPage { clickSortingOption(option) { const selectedSortingOption = element(by.cssContainingText('span[class="mat-option-text"]', option)); - Util.waitUntilElementIsClickable(selectedSortingOption); + BrowserVisibility.waitUntilElementIsClickable(selectedSortingOption); selectedSortingOption.click(); return this; } clickSortingSelector() { - Util.waitUntilElementIsClickable(this.sortingSelector); + BrowserVisibility.waitUntilElementIsClickable(this.sortingSelector); this.sortingSelector.click(); return this; } checkOptionIsDisplayed(option) { const optionSelector = this.optionsDropdown.element(by.cssContainingText('span[class="mat-option-text"]', option)); - Util.waitUntilElementIsVisible(optionSelector); + BrowserVisibility.waitUntilElementIsVisible(optionSelector); return this; } checkOptionIsNotDisplayed(option) { const optionSelector = this.optionsDropdown.element(by.cssContainingText('span[class="mat-option-text"]', option)); - Util.waitUntilElementIsNotVisible(optionSelector); + BrowserVisibility.waitUntilElementIsNotVisible(optionSelector); return this; } checkOptionsDropdownIsDisplayed() { - Util.waitUntilElementIsVisible(this.optionsDropdown); + BrowserVisibility.waitUntilElementIsVisible(this.optionsDropdown); return this; } checkSortingSelectorIsDisplayed() { - Util.waitUntilElementIsVisible(this.sortingSelector); + BrowserVisibility.waitUntilElementIsVisible(this.sortingSelector); return this; } checkOrderArrowIsDownward() { const deferred = protractor.promise.defer(); - Util.waitUntilElementIsVisible(this.orderArrow); + BrowserVisibility.waitUntilElementIsVisible(this.orderArrow); this.orderArrow.getText().then((result) => { deferred.fulfill(result !== 'arrow_upward'); }); @@ -95,7 +95,7 @@ export class SearchSortingPickerPage { } checkOrderArrowIsDisplayed() { - Util.waitUntilElementIsVisible(this.orderArrow); + BrowserVisibility.waitUntilElementIsVisible(this.orderArrow); return this; } diff --git a/e2e/pages/adf/content-services/search/components/search-text.ts b/e2e/pages/adf/content-services/search/components/search-text.ts index 4250dc137a..7d209a0bb7 100644 --- a/e2e/pages/adf/content-services/search/components/search-text.ts +++ b/e2e/pages/adf/content-services/search/components/search-text.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import { Util } from '../../../../../util/util'; import { protractor, by } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class SearchTextPage { @@ -28,12 +28,12 @@ export class SearchTextPage { } getNamePlaceholder() { - Util.waitUntilElementIsVisible(this.filter); + BrowserVisibility.waitUntilElementIsVisible(this.filter); return this.filter.element(this.inputBy).getAttribute('placeholder'); } searchByName(name) { - Util.waitUntilElementIsVisible(this.filter); + BrowserVisibility.waitUntilElementIsVisible(this.filter); this.filter.element(this.inputBy).clear(); this.filter.element(this.inputBy).sendKeys(name).sendKeys(protractor.Key.ENTER); } diff --git a/e2e/pages/adf/content-services/search/search-categories.ts b/e2e/pages/adf/content-services/search/search-categories.ts index ce726733ec..26115be40c 100644 --- a/e2e/pages/adf/content-services/search/search-categories.ts +++ b/e2e/pages/adf/content-services/search/search-categories.ts @@ -15,7 +15,6 @@ * limitations under the License. */ -import { Util } from '../../../../util/util'; import { by, ElementFinder } from 'protractor'; import { SearchTextPage } from './components/search-text'; import { SearchCheckListPage } from './components/search-checkList'; @@ -23,6 +22,7 @@ import { SearchRadioPage } from './components/search-radio'; import { DateRangeFilterPage } from './components/dateRangeFilterPage'; import { NumberRangeFilterPage } from './components/numberRangeFilterPage'; import { SearchSliderPage } from './components/search-slider.page'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class SearchCategoriesPage { @@ -51,19 +51,19 @@ export class SearchCategoriesPage { } checkFilterIsDisplayed(filter: ElementFinder) { - Util.waitUntilElementIsVisible(filter); + BrowserVisibility.waitUntilElementIsVisible(filter); return this; } clickFilter(filter: ElementFinder) { - Util.waitUntilElementIsVisible(filter); + BrowserVisibility.waitUntilElementIsVisible(filter); filter.element(by.css('mat-expansion-panel-header')).click(); return this; } clickFilterHeader(filter: ElementFinder) { const fileSizeFilterHeader = filter.element(by.css('mat-expansion-panel-header')); - Util.waitUntilElementIsClickable(fileSizeFilterHeader); + BrowserVisibility.waitUntilElementIsClickable(fileSizeFilterHeader); fileSizeFilterHeader.click(); return this; } diff --git a/e2e/pages/adf/content-services/treeViewPage.ts b/e2e/pages/adf/content-services/treeViewPage.ts index 42cb1d3ad4..a974aa78c4 100644 --- a/e2e/pages/adf/content-services/treeViewPage.ts +++ b/e2e/pages/adf/content-services/treeViewPage.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; import { element, by, protractor } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class TreeViewPage { @@ -26,42 +26,42 @@ export class TreeViewPage { nodesOnPage = element.all(by.css('mat-tree-node')); checkTreeViewTitleIsDisplayed() { - return Util.waitUntilElementIsVisible(this.treeViewTitle); + return BrowserVisibility.waitUntilElementIsVisible(this.treeViewTitle); } getNodeId() { - Util.waitUntilElementIsVisible(this.nodeIdInput); + BrowserVisibility.waitUntilElementIsVisible(this.nodeIdInput); return this.nodeIdInput.getAttribute('value'); } clickNode(nodeName) { const node = element(by.css('mat-tree-node[id="' + nodeName + '-tree-child-node"] button')); - Util.waitUntilElementIsClickable(node); + BrowserVisibility.waitUntilElementIsClickable(node); return node.click(); } checkNodeIsDisplayedAsClosed(nodeName) { const node = element(by.css('mat-tree-node[id="' + nodeName + '-tree-child-node"][aria-expanded="false"]')); - return Util.waitUntilElementIsVisible(node); + return BrowserVisibility.waitUntilElementIsVisible(node); } checkNodeIsDisplayedAsOpen(nodeName) { const node = element(by.css('mat-tree-node[id="' + nodeName + '-tree-child-node"][aria-expanded="true"]')); - return Util.waitUntilElementIsVisible(node); + return BrowserVisibility.waitUntilElementIsVisible(node); } checkClickedNodeName(nodeName) { const clickedNode = element(by.cssContainingText('span', ' CLICKED NODE: ' + nodeName + '')); - return Util.waitUntilElementIsVisible(clickedNode); + return BrowserVisibility.waitUntilElementIsVisible(clickedNode); } checkNodeIsNotDisplayed(nodeName) { const node = element(by.id('' + nodeName + '-tree-child-node')); - return Util.waitUntilElementIsNotVisible(node); + return BrowserVisibility.waitUntilElementIsNotVisible(node); } clearNodeIdInput() { - Util.waitUntilElementIsVisible(this.nodeIdInput); + BrowserVisibility.waitUntilElementIsVisible(this.nodeIdInput); this.nodeIdInput.getAttribute('value').then((value) => { for (let i = value.length; i >= 0; i--) { this.nodeIdInput.sendKeys(protractor.Key.BACK_SPACE); @@ -70,11 +70,11 @@ export class TreeViewPage { } checkNoNodeIdMessageIsDisplayed() { - return Util.waitUntilElementIsVisible(this.noNodeMessage); + return BrowserVisibility.waitUntilElementIsVisible(this.noNodeMessage); } addNodeId(nodeId) { - Util.waitUntilElementIsVisible(this.nodeIdInput); + BrowserVisibility.waitUntilElementIsVisible(this.nodeIdInput); this.nodeIdInput.click(); this.nodeIdInput.clear(); this.nodeIdInput.sendKeys(nodeId + ' '); @@ -83,7 +83,7 @@ export class TreeViewPage { checkErrorMessageIsDisplayed() { const clickedNode = element(by.cssContainingText('span', 'An Error Occurred ')); - return Util.waitUntilElementIsVisible(clickedNode); + return BrowserVisibility.waitUntilElementIsVisible(clickedNode); } getTotalNodes() { diff --git a/e2e/pages/adf/contentServicesPage.ts b/e2e/pages/adf/contentServicesPage.ts index 3bc7aa25ba..14617c7607 100644 --- a/e2e/pages/adf/contentServicesPage.ts +++ b/e2e/pages/adf/contentServicesPage.ts @@ -16,22 +16,20 @@ */ import TestConfig = require('../../test.config'); -import { Util } from '../../util/util'; import { DocumentListPage } from './content-services/documentListPage'; import { CreateFolderDialog } from './dialog/createFolderDialog'; import { CreateLibraryDialog } from './dialog/createLibraryDialog'; -import { NodeActions } from '../../actions/ACS/node.actions'; import { DropActions } from '../../actions/drop.actions'; import { by, element, protractor, $$, browser } from 'protractor'; import path = require('path'); import { DateUtil } from '../../util/dateUtil'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class ContentServicesPage { contentList = new DocumentListPage(element.all(by.css('adf-upload-drag-area adf-document-list')).first()); createFolderDialog = new CreateFolderDialog(); - nodeActions = new NodeActions(); createLibraryDialog = new CreateLibraryDialog(); dragAndDropAction = new DropActions(); uploadBorder = element(by.id('document-list-container')); @@ -75,6 +73,8 @@ export class ContentServicesPage { lockContentElement = element(by.css('button[data-automation-id="DOCUMENT_LIST.ACTIONS.LOCK"]')); downloadContent = element(by.css('button[data-automation-id*="DOWNLOAD"]')); siteListDropdown = element(by.css(`mat-select[data-automation-id='site-my-files-option']`)); + downloadButton = element(by.css('button[title="Download"]')); + multiSelectToggle = element(by.cssContainingText('span.mat-slide-toggle-content', ' Multiselect (with checkboxes) ')); pressContextMenuActionNamed(actionName) { const actionButton = this.checkContextActionIsVisible(actionName); @@ -83,8 +83,8 @@ export class ContentServicesPage { checkContextActionIsVisible(actionName) { const actionButton = element(by.css(`button[data-automation-id="context-${actionName}"`)); - Util.waitUntilElementIsVisible(actionButton); - Util.waitUntilElementIsClickable(actionButton); + BrowserVisibility.waitUntilElementIsVisible(actionButton); + BrowserVisibility.waitUntilElementIsClickable(actionButton); return actionButton; } @@ -104,7 +104,7 @@ export class ContentServicesPage { this.contentList.clickOnActionMenu(content); this.waitForContentOptions(); const disabledDelete = element(by.css(`button[data-automation-id*='DELETE'][disabled='true']`)); - Util.waitUntilElementIsVisible(disabledDelete); + BrowserVisibility.waitUntilElementIsVisible(disabledDelete); } deleteContent(content) { @@ -136,29 +136,29 @@ export class ContentServicesPage { } waitForContentOptions() { - Util.waitUntilElementIsVisible(this.copyContentElement); - Util.waitUntilElementIsVisible(this.moveContentElement); - Util.waitUntilElementIsVisible(this.deleteContentElement); - Util.waitUntilElementIsVisible(this.downloadContent); + BrowserVisibility.waitUntilElementIsVisible(this.copyContentElement); + BrowserVisibility.waitUntilElementIsVisible(this.moveContentElement); + BrowserVisibility.waitUntilElementIsVisible(this.deleteContentElement); + BrowserVisibility.waitUntilElementIsVisible(this.downloadContent); } clickFileHyperlink(fileName) { const hyperlink = this.contentList.dataTablePage().getFileHyperlink(fileName); - Util.waitUntilElementIsClickable(hyperlink); + BrowserVisibility.waitUntilElementIsClickable(hyperlink); hyperlink.click(); return this; } checkFileHyperlinkIsEnabled(fileName) { const hyperlink = this.contentList.dataTablePage().getFileHyperlink(fileName); - Util.waitUntilElementIsVisible(hyperlink); + BrowserVisibility.waitUntilElementIsVisible(hyperlink); return this; } clickHyperlinkNavigationToggle() { const hyperlinkToggle = element(by.cssContainingText('.mat-slide-toggle-content', 'Hyperlink navigation')); - Util.waitUntilElementIsVisible(hyperlinkToggle); + BrowserVisibility.waitUntilElementIsVisible(hyperlinkToggle); hyperlinkToggle.click(); return this; } @@ -244,7 +244,7 @@ export class ContentServicesPage { } checkRecentFileToBeShowed() { - Util.waitUntilElementIsVisible(this.recentFiles); + BrowserVisibility.waitUntilElementIsVisible(this.recentFiles); } expandRecentFiles() { @@ -262,20 +262,20 @@ export class ContentServicesPage { } checkRecentFileToBeClosed() { - Util.waitUntilElementIsVisible(this.recentFilesClosed); + BrowserVisibility.waitUntilElementIsVisible(this.recentFilesClosed); } checkRecentFileToBeOpened() { - Util.waitUntilElementIsVisible(this.recentFilesExpanded); + BrowserVisibility.waitUntilElementIsVisible(this.recentFilesExpanded); } async getRecentFileIcon() { - await Util.waitUntilElementIsVisible(this.recentFileIcon); + await BrowserVisibility.waitUntilElementIsVisible(this.recentFileIcon); return this.recentFileIcon.getText(); } checkAcsContainer() { - Util.waitUntilElementIsVisible(this.uploadBorder); + BrowserVisibility.waitUntilElementIsVisible(this.uploadBorder); return this; } @@ -290,8 +290,8 @@ export class ContentServicesPage { } clickOnContentServices() { - Util.waitUntilElementIsVisible(this.contentServices); - Util.waitUntilElementIsClickable(this.contentServices); + BrowserVisibility.waitUntilElementIsVisible(this.contentServices); + BrowserVisibility.waitUntilElementIsClickable(this.contentServices); this.contentServices.click(); } @@ -301,7 +301,7 @@ export class ContentServicesPage { currentFolderName() { const deferred = protractor.promise.defer(); - Util.waitUntilElementIsVisible(this.currentFolder); + BrowserVisibility.waitUntilElementIsVisible(this.currentFolder); this.currentFolder.getText().then(function (result) { deferred.fulfill(result); }); @@ -373,13 +373,13 @@ export class ContentServicesPage { } clickOnCreateNewFolder() { - Util.waitUntilElementIsVisible(this.createFolderButton); + BrowserVisibility.waitUntilElementIsVisible(this.createFolderButton); this.createFolderButton.click(); return this; } openCreateLibraryDialog() { - Util.waitUntilElementIsVisible(this.createLibraryButton); + BrowserVisibility.waitUntilElementIsVisible(this.createLibraryButton); this.createLibraryButton.click(); this.createLibraryDialog.waitForDialogToOpen(); return this.createLibraryDialog; @@ -411,54 +411,54 @@ export class ContentServicesPage { } getActiveBreadcrumb() { - Util.waitUntilElementIsVisible(this.activeBreadcrumb); + BrowserVisibility.waitUntilElementIsVisible(this.activeBreadcrumb); return this.activeBreadcrumb.getAttribute('title'); } uploadFile(fileLocation) { this.checkUploadButton(); - Util.waitUntilElementIsVisible(this.uploadFileButton); + BrowserVisibility.waitUntilElementIsVisible(this.uploadFileButton); this.uploadFileButton.sendKeys(path.resolve(path.join(TestConfig.main.rootPath, fileLocation))); this.checkUploadButton(); return this; } uploadMultipleFile(files) { - Util.waitUntilElementIsVisible(this.uploadMultipleFileButton); + BrowserVisibility.waitUntilElementIsVisible(this.uploadMultipleFileButton); let allFiles = path.resolve(path.join(TestConfig.main.rootPath, files[0])); for (let i = 1; i < files.length; i++) { allFiles = allFiles + '\n' + path.resolve(path.join(TestConfig.main.rootPath, files[i])); } this.uploadMultipleFileButton.sendKeys(allFiles); - Util.waitUntilElementIsVisible(this.uploadMultipleFileButton); + BrowserVisibility.waitUntilElementIsVisible(this.uploadMultipleFileButton); return this; } uploadFolder(folder) { - Util.waitUntilElementIsVisible(this.uploadFolderButton); + BrowserVisibility.waitUntilElementIsVisible(this.uploadFolderButton); this.uploadFolderButton.sendKeys(path.resolve(path.join(TestConfig.main.rootPath, folder))); - Util.waitUntilElementIsVisible(this.uploadFolderButton); + BrowserVisibility.waitUntilElementIsVisible(this.uploadFolderButton); return this; } getSingleFileButtonTooltip() { - Util.waitUntilElementIsVisible(this.uploadFileButton); + BrowserVisibility.waitUntilElementIsVisible(this.uploadFileButton); return this.uploadFileButton.getAttribute('title'); } getMultipleFileButtonTooltip() { - Util.waitUntilElementIsVisible(this.uploadMultipleFileButton); + BrowserVisibility.waitUntilElementIsVisible(this.uploadMultipleFileButton); return this.uploadMultipleFileButton.getAttribute('title'); } getFolderButtonTooltip() { - Util.waitUntilElementIsVisible(this.uploadFolderButton); + BrowserVisibility.waitUntilElementIsVisible(this.uploadFolderButton); return this.uploadFolderButton.getAttribute('title'); } checkUploadButton() { - Util.waitUntilElementIsVisible(this.uploadFileButton); - Util.waitUntilElementIsClickable(this.uploadFileButton); + BrowserVisibility.waitUntilElementIsVisible(this.uploadFileButton); + BrowserVisibility.waitUntilElementIsClickable(this.uploadFileButton); return this; } @@ -467,7 +467,7 @@ export class ContentServicesPage { } getErrorMessage() { - Util.waitUntilElementIsVisible(this.errorSnackBar); + BrowserVisibility.waitUntilElementIsVisible(this.errorSnackBar); const deferred = protractor.promise.defer(); this.errorSnackBar.getText().then(function (text) { deferred.fulfill(text); @@ -477,60 +477,60 @@ export class ContentServicesPage { enableInfiniteScrolling() { const infiniteScrollButton = element(by.cssContainingText('.mat-slide-toggle-content', 'Enable Infinite Scrolling')); - Util.waitUntilElementIsVisible(infiniteScrollButton); + BrowserVisibility.waitUntilElementIsVisible(infiniteScrollButton); infiniteScrollButton.click(); return this; } enableCustomPermissionMessage() { const customPermissionMessage = element(by.cssContainingText('.mat-slide-toggle-content', 'Enable custom permission message')); - Util.waitUntilElementIsVisible(customPermissionMessage); + BrowserVisibility.waitUntilElementIsVisible(customPermissionMessage); customPermissionMessage.click(); return this; } enableMediumTimeFormat() { const mediumTimeFormat = element(by.css('#enableMediumTimeFormat')); - Util.waitUntilElementIsVisible(mediumTimeFormat); + BrowserVisibility.waitUntilElementIsVisible(mediumTimeFormat); mediumTimeFormat.click(); return this; } enableThumbnails() { const thumbnailSlide = element(by.id('adf-thumbnails-upload-switch')); - Util.waitUntilElementIsVisible(thumbnailSlide); + BrowserVisibility.waitUntilElementIsVisible(thumbnailSlide); thumbnailSlide.click(); return this; } checkPaginationIsNotDisplayed() { - Util.waitUntilElementIsVisible(this.emptyPagination); + BrowserVisibility.waitUntilElementIsVisible(this.emptyPagination); } getDocumentListRowNumber() { const documentList = element(by.css('adf-upload-drag-area adf-document-list')); - Util.waitUntilElementIsVisible(documentList); + BrowserVisibility.waitUntilElementIsVisible(documentList); return $$('adf-upload-drag-area adf-document-list .adf-datatable-row').count(); } checkColumnNameHeader() { - Util.waitUntilElementIsVisible(this.nameHeader); + BrowserVisibility.waitUntilElementIsVisible(this.nameHeader); } checkColumnSizeHeader() { - Util.waitUntilElementIsVisible(this.sizeHeader); + BrowserVisibility.waitUntilElementIsVisible(this.sizeHeader); } checkColumnCreatedByHeader() { - Util.waitUntilElementIsVisible(this.createdByHeader); + BrowserVisibility.waitUntilElementIsVisible(this.createdByHeader); } checkColumnCreatedHeader() { - Util.waitUntilElementIsVisible(this.createdHeader); + BrowserVisibility.waitUntilElementIsVisible(this.createdHeader); } checkDragAndDropDIsDisplayed() { - Util.waitUntilElementIsVisible(this.dragAndDrop); + BrowserVisibility.waitUntilElementIsVisible(this.dragAndDrop); } dragAndDropFile(file) { @@ -545,7 +545,7 @@ export class ContentServicesPage { checkLockIsDisplayedForElement(name) { const lockButton = element(by.css(`div.adf-datatable-cell[data-automation-id="${name}"] button`)); - Util.waitUntilElementIsVisible(lockButton); + BrowserVisibility.waitUntilElementIsVisible(lockButton); } getColumnValueForRow(file, columnName) { @@ -554,31 +554,31 @@ export class ContentServicesPage { async getStyleValueForRowText(rowName, styleName) { const row = element(by.css(`div.adf-datatable-cell[data-automation-id="${rowName}"] span.adf-datatable-cell-value[title="${rowName}"]`)); - Util.waitUntilElementIsVisible(row); + BrowserVisibility.waitUntilElementIsVisible(row); return row.getCssValue(styleName); } checkSpinnerIsShowed() { - Util.waitUntilElementIsPresent(this.documentListSpinner); + BrowserVisibility.waitUntilElementIsPresent(this.documentListSpinner); } checkEmptyFolderTextToBe(text) { - Util.waitUntilElementIsVisible(this.emptyFolder); + BrowserVisibility.waitUntilElementIsVisible(this.emptyFolder); expect(this.emptyFolder.getText()).toContain(text); } checkEmptyFolderImageUrlToContain(url) { - Util.waitUntilElementIsVisible(this.emptyFolderImage); + BrowserVisibility.waitUntilElementIsVisible(this.emptyFolderImage); expect(this.emptyFolderImage.getAttribute('src')).toContain(url); } checkEmptyRecentFileIsDisplayed() { - Util.waitUntilElementIsVisible(this.emptyRecent); + BrowserVisibility.waitUntilElementIsVisible(this.emptyRecent); } checkIconForRowIsDisplayed(fileName) { const iconRow = element(by.css(`.adf-document-list-container div.adf-datatable-cell[data-automation-id="${fileName}"] img`)); - Util.waitUntilElementIsVisible(iconRow); + BrowserVisibility.waitUntilElementIsVisible(iconRow); return iconRow; } @@ -588,7 +588,7 @@ export class ContentServicesPage { } checkGridViewButtonIsVisible() { - Util.waitUntilElementIsVisible(this.gridViewButton); + BrowserVisibility.waitUntilElementIsVisible(this.gridViewButton); } clickGridViewButton() { @@ -597,7 +597,7 @@ export class ContentServicesPage { } checkCardViewContainerIsDisplayed() { - Util.waitUntilElementIsVisible(this.cardViewContainer); + BrowserVisibility.waitUntilElementIsVisible(this.cardViewContainer); } getCardElementShowedInPage() { @@ -613,7 +613,7 @@ export class ContentServicesPage { checkDocumentCardPropertyIsShowed(elementName, propertyName) { const elementProperty = element(by.css(`.adf-document-list-container div.adf-datatable-cell[data-automation-id="${elementName}"][title="${propertyName}"]`)); - Util.waitUntilElementIsVisible(elementProperty); + BrowserVisibility.waitUntilElementIsVisible(elementProperty); } getAttributeValueForElement(elementName, propertyName) { @@ -623,20 +623,20 @@ export class ContentServicesPage { checkMenuIsShowedForElementIndex(elementIndex) { const elementMenu = element(by.css(`button[data-automation-id="action_menu_${elementIndex}"]`)); - Util.waitUntilElementIsVisible(elementMenu); + BrowserVisibility.waitUntilElementIsVisible(elementMenu); } navigateToCardFolder(folderName) { const folderCard = element(by.css(`.adf-document-list-container div.adf-image-table-cell.adf-datatable-cell[data-automation-id="${folderName}"]`)); folderCard.click(); const folderSelected = element(by.css(`.adf-datatable-row.adf-is-selected div[data-automation-id="${folderName}"].adf-datatable-cell--image`)); - Util.waitUntilElementIsVisible(folderSelected); + BrowserVisibility.waitUntilElementIsVisible(folderSelected); browser.actions().sendKeys(protractor.Key.ENTER).perform(); } getGridViewSortingDropdown() { const sortingDropdown = element(by.css('mat-select[data-automation-id="grid-view-sorting"]')); - Util.waitUntilElementIsVisible(sortingDropdown); + BrowserVisibility.waitUntilElementIsVisible(sortingDropdown); return sortingDropdown; } @@ -644,37 +644,48 @@ export class ContentServicesPage { const dropdownSorting = this.getGridViewSortingDropdown(); dropdownSorting.click(); const optionToClick = element(by.css(`mat-option[data-automation-id="grid-view-sorting-${sortingChosen}"]`)); - Util.waitUntilElementIsPresent(optionToClick); + BrowserVisibility.waitUntilElementIsPresent(optionToClick); optionToClick.click(); } checkRowIsDisplayed(rowName) { - const row = this.contentList.dataTablePage().getRow('Display name', rowName); - Util.waitUntilElementIsVisible(row); + const row = this.contentList.dataTablePage().getRowElement('Display name', rowName); + BrowserVisibility.waitUntilElementIsVisible(row); } typeIntoNodeSelectorSearchField(text) { - Util.waitUntilElementIsVisible(this.searchInputElement); + BrowserVisibility.waitUntilElementIsVisible(this.searchInputElement); this.searchInputElement.sendKeys(text); } clickContentNodeSelectorResult(name) { const resultElement = element.all(by.css(`div[data-automation-id="content-node-selector-content-list"] div[data-automation-id="${name}"`)).first(); - Util.waitUntilElementIsVisible(resultElement); + BrowserVisibility.waitUntilElementIsVisible(resultElement); resultElement.click(); } clickCopyButton() { - Util.waitUntilElementIsClickable(this.copyButton); + BrowserVisibility.waitUntilElementIsClickable(this.copyButton); this.copyButton.click(); } clickShareButton() { - Util.waitUntilElementIsClickable(this.shareNodeButton); + BrowserVisibility.waitUntilElementIsClickable(this.shareNodeButton); this.shareNodeButton.click(); } checkSelectedSiteIsDisplayed(siteName) { - Util.waitUntilElementIsVisible(this.siteListDropdown.element(by.cssContainingText('.mat-select-value-text span', siteName))); + BrowserVisibility.waitUntilElementIsVisible(this.siteListDropdown.element(by.cssContainingText('.mat-select-value-text span', siteName))); } + + clickDownloadButton() { + BrowserVisibility.waitUntilElementIsClickable(this.downloadButton); + this.downloadButton.click(); + } + + clickMultiSelectToggle() { + BrowserVisibility.waitUntilElementIsClickable(this.multiSelectToggle); + this.multiSelectToggle.click(); + } + } diff --git a/e2e/pages/adf/core/headerPage.ts b/e2e/pages/adf/core/headerPage.ts index a94613a0c8..02677e5a2f 100644 --- a/e2e/pages/adf/core/headerPage.ts +++ b/e2e/pages/adf/core/headerPage.ts @@ -17,7 +17,7 @@ import { element, by, protractor } from 'protractor'; -import { Util } from '../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class HeaderPage { @@ -34,24 +34,24 @@ export class HeaderPage { sideBarPositionLeft = element(by.css('mat-sidenav.mat-drawer.mat-sidenav')); checkShowMenuCheckBoxIsDisplayed() { - return Util.waitUntilElementIsVisible(this.checkBox); + return BrowserVisibility.waitUntilElementIsVisible(this.checkBox); } checkChooseHeaderColourIsDisplayed() { - return Util.waitUntilElementIsVisible(this.headerColor); + return BrowserVisibility.waitUntilElementIsVisible(this.headerColor); } checkChangeTitleIsDisplayed() { - return Util.waitUntilElementIsVisible(this.titleInput); + return BrowserVisibility.waitUntilElementIsVisible(this.titleInput); } checkChangeUrlPathIsDisplayed() { - return Util.waitUntilElementIsVisible(this.iconInput); + return BrowserVisibility.waitUntilElementIsVisible(this.iconInput); } clickShowMenuButton() { const checkBox = element.all(by.css('mat-checkbox')); - Util.waitUntilElementIsVisible(checkBox); + BrowserVisibility.waitUntilElementIsVisible(checkBox); return checkBox.get(0).click(); } @@ -62,11 +62,11 @@ export class HeaderPage { checkAppTitle(name) { const title = element(by.cssContainingText('.adf-app-title', name)); - return Util.waitUntilElementIsVisible(title); + return BrowserVisibility.waitUntilElementIsVisible(title); } addTitle(title) { - Util.waitUntilElementIsVisible(this.titleInput); + BrowserVisibility.waitUntilElementIsVisible(this.titleInput); this.titleInput.click(); this.titleInput.sendKeys(title); this.titleInput.sendKeys(protractor.Key.ENTER); @@ -74,66 +74,66 @@ export class HeaderPage { checkIconIsDisplayed(url) { const icon = element(by.css('img[src="' + url + '"]')); - Util.waitUntilElementIsVisible(icon); + BrowserVisibility.waitUntilElementIsVisible(icon); } addIcon(url) { - Util.waitUntilElementIsVisible(this.iconInput); + BrowserVisibility.waitUntilElementIsVisible(this.iconInput); this.iconInput.click(); this.iconInput.sendKeys(url); this.iconInput.sendKeys(protractor.Key.ENTER); } checkHexColorInputIsDisplayed() { - return Util.waitUntilElementIsVisible(this.hexColorInput); + return BrowserVisibility.waitUntilElementIsVisible(this.hexColorInput); } checkLogoHyperlinkInputIsDisplayed() { - return Util.waitUntilElementIsVisible(this.logoHyperlinkInput); + return BrowserVisibility.waitUntilElementIsVisible(this.logoHyperlinkInput); } checkLogoTooltipInputIsDisplayed() { - return Util.waitUntilElementIsVisible(this.logoTooltipInput); + return BrowserVisibility.waitUntilElementIsVisible(this.logoTooltipInput); } addHexCodeColor(hexCode) { - Util.waitUntilElementIsVisible(this.hexColorInput); + BrowserVisibility.waitUntilElementIsVisible(this.hexColorInput); this.hexColorInput.click(); this.hexColorInput.sendKeys(hexCode); return this.hexColorInput.sendKeys(protractor.Key.ENTER); } addLogoHyperlink(hyperlink) { - Util.waitUntilElementIsVisible(this.logoHyperlinkInput); - Util.waitUntilElementIsClickable(this.logoHyperlinkInput); + BrowserVisibility.waitUntilElementIsVisible(this.logoHyperlinkInput); + BrowserVisibility.waitUntilElementIsClickable(this.logoHyperlinkInput); this.logoHyperlinkInput.click(); this.logoHyperlinkInput.sendKeys(hyperlink); return this.logoHyperlinkInput.sendKeys(protractor.Key.ENTER); } addLogoTooltip(tooltip) { - Util.waitUntilElementIsVisible(this.logoTooltipInput); + BrowserVisibility.waitUntilElementIsVisible(this.logoTooltipInput); this.logoTooltipInput.click(); this.logoTooltipInput.sendKeys(tooltip); return this.logoTooltipInput.sendKeys(protractor.Key.ENTER); } sideBarPositionStart() { - Util.waitUntilElementIsVisible(this.positionStart); + BrowserVisibility.waitUntilElementIsVisible(this.positionStart); return this.positionStart.click(); } sideBarPositionEnd() { - Util.waitUntilElementIsVisible(this.positionEnd); + BrowserVisibility.waitUntilElementIsVisible(this.positionEnd); return this.positionEnd.click(); } checkSidebarPositionStart() { - return Util.waitUntilElementIsVisible(this.sideBarPositionLeft); + return BrowserVisibility.waitUntilElementIsVisible(this.sideBarPositionLeft); } checkSidebarPositionEnd() { - return Util.waitUntilElementIsVisible(this.sideBarPositionRight); + return BrowserVisibility.waitUntilElementIsVisible(this.sideBarPositionRight); } } diff --git a/e2e/pages/adf/core/infinitePaginationPage.ts b/e2e/pages/adf/core/infinitePaginationPage.ts index cb03fce84e..e82868c92c 100644 --- a/e2e/pages/adf/core/infinitePaginationPage.ts +++ b/e2e/pages/adf/core/infinitePaginationPage.ts @@ -18,7 +18,7 @@ import { element, by } from 'protractor'; import { ElementFinder } from 'protractor/built/element'; -import { Util } from '../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class InfinitePaginationPage { @@ -31,18 +31,18 @@ export class InfinitePaginationPage { } clickLoadMoreButton() { - Util.waitUntilElementIsVisible(this.loadMoreButton); - Util.waitUntilElementIsClickable(this.loadMoreButton); + BrowserVisibility.waitUntilElementIsVisible(this.loadMoreButton); + BrowserVisibility.waitUntilElementIsClickable(this.loadMoreButton); this.loadMoreButton.click(); return this; } checkLoadMoreButtonIsDisplayed() { - return Util.waitUntilElementIsVisible(this.loadMoreButton); + return BrowserVisibility.waitUntilElementIsVisible(this.loadMoreButton); } checkLoadMoreButtonIsNotDisplayed() { - return Util.waitUntilElementIsNotOnPage(this.loadMoreButton); + return BrowserVisibility.waitUntilElementIsNotOnPage(this.loadMoreButton); } } diff --git a/e2e/pages/adf/dataTableComponentPage.ts b/e2e/pages/adf/dataTableComponentPage.ts index 286c761142..f072c9b179 100644 --- a/e2e/pages/adf/dataTableComponentPage.ts +++ b/e2e/pages/adf/dataTableComponentPage.ts @@ -16,8 +16,8 @@ */ import { browser, by, element, protractor } from 'protractor'; -import { Util } from '../../util/util'; import { ElementFinder, ElementArrayFinder } from 'protractor/built/element'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class DataTableComponentPage { @@ -45,40 +45,41 @@ export class DataTableComponentPage { } checkAllRowsButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.selectAll); + BrowserVisibility.waitUntilElementIsVisible(this.selectAll); return this; } checkAllRows() { - Util.waitUntilElementIsClickable(this.selectAll).then(() => { + BrowserVisibility.waitUntilElementIsVisible(this.selectAll); + BrowserVisibility.waitUntilElementIsClickable(this.selectAll).then(() => { this.selectAll.click(); - Util.waitUntilElementIsVisible(this.selectAll.element(by.css('input[aria-checked="true"]'))); + BrowserVisibility.waitUntilElementIsVisible(this.selectAll.element(by.css('input[aria-checked="true"]'))); }); return this; } clickCheckbox(columnName, columnValue) { const checkbox = this.getRowCheckbox(columnName, columnValue); - Util.waitUntilElementIsClickable(checkbox); + BrowserVisibility.waitUntilElementIsClickable(checkbox); checkbox.click(); } checkRowIsNotChecked(columnName, columnValue) { - Util.waitUntilElementIsNotOnPage(this.getRowCheckbox(columnName, columnValue).element(by.css('input[aria-checked="true"]'))); + BrowserVisibility.waitUntilElementIsNotOnPage(this.getRowCheckbox(columnName, columnValue).element(by.css('input[aria-checked="true"]'))); } checkRowIsChecked(columnName, columnValue) { const rowCheckbox = this.getRowCheckbox(columnName, columnValue); - Util.waitUntilElementIsVisible(rowCheckbox.element(by.css('input[aria-checked="true"]'))); + BrowserVisibility.waitUntilElementIsVisible(rowCheckbox.element(by.css('input[aria-checked="true"]'))); } getRowCheckbox(columnName, columnValue) { - return this.getRowParentElement(columnName, columnValue) + return this.getRow(columnName, columnValue) .element(by.css('mat-checkbox')); } checkNoRowIsSelected() { - Util.waitUntilElementIsNotOnPage(this.selectedRowNumber); + BrowserVisibility.waitUntilElementIsNotOnPage(this.selectedRowNumber); } getNumberOfSelectedRows() { @@ -92,28 +93,29 @@ export class DataTableComponentPage { selectRow(columnName, columnValue) { const row = this.getRow(columnName, columnValue); - Util.waitUntilElementIsClickable(row); + BrowserVisibility.waitUntilElementIsVisible(row); + BrowserVisibility.waitUntilElementIsClickable(row); row.click(); return this; } checkRowIsSelected(columnName, columnValue) { - const selectedRow = this.getRow(columnName, columnValue).element(by.xpath(`ancestor::div[contains(@class, 'is-selected')]`)); - Util.waitUntilElementIsVisible(selectedRow); + const selectedRow = this.getRowElement(columnName, columnValue).element(by.xpath(`ancestor::div[contains(@class, 'is-selected')]`)); + BrowserVisibility.waitUntilElementIsVisible(selectedRow); return this; } checkRowIsNotSelected(columnName, columnValue) { - const selectedRow = this.getRow(columnName, columnValue).element(by.xpath(`ancestor::div[contains(@class, 'is-selected')]`)); - Util.waitUntilElementIsNotOnPage(selectedRow); + const selectedRow = this.getRowElement(columnName, columnValue).element(by.xpath(`ancestor::div[contains(@class, 'is-selected')]`)); + BrowserVisibility.waitUntilElementIsNotOnPage(selectedRow); return this; } getColumnValueForRow(identifyingColumn, identifyingValue, columnName) { - const row = this.getRow(identifyingColumn, identifyingValue).element(by.xpath(`ancestor::div[contains(@class, 'adf-datatable-row')]`)); - Util.waitUntilElementIsVisible(row); + const row = this.getRow(identifyingColumn, identifyingValue); + BrowserVisibility.waitUntilElementIsVisible(row); const rowColumn = row.element(by.css(`div[title="${columnName}"] span`)); - Util.waitUntilElementIsVisible(rowColumn); + BrowserVisibility.waitUntilElementIsVisible(rowColumn); return rowColumn.getText(); } @@ -127,7 +129,7 @@ export class DataTableComponentPage { checkListIsSorted(sortOrder, locator) { const deferred = protractor.promise.defer(); const column = element.all(by.css(`div[title='${locator}'] span`)); - Util.waitUntilElementIsVisible(column.first()); + BrowserVisibility.waitUntilElementIsVisible(column.first()); const initialList = []; column.each(function (currentElement) { currentElement.getText().then(function (text) { @@ -147,11 +149,11 @@ export class DataTableComponentPage { rightClickOnRow(columnName, columnValue) { const row = this.getRow(columnName, columnValue); browser.actions().click(row, protractor.Button.RIGHT).perform(); - Util.waitUntilElementIsVisible(element(by.id('adf-context-menu-content'))); + BrowserVisibility.waitUntilElementIsVisible(element(by.id('adf-context-menu-content'))); } getTooltip(columnName, columnValue) { - return this.getRow(columnName, columnValue).getAttribute('title'); + return this.getRowElement(columnName, columnValue).getAttribute('title'); } getFileHyperlink(filename) { @@ -164,21 +166,21 @@ export class DataTableComponentPage { async getAllRowsColumnValues(column) { const columnLocator = by.css("adf-datatable div[class*='adf-datatable-body'] div[class*='adf-datatable-row'] div[title='" + column + "'] span"); - Util.waitUntilElementIsVisible(element.all(columnLocator).first()); + BrowserVisibility.waitUntilElementIsVisible(element.all(columnLocator).first()); const initialList: any = await element.all(columnLocator).getText(); return initialList.filter((el) => el); } async getRowsWithSameColumnValues(columnName, columnValue) { const columnLocator = by.css(`div[title='${columnName}'] div[data-automation-id="text_${columnValue}"] span`); - Util.waitUntilElementIsVisible(this.rootElement.all(columnLocator).first()); + BrowserVisibility.waitUntilElementIsVisible(this.rootElement.all(columnLocator).first()); return this.rootElement.all(columnLocator).getText(); } doubleClickRow(columnName, columnValue) { const row = this.getRow(columnName, columnValue); - Util.waitUntilElementIsVisible(row); - Util.waitUntilElementIsClickable(row); + BrowserVisibility.waitUntilElementIsVisible(row); + BrowserVisibility.waitUntilElementIsClickable(row); row.click(); this.checkRowIsSelected(columnName, columnValue); browser.actions().sendKeys(protractor.Key.ENTER).perform(); @@ -186,7 +188,7 @@ export class DataTableComponentPage { } waitForTableBody() { - Util.waitUntilElementIsVisible(this.tableBody); + BrowserVisibility.waitUntilElementIsVisible(this.tableBody); } getFirstElementDetail(detail) { @@ -200,7 +202,7 @@ export class DataTableComponentPage { sortByColumn(sortOrder, column) { const locator = by.css(`div[data-automation-id="auto_id_${column}"]`); - Util.waitUntilElementIsVisible(element(locator)); + BrowserVisibility.waitUntilElementIsVisible(element(locator)); return element(locator).getAttribute('class').then(function (result) { if (sortOrder === true) { if (!result.includes('sorted-asc')) { @@ -223,49 +225,49 @@ export class DataTableComponentPage { checkContentIsDisplayed(columnName, columnValue) { const row = this.getRow(columnName, columnValue); - Util.waitUntilElementIsVisible(row); + BrowserVisibility.waitUntilElementIsVisible(row); return this; } checkContentIsNotDisplayed(columnName, columnValue) { - const row = this.getRow(columnName, columnValue); - Util.waitUntilElementIsNotOnPage(row); + const row = this.getRowElement(columnName, columnValue); + BrowserVisibility.waitUntilElementIsNotOnPage(row); return this; } contentInPosition(position) { - Util.waitUntilElementIsVisible(this.contents); + BrowserVisibility.waitUntilElementIsVisible(this.contents); return this.contents.get(position - 1).getText(); } - getRowParentElement(columnName, columnValue) { + getRow(columnName, columnValue) { const row = this.rootElement.all(by.css(`div[title="${columnName}"] div[data-automation-id="text_${columnValue}"]`)).first() .element(by.xpath(`ancestor::div[contains(@class, 'adf-datatable-row')]`)); - Util.waitUntilElementIsVisible(row); + BrowserVisibility.waitUntilElementIsVisible(row); return row; } - getRow(columnName, columnValue) { + getRowElement(columnName, columnValue) { return this.rootElement.all(by.css(`div[title="${columnName}"] div[data-automation-id="text_${columnValue}"] span`)).first(); } checkSpinnerIsDisplayed() { - Util.waitUntilElementIsPresent(this.spinner); + BrowserVisibility.waitUntilElementIsPresent(this.spinner); return this; } checkSpinnerIsNotDisplayed() { - Util.waitUntilElementIsNotOnPage(this.spinner); + BrowserVisibility.waitUntilElementIsNotOnPage(this.spinner); return this; } tableIsLoaded() { - Util.waitUntilElementIsVisible(this.rootElement); + BrowserVisibility.waitUntilElementIsVisible(this.rootElement); return this; } checkColumnIsDisplayed(column) { - Util.waitUntilElementIsVisible(element(by.css(`div[data-automation-id="auto_id_entry.${column}"]`))); + BrowserVisibility.waitUntilElementIsVisible(element(by.css(`div[data-automation-id="auto_id_entry.${column}"]`))); return this; } @@ -278,6 +280,6 @@ export class DataTableComponentPage { } getCellByRowAndColumn(rowColumn, rowContent, columnName) { - return this.getRowParentElement(rowColumn, rowContent).element(by.css(`div[title='${columnName}']`)); + return this.getRow(rowColumn, rowContent).element(by.css(`div[title='${columnName}']`)); } } diff --git a/e2e/pages/adf/demo-shell/aboutPage.ts b/e2e/pages/adf/demo-shell/aboutPage.ts index 3b506fed58..8e025dc9e7 100644 --- a/e2e/pages/adf/demo-shell/aboutPage.ts +++ b/e2e/pages/adf/demo-shell/aboutPage.ts @@ -16,13 +16,13 @@ */ import { by, element } from 'protractor'; -import { Util } from '../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class AboutPage { monacoPlugin = element(by.cssContainingText('mat-row > mat-cell', 'monaco plugin')); checkMonacoPluginIsDisplayed() { - return Util.waitUntilElementIsVisible(this.monacoPlugin); + return BrowserVisibility.waitUntilElementIsVisible(this.monacoPlugin); } } diff --git a/e2e/pages/adf/demo-shell/customSourcesPage.ts b/e2e/pages/adf/demo-shell/customSourcesPage.ts index af5cfac0f2..fbaf9e7393 100644 --- a/e2e/pages/adf/demo-shell/customSourcesPage.ts +++ b/e2e/pages/adf/demo-shell/customSourcesPage.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; import { element, by } from 'protractor'; import { DataTableComponentPage } from '../dataTableComponentPage'; import { NavigationBarPage } from '../navigationBarPage'; @@ -49,7 +49,7 @@ export class CustomSources { } waitForToolbarToBeVisible() { - Util.waitUntilElementIsVisible(this.toolbar); + BrowserVisibility.waitUntilElementIsVisible(this.toolbar); return this; } @@ -72,7 +72,7 @@ export class CustomSources { getStatusCell(rowName) { const cell = this.dataTable.getCellByRowAndColumn('Name', rowName, column.status); - Util.waitUntilElementIsVisible(cell); + BrowserVisibility.waitUntilElementIsVisible(cell); return cell.getText(); } diff --git a/e2e/pages/adf/demo-shell/dataTablePage.ts b/e2e/pages/adf/demo-shell/dataTablePage.ts index 4495491fc8..a6ff81141d 100644 --- a/e2e/pages/adf/demo-shell/dataTablePage.ts +++ b/e2e/pages/adf/demo-shell/dataTablePage.ts @@ -17,7 +17,7 @@ import { browser, by, element, protractor } from 'protractor'; import { DataTableComponentPage } from '../dataTableComponentPage'; -import { Util } from '../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class DataTablePage { @@ -41,54 +41,54 @@ export class DataTablePage { } addRow() { - Util.waitUntilElementIsVisible(this.addRowElement); + BrowserVisibility.waitUntilElementIsVisible(this.addRowElement); this.addRowElement.click(); } replaceRows(id) { - const rowID = this.dataTable.getRow('Id', id); - Util.waitUntilElementIsVisible(rowID); + const rowID = this.dataTable.getRowElement('Id', id); + BrowserVisibility.waitUntilElementIsVisible(rowID); this.replaceRowsElement.click(); - Util.waitUntilElementIsNotVisible(rowID); + BrowserVisibility.waitUntilElementIsNotVisible(rowID); } replaceColumns() { - Util.waitUntilElementIsVisible(this.replaceColumnsElement); + BrowserVisibility.waitUntilElementIsVisible(this.replaceColumnsElement); this.replaceColumnsElement.click(); - Util.waitUntilElementIsNotOnPage(this.createdOnColumn); + BrowserVisibility.waitUntilElementIsNotOnPage(this.createdOnColumn); } clickMultiSelect() { - Util.waitUntilElementIsVisible(this.multiSelect); + BrowserVisibility.waitUntilElementIsVisible(this.multiSelect); this.multiSelect.click(); } clickReset() { - Util.waitUntilElementIsVisible(this.reset); + BrowserVisibility.waitUntilElementIsVisible(this.reset); this.reset.click(); } checkRowIsNotSelected(rowNumber) { - const isRowSelected = this.dataTable.getRow('Id', rowNumber) + const isRowSelected = this.dataTable.getRowElement('Id', rowNumber) .element(by.xpath(`ancestor::div[contains(@class, 'adf-datatable-row custom-row-style ng-star-inserted is-selected')]`)); - Util.waitUntilElementIsNotOnPage(isRowSelected); + BrowserVisibility.waitUntilElementIsNotOnPage(isRowSelected); } checkNoRowIsSelected() { - Util.waitUntilElementIsNotOnPage(this.selectedRowNumber); + BrowserVisibility.waitUntilElementIsNotOnPage(this.selectedRowNumber); } checkAllRows() { - Util.waitUntilElementIsVisible(this.selectAll); + BrowserVisibility.waitUntilElementIsVisible(this.selectAll); this.selectAll.click(); } checkRowIsChecked(rowNumber) { - Util.waitUntilElementIsVisible(this.getRowCheckbox(rowNumber)); + BrowserVisibility.waitUntilElementIsVisible(this.getRowCheckbox(rowNumber)); } checkRowIsNotChecked(rowNumber) { - Util.waitUntilElementIsNotOnPage(this.getRowCheckbox(rowNumber)); + BrowserVisibility.waitUntilElementIsNotOnPage(this.getRowCheckbox(rowNumber)); } getNumberOfSelectedRows() { @@ -96,32 +96,32 @@ export class DataTablePage { } clickCheckbox(rowNumber) { - const checkbox = this.dataTable.getRow('Id', rowNumber).element(by.xpath(`ancestor::div[contains(@class, 'adf-datatable-row')]//mat-checkbox/label`)); - Util.waitUntilElementIsVisible(checkbox); + const checkbox = this.dataTable.getRowElement('Id', rowNumber).element(by.xpath(`ancestor::div[contains(@class, 'adf-datatable-row')]//mat-checkbox/label`)); + BrowserVisibility.waitUntilElementIsVisible(checkbox); checkbox.click(); } selectRow(rowNumber) { - const locator = this.dataTable.getRow('Id', rowNumber); - Util.waitUntilElementIsVisible(locator); - Util.waitUntilElementIsClickable(locator); + const locator = this.dataTable.getRowElement('Id', rowNumber); + BrowserVisibility.waitUntilElementIsVisible(locator); + BrowserVisibility.waitUntilElementIsClickable(locator); locator.click(); return this; } selectRowWithKeyboard(rowNumber) { - const row = this.dataTable.getRow('Id', rowNumber); + const row = this.dataTable.getRowElement('Id', rowNumber); browser.actions().sendKeys(protractor.Key.COMMAND).click(row).perform(); } selectSelectionMode(selectionMode) { const selectMode = element(by.cssContainingText(`span[class='mat-option-text']`, selectionMode)); this.selectionButton.click(); - Util.waitUntilElementIsVisible(this.selectionDropDown); + BrowserVisibility.waitUntilElementIsVisible(this.selectionDropDown); selectMode.click(); } getRowCheckbox(rowNumber) { - return this.dataTable.getRow('Id', rowNumber).element(by.xpath(`ancestor::div/div/mat-checkbox[contains(@class, 'mat-checkbox-checked')]`)); + return this.dataTable.getRowElement('Id', rowNumber).element(by.xpath(`ancestor::div/div/mat-checkbox[contains(@class, 'mat-checkbox-checked')]`)); } } diff --git a/e2e/pages/adf/demo-shell/logoutPage.ts b/e2e/pages/adf/demo-shell/logoutPage.ts index 385109c538..8849568fad 100644 --- a/e2e/pages/adf/demo-shell/logoutPage.ts +++ b/e2e/pages/adf/demo-shell/logoutPage.ts @@ -16,13 +16,13 @@ */ import { by, element } from 'protractor'; -import { Util } from '../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class LogoutPage { logoutSection = element(by.css('div[data-automation-id="adf-logout-section"]')); checkLogoutSectionIsDisplayed() { - return Util.waitUntilElementIsVisible(this.logoutSection); + return BrowserVisibility.waitUntilElementIsVisible(this.logoutSection); } } diff --git a/e2e/pages/adf/demo-shell/process-services/peopleGroupCloudComponentPage.ts b/e2e/pages/adf/demo-shell/process-services/peopleGroupCloudComponentPage.ts index 200c52196d..a7ff4a75df 100644 --- a/e2e/pages/adf/demo-shell/process-services/peopleGroupCloudComponentPage.ts +++ b/e2e/pages/adf/demo-shell/process-services/peopleGroupCloudComponentPage.ts @@ -16,7 +16,7 @@ */ import { by, element, protractor } from 'protractor'; -import { Util } from '../../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class PeopleGroupCloudComponentPage { @@ -34,39 +34,39 @@ export class PeopleGroupCloudComponentPage { groupCloudComponentTitle = element(by.cssContainingText('mat-card-title', 'Groups Cloud Component')); checkPeopleCloudComponentTitleIsDisplayed() { - Util.waitUntilElementIsVisible(this.peopleCloudComponentTitle); + BrowserVisibility.waitUntilElementIsVisible(this.peopleCloudComponentTitle); return this; } checkGroupsCloudComponentTitleIsDisplayed() { - Util.waitUntilElementIsVisible(this.groupCloudComponentTitle); + BrowserVisibility.waitUntilElementIsVisible(this.groupCloudComponentTitle); return this; } clickPeopleCloudMultipleSelection() { - Util.waitUntilElementIsVisible(this.peopleCloudMultipleSelection); + BrowserVisibility.waitUntilElementIsVisible(this.peopleCloudMultipleSelection); this.peopleCloudMultipleSelection.click(); } clickPeopleCloudFilterRole() { - Util.waitUntilElementIsVisible(this.peopleCloudFilterRole); + BrowserVisibility.waitUntilElementIsVisible(this.peopleCloudFilterRole); this.peopleCloudFilterRole.click(); } clickGroupCloudFilterRole() { - Util.waitUntilElementIsVisible(this.groupCloudFilterRole); + BrowserVisibility.waitUntilElementIsVisible(this.groupCloudFilterRole); this.groupCloudFilterRole.click(); } enterPeopleRoles(roles) { - Util.waitUntilElementIsVisible(this.peopleRoleInput); + BrowserVisibility.waitUntilElementIsVisible(this.peopleRoleInput); this.peopleRoleInput.clear(); this.peopleRoleInput.sendKeys(roles); return this; } clearField(locator) { - Util.waitUntilElementIsVisible(locator); + BrowserVisibility.waitUntilElementIsVisible(locator); locator.getAttribute('value').then((result) => { for (let i = result.length; i >= 0; i--) { locator.sendKeys(protractor.Key.BACK_SPACE); @@ -75,12 +75,12 @@ export class PeopleGroupCloudComponentPage { } clickGroupCloudMultipleSelection() { - Util.waitUntilElementIsVisible(this.groupCloudMultipleSelection); + BrowserVisibility.waitUntilElementIsVisible(this.groupCloudMultipleSelection); this.groupCloudMultipleSelection.click(); } enterGroupRoles(roles) { - Util.waitUntilElementIsVisible(this.groupRoleInput); + BrowserVisibility.waitUntilElementIsVisible(this.groupRoleInput); this.groupRoleInput.clear(); this.groupRoleInput.sendKeys(roles); return this; diff --git a/e2e/pages/adf/demo-shell/process-services/processCloudDemoPage.ts b/e2e/pages/adf/demo-shell/process-services/processCloudDemoPage.ts index 12b9ff150d..a84fb3444d 100644 --- a/e2e/pages/adf/demo-shell/process-services/processCloudDemoPage.ts +++ b/e2e/pages/adf/demo-shell/process-services/processCloudDemoPage.ts @@ -15,12 +15,11 @@ * limitations under the License. */ -import { Util } from '../../../../util/util'; - import { ProcessFiltersCloudComponent } from '../../process-cloud/processFiltersCloudComponent'; import { ProcessListCloudComponent } from '../../process-cloud/processListCloudComponent'; import { EditProcessFilterCloudComponent } from '../../process-cloud/editProcessFilterCloudComponent'; import { element, by } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class ProcessCloudDemoPage { @@ -69,12 +68,12 @@ export class ProcessCloudDemoPage { } getActiveFilterName() { - Util.waitUntilElementIsVisible(this.activeFilter); + BrowserVisibility.waitUntilElementIsVisible(this.activeFilter); return this.activeFilter.getText(); } clickOnProcessFilters() { - Util.waitUntilElementIsVisible(this.processFilters); + BrowserVisibility.waitUntilElementIsVisible(this.processFilters); return this.processFilters.click(); } @@ -87,17 +86,17 @@ export class ProcessCloudDemoPage { } createButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.createButton); + BrowserVisibility.waitUntilElementIsVisible(this.createButton); return this; } newProcessButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.newProcessButton); + BrowserVisibility.waitUntilElementIsVisible(this.newProcessButton); return this; } clickOnCreateButton() { - Util.waitUntilElementIsClickable(this.createButton); + BrowserVisibility.waitUntilElementIsClickable(this.createButton); this.createButton.click(); return this; } diff --git a/e2e/pages/adf/demo-shell/process-services/processListDemoPage.ts b/e2e/pages/adf/demo-shell/process-services/processListDemoPage.ts index bfa5395f37..99b7e97d31 100644 --- a/e2e/pages/adf/demo-shell/process-services/processListDemoPage.ts +++ b/e2e/pages/adf/demo-shell/process-services/processListDemoPage.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Util } from '../../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; import { DataTableComponentPage } from '../../dataTableComponentPage'; import { element, by, protractor } from 'protractor'; @@ -36,25 +36,25 @@ export class ProcessListDemoPage { } selectSorting(sort) { - Util.waitUntilElementIsVisible(this.stateSelector); + BrowserVisibility.waitUntilElementIsVisible(this.stateSelector); this.sortSelector.click(); const sortLocator = element(by.cssContainingText('mat-option span', sort)); - Util.waitUntilElementIsVisible(sortLocator); + BrowserVisibility.waitUntilElementIsVisible(sortLocator); sortLocator.click(); return this; } selectStateFilter(state) { - Util.waitUntilElementIsVisible(this.stateSelector); + BrowserVisibility.waitUntilElementIsVisible(this.stateSelector); this.stateSelector.click(); const stateLocator = element(by.cssContainingText('mat-option span', state)); - Util.waitUntilElementIsVisible(stateLocator); + BrowserVisibility.waitUntilElementIsVisible(stateLocator); stateLocator.click(); return this; } addAppId(appId) { - Util.waitUntilElementIsVisible(this.appIdInput); + BrowserVisibility.waitUntilElementIsVisible(this.appIdInput); this.appIdInput.click(); this.appIdInput.sendKeys(protractor.Key.ENTER); this.appIdInput.clear(); @@ -62,17 +62,17 @@ export class ProcessListDemoPage { } clickResetButton() { - Util.waitUntilElementIsVisible(this.resetButton); + BrowserVisibility.waitUntilElementIsVisible(this.resetButton); return this.resetButton.click(); } checkErrorMessageIsDisplayed(error) { const errorMessage = element(by.cssContainingText('mat-error', error)); - Util.waitUntilElementIsVisible(errorMessage); + BrowserVisibility.waitUntilElementIsVisible(errorMessage); } checkNoProcessFoundIsDisplayed() { - return Util.waitUntilElementIsVisible(this.emptyProcessContent); + return BrowserVisibility.waitUntilElementIsVisible(this.emptyProcessContent); } checkProcessIsNotDisplayed(processName) { @@ -84,34 +84,34 @@ export class ProcessListDemoPage { } checkAppIdFieldIsDisplayed() { - Util.waitUntilElementIsVisible(this.appIdInput); + BrowserVisibility.waitUntilElementIsVisible(this.appIdInput); return this; } checkProcessInstanceIdFieldIsDisplayed() { - Util.waitUntilElementIsVisible(this.processInstanceInput); + BrowserVisibility.waitUntilElementIsVisible(this.processInstanceInput); return this; } checkStateFieldIsDisplayed() { - Util.waitUntilElementIsVisible(this.stateSelector); + BrowserVisibility.waitUntilElementIsVisible(this.stateSelector); return this; } checkSortFieldIsDisplayed() { - Util.waitUntilElementIsVisible(this.sortSelector); + BrowserVisibility.waitUntilElementIsVisible(this.sortSelector); return this; } addProcessDefinitionId(procDefinitionId) { - Util.waitUntilElementIsVisible(this.processDefinitionInput); + BrowserVisibility.waitUntilElementIsVisible(this.processDefinitionInput); this.processDefinitionInput.click(); this.processDefinitionInput.clear(); return this.processDefinitionInput.sendKeys(procDefinitionId); } addProcessInstanceId(procInstanceId) { - Util.waitUntilElementIsVisible(this.processInstanceInput); + BrowserVisibility.waitUntilElementIsVisible(this.processInstanceInput); this.processInstanceInput.click(); this.processInstanceInput.clear(); return this.processInstanceInput.sendKeys(procInstanceId); diff --git a/e2e/pages/adf/demo-shell/process-services/taskFiltersDemoPage.ts b/e2e/pages/adf/demo-shell/process-services/taskFiltersDemoPage.ts index 0458c398e5..1959b60b1e 100644 --- a/e2e/pages/adf/demo-shell/process-services/taskFiltersDemoPage.ts +++ b/e2e/pages/adf/demo-shell/process-services/taskFiltersDemoPage.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Util } from '../../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; import { element, by } from 'protractor'; import { TaskFiltersPage } from '../../process-services/taskFiltersPage'; @@ -53,7 +53,7 @@ export class TaskFiltersDemoPage { } checkActiveFilterActive () { - Util.waitUntilElementIsVisible(this.activeFilter); + BrowserVisibility.waitUntilElementIsVisible(this.activeFilter); return this.activeFilter.getText(); } diff --git a/e2e/pages/adf/demo-shell/process-services/taskListDemoPage.ts b/e2e/pages/adf/demo-shell/process-services/taskListDemoPage.ts index 4be5673fa7..095b122b82 100644 --- a/e2e/pages/adf/demo-shell/process-services/taskListDemoPage.ts +++ b/e2e/pages/adf/demo-shell/process-services/taskListDemoPage.ts @@ -15,10 +15,10 @@ * limitations under the License. */ -import { Util } from '../../../../util/util'; import { TasksListPage } from '../../process-services/tasksListPage'; import { PaginationPage } from '../../paginationPage'; import { element, by } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class TaskListDemoPage { @@ -49,130 +49,130 @@ export class TaskListDemoPage { } typeAppId(input) { - Util.waitUntilElementIsVisible(this.appId); + BrowserVisibility.waitUntilElementIsVisible(this.appId); this.clearText(this.appId); this.appId.sendKeys(input); return this; } clickAppId() { - Util.waitUntilElementIsVisible(this.appId); + BrowserVisibility.waitUntilElementIsVisible(this.appId); this.appId.click(); return this; } getAppId() { - Util.waitUntilElementIsVisible(this.appId); + BrowserVisibility.waitUntilElementIsVisible(this.appId); return this.appId.getAttribute('value'); } typeTaskId(input) { - Util.waitUntilElementIsVisible(this.taskId); + BrowserVisibility.waitUntilElementIsVisible(this.taskId); this.clearText(this.taskId); this.taskId.sendKeys(input); return this; } getTaskId() { - Util.waitUntilElementIsVisible(this.taskId); + BrowserVisibility.waitUntilElementIsVisible(this.taskId); return this.taskId.getAttribute('value'); } typeTaskName(input) { - Util.waitUntilElementIsVisible(this.taskName); + BrowserVisibility.waitUntilElementIsVisible(this.taskName); this.clearText(this.taskName); this.taskName.sendKeys(input); return this; } getTaskName() { - Util.waitUntilElementIsVisible(this.taskName); + BrowserVisibility.waitUntilElementIsVisible(this.taskName); return this.taskName.getAttribute('value'); } typeItemsPerPage(input) { - Util.waitUntilElementIsVisible(this.itemsPerPage); + BrowserVisibility.waitUntilElementIsVisible(this.itemsPerPage); this.clearText(this.itemsPerPage); this.itemsPerPage.sendKeys(input); return this; } getItemsPerPage() { - Util.waitUntilElementIsVisible(this.itemsPerPage); + BrowserVisibility.waitUntilElementIsVisible(this.itemsPerPage); return this.itemsPerPage.getAttribute('value'); } typeProcessDefinitionId(input) { - Util.waitUntilElementIsVisible(this.processDefinitionId); + BrowserVisibility.waitUntilElementIsVisible(this.processDefinitionId); this.clearText(this.processDefinitionId); this.processDefinitionId.sendKeys(input); return this; } getProcessDefinitionId() { - Util.waitUntilElementIsVisible(this.processInstanceId); + BrowserVisibility.waitUntilElementIsVisible(this.processInstanceId); return this.processInstanceId.getAttribute('value'); } typeProcessInstanceId(input) { - Util.waitUntilElementIsVisible(this.processInstanceId); + BrowserVisibility.waitUntilElementIsVisible(this.processInstanceId); this.clearText(this.processInstanceId); this.processInstanceId.sendKeys(input); return this; } getProcessInstanceId() { - Util.waitUntilElementIsVisible(this.processInstanceId); + BrowserVisibility.waitUntilElementIsVisible(this.processInstanceId); return this.processInstanceId.getAttribute('value'); } getItemsPerPageFieldErrorMessage() { - Util.waitUntilElementIsVisible(this.itemsPerPageForm); + BrowserVisibility.waitUntilElementIsVisible(this.itemsPerPageForm); const errorMessage = this.itemsPerPageForm.element(by.css('mat-error')); - Util.waitUntilElementIsVisible(errorMessage); + BrowserVisibility.waitUntilElementIsVisible(errorMessage); return errorMessage.getText(); } typePage(input) { - Util.waitUntilElementIsVisible(this.page); + BrowserVisibility.waitUntilElementIsVisible(this.page); this.clearText(this.page); this.page.sendKeys(input); return this; } getPage() { - Util.waitUntilElementIsVisible(this.page); + BrowserVisibility.waitUntilElementIsVisible(this.page); return this.page.getAttribute('value'); } getPageFieldErrorMessage() { - Util.waitUntilElementIsVisible(this.pageForm); + BrowserVisibility.waitUntilElementIsVisible(this.pageForm); const errorMessage = this.pageForm.element(by.css('mat-error')); - Util.waitUntilElementIsVisible(errorMessage); + BrowserVisibility.waitUntilElementIsVisible(errorMessage); return errorMessage.getText(); } typeDueAfter(input) { - Util.waitUntilElementIsVisible(this.dueAfter); + BrowserVisibility.waitUntilElementIsVisible(this.dueAfter); this.clearText(this.dueAfter); this.dueAfter.sendKeys(input); return this; } typeDueBefore(input) { - Util.waitUntilElementIsVisible(this.dueBefore); + BrowserVisibility.waitUntilElementIsVisible(this.dueBefore); this.clearText(this.dueBefore); this.dueBefore.sendKeys(input); return this; } clearText(input) { - Util.waitUntilElementIsVisible(input); + BrowserVisibility.waitUntilElementIsVisible(input); return input.clear(); } clickResetButton() { - Util.waitUntilElementIsVisible(this.resetButton); + BrowserVisibility.waitUntilElementIsVisible(this.resetButton); this.resetButton.click(); } @@ -180,32 +180,32 @@ export class TaskListDemoPage { this.clickOnSortDropDownArrow(); const sortElement = element.all(by.cssContainingText('mat-option span', sort)).first(); - Util.waitUntilElementIsClickable(sortElement); - Util.waitUntilElementIsVisible(sortElement); + BrowserVisibility.waitUntilElementIsClickable(sortElement); + BrowserVisibility.waitUntilElementIsVisible(sortElement); sortElement.click(); return this; } clickOnSortDropDownArrow() { - Util.waitUntilElementIsVisible(this.sortDropDownArrow); + BrowserVisibility.waitUntilElementIsVisible(this.sortDropDownArrow); this.sortDropDownArrow.click(); - Util.waitUntilElementIsVisible(this.sortSelector); + BrowserVisibility.waitUntilElementIsVisible(this.sortSelector); } selectState(state) { this.clickOnStateDropDownArrow(); const stateElement = element.all(by.cssContainingText('mat-option span', state)).first(); - Util.waitUntilElementIsClickable(stateElement); - Util.waitUntilElementIsVisible(stateElement); + BrowserVisibility.waitUntilElementIsClickable(stateElement); + BrowserVisibility.waitUntilElementIsVisible(stateElement); stateElement.click(); return this; } clickOnStateDropDownArrow() { - Util.waitUntilElementIsVisible(this.stateDropDownArrow); + BrowserVisibility.waitUntilElementIsVisible(this.stateDropDownArrow); this.stateDropDownArrow.click(); - Util.waitUntilElementIsVisible(this.stateSelector); + BrowserVisibility.waitUntilElementIsVisible(this.stateSelector); } getAllProcessDefinitionIds() { diff --git a/e2e/pages/adf/demo-shell/process-services/tasksCloudDemoPage.ts b/e2e/pages/adf/demo-shell/process-services/tasksCloudDemoPage.ts index 5bcf7cff62..51b591a609 100644 --- a/e2e/pages/adf/demo-shell/process-services/tasksCloudDemoPage.ts +++ b/e2e/pages/adf/demo-shell/process-services/tasksCloudDemoPage.ts @@ -15,14 +15,13 @@ * limitations under the License. */ -import { Util } from '../../../../util/util'; - import { TaskFiltersCloudComponent } from '../../process-cloud/taskFiltersCloudComponent'; import { TaskListCloudComponent } from '../../process-cloud/taskListCloudComponent'; import { EditTaskFilterCloudComponent } from '../../process-cloud/editTaskFilterCloudComponent'; import { FormControllersPage } from '../../material/formControllersPage'; import { element, by, browser } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class TasksCloudDemoPage { @@ -81,7 +80,7 @@ export class TasksCloudDemoPage { } getActiveFilterName() { - Util.waitUntilElementIsVisible(this.activeFilter); + BrowserVisibility.waitUntilElementIsVisible(this.activeFilter); return this.activeFilter.getText(); } @@ -94,7 +93,7 @@ export class TasksCloudDemoPage { } clickOnTaskFilters() { - Util.waitUntilElementIsVisible(this.taskFilters); + BrowserVisibility.waitUntilElementIsVisible(this.taskFilters); return this.taskFilters.click(); } @@ -107,17 +106,17 @@ export class TasksCloudDemoPage { } createButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.createButton); + BrowserVisibility.waitUntilElementIsVisible(this.createButton); return this; } newTaskButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.newTaskButton); + BrowserVisibility.waitUntilElementIsVisible(this.newTaskButton); return this; } clickOnCreateButton() { - Util.waitUntilElementIsClickable(this.createButton); + BrowserVisibility.waitUntilElementIsClickable(this.createButton); this.createButton.click(); return this; } @@ -129,9 +128,9 @@ export class TasksCloudDemoPage { clickSettingsButton() { this.settingsButton.click(); browser.driver.sleep(400); - Util.waitUntilElementIsVisible(this.multiSelectionToggle); - Util.waitUntilElementIsVisible(this.modeDropDownArrow); - Util.waitUntilElementIsClickable(this.modeDropDownArrow); + BrowserVisibility.waitUntilElementIsVisible(this.multiSelectionToggle); + BrowserVisibility.waitUntilElementIsVisible(this.modeDropDownArrow); + BrowserVisibility.waitUntilElementIsClickable(this.modeDropDownArrow); return this; } @@ -145,16 +144,16 @@ export class TasksCloudDemoPage { this.clickOnSelectionModeDropDownArrow(); const modeElement = element.all(by.cssContainingText('mat-option span', mode)).first(); - Util.waitUntilElementIsClickable(modeElement); - Util.waitUntilElementIsVisible(modeElement); + BrowserVisibility.waitUntilElementIsClickable(modeElement); + BrowserVisibility.waitUntilElementIsVisible(modeElement); modeElement.click(); return this; } clickOnSelectionModeDropDownArrow() { - Util.waitUntilElementIsVisible(this.modeDropDownArrow); - Util.waitUntilElementIsClickable(this.modeDropDownArrow); + BrowserVisibility.waitUntilElementIsVisible(this.modeDropDownArrow); + BrowserVisibility.waitUntilElementIsClickable(this.modeDropDownArrow); this.modeDropDownArrow.click(); - Util.waitUntilElementIsVisible(this.modeSelector); + BrowserVisibility.waitUntilElementIsVisible(this.modeSelector); } } diff --git a/e2e/pages/adf/dialog/createFolderDialog.ts b/e2e/pages/adf/dialog/createFolderDialog.ts index f3e8650cae..77f44e7db8 100644 --- a/e2e/pages/adf/dialog/createFolderDialog.ts +++ b/e2e/pages/adf/dialog/createFolderDialog.ts @@ -16,7 +16,7 @@ */ import { browser, by, element } from 'protractor'; -import { Util } from '../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class CreateFolderDialog { folderNameField = element(by.id('adf-folder-name-input')); @@ -25,13 +25,13 @@ export class CreateFolderDialog { cancelButton = element(by.id('adf-folder-cancel-button')); clickOnCreateButton() { - Util.waitUntilElementIsVisible(this.createButton); + BrowserVisibility.waitUntilElementIsVisible(this.createButton); this.createButton.click(); return this; } checkCreateBtnIsDisabled() { - Util.waitUntilElementIsVisible(this.createButton); + BrowserVisibility.waitUntilElementIsVisible(this.createButton); expect(this.createButton.getAttribute('disabled')).toEqual('true'); return this; } @@ -42,13 +42,13 @@ export class CreateFolderDialog { } clickOnCancelButton() { - Util.waitUntilElementIsVisible(this.cancelButton); + BrowserVisibility.waitUntilElementIsVisible(this.cancelButton); this.cancelButton.click(); return this; } addFolderName(folderName) { - Util.waitUntilElementIsVisible(this.folderNameField); + BrowserVisibility.waitUntilElementIsVisible(this.folderNameField); this.folderNameField.clear(); this.folderNameField.sendKeys(folderName); browser.driver.sleep(500); @@ -56,7 +56,7 @@ export class CreateFolderDialog { } addFolderDescription(folderDescription) { - Util.waitUntilElementIsVisible(this.folderDescriptionField); + BrowserVisibility.waitUntilElementIsVisible(this.folderDescriptionField); this.folderDescriptionField.clear(); this.folderDescriptionField.sendKeys(folderDescription); return this; diff --git a/e2e/pages/adf/dialog/createLibraryDialog.ts b/e2e/pages/adf/dialog/createLibraryDialog.ts index 6d567f5bb2..3d55746b8f 100644 --- a/e2e/pages/adf/dialog/createLibraryDialog.ts +++ b/e2e/pages/adf/dialog/createLibraryDialog.ts @@ -16,7 +16,7 @@ */ import { by, element, browser, protractor } from 'protractor'; -import { Util } from '../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class CreateLibraryDialog { libraryDialog = element(by.css('[role="dialog"]')); @@ -35,17 +35,17 @@ export class CreateLibraryDialog { getSelectedRadio() { const radio = element(by.css('.mat-radio-button[class*="checked"]')); - Util.waitUntilElementIsVisible(radio); + BrowserVisibility.waitUntilElementIsVisible(radio); return radio.getText(); } waitForDialogToOpen() { - Util.waitUntilElementIsPresent(this.libraryDialog); + BrowserVisibility.waitUntilElementIsPresent(this.libraryDialog); return this; } waitForDialogToClose() { - Util.waitUntilElementIsNotOnPage(this.libraryDialog); + BrowserVisibility.waitUntilElementIsNotOnPage(this.libraryDialog); return this; } @@ -66,21 +66,21 @@ export class CreateLibraryDialog { } getErrorMessage() { - Util.waitUntilElementIsVisible(this.errorMessage); + BrowserVisibility.waitUntilElementIsVisible(this.errorMessage); return this.errorMessage.getText(); } getErrorMessages(position) { - Util.waitUntilElementIsVisible(this.errorMessages); + BrowserVisibility.waitUntilElementIsVisible(this.errorMessages); return this.errorMessages.get(position).getText(); } waitForLibraryNameHint() { - Util.waitUntilElementIsVisible(this.libraryNameHint); + BrowserVisibility.waitUntilElementIsVisible(this.libraryNameHint); return this; } getLibraryNameHint() { - Util.waitUntilElementIsVisible(this.libraryNameHint); + BrowserVisibility.waitUntilElementIsVisible(this.libraryNameHint); return this.libraryNameHint.getText(); } @@ -117,7 +117,7 @@ export class CreateLibraryDialog { } clickCreate() { - Util.waitUntilElementIsClickable(this.createButton); + BrowserVisibility.waitUntilElementIsClickable(this.createButton); this.createButton.click(); } diff --git a/e2e/pages/adf/dialog/editProcessFilterDialog.ts b/e2e/pages/adf/dialog/editProcessFilterDialog.ts index 077f2f0513..34eae03507 100644 --- a/e2e/pages/adf/dialog/editProcessFilterDialog.ts +++ b/e2e/pages/adf/dialog/editProcessFilterDialog.ts @@ -16,7 +16,7 @@ */ import { by, element, protractor } from 'protractor'; -import { Util } from '../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class EditProcessFilterDialog { @@ -28,32 +28,32 @@ export class EditProcessFilterDialog { clickOnSaveButton() { const saveButton = this.componentElement.element(this.saveButtonLocator); - Util.waitUntilElementIsVisible(saveButton); + BrowserVisibility.waitUntilElementIsVisible(saveButton); saveButton.click(); - Util.waitUntilElementIsNotVisible(this.componentElement); + BrowserVisibility.waitUntilElementIsNotVisible(this.componentElement); return this; } checkSaveButtonIsEnabled() { - Util.waitUntilElementIsVisible(this.componentElement.element(this.saveButtonLocator)); + BrowserVisibility.waitUntilElementIsVisible(this.componentElement.element(this.saveButtonLocator)); return this.componentElement.element(this.saveButtonLocator).isEnabled(); } clickOnCancelButton() { const cancelButton = this.componentElement.element(this.cancelButtonLocator); - Util.waitUntilElementIsVisible(cancelButton); + BrowserVisibility.waitUntilElementIsVisible(cancelButton); cancelButton.click(); - Util.waitUntilElementIsNotVisible(this.componentElement); + BrowserVisibility.waitUntilElementIsNotVisible(this.componentElement); return this; } checkCancelButtonIsEnabled() { - Util.waitUntilElementIsVisible(this.componentElement.element(this.cancelButtonLocator)); + BrowserVisibility.waitUntilElementIsVisible(this.componentElement.element(this.cancelButtonLocator)); return this.componentElement.element(this.cancelButtonLocator).isEnabled(); } getFilterName() { - Util.waitUntilElementIsVisible(this.filterNameInput); + BrowserVisibility.waitUntilElementIsVisible(this.filterNameInput); return this.filterNameInput.getAttribute('value'); } @@ -64,7 +64,7 @@ export class EditProcessFilterDialog { } clearFilterName() { - Util.waitUntilElementIsVisible(this.filterNameInput); + BrowserVisibility.waitUntilElementIsVisible(this.filterNameInput); this.filterNameInput.click(); this.filterNameInput.getAttribute('value').then((value) => { for (let i = value.length; i >= 0; i--) { @@ -75,7 +75,7 @@ export class EditProcessFilterDialog { } getTitle() { - Util.waitUntilElementIsVisible(this.title); + BrowserVisibility.waitUntilElementIsVisible(this.title); return this.title.getText(); } diff --git a/e2e/pages/adf/dialog/editTaskFilterDialog.ts b/e2e/pages/adf/dialog/editTaskFilterDialog.ts index 0599e79cd0..e4b91fb3c9 100644 --- a/e2e/pages/adf/dialog/editTaskFilterDialog.ts +++ b/e2e/pages/adf/dialog/editTaskFilterDialog.ts @@ -16,7 +16,7 @@ */ import { by, element, protractor } from 'protractor'; -import { Util } from '../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class EditTaskFilterDialog { @@ -28,32 +28,32 @@ export class EditTaskFilterDialog { clickOnSaveButton() { const saveButton = this.componentElement.element(this.saveButtonLocator); - Util.waitUntilElementIsVisible(saveButton); + BrowserVisibility.waitUntilElementIsVisible(saveButton); saveButton.click(); - Util.waitUntilElementIsNotVisible(this.componentElement); + BrowserVisibility.waitUntilElementIsNotVisible(this.componentElement); return this; } checkSaveButtonIsEnabled() { - Util.waitUntilElementIsVisible(this.componentElement.element(this.saveButtonLocator)); + BrowserVisibility.waitUntilElementIsVisible(this.componentElement.element(this.saveButtonLocator)); return this.componentElement.element(this.saveButtonLocator).isEnabled(); } clickOnCancelButton() { const cancelButton = this.componentElement.element(this.cancelButtonLocator); - Util.waitUntilElementIsVisible(cancelButton); + BrowserVisibility.waitUntilElementIsVisible(cancelButton); cancelButton.click(); - Util.waitUntilElementIsNotVisible(this.componentElement); + BrowserVisibility.waitUntilElementIsNotVisible(this.componentElement); return this; } checkCancelButtonIsEnabled() { - Util.waitUntilElementIsVisible(this.componentElement.element(this.cancelButtonLocator)); + BrowserVisibility.waitUntilElementIsVisible(this.componentElement.element(this.cancelButtonLocator)); return this.componentElement.element(this.cancelButtonLocator).isEnabled(); } getFilterName() { - Util.waitUntilElementIsVisible(this.filterNameInput); + BrowserVisibility.waitUntilElementIsVisible(this.filterNameInput); return this.filterNameInput.getAttribute('value'); } @@ -64,7 +64,7 @@ export class EditTaskFilterDialog { } clearFilterName() { - Util.waitUntilElementIsVisible(this.filterNameInput); + BrowserVisibility.waitUntilElementIsVisible(this.filterNameInput); this.filterNameInput.click(); this.filterNameInput.getAttribute('value').then((value) => { for (let i = value.length; i >= 0; i--) { @@ -75,7 +75,7 @@ export class EditTaskFilterDialog { } getTitle() { - Util.waitUntilElementIsVisible(this.title); + BrowserVisibility.waitUntilElementIsVisible(this.title); return this.title.getText(); } diff --git a/e2e/pages/adf/dialog/searchDialog.ts b/e2e/pages/adf/dialog/searchDialog.ts index 857ab4a0f9..0cd7d597d1 100644 --- a/e2e/pages/adf/dialog/searchDialog.ts +++ b/e2e/pages/adf/dialog/searchDialog.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; import { browser, by, element, protractor } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class SearchDialog { @@ -35,47 +35,47 @@ export class SearchDialog { } clickOnSearchIcon() { - Util.waitUntilElementIsVisible(this.searchIcon); + BrowserVisibility.waitUntilElementIsVisible(this.searchIcon); this.searchIcon.click(); return this; } checkSearchIconIsVisible() { - Util.waitUntilElementIsVisible(this.searchIcon); + BrowserVisibility.waitUntilElementIsVisible(this.searchIcon); return this; } checkSearchBarIsVisible() { - Util.waitUntilElementIsVisible(this.searchBar); + BrowserVisibility.waitUntilElementIsVisible(this.searchBar); return this; } checkSearchBarIsNotVisible() { - Util.waitUntilElementIsVisible(this.searchBar); - Util.waitUntilElementIsNotVisible(this.searchBarExpanded); + BrowserVisibility.waitUntilElementIsVisible(this.searchBar); + BrowserVisibility.waitUntilElementIsNotVisible(this.searchBarExpanded); return this; } checkNoResultMessageIsDisplayed() { browser.driver.sleep(500); - Util.waitUntilElementIsVisible(this.noResultMessage); + BrowserVisibility.waitUntilElementIsVisible(this.noResultMessage); return this; } checkNoResultMessageIsNotDisplayed() { - Util.waitUntilElementIsNotOnPage(this.noResultMessage); + BrowserVisibility.waitUntilElementIsNotOnPage(this.noResultMessage); return this; } enterText(text) { - Util.waitUntilElementIsVisible(this.searchBar); + BrowserVisibility.waitUntilElementIsVisible(this.searchBar); browser.executeScript(`document.querySelector("adf-search-control input").click();`); this.searchBar.sendKeys(text); return this; } enterTextAndPressEnter(text) { - Util.waitUntilElementIsVisible(this.searchBar); + BrowserVisibility.waitUntilElementIsVisible(this.searchBar); browser.executeScript(`document.querySelector("adf-search-control input").click();`); this.searchBar.sendKeys(text); this.searchBar.sendKeys(protractor.Key.ENTER); @@ -83,8 +83,8 @@ export class SearchDialog { } resultTableContainsRow(name) { - Util.waitUntilElementIsVisible(this.searchDialog); - Util.waitUntilElementIsVisible(this.getRowByRowName(name)); + BrowserVisibility.waitUntilElementIsVisible(this.searchDialog); + BrowserVisibility.waitUntilElementIsVisible(this.getRowByRowName(name)); return this; } @@ -111,7 +111,7 @@ export class SearchDialog { } clearText() { - Util.waitUntilElementIsVisible(this.searchBar); + BrowserVisibility.waitUntilElementIsVisible(this.searchBar); return this.searchBar.clear(); } } diff --git a/e2e/pages/adf/dialog/shareDialog.ts b/e2e/pages/adf/dialog/shareDialog.ts index 21a0165bc0..3ff98bdcf9 100644 --- a/e2e/pages/adf/dialog/shareDialog.ts +++ b/e2e/pages/adf/dialog/shareDialog.ts @@ -16,8 +16,8 @@ */ import { element, by } from 'protractor'; -import { Util } from '../../../util/util'; import { FormControllersPage } from '../material/formControllersPage'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class ShareDialog { @@ -43,7 +43,7 @@ export class ShareDialog { confirmationRemoveButton = element(by.id('adf-confirm-accept')); checkDialogIsDisplayed() { - return Util.waitUntilElementIsVisible(this.dialogTitle); + return BrowserVisibility.waitUntilElementIsVisible(this.dialogTitle); } clickUnShareFile() { @@ -51,92 +51,92 @@ export class ShareDialog { } clickConfirmationDialogCancelButton() { - Util.waitUntilElementIsVisible(this.confirmationCancelButton); + BrowserVisibility.waitUntilElementIsVisible(this.confirmationCancelButton); this.confirmationCancelButton.click(); } clickConfirmationDialogRemoveButton() { - Util.waitUntilElementIsVisible(this.confirmationRemoveButton); + BrowserVisibility.waitUntilElementIsVisible(this.confirmationRemoveButton); this.confirmationRemoveButton.click(); } checkShareLinkIsDisplayed() { - return Util.waitUntilElementIsVisible(this.shareLink); + return BrowserVisibility.waitUntilElementIsVisible(this.shareLink); } getShareLink() { - Util.waitUntilElementIsVisible(this.shareLink); + BrowserVisibility.waitUntilElementIsVisible(this.shareLink); return this.shareLink.getAttribute('value'); } clickCloseButton() { - Util.waitUntilElementIsVisible(this.closeButton); + BrowserVisibility.waitUntilElementIsVisible(this.closeButton); return this.closeButton.click(); } clickShareLinkButton() { - Util.waitUntilElementIsVisible(this.copySharedLinkButton); + BrowserVisibility.waitUntilElementIsVisible(this.copySharedLinkButton); return this.copySharedLinkButton.click(); } shareToggleButtonIsChecked() { - Util.waitUntilElementIsPresent(this.shareToggleChecked); + BrowserVisibility.waitUntilElementIsPresent(this.shareToggleChecked); } shareToggleButtonIsDisabled() { - Util.waitUntilElementIsPresent(this.shareToggleDisabled); + BrowserVisibility.waitUntilElementIsPresent(this.shareToggleDisabled); } shareToggleButtonIsUnchecked() { - Util.waitUntilElementIsVisible(this.shareToggleUnchecked); + BrowserVisibility.waitUntilElementIsVisible(this.shareToggleUnchecked); } checkNotificationWithMessage(message) { - Util.waitUntilElementIsVisible( + BrowserVisibility.waitUntilElementIsVisible( element(by.cssContainingText('simple-snack-bar', message)) ); } waitForNotificationToClose() { - Util.waitUntilElementIsStale(element(by.css('simple-snack-bar'))); + BrowserVisibility.waitUntilElementIsStale(element(by.css('simple-snack-bar'))); } dialogIsClosed() { - Util.waitUntilElementIsStale(this.shareDialog); + BrowserVisibility.waitUntilElementIsStale(this.shareDialog); } clickDateTimePickerButton() { - Util.waitUntilElementIsVisible(this.timeDatePickerButton); + BrowserVisibility.waitUntilElementIsVisible(this.timeDatePickerButton); this.timeDatePickerButton.click(); } calendarTodayDayIsDisabled() { const today: any = this.dayPicker.element(by.css('.mat-datetimepicker-calendar-body-today')).getText(); - Util.waitUntilElementIsPresent(element(by.cssContainingText('.mat-datetimepicker-calendar-body-disabled', today))); + BrowserVisibility.waitUntilElementIsPresent(element(by.cssContainingText('.mat-datetimepicker-calendar-body-disabled', today))); } setDefaultDay() { const selector = '.mat-datetimepicker-calendar-body-cell:not(.mat-datetimepicker-calendar-body-disabled)'; - Util.waitUntilElementIsVisible(this.dayPicker); + BrowserVisibility.waitUntilElementIsVisible(this.dayPicker); const tomorrow = new Date(new Date().getTime() + 48 * 60 * 60 * 1000).getDate().toString(); this.dayPicker.element(by.cssContainingText(selector, tomorrow)).click(); } setDefaultHour() { const selector = '.mat-datetimepicker-clock-cell:not(.mat-datetimepicker-clock-cell-disabled)'; - Util.waitUntilElementIsVisible(this.clockPicker); - Util.waitUntilElementIsVisible(this.hoursPicker); + BrowserVisibility.waitUntilElementIsVisible(this.clockPicker); + BrowserVisibility.waitUntilElementIsVisible(this.hoursPicker); this.hoursPicker.all(by.css(selector)).first().click(); } setDefaultMinutes() { const selector = '.mat-datetimepicker-clock-cell:not(.mat-datetimepicker-clock-cell-disabled)'; - Util.waitUntilElementIsVisible(this.minutePicker); + BrowserVisibility.waitUntilElementIsVisible(this.minutePicker); this.minutePicker.all(by.css(selector)).first().click(); } dateTimePickerDialogIsClosed() { - Util.waitUntilElementIsStale(element(by.css('mat-datetimepicker-content'))); + BrowserVisibility.waitUntilElementIsStale(element(by.css('mat-datetimepicker-content'))); } getExpirationDate() { @@ -144,14 +144,14 @@ export class ShareDialog { } expirationDateInputHasValue(value) { - Util.waitUntilElementHasValue(this.expirationDateInput, value); + BrowserVisibility.waitUntilElementHasValue(this.expirationDateInput, value); } confirmationDialogIsDisplayed() { - return Util.waitUntilElementIsVisible(this.confirmationDialog); + return BrowserVisibility.waitUntilElementIsVisible(this.confirmationDialog); } confirmationDialogIsNotDisplayed() { - return Util.waitUntilElementIsNotVisible(this.confirmationDialog); + return BrowserVisibility.waitUntilElementIsNotVisible(this.confirmationDialog); } } diff --git a/e2e/pages/adf/dialog/uploadDialog.ts b/e2e/pages/adf/dialog/uploadDialog.ts index fdbfde438e..22ff81d9b3 100644 --- a/e2e/pages/adf/dialog/uploadDialog.ts +++ b/e2e/pages/adf/dialog/uploadDialog.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; import { element, by, protractor, browser } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class UploadDialog { @@ -45,28 +45,28 @@ export class UploadDialog { } checkCloseButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.closeButton); + BrowserVisibility.waitUntilElementIsVisible(this.closeButton); return this; } dialogIsDisplayed() { - Util.waitUntilElementIsVisible(this.dialog); + BrowserVisibility.waitUntilElementIsVisible(this.dialog); return this; } dialogIsMinimized() { - Util.waitUntilElementIsVisible(this.minimizedDialog); + BrowserVisibility.waitUntilElementIsVisible(this.minimizedDialog); return this; } dialogIsNotDisplayed() { - Util.waitUntilElementIsNotOnPage(this.dialog); + BrowserVisibility.waitUntilElementIsNotOnPage(this.dialog); return this; } getRowsName(content) { const row = element.all(by.css(`div[class*='uploading-row'] span[title="${content}"]`)).first(); - Util.waitUntilElementIsVisible(row); + BrowserVisibility.waitUntilElementIsVisible(row); return row; } @@ -75,12 +75,12 @@ export class UploadDialog { } fileIsUploaded(content) { - Util.waitUntilElementIsVisible(this.getRowByRowName(content).element(this.uploadedStatusIcon)); + BrowserVisibility.waitUntilElementIsVisible(this.getRowByRowName(content).element(this.uploadedStatusIcon)); return this; } fileIsError(content) { - Util.waitUntilElementIsVisible(this.getRowByRowName(content).element(this.errorStatusIcon)); + BrowserVisibility.waitUntilElementIsVisible(this.getRowByRowName(content).element(this.errorStatusIcon)); return this; } @@ -92,29 +92,29 @@ export class UploadDialog { } fileIsNotDisplayedInDialog(content) { - Util.waitUntilElementIsNotVisible(element(by.css(`div[class*='uploading-row'] span[title="${content}"]`))); + BrowserVisibility.waitUntilElementIsNotVisible(element(by.css(`div[class*='uploading-row'] span[title="${content}"]`))); return this; } cancelUploads() { - Util.waitUntilElementIsVisible(this.cancelUploadsElement); + BrowserVisibility.waitUntilElementIsVisible(this.cancelUploadsElement); this.cancelUploadsElement.click(); return this; } fileIsCancelled(content) { - Util.waitUntilElementIsVisible(this.getRowByRowName(content).element(this.cancelledStatusIcon)); + BrowserVisibility.waitUntilElementIsVisible(this.getRowByRowName(content).element(this.cancelledStatusIcon)); return this; } removeUploadedFile(content) { - Util.waitUntilElementIsVisible(this.getRowByRowName(content).element(this.uploadedStatusIcon)); + BrowserVisibility.waitUntilElementIsVisible(this.getRowByRowName(content).element(this.uploadedStatusIcon)); this.getRowByRowName(content).element(this.uploadedStatusIcon).click(); return this; } getTitleText() { - Util.waitUntilElementIsVisible(this.title); + BrowserVisibility.waitUntilElementIsVisible(this.title); const deferred = protractor.promise.defer(); this.title.getText().then((text) => { deferred.fulfill(text); @@ -123,7 +123,7 @@ export class UploadDialog { } getConfirmationDialogTitleText() { - Util.waitUntilElementIsVisible(this.canUploadConfirmationTitle); + BrowserVisibility.waitUntilElementIsVisible(this.canUploadConfirmationTitle); const deferred = protractor.promise.defer(); this.canUploadConfirmationTitle.getText().then((text) => { deferred.fulfill(text); @@ -132,7 +132,7 @@ export class UploadDialog { } getConfirmationDialogDescriptionText() { - Util.waitUntilElementIsVisible(this.canUploadConfirmationDescription); + BrowserVisibility.waitUntilElementIsVisible(this.canUploadConfirmationDescription); const deferred = protractor.promise.defer(); this.canUploadConfirmationDescription.getText().then((text) => { deferred.fulfill(text); @@ -141,13 +141,13 @@ export class UploadDialog { } clickOnConfirmationDialogYesButton() { - Util.waitUntilElementIsVisible(this.confirmationDialogYesButton); + BrowserVisibility.waitUntilElementIsVisible(this.confirmationDialogYesButton); this.confirmationDialogYesButton.click(); return this; } clickOnConfirmationDialogNoButton() { - Util.waitUntilElementIsVisible(this.confirmationDialogNoButton); + BrowserVisibility.waitUntilElementIsVisible(this.confirmationDialogNoButton); this.confirmationDialogNoButton.click(); return this; } @@ -173,24 +173,24 @@ export class UploadDialog { } minimizeUploadDialog() { - Util.waitUntilElementIsVisible(this.minimizeButton); + BrowserVisibility.waitUntilElementIsVisible(this.minimizeButton); this.minimizeButton.click(); return this; } maximizeUploadDialog() { - Util.waitUntilElementIsVisible(this.maximizeButton); + BrowserVisibility.waitUntilElementIsVisible(this.maximizeButton); this.maximizeButton.click(); return this; } displayTooltip() { - Util.waitUntilElementIsVisible(element(this.errorStatusIcon)); + BrowserVisibility.waitUntilElementIsVisible(element(this.errorStatusIcon)); browser.actions().mouseMove(element(this.errorStatusIcon)).perform(); } getTooltip() { - Util.waitUntilElementIsVisible(this.errorTooltip); + BrowserVisibility.waitUntilElementIsVisible(this.errorTooltip); return this.errorTooltip.getText(); } diff --git a/e2e/pages/adf/dialog/uploadToggles.ts b/e2e/pages/adf/dialog/uploadToggles.ts index 2b6742f3be..c9f2ced0d4 100644 --- a/e2e/pages/adf/dialog/uploadToggles.ts +++ b/e2e/pages/adf/dialog/uploadToggles.ts @@ -17,8 +17,8 @@ import { FormControllersPage } from '../material/formControllersPage'; -import { Util } from '../../../util/util'; import { by, element, protractor } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class UploadToggles { @@ -49,25 +49,25 @@ export class UploadToggles { checkFolderUploadToggleIsEnabled() { const enabledToggle = element(by.css('mat-slide-toggle[id="adf-folder-upload-switch"][class*="mat-checked"]')); - Util.waitUntilElementIsVisible(enabledToggle); + BrowserVisibility.waitUntilElementIsVisible(enabledToggle); return this; } checkMultipleFileUploadToggleIsEnabled() { const enabledToggle = element(by.css('mat-slide-toggle[id="adf-multiple-upload-switch"][class*="mat-checked"]')); - Util.waitUntilElementIsVisible(enabledToggle); + BrowserVisibility.waitUntilElementIsVisible(enabledToggle); return this; } checkMaxSizeToggleIsEnabled() { const enabledToggle = element(by.css('mat-slide-toggle[id="adf-max-size-filter-upload-switch"][class*="mat-checked"]')); - Util.waitUntilElementIsVisible(enabledToggle); + BrowserVisibility.waitUntilElementIsVisible(enabledToggle); return this; } checkVersioningToggleIsEnabled() { const enabledToggle = element(by.css('mat-slide-toggle[id="adf-version-upload-switch"][class*="mat-checked"]')); - Util.waitUntilElementIsVisible(enabledToggle); + BrowserVisibility.waitUntilElementIsVisible(enabledToggle); return this; } @@ -111,7 +111,7 @@ export class UploadToggles { } addExtension(extension) { - Util.waitUntilElementIsVisible(this.extensionAcceptedField); + BrowserVisibility.waitUntilElementIsVisible(this.extensionAcceptedField); this.extensionAcceptedField.sendKeys(',' + extension); } @@ -121,9 +121,9 @@ export class UploadToggles { } clearText() { - Util.waitUntilElementIsVisible(this.maxSizeField); + BrowserVisibility.waitUntilElementIsVisible(this.maxSizeField); const deferred = protractor.promise.defer(); - this.maxSizeField.clear().then((value) => { + this.maxSizeField.clear().then(() => { this.maxSizeField.sendKeys(protractor.Key.ESCAPE); }); return deferred.promise; diff --git a/e2e/pages/adf/errorPage.ts b/e2e/pages/adf/errorPage.ts index 587f57890e..32ae2005ea 100644 --- a/e2e/pages/adf/errorPage.ts +++ b/e2e/pages/adf/errorPage.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Util } from '../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; import { element, by } from 'protractor'; export class ErrorPage { @@ -27,31 +27,31 @@ export class ErrorPage { secondButton = element(by.id('adf-secondary-button')); clickBackButton() { - Util.waitUntilElementIsVisible(this.backButton); + BrowserVisibility.waitUntilElementIsVisible(this.backButton); this.backButton.click(); } clickSecondButton() { - Util.waitUntilElementIsVisible(this.secondButton); + BrowserVisibility.waitUntilElementIsVisible(this.secondButton); this.secondButton.click(); } checkErrorCode() { - Util.waitUntilElementIsVisible(this.errorPageCode); + BrowserVisibility.waitUntilElementIsVisible(this.errorPageCode); } getErrorCode() { - Util.waitUntilElementIsVisible(this.errorPageCode); + BrowserVisibility.waitUntilElementIsVisible(this.errorPageCode); return this.errorPageCode.getText(); } getErrorTitle() { - Util.waitUntilElementIsVisible(this.errorPageTitle); + BrowserVisibility.waitUntilElementIsVisible(this.errorPageTitle); return this.errorPageTitle.getText(); } getErrorDescription() { - Util.waitUntilElementIsVisible(this.errorPageDescription); + BrowserVisibility.waitUntilElementIsVisible(this.errorPageDescription); return this.errorPageDescription.getText(); } } diff --git a/e2e/pages/adf/filePreviewPage.ts b/e2e/pages/adf/filePreviewPage.ts index 0edef8d95a..5a08e6009e 100644 --- a/e2e/pages/adf/filePreviewPage.ts +++ b/e2e/pages/adf/filePreviewPage.ts @@ -16,7 +16,7 @@ */ import { browser, by, element, protractor } from 'protractor'; -import { Util } from '../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class FilePreviewPage { @@ -25,19 +25,19 @@ export class FilePreviewPage { closeButton = element(by.css('button[data-automation-id="adf-toolbar-back"]')); waitForElements() { - Util.waitUntilElementIsVisible(element(by.css(`i[id='viewer-close-button']`))); + BrowserVisibility.waitUntilElementIsVisible(element(by.css(`i[id='viewer-close-button']`))); } viewFile(fileName) { - Util.waitUntilElementIsVisible(element(by.cssContainingText(`div[data-automation-id="${fileName}"]`, fileName))); + BrowserVisibility.waitUntilElementIsVisible(element(by.cssContainingText(`div[data-automation-id="${fileName}"]`, fileName))); browser.actions().doubleClick(element(by.cssContainingText(`div[data-automation-id="${fileName}"]`, fileName))).perform(); this.waitForElements(); } getPDFTitleFromSearch() { const deferred = protractor.promise.defer(); - Util.waitUntilElementIsVisible(this.pdfTitleFromSearch); - Util.waitUntilElementIsVisible(this.textLayer); + BrowserVisibility.waitUntilElementIsVisible(this.pdfTitleFromSearch); + BrowserVisibility.waitUntilElementIsVisible(this.textLayer); this.pdfTitleFromSearch.getText().then((result) => { deferred.fulfill(result); }); @@ -45,36 +45,36 @@ export class FilePreviewPage { } checkCloseButton() { - Util.waitUntilElementIsVisible(element(by.css(`i[id='viewer-close-button']`))); + BrowserVisibility.waitUntilElementIsVisible(element(by.css(`i[id='viewer-close-button']`))); } checkOriginalSizeButton() { - Util.waitUntilElementIsVisible(element(by.cssContainingText(`div[id='viewer-scale-page-button'] > i `, `zoom_out_map`))); + BrowserVisibility.waitUntilElementIsVisible(element(by.cssContainingText(`div[id='viewer-scale-page-button'] > i `, `zoom_out_map`))); } checkZoomInButton() { - Util.waitUntilElementIsVisible(element(by.css(`div[id='viewer-zoom-in-button']`))); + BrowserVisibility.waitUntilElementIsVisible(element(by.css(`div[id='viewer-zoom-in-button']`))); } checkZoomOutButton() { - Util.waitUntilElementIsVisible(element(by.css(`div[id='viewer-zoom-out-button']`))); + BrowserVisibility.waitUntilElementIsVisible(element(by.css(`div[id='viewer-zoom-out-button']`))); } checkPreviousPageButton() { - Util.waitUntilElementIsVisible(element(by.css(`div[id='viewer-previous-page-button']`))); + BrowserVisibility.waitUntilElementIsVisible(element(by.css(`div[id='viewer-previous-page-button']`))); } checkNextPageButton() { - Util.waitUntilElementIsVisible(element(by.css(`div[id='viewer-next-page-button']`))); + BrowserVisibility.waitUntilElementIsVisible(element(by.css(`div[id='viewer-next-page-button']`))); } checkDownloadButton() { - Util.waitUntilElementIsVisible(element(by.css(`button[id='viewer-download-button']`))); + BrowserVisibility.waitUntilElementIsVisible(element(by.css(`button[id='viewer-download-button']`))); } checkCurrentPageNumber(pageNumber) { - Util.waitUntilElementIsVisible(element(by.css(`input[id='viewer-pagenumber-input'][ng-reflect-value="${pageNumber}"]`))); + BrowserVisibility.waitUntilElementIsVisible(element(by.css(`input[id='viewer-pagenumber-input'][ng-reflect-value="${pageNumber}"]`))); } checkText(pageNumber, text) { @@ -83,35 +83,35 @@ export class FilePreviewPage { const textLayerLoaded = element(by.css(`div[id="pageContainer${pageNumber}"] div[class='textLayer'] > div`)); const specificText = element(by.cssContainingText(`div[id="pageContainer${pageNumber}"] div[class='textLayer'] > div`, text)); - Util.waitUntilElementIsVisible(allPages); - Util.waitUntilElementIsVisible(pageLoaded); - Util.waitUntilElementIsVisible(textLayerLoaded); - Util.waitUntilElementIsVisible(specificText); + BrowserVisibility.waitUntilElementIsVisible(allPages); + BrowserVisibility.waitUntilElementIsVisible(pageLoaded); + BrowserVisibility.waitUntilElementIsVisible(textLayerLoaded); + BrowserVisibility.waitUntilElementIsVisible(specificText); } goToNextPage() { const nextPageIcon = element(by.css(`div[id='viewer-next-page-button']`)); - Util.waitUntilElementIsVisible(nextPageIcon); + BrowserVisibility.waitUntilElementIsVisible(nextPageIcon); nextPageIcon.click(); } goToPreviousPage() { const previousPageIcon = element(by.css(`div[id='viewer-previous-page-button']`)); - Util.waitUntilElementIsVisible(previousPageIcon); + BrowserVisibility.waitUntilElementIsVisible(previousPageIcon); previousPageIcon.click(); } goToPage(page) { const pageInput = element(by.css(`input[id='viewer-pagenumber-input']`)); - Util.waitUntilElementIsVisible(pageInput); + BrowserVisibility.waitUntilElementIsVisible(pageInput); pageInput.clear(); pageInput.sendKeys(page); pageInput.sendKeys(protractor.Key.ENTER); } closePreviewWithButton() { - Util.waitUntilElementIsVisible(this.closeButton); + BrowserVisibility.waitUntilElementIsVisible(this.closeButton); this.closeButton.click(); } @@ -119,35 +119,35 @@ export class FilePreviewPage { const filePreview = element.all(by.css(`div[class='canvasWrapper'] > canvas`)).first(); browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - Util.waitUntilElementIsVisible(element(by.cssContainingText(`div[data-automation-id="text_${fileName}"]`, fileName))); - Util.waitUntilElementIsNotOnPage(filePreview); + BrowserVisibility.waitUntilElementIsVisible(element(by.cssContainingText(`div[data-automation-id="text_${fileName}"]`, fileName))); + BrowserVisibility.waitUntilElementIsNotOnPage(filePreview); } clickDownload(fileName) { const downloadButton = element(by.css(`button[id='viewer-download-button']`)); - Util.waitUntilElementIsVisible(downloadButton); + BrowserVisibility.waitUntilElementIsVisible(downloadButton); downloadButton.click(); } clickZoomIn() { const zoomInButton = element(by.css(`div[id='viewer-zoom-in-button']`)); - Util.waitUntilElementIsVisible(zoomInButton); + BrowserVisibility.waitUntilElementIsVisible(zoomInButton); zoomInButton.click(); } clickZoomOut() { const zoomOutButton = element(by.css(`div[id='viewer-zoom-out-button']`)); - Util.waitUntilElementIsVisible(zoomOutButton); + BrowserVisibility.waitUntilElementIsVisible(zoomOutButton); zoomOutButton.click(); } clickActualSize() { const actualSizeButton = element(by.css(`div[id='viewer-scale-page-button']`)); - Util.waitUntilElementIsVisible(actualSizeButton); + BrowserVisibility.waitUntilElementIsVisible(actualSizeButton); actualSizeButton.click(); } @@ -167,8 +167,8 @@ export class FilePreviewPage { const canvasLayer = element.all(by.css(`div[class='canvasWrapper'] > canvas`)).first(); const textLayer = element(by.css(`div[id*='pageContainer'] div[class='textLayer'] > div`)); - Util.waitUntilElementIsVisible(canvasLayer); - Util.waitUntilElementIsVisible(textLayer); + BrowserVisibility.waitUntilElementIsVisible(canvasLayer); + BrowserVisibility.waitUntilElementIsVisible(textLayer); let actualWidth, zoomedInWidth, @@ -210,8 +210,8 @@ export class FilePreviewPage { const canvasLayer = element.all(by.css(`div[class='canvasWrapper'] > canvas`)).first(); const textLayer = element(by.css(`div[id*='pageContainer'] div[class='textLayer'] > div`)); - Util.waitUntilElementIsVisible(canvasLayer); - Util.waitUntilElementIsVisible(textLayer); + BrowserVisibility.waitUntilElementIsVisible(canvasLayer); + BrowserVisibility.waitUntilElementIsVisible(textLayer); let actualWidth, actualHeight, @@ -262,8 +262,8 @@ export class FilePreviewPage { const canvasLayer = element.all(by.css(`div[class='canvasWrapper'] > canvas`)).first(); const textLayer = element(by.css(`div[id*='pageContainer'] div[class='textLayer'] > div`)); - Util.waitUntilElementIsVisible(canvasLayer); - Util.waitUntilElementIsVisible(textLayer); + BrowserVisibility.waitUntilElementIsVisible(canvasLayer); + BrowserVisibility.waitUntilElementIsVisible(textLayer); let actualWidth; let zoomedOutWidth; diff --git a/e2e/pages/adf/lockFilePage.ts b/e2e/pages/adf/lockFilePage.ts index 98c79450e9..97ebbb2e25 100644 --- a/e2e/pages/adf/lockFilePage.ts +++ b/e2e/pages/adf/lockFilePage.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import { Util } from '../../util/util'; import { element, by } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class LockFilePage { @@ -27,34 +27,34 @@ export class LockFilePage { allowOwnerCheckbox = element(by.cssContainingText('mat-checkbox[class*="adf-lock-file-name"] span', ' Allow the owner to modify this file ')); checkLockFileCheckboxIsDisplayed() { - return Util.waitUntilElementIsVisible(this.lockFileCheckboxText); + return BrowserVisibility.waitUntilElementIsVisible(this.lockFileCheckboxText); } checkCancelButtonIsDisplayed() { - return Util.waitUntilElementIsVisible(this.cancelButton); + return BrowserVisibility.waitUntilElementIsVisible(this.cancelButton); } checkSaveButtonIsDisplayed() { - return Util.waitUntilElementIsVisible(this.saveButton); + return BrowserVisibility.waitUntilElementIsVisible(this.saveButton); } clickCancelButton() { - Util.waitUntilElementIsClickable(this.cancelButton); + BrowserVisibility.waitUntilElementIsClickable(this.cancelButton); return this.cancelButton.click(); } clickLockFileCheckbox() { - Util.waitUntilElementIsClickable(this.lockFileCheckbox); + BrowserVisibility.waitUntilElementIsClickable(this.lockFileCheckbox); return this.lockFileCheckbox.click(); } clickSaveButton() { - Util.waitUntilElementIsClickable(this.saveButton); + BrowserVisibility.waitUntilElementIsClickable(this.saveButton); return this.saveButton.click(); } clickAllowOwnerCheckbox() { - Util.waitUntilElementIsClickable(this.allowOwnerCheckbox); + BrowserVisibility.waitUntilElementIsClickable(this.allowOwnerCheckbox); return this.allowOwnerCheckbox.click(); } } diff --git a/e2e/pages/adf/loginPage.ts b/e2e/pages/adf/loginPage.ts index 86ed418f8d..704d0d2d31 100644 --- a/e2e/pages/adf/loginPage.ts +++ b/e2e/pages/adf/loginPage.ts @@ -17,10 +17,10 @@ import { FormControllersPage } from './material/formControllersPage'; -import { Util } from '../../util/util'; import { SettingsPage } from './settingsPage'; import { browser, by, element, protractor } from 'protractor'; import TestConfig = require('../../test.config'); +import { BrowserVisibility } from '@alfresco/adf-testing'; export class LoginPage { @@ -53,26 +53,26 @@ export class LoginPage { settingsIcon = element(by.cssContainingText('a[data-automation-id="settings"] mat-icon', 'settings')); waitForElements() { - Util.waitUntilElementIsVisible(this.txtUsername); - Util.waitUntilElementIsVisible(this.txtPassword); + BrowserVisibility.waitUntilElementIsVisible(this.txtUsername); + BrowserVisibility.waitUntilElementIsVisible(this.txtPassword); return this; } enterUsername(username) { - Util.waitUntilElementIsVisible(this.txtUsername); + BrowserVisibility.waitUntilElementIsVisible(this.txtUsername); this.txtUsername.sendKeys(''); this.txtUsername.clear(); return this.txtUsername.sendKeys(username); } enterPassword(password) { - Util.waitUntilElementIsVisible(this.txtPassword); + BrowserVisibility.waitUntilElementIsVisible(this.txtPassword); this.txtPassword.clear(); return this.txtPassword.sendKeys(password); } clearUsername() { - Util.waitUntilElementIsVisible(this.txtUsername); + BrowserVisibility.waitUntilElementIsVisible(this.txtUsername); this.txtUsername.click(); this.txtUsername.getAttribute('value').then((value) => { for (let i = value.length; i >= 0; i--) { @@ -83,7 +83,7 @@ export class LoginPage { } clearPassword() { - Util.waitUntilElementIsVisible(this.txtPassword); + BrowserVisibility.waitUntilElementIsVisible(this.txtPassword); this.txtPassword.getAttribute('value').then((value) => { for (let i = value.length; i >= 0; i--) { this.txtPassword.sendKeys(protractor.Key.BACK_SPACE); @@ -92,53 +92,53 @@ export class LoginPage { } getUsernameTooltip() { - Util.waitUntilElementIsVisible(this.usernameTooltip); + BrowserVisibility.waitUntilElementIsVisible(this.usernameTooltip); return this.usernameTooltip.getText(); } getPasswordTooltip() { - Util.waitUntilElementIsVisible(this.passwordTooltip); + BrowserVisibility.waitUntilElementIsVisible(this.passwordTooltip); return this.passwordTooltip.getText(); } getLoginError() { - Util.waitUntilElementIsVisible(this.loginTooltip); + BrowserVisibility.waitUntilElementIsVisible(this.loginTooltip); return this.loginTooltip.getText(); } - checkLoginImgURL(url) { - Util.waitUntilElementIsVisible(this.logoImg); + checkLoginImgURL() { + BrowserVisibility.waitUntilElementIsVisible(this.logoImg); return this.logoImg.getAttribute('src'); } checkUsernameInactive() { - Util.waitUntilElementIsVisible(this.usernameInactive); + BrowserVisibility.waitUntilElementIsVisible(this.usernameInactive); } checkPasswordInactive() { - Util.waitUntilElementIsVisible(this.passwordInactive); + BrowserVisibility.waitUntilElementIsVisible(this.passwordInactive); } checkUsernameHighlighted() { this.adfLogo.click(); - Util.waitUntilElementIsVisible(this.usernameHighlighted); + BrowserVisibility.waitUntilElementIsVisible(this.usernameHighlighted); } checkPasswordHighlighted() { this.adfLogo.click(); - Util.waitUntilElementIsVisible(this.passwordHighlighted); + BrowserVisibility.waitUntilElementIsVisible(this.passwordHighlighted); } checkUsernameTooltipIsNotVisible() { - Util.waitUntilElementIsNotVisible(this.usernameTooltip); + BrowserVisibility.waitUntilElementIsNotVisible(this.usernameTooltip); } checkPasswordTooltipIsNotVisible() { - Util.waitUntilElementIsNotVisible(this.passwordTooltip); + BrowserVisibility.waitUntilElementIsNotVisible(this.passwordTooltip); } getSignInButtonIsEnabled() { - Util.waitUntilElementIsVisible(this.signInButton); + BrowserVisibility.waitUntilElementIsVisible(this.signInButton); return this.signInButton.isEnabled(); } @@ -168,22 +168,22 @@ export class LoginPage { } clickSignInButton() { - Util.waitUntilElementIsVisible(this.signInButton); + BrowserVisibility.waitUntilElementIsVisible(this.signInButton); this.signInButton.click(); } clickSettingsIcon() { - Util.waitUntilElementIsVisible(this.settingsIcon); + BrowserVisibility.waitUntilElementIsVisible(this.settingsIcon); this.settingsIcon.click(); } showPassword() { - Util.waitUntilElementIsVisible(this.showPasswordElement); + BrowserVisibility.waitUntilElementIsVisible(this.showPasswordElement); this.showPasswordElement.click(); } hidePassword() { - Util.waitUntilElementIsVisible(this.hidePasswordElement); + BrowserVisibility.waitUntilElementIsVisible(this.hidePasswordElement); this.hidePasswordElement.click(); } @@ -192,31 +192,31 @@ export class LoginPage { } checkPasswordIsHidden() { - Util.waitUntilElementIsVisible(this.txtPassword); + BrowserVisibility.waitUntilElementIsVisible(this.txtPassword); } checkRememberIsDisplayed() { - Util.waitUntilElementIsVisible(this.rememberMe); + BrowserVisibility.waitUntilElementIsVisible(this.rememberMe); } checkRememberIsNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.rememberMe); + BrowserVisibility.waitUntilElementIsNotVisible(this.rememberMe); } checkNeedHelpIsDisplayed() { - Util.waitUntilElementIsVisible(this.needHelp); + BrowserVisibility.waitUntilElementIsVisible(this.needHelp); } checkNeedHelpIsNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.needHelp); + BrowserVisibility.waitUntilElementIsNotVisible(this.needHelp); } checkRegisterDisplayed() { - Util.waitUntilElementIsVisible(this.register); + BrowserVisibility.waitUntilElementIsVisible(this.register); } checkRegisterIsNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.register); + BrowserVisibility.waitUntilElementIsNotVisible(this.register); } enableFooter() { @@ -240,14 +240,14 @@ export class LoginPage { } enterSuccessRoute(route) { - Util.waitUntilElementIsVisible(this.successRouteTxt); + BrowserVisibility.waitUntilElementIsVisible(this.successRouteTxt); this.successRouteTxt.sendKeys(''); this.successRouteTxt.clear(); return this.successRouteTxt.sendKeys(route); } enterLogo(logo) { - Util.waitUntilElementIsVisible(this.logoTxt); + BrowserVisibility.waitUntilElementIsVisible(this.logoTxt); this.logoTxt.sendKeys(''); this.logoTxt.clear(); return this.logoTxt.sendKeys(logo); @@ -258,6 +258,6 @@ export class LoginPage { this.enterUsername(username); this.enterPassword(password); this.clickSignInButton(); - return Util.waitUntilElementIsVisible(this.header); + return BrowserVisibility.waitUntilElementIsVisible(this.header); } } diff --git a/e2e/pages/adf/material/datePickerPage.ts b/e2e/pages/adf/material/datePickerPage.ts index 6e0fa1c077..304c62f4e7 100644 --- a/e2e/pages/adf/material/datePickerPage.ts +++ b/e2e/pages/adf/material/datePickerPage.ts @@ -15,9 +15,9 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; import { element, by, browser, protractor } from 'protractor'; import { DateUtil } from '../../../util/dateUtil'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class DatePickerPage { @@ -56,7 +56,7 @@ export class DatePickerPage { selectTodayDate() { this.checkDatePickerIsDisplayed(); const todayDate = element(by.css('.mat-calendar-body-today')); - Util.waitUntilElementIsClickable(todayDate); + BrowserVisibility.waitUntilElementIsClickable(todayDate); todayDate.click(); return this; } @@ -69,12 +69,12 @@ export class DatePickerPage { } checkDatePickerIsDisplayed() { - Util.waitUntilElementIsVisible(this.datePicker); + BrowserVisibility.waitUntilElementIsVisible(this.datePicker); return this; } checkDatePickerIsNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.datePicker); + BrowserVisibility.waitUntilElementIsNotVisible(this.datePicker); return this; } } diff --git a/e2e/pages/adf/material/formControllersPage.ts b/e2e/pages/adf/material/formControllersPage.ts index 1f74759f51..50b2ad0cce 100644 --- a/e2e/pages/adf/material/formControllersPage.ts +++ b/e2e/pages/adf/material/formControllersPage.ts @@ -15,26 +15,26 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; import { by } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class FormControllersPage { enableToggle(toggle) { - Util.waitUntilElementIsVisible(toggle); + BrowserVisibility.waitUntilElementIsVisible(toggle); toggle.getAttribute('class').then((check) => { if (check.indexOf('mat-checked') < 0) { - Util.waitUntilElementIsClickable(toggle.all(by.css('div')).first()); + BrowserVisibility.waitUntilElementIsClickable(toggle.all(by.css('div')).first()); toggle.all(by.css('div')).first().click(); } }); } disableToggle(toggle) { - Util.waitUntilElementIsVisible(toggle); + BrowserVisibility.waitUntilElementIsVisible(toggle); toggle.getAttribute('class').then((check) => { if (check.indexOf('mat-checked') >= 0) { - Util.waitUntilElementIsClickable(toggle.all(by.css('div')).first()); + BrowserVisibility.waitUntilElementIsClickable(toggle.all(by.css('div')).first()); toggle.all(by.css('div')).first().click(); } }); diff --git a/e2e/pages/adf/metadataViewPage.ts b/e2e/pages/adf/metadataViewPage.ts index d46de60f02..4a247f7364 100644 --- a/e2e/pages/adf/metadataViewPage.ts +++ b/e2e/pages/adf/metadataViewPage.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import { Util } from '../../util/util'; import { browser, by, element, promise } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class MetadataViewPage { @@ -46,85 +46,85 @@ export class MetadataViewPage { closeButton = element(by.cssContainingText('button.mat-button span', 'Close')); getTitle(): promise.Promise { - Util.waitUntilElementIsVisible(this.title); + BrowserVisibility.waitUntilElementIsVisible(this.title); return this.title.getText(); } getExpandedAspectName(): promise.Promise { - Util.waitUntilElementIsVisible(this.expandedAspect); + BrowserVisibility.waitUntilElementIsVisible(this.expandedAspect); return this.expandedAspect.element(this.aspectTitle).getText(); } getName(): promise.Promise { - Util.waitUntilElementIsVisible(this.name); + BrowserVisibility.waitUntilElementIsVisible(this.name); return this.name.getText(); } getCreator(): promise.Promise { - Util.waitUntilElementIsVisible(this.creator); + BrowserVisibility.waitUntilElementIsVisible(this.creator); return this.creator.getText(); } getCreatedDate(): promise.Promise { - Util.waitUntilElementIsVisible(this.createdDate); + BrowserVisibility.waitUntilElementIsVisible(this.createdDate); return this.createdDate.getText(); } getModifier(): promise.Promise { - Util.waitUntilElementIsVisible(this.modifier); + BrowserVisibility.waitUntilElementIsVisible(this.modifier); return this.modifier.getText(); } getModifiedDate(): promise.Promise { - Util.waitUntilElementIsVisible(this.modifiedDate); + BrowserVisibility.waitUntilElementIsVisible(this.modifiedDate); return this.modifiedDate.getText(); } getMimetypeName(): promise.Promise { - Util.waitUntilElementIsVisible(this.mimetypeName); + BrowserVisibility.waitUntilElementIsVisible(this.mimetypeName); return this.mimetypeName.getText(); } getSize(): promise.Promise { - Util.waitUntilElementIsVisible(this.size); + BrowserVisibility.waitUntilElementIsVisible(this.size); return this.size.getText(); } getDescription(): promise.Promise { - Util.waitUntilElementIsVisible(this.description); + BrowserVisibility.waitUntilElementIsVisible(this.description); return this.description.getText(); } getAuthor(): promise.Promise { - Util.waitUntilElementIsVisible(this.author); + BrowserVisibility.waitUntilElementIsVisible(this.author); return this.author.getText(); } getTitleProperty(): promise.Promise { - Util.waitUntilElementIsVisible(this.titleProperty); + BrowserVisibility.waitUntilElementIsVisible(this.titleProperty); return this.titleProperty.getText(); } editIconIsDisplayed(): promise.Promise { - return Util.waitUntilElementIsVisible(this.editIcon); + return BrowserVisibility.waitUntilElementIsVisible(this.editIcon); } editIconIsNotDisplayed(): promise.Promise { - return Util.waitUntilElementIsNotVisible(this.editIcon); + return BrowserVisibility.waitUntilElementIsNotVisible(this.editIcon); } editIconClick(): promise.Promise { - Util.waitUntilElementIsVisible(this.editIcon); + BrowserVisibility.waitUntilElementIsVisible(this.editIcon); return this.editIcon.click(); } informationButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.informationButton); - Util.waitUntilElementIsClickable(this.informationButton); + BrowserVisibility.waitUntilElementIsVisible(this.informationButton); + BrowserVisibility.waitUntilElementIsClickable(this.informationButton); } informationButtonIsNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.informationButton); + BrowserVisibility.waitUntilElementIsNotVisible(this.informationButton); } clickOnInformationButton(): MetadataViewPage { @@ -135,24 +135,24 @@ export class MetadataViewPage { } getInformationButtonText(): promise.Promise { - Util.waitUntilElementIsVisible(this.informationSpan); + BrowserVisibility.waitUntilElementIsVisible(this.informationSpan); return this.informationSpan.getText(); } getInformationIconText(): promise.Promise { - Util.waitUntilElementIsVisible(this.informationIcon); + BrowserVisibility.waitUntilElementIsVisible(this.informationIcon); return this.informationIcon.getText(); } clickOnPropertiesTab(): MetadataViewPage { const propertiesTab = element(by.cssContainingText(`.adf-info-drawer-layout-content div.mat-tab-labels div .mat-tab-label-content`, `Properties`)); - Util.waitUntilElementIsVisible(propertiesTab); + BrowserVisibility.waitUntilElementIsVisible(propertiesTab); propertiesTab.click(); return this; } clickRightChevron(): MetadataViewPage { - Util.waitUntilElementIsVisible(this.rightChevron); + BrowserVisibility.waitUntilElementIsVisible(this.rightChevron); this.rightChevron.click(); return this; } @@ -167,29 +167,29 @@ export class MetadataViewPage { editPropertyIconIsDisplayed(propertyName: string) { const editPropertyIcon = element(by.css('mat-icon[data-automation-id="card-textitem-edit-icon-' + propertyName + '"]')); - Util.waitUntilElementIsVisible(editPropertyIcon); + BrowserVisibility.waitUntilElementIsVisible(editPropertyIcon); } updatePropertyIconIsDisplayed(propertyName: string) { const updatePropertyIcon = element(by.css('mat-icon[data-automation-id="card-textitem-update-' + propertyName + '"]')); - Util.waitUntilElementIsVisible(updatePropertyIcon); + BrowserVisibility.waitUntilElementIsVisible(updatePropertyIcon); } clickUpdatePropertyIcon(propertyName: string): promise.Promise { const updatePropertyIcon = element(by.css('mat-icon[data-automation-id="card-textitem-update-' + propertyName + '"]')); - Util.waitUntilElementIsVisible(updatePropertyIcon); + BrowserVisibility.waitUntilElementIsVisible(updatePropertyIcon); return updatePropertyIcon.click(); } clickClearPropertyIcon(propertyName: string): promise.Promise { const clearPropertyIcon = element(by.css('mat-icon[data-automation-id="card-textitem-reset-' + propertyName + '"]')); - Util.waitUntilElementIsVisible(clearPropertyIcon); + BrowserVisibility.waitUntilElementIsVisible(clearPropertyIcon); return clearPropertyIcon.click(); } enterPropertyText(propertyName: string, text: string | number): MetadataViewPage { const textField = element(by.css('input[data-automation-id="card-textitem-editinput-' + propertyName + '"]')); - Util.waitUntilElementIsVisible(textField); + BrowserVisibility.waitUntilElementIsVisible(textField); textField.sendKeys(''); textField.clear(); textField.sendKeys(text); @@ -198,7 +198,7 @@ export class MetadataViewPage { enterPresetText(text: string): MetadataViewPage { const presetField = element(by.css('input[data-automation-id="adf-text-custom-preset"]')); - Util.waitUntilElementIsVisible(presetField); + BrowserVisibility.waitUntilElementIsVisible(presetField); presetField.sendKeys(''); presetField.clear(); presetField.sendKeys(text); @@ -209,7 +209,7 @@ export class MetadataViewPage { enterDescriptionText(text: string): MetadataViewPage { const textField = element(by.css('textarea[data-automation-id="card-textitem-edittextarea-properties.cm:description"]')); - Util.waitUntilElementIsVisible(textField); + BrowserVisibility.waitUntilElementIsVisible(textField); textField.sendKeys(''); textField.clear(); textField.sendKeys(text); @@ -220,18 +220,18 @@ export class MetadataViewPage { const propertyType = type || 'textitem'; const textField = element(by.css('span[data-automation-id="card-' + propertyType + '-value-' + propertyName + '"]')); - Util.waitUntilElementIsVisible(textField); + BrowserVisibility.waitUntilElementIsVisible(textField); return textField.getText(); } clearPropertyIconIsDisplayed(propertyName: string) { const clearPropertyIcon = element(by.css('mat-icon[data-automation-id="card-textitem-reset-' + propertyName + '"]')); - Util.waitUntilElementIsVisible(clearPropertyIcon); + BrowserVisibility.waitUntilElementIsVisible(clearPropertyIcon); } clickEditPropertyIcons(propertyName: string) { const editPropertyIcon = element(by.css('mat-icon[data-automation-id="card-textitem-edit-icon-' + propertyName + '"]')); - Util.waitUntilElementIsClickable(editPropertyIcon); + BrowserVisibility.waitUntilElementIsClickable(editPropertyIcon); editPropertyIcon.click(); } @@ -242,50 +242,50 @@ export class MetadataViewPage { clickMetadataGroup(groupName: string) { const group = element(by.css('mat-expansion-panel[data-automation-id="adf-metadata-group-' + groupName + '"]')); - Util.waitUntilElementIsVisible(group); + BrowserVisibility.waitUntilElementIsVisible(group); group.click(); } checkMetadataGroupIsPresent(groupName: string): promise.Promise { const group = element(by.css('mat-expansion-panel[data-automation-id="adf-metadata-group-' + groupName + '"]')); - return Util.waitUntilElementIsVisible(group); + return BrowserVisibility.waitUntilElementIsVisible(group); } checkMetadataGroupIsNotPresent(groupName: string): promise.Promise { const group = element(by.css('mat-expansion-panel[data-automation-id="adf-metadata-group-' + groupName + '"]')); - return Util.waitUntilElementIsNotVisible(group); + return BrowserVisibility.waitUntilElementIsNotVisible(group); } checkMetadataGroupIsExpand(groupName: string) { const group = element(by.css('mat-expansion-panel[data-automation-id="adf-metadata-group-' + groupName + '"] > mat-expansion-panel-header')); - Util.waitUntilElementIsVisible(group); + BrowserVisibility.waitUntilElementIsVisible(group); expect(group.getAttribute('class')).toContain('mat-expanded'); } checkMetadataGroupIsNotExpand(groupName: string) { const group = element(by.css('mat-expansion-panel[data-automation-id="adf-metadata-group-' + groupName + '"] > mat-expansion-panel-header')); - Util.waitUntilElementIsVisible(group); + BrowserVisibility.waitUntilElementIsVisible(group); expect(group.getAttribute('class')).not.toContain('mat-expanded'); } getMetadataGroupTitle(groupName: string): promise.Promise { const group = element(by.css('mat-expansion-panel[data-automation-id="adf-metadata-group-' + groupName + '"] > mat-expansion-panel-header > span > mat-panel-title')); - Util.waitUntilElementIsVisible(group); + BrowserVisibility.waitUntilElementIsVisible(group); return group.getText(); } checkPropertyIsVisible(propertyName: string, type: string) { const property = element(by.css('div[data-automation-id="card-' + type + '-label-' + propertyName + '"]')); - Util.waitUntilElementIsVisible(property); + BrowserVisibility.waitUntilElementIsVisible(property); } checkPropertyIsNotVisible(propertyName: string, type: string) { const property = element(by.css('div[data-automation-id="card-' + type + '-label-' + propertyName + '"]')); - Util.waitUntilElementIsNotVisible(property); + BrowserVisibility.waitUntilElementIsNotVisible(property); } clickCloseButton() { - Util.waitUntilElementIsVisible(this.closeButton); + BrowserVisibility.waitUntilElementIsVisible(this.closeButton); this.closeButton.click(); } } diff --git a/e2e/pages/adf/navigationBarPage.ts b/e2e/pages/adf/navigationBarPage.ts index 92d8e34f56..a49e740ef0 100644 --- a/e2e/pages/adf/navigationBarPage.ts +++ b/e2e/pages/adf/navigationBarPage.ts @@ -15,12 +15,12 @@ * limitations under the License. */ -import { Util } from '../../util/util'; import { browser, by, element } from 'protractor'; import { ProcessServicesPage } from './process-services/processServicesPage'; import { AppListCloudPage } from '@alfresco/adf-testing'; import TestConfig = require('../../test.config'); import { PeopleGroupCloudComponentPage } from './demo-shell/process-services/peopleGroupCloudComponentPage'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class NavigationBarPage { @@ -54,91 +54,91 @@ export class NavigationBarPage { aboutButton = element(by.css('a[data-automation-id="About"]')); navigateToDatatable() { - Util.waitUntilElementIsVisible(this.dataTableButton); + BrowserVisibility.waitUntilElementIsVisible(this.dataTableButton); this.dataTableButton.click(); - Util.waitUntilElementIsVisible(this.dataTableNestedButton); + BrowserVisibility.waitUntilElementIsVisible(this.dataTableNestedButton); this.dataTableNestedButton.click(); } clickContentServicesButton() { - Util.waitUntilElementIsVisible(this.contentServicesButton); + BrowserVisibility.waitUntilElementIsVisible(this.contentServicesButton); this.contentServicesButton.click(); } clickTaskListButton() { - Util.waitUntilElementIsVisible(this.taskListButton); + BrowserVisibility.waitUntilElementIsVisible(this.taskListButton); this.taskListButton.click(); } clickConfigEditorButton() { - Util.waitUntilElementIsVisible(this.configEditorButton); + BrowserVisibility.waitUntilElementIsVisible(this.configEditorButton); this.configEditorButton.click(); } navigateToProcessServicesPage() { - Util.waitUntilElementIsVisible(this.processServicesButton); + BrowserVisibility.waitUntilElementIsVisible(this.processServicesButton); this.processServicesButton.click(); - Util.waitUntilElementIsVisible(this.processServicesNestedButton); + BrowserVisibility.waitUntilElementIsVisible(this.processServicesNestedButton); this.processServicesNestedButton.click(); return new ProcessServicesPage(); } navigateToProcessServicesCloudPage() { - Util.waitUntilElementIsVisible(this.processServicesCloudButton); + BrowserVisibility.waitUntilElementIsVisible(this.processServicesCloudButton); this.processServicesCloudButton.click(); - Util.waitUntilElementIsVisible(this.processServicesCloudHomeButton); + BrowserVisibility.waitUntilElementIsVisible(this.processServicesCloudHomeButton); this.processServicesCloudHomeButton.click(); return new AppListCloudPage(); } navigateToPeopleGroupCloudPage() { - Util.waitUntilElementIsVisible(this.peopleGroupCloud); + BrowserVisibility.waitUntilElementIsVisible(this.peopleGroupCloud); this.peopleGroupCloud.click(); return new PeopleGroupCloudComponentPage(); } navigateToSettingsPage() { - Util.waitUntilElementIsVisible(this.settingsButton); + BrowserVisibility.waitUntilElementIsVisible(this.settingsButton); this.settingsButton.click(); return new AppListCloudPage(); } clickLoginButton() { - Util.waitUntilElementIsVisible(this.loginButton); + BrowserVisibility.waitUntilElementIsVisible(this.loginButton); this.loginButton.click(); } clickTrashcanButton() { - Util.waitUntilElementIsVisible(this.trashcanButton); + BrowserVisibility.waitUntilElementIsVisible(this.trashcanButton); this.trashcanButton.click(); } clickOverlayViewerButton() { - Util.waitUntilElementIsVisible(this.overlayViewerButton); + BrowserVisibility.waitUntilElementIsVisible(this.overlayViewerButton); this.overlayViewerButton.click(); return this; } clickThemeButton() { - Util.waitUntilElementIsVisible(this.themeButton); + BrowserVisibility.waitUntilElementIsVisible(this.themeButton); this.themeButton.click(); - Util.waitUntilElementIsVisible(this.themeMenuContent); + BrowserVisibility.waitUntilElementIsVisible(this.themeMenuContent); } clickOnSpecificThemeButton(themeName) { const themeElement = element(by.css(`button[data-automation-id="${themeName}"]`)); - Util.waitUntilElementIsVisible(themeElement); - Util.waitUntilElementIsClickable(themeElement); + BrowserVisibility.waitUntilElementIsVisible(themeElement); + BrowserVisibility.waitUntilElementIsClickable(themeElement); themeElement.click(); } clickLogoutButton() { - Util.waitUntilElementIsVisible(this.logoutButton); + BrowserVisibility.waitUntilElementIsVisible(this.logoutButton); this.logoutButton.click(); } clickCardViewButton() { - Util.waitUntilElementIsVisible(this.cardViewButton); + BrowserVisibility.waitUntilElementIsVisible(this.cardViewButton); this.cardViewButton.click(); } @@ -148,65 +148,65 @@ export class NavigationBarPage { chooseLanguage(language) { const buttonLanguage = element(by.xpath(`//adf-language-menu//button[contains(text(), '${language}')]`)); - Util.waitUntilElementIsVisible(buttonLanguage); + BrowserVisibility.waitUntilElementIsVisible(buttonLanguage); buttonLanguage.click(); } openLanguageMenu() { - Util.waitUntilElementIsVisible(this.languageMenuButton); + BrowserVisibility.waitUntilElementIsVisible(this.languageMenuButton); this.languageMenuButton.click(); - Util.waitUntilElementIsVisible(this.appTitle); + BrowserVisibility.waitUntilElementIsVisible(this.appTitle); } clickHeaderDataButton() { - Util.waitUntilElementIsVisible(this.headerDataButton); - Util.waitUntilElementIsClickable(this.headerDataButton); + BrowserVisibility.waitUntilElementIsVisible(this.headerDataButton); + BrowserVisibility.waitUntilElementIsClickable(this.headerDataButton); return this.headerDataButton.click(); } clickAboutButton() { - Util.waitUntilElementIsClickable(this.aboutButton); + BrowserVisibility.waitUntilElementIsClickable(this.aboutButton); return this.aboutButton.click(); } checkAboutButtonIsDisplayed() { - return Util.waitUntilElementIsVisible(this.aboutButton); + return BrowserVisibility.waitUntilElementIsVisible(this.aboutButton); } checkMenuButtonIsDisplayed() { - return Util.waitUntilElementIsVisible(this.menuButton); + return BrowserVisibility.waitUntilElementIsVisible(this.menuButton); } checkMenuButtonIsNotDisplayed() { - return Util.waitUntilElementIsNotVisible(this.menuButton); + return BrowserVisibility.waitUntilElementIsNotVisible(this.menuButton); } checkToolbarColor(color) { const toolbarColor = element(by.css(`mat-toolbar[class*="mat-${color}"]`)); - return Util.waitUntilElementIsVisible(toolbarColor); + return BrowserVisibility.waitUntilElementIsVisible(toolbarColor); } clickAppLogo(logoTitle) { const appLogo = element(by.css('a[title="' + logoTitle + '"]')); - Util.waitUntilElementIsVisible(appLogo); + BrowserVisibility.waitUntilElementIsVisible(appLogo); appLogo.click(); } clickAppLogoText() { - Util.waitUntilElementIsVisible(this.appTitle); + BrowserVisibility.waitUntilElementIsVisible(this.appTitle); this.appTitle.click(); } clickFormButton() { - Util.waitUntilElementIsVisible(this.processServicesButton); + BrowserVisibility.waitUntilElementIsVisible(this.processServicesButton); this.processServicesButton.click(); - Util.waitUntilElementIsVisible(this.formButton); + BrowserVisibility.waitUntilElementIsVisible(this.formButton); return this.formButton.click(); } checkLogoTooltip(logoTooltipTitle) { const logoTooltip = element(by.css('a[title="' + logoTooltipTitle + '"]')); - Util.waitUntilElementIsVisible(logoTooltip); + BrowserVisibility.waitUntilElementIsVisible(logoTooltip); } openViewer(nodeId) { @@ -219,17 +219,17 @@ export class NavigationBarPage { } clickTreeViewButton() { - Util.waitUntilElementIsVisible(this.treeViewButton); + BrowserVisibility.waitUntilElementIsVisible(this.treeViewButton); this.treeViewButton.click(); } navigateToIconsPage() { - Util.waitUntilElementIsVisible(this.iconsButton); + BrowserVisibility.waitUntilElementIsVisible(this.iconsButton); this.iconsButton.click(); } navigateToCustomSources() { - Util.waitUntilElementIsVisible(this.customSourcesButton); + BrowserVisibility.waitUntilElementIsVisible(this.customSourcesButton); this.customSourcesButton.click(); } } diff --git a/e2e/pages/adf/notificationPage.ts b/e2e/pages/adf/notificationPage.ts index 68e59bdd36..c52902a363 100644 --- a/e2e/pages/adf/notificationPage.ts +++ b/e2e/pages/adf/notificationPage.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import { Util } from '../../util/util'; import { element, by, protractor, browser, until } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class NotificationPage { @@ -34,44 +34,44 @@ export class NotificationPage { notificationConfig = element(by.css('p[data-automation-id="notification-custom-object"]')); checkNotifyContains(message) { - Util.waitUntilElementIsVisible(element(by.cssContainingText('simple-snack-bar', message))); + BrowserVisibility.waitUntilElementIsVisible(element(by.cssContainingText('simple-snack-bar', message))); return this; } goToNotificationsPage() { - Util.waitUntilElementIsVisible(this.notificationsPage); + BrowserVisibility.waitUntilElementIsVisible(this.notificationsPage); this.notificationsPage.click(); } getConfigObject() { - Util.waitUntilElementIsVisible(this.notificationConfig); + BrowserVisibility.waitUntilElementIsVisible(this.notificationConfig); return this.notificationConfig.getText(); } checkNotificationSnackBarIsDisplayed() { - Util.waitUntilElementIsVisible(this.notificationSnackBar); + BrowserVisibility.waitUntilElementIsVisible(this.notificationSnackBar); return this; } checkNotificationSnackBarIsDisplayedWithMessage(message) { const notificationSnackBarMessage = element(by.cssContainingText('simple-snack-bar', message)); - Util.waitUntilElementIsVisible(notificationSnackBarMessage); + BrowserVisibility.waitUntilElementIsVisible(notificationSnackBarMessage); return this; } checkNotificationSnackBarIsNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.notificationSnackBar); + BrowserVisibility.waitUntilElementIsNotVisible(this.notificationSnackBar); return this; } enterMessageField(text) { - Util.waitUntilElementIsVisible(this.messageField); + BrowserVisibility.waitUntilElementIsVisible(this.messageField); this.messageField.clear(); this.messageField.sendKeys(text); } enterDurationField(time) { - Util.waitUntilElementIsVisible(this.durationField); + BrowserVisibility.waitUntilElementIsVisible(this.durationField); this.durationField.clear(); this.durationField.sendKeys(time); } @@ -79,38 +79,38 @@ export class NotificationPage { selectHorizontalPosition(selectedItem) { const selectItem = element(by.cssContainingText('span[class="mat-option-text"]', selectedItem)); this.horizontalPosition.click(); - Util.waitUntilElementIsVisible(this.selectionDropDown); + BrowserVisibility.waitUntilElementIsVisible(this.selectionDropDown); selectItem.click(); } selectVerticalPosition(selectedItem) { const selectItem = element(by.cssContainingText('span[class="mat-option-text"]', selectedItem)); this.verticalPosition.click(); - Util.waitUntilElementIsVisible(this.selectionDropDown); + BrowserVisibility.waitUntilElementIsVisible(this.selectionDropDown); selectItem.click(); } selectDirection(selectedItem) { const selectItem = element(by.cssContainingText('span[class="mat-option-text"]', selectedItem)); this.direction.click(); - Util.waitUntilElementIsVisible(this.selectionDropDown); + BrowserVisibility.waitUntilElementIsVisible(this.selectionDropDown); selectItem.click(); } clickNotificationButton() { - // Util.waitUntilElementIsVisible(this.customNotificationButton); + // BrowserVisibility.waitUntilElementIsVisible(this.customNotificationButton); // this.customNotificationButton.click(); const button = browser.wait(until.elementLocated(by.css('button[data-automation-id="notification-custom-config-button"]'))); button.click(); } checkActionEvent() { - Util.waitUntilElementIsVisible(this.actionOutput); + BrowserVisibility.waitUntilElementIsVisible(this.actionOutput); return this; } clickActionToggle() { - Util.waitUntilElementIsVisible(this.actionToggle); + BrowserVisibility.waitUntilElementIsVisible(this.actionToggle); this.actionToggle.click(); } @@ -119,7 +119,7 @@ export class NotificationPage { } clearMessage() { - Util.waitUntilElementIsVisible(this.messageField); + BrowserVisibility.waitUntilElementIsVisible(this.messageField); this.messageField.clear(); this.messageField.sendKeys('a'); this.messageField.sendKeys(protractor.Key.BACK_SPACE); diff --git a/e2e/pages/adf/paginationPage.ts b/e2e/pages/adf/paginationPage.ts index dcadd67ce1..3ee35d6c1a 100644 --- a/e2e/pages/adf/paginationPage.ts +++ b/e2e/pages/adf/paginationPage.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import { Util } from '../../util/util'; import { browser, by, element, protractor } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class PaginationPage { @@ -37,81 +37,81 @@ export class PaginationPage { totalFiles = element(by.css('span[class="adf-pagination__range"]')); selectItemsPerPage(numberOfItem: string) { - Util.waitUntilElementIsVisible(this.itemsPerPageDropdown); - Util.waitUntilElementIsClickable(this.itemsPerPageDropdown); + BrowserVisibility.waitUntilElementIsVisible(this.itemsPerPageDropdown); + BrowserVisibility.waitUntilElementIsClickable(this.itemsPerPageDropdown); browser.actions().mouseMove(this.itemsPerPageDropdown).perform(); - Util.waitUntilElementIsVisible(this.itemsPerPageDropdown); - Util.waitUntilElementIsClickable(this.itemsPerPageDropdown); + BrowserVisibility.waitUntilElementIsVisible(this.itemsPerPageDropdown); + BrowserVisibility.waitUntilElementIsClickable(this.itemsPerPageDropdown); this.itemsPerPageDropdown.click(); - Util.waitUntilElementIsVisible(this.pageSelectorDropDown); + BrowserVisibility.waitUntilElementIsVisible(this.pageSelectorDropDown); const itemsPerPage = element.all(by.cssContainingText('.mat-menu-item', numberOfItem)).first(); - Util.waitUntilElementIsClickable(itemsPerPage); - Util.waitUntilElementIsVisible(itemsPerPage); + BrowserVisibility.waitUntilElementIsClickable(itemsPerPage); + BrowserVisibility.waitUntilElementIsVisible(itemsPerPage); itemsPerPage.click(); return this; } checkPageSelectorIsNotDisplayed() { - Util.waitUntilElementIsNotOnPage(this.pageSelectorArrow); + BrowserVisibility.waitUntilElementIsNotOnPage(this.pageSelectorArrow); } checkPageSelectorIsDisplayed() { - Util.waitUntilElementIsVisible(this.pageSelectorArrow); + BrowserVisibility.waitUntilElementIsVisible(this.pageSelectorArrow); } checkPaginationIsNotDisplayed() { - Util.waitUntilElementIsOnPage(this.paginationSectionEmpty); + BrowserVisibility.waitUntilElementIsOnPage(this.paginationSectionEmpty); return this; } getCurrentItemsPerPage() { - Util.waitUntilElementIsVisible(this.itemsPerPage); + BrowserVisibility.waitUntilElementIsVisible(this.itemsPerPage); return this.itemsPerPage.getText(); } getCurrentPage() { - Util.waitUntilElementIsVisible(this.paginationSection); - Util.waitUntilElementIsVisible(this.currentPage); + BrowserVisibility.waitUntilElementIsVisible(this.paginationSection); + BrowserVisibility.waitUntilElementIsVisible(this.currentPage); return this.currentPage.getText(); } getTotalPages() { - Util.waitUntilElementIsVisible(this.totalPages); + BrowserVisibility.waitUntilElementIsVisible(this.totalPages); return this.totalPages.getText(); } getPaginationRange() { - Util.waitUntilElementIsVisible(this.paginationRange); + BrowserVisibility.waitUntilElementIsVisible(this.paginationRange); return this.paginationRange.getText(); } clickOnNextPage() { - Util.waitUntilElementIsVisible(this.nextPageButton); - Util.waitUntilElementIsClickable(this.nextPageButton); + BrowserVisibility.waitUntilElementIsVisible(this.nextPageButton); + BrowserVisibility.waitUntilElementIsClickable(this.nextPageButton); browser.actions().mouseMove(this.nextPageButton).perform(); - Util.waitUntilElementIsVisible(this.nextPageButton); - Util.waitUntilElementIsClickable(this.nextPageButton); + BrowserVisibility.waitUntilElementIsVisible(this.nextPageButton); + BrowserVisibility.waitUntilElementIsClickable(this.nextPageButton); return this.nextPageButton.click(); } clickOnPageDropdown() { - Util.waitUntilElementIsVisible(this.pageDropDown); - Util.waitUntilElementIsClickable(this.pageDropDown); + BrowserVisibility.waitUntilElementIsVisible(this.pageDropDown); + BrowserVisibility.waitUntilElementIsClickable(this.pageDropDown); return this.pageDropDown.click(); } clickOnPageDropdownOption(numberOfItemPerPage: string) { - Util.waitUntilElementIsVisible(element.all(this.pageDropDownOptions).first()); + BrowserVisibility.waitUntilElementIsVisible(element.all(this.pageDropDownOptions).first()); const option = element(by.cssContainingText('div[class*="mat-menu-content"] button', numberOfItemPerPage)); - Util.waitUntilElementIsVisible(option); + BrowserVisibility.waitUntilElementIsVisible(option); option.click(); return this; } getPageDropdownOptions() { const deferred = protractor.promise.defer(); - Util.waitUntilElementIsVisible(element.all(this.pageDropDownOptions).first()); + BrowserVisibility.waitUntilElementIsVisible(element.all(this.pageDropDownOptions).first()); const initialList = []; element.all(this.pageDropDownOptions).each(function (currentOption) { currentOption.getText().then(function (text) { @@ -126,23 +126,23 @@ export class PaginationPage { } checkNextPageButtonIsDisabled() { - Util.waitUntilElementIsVisible(this.nextButtonDisabled); + BrowserVisibility.waitUntilElementIsVisible(this.nextButtonDisabled); } checkPreviousPageButtonIsDisabled() { - Util.waitUntilElementIsVisible(this.previousButtonDisabled); + BrowserVisibility.waitUntilElementIsVisible(this.previousButtonDisabled); } checkNextPageButtonIsEnabled() { - Util.waitUntilElementIsNotOnPage(this.nextButtonDisabled); + BrowserVisibility.waitUntilElementIsNotOnPage(this.nextButtonDisabled); } checkPreviousPageButtonIsEnabled() { - Util.waitUntilElementIsNotOnPage(this.previousButtonDisabled); + BrowserVisibility.waitUntilElementIsNotOnPage(this.previousButtonDisabled); } getTotalNumberOfFiles() { - Util.waitUntilElementIsVisible(this.totalFiles); + BrowserVisibility.waitUntilElementIsVisible(this.totalFiles); const numberOfFiles = this.totalFiles.getText().then(function (totalNumber) { const totalNumberOfFiles = totalNumber.split('of ')[1]; return totalNumberOfFiles; diff --git a/e2e/pages/adf/permissionsPage.ts b/e2e/pages/adf/permissionsPage.ts index 3772decb98..830a60bca0 100644 --- a/e2e/pages/adf/permissionsPage.ts +++ b/e2e/pages/adf/permissionsPage.ts @@ -17,8 +17,8 @@ import { element, by } from 'protractor'; -import { Util } from '../../util/util'; import { DataTableComponentPage } from './dataTableComponentPage'; +import { BrowserVisibility } from '@alfresco/adf-testing'; const column = { role: 'Role' @@ -42,75 +42,75 @@ export class PermissionsPage { closeButton = element(by.id('add-permission-dialog-close-button')); clickCloseButton() { - Util.waitUntilElementIsClickable(this.closeButton); + BrowserVisibility.waitUntilElementIsClickable(this.closeButton); this.closeButton.click(); } checkAddPermissionButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.addPermissionButton); + BrowserVisibility.waitUntilElementIsVisible(this.addPermissionButton); } clickAddPermissionButton() { - Util.waitUntilElementIsClickable(this.addPermissionButton); + BrowserVisibility.waitUntilElementIsClickable(this.addPermissionButton); return this.addPermissionButton.click(); } checkAddPermissionDialogIsDisplayed() { - Util.waitUntilElementIsVisible(this.addPermissionDialog); + BrowserVisibility.waitUntilElementIsVisible(this.addPermissionDialog); } checkSearchUserInputIsDisplayed() { - Util.waitUntilElementIsVisible(this.searchUserInput); + BrowserVisibility.waitUntilElementIsVisible(this.searchUserInput); } searchUserOrGroup(name) { - Util.waitUntilElementIsClickable(this.searchUserInput); + BrowserVisibility.waitUntilElementIsClickable(this.searchUserInput); this.searchUserInput.clear(); return this.searchUserInput.sendKeys(name); } checkResultListIsDisplayed() { - Util.waitUntilElementIsVisible(this.searchResults); + BrowserVisibility.waitUntilElementIsVisible(this.searchResults); } clickUserOrGroup(name) { const userOrGroupName = element(by.cssContainingText('mat-list-option .mat-list-text', name)); - Util.waitUntilElementIsVisible(userOrGroupName); + BrowserVisibility.waitUntilElementIsVisible(userOrGroupName); userOrGroupName.click(); - Util.waitUntilElementIsVisible(this.addButton); + BrowserVisibility.waitUntilElementIsVisible(this.addButton); return this.addButton.click(); } checkUserOrGroupIsAdded(name) { const userOrGroupName = element(by.css('div[data-automation-id="text_' + name + '"]')); - Util.waitUntilElementIsVisible(userOrGroupName); + BrowserVisibility.waitUntilElementIsVisible(userOrGroupName); } checkUserOrGroupIsDeleted(name) { const userOrGroupName = element(by.css('div[data-automation-id="text_' + name + '"]')); - Util.waitUntilElementIsNotVisible(userOrGroupName); + BrowserVisibility.waitUntilElementIsNotVisible(userOrGroupName); } checkPermissionInheritedButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.permissionInheritedButton); + BrowserVisibility.waitUntilElementIsVisible(this.permissionInheritedButton); } clickPermissionInheritedButton() { - Util.waitUntilElementIsClickable(this.permissionInheritedButton); + BrowserVisibility.waitUntilElementIsClickable(this.permissionInheritedButton); return this.permissionInheritedButton.click(); } clickDeletePermissionButton() { - Util.waitUntilElementIsClickable(this.deletePermissionButton); + BrowserVisibility.waitUntilElementIsClickable(this.deletePermissionButton); return this.deletePermissionButton.click(); } checkNoPermissionsIsDisplayed() { - Util.waitUntilElementIsVisible(this.noPermissions); + BrowserVisibility.waitUntilElementIsVisible(this.noPermissions); } getPermissionInheritedButtonText() { - Util.waitUntilElementIsClickable(this.permissionInheritedButton); + BrowserVisibility.waitUntilElementIsClickable(this.permissionInheritedButton); return this.permissionInheritedButtonText.getText(); } @@ -120,39 +120,39 @@ export class PermissionsPage { getRoleCellValue(rowName) { const locator = new DataTableComponentPage().getCellByRowAndColumn('Authority ID', rowName, column.role); - Util.waitUntilElementIsVisible(locator); + BrowserVisibility.waitUntilElementIsVisible(locator); return locator.getText(); } clickRoleDropdown() { - Util.waitUntilElementIsVisible(this.roleDropdown); + BrowserVisibility.waitUntilElementIsVisible(this.roleDropdown); return this.roleDropdown.click(); } getRoleDropdownOptions() { - Util.waitUntilElementIsVisible(this.roleDropdownOptions); + BrowserVisibility.waitUntilElementIsVisible(this.roleDropdownOptions); return this.roleDropdownOptions; } selectOption(name) { const selectProcessDropdown = element(by.cssContainingText('.mat-option-text', name)); - Util.waitUntilElementIsVisible(selectProcessDropdown); - Util.waitUntilElementIsClickable(selectProcessDropdown); + BrowserVisibility.waitUntilElementIsVisible(selectProcessDropdown); + BrowserVisibility.waitUntilElementIsClickable(selectProcessDropdown); selectProcessDropdown.click(); return this; } getAssignPermissionErrorText() { - Util.waitUntilElementIsVisible(this.assignPermissionError); + BrowserVisibility.waitUntilElementIsVisible(this.assignPermissionError); return this.assignPermissionError.getText(); } checkPermissionContainerIsDisplayed() { - Util.waitUntilElementIsVisible(this.permissionDisplayContainer); + BrowserVisibility.waitUntilElementIsVisible(this.permissionDisplayContainer); } checkUserOrGroupIsDisplayed(name) { const userOrGroupName = element(by.cssContainingText('mat-list-option .mat-list-text', name)); - Util.waitUntilElementIsVisible(userOrGroupName); + BrowserVisibility.waitUntilElementIsVisible(userOrGroupName); } } diff --git a/e2e/pages/adf/process-cloud/editProcessFilterCloudComponent.ts b/e2e/pages/adf/process-cloud/editProcessFilterCloudComponent.ts index ed75cf0d72..741b8cfaab 100644 --- a/e2e/pages/adf/process-cloud/editProcessFilterCloudComponent.ts +++ b/e2e/pages/adf/process-cloud/editProcessFilterCloudComponent.ts @@ -14,9 +14,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Util } from '../../../util/util'; import { by, element, protractor } from 'protractor'; import { EditProcessFilterDialog } from '../dialog/editProcessFilterDialog'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class EditProcessFilterCloudComponent { @@ -33,16 +33,16 @@ export class EditProcessFilterCloudComponent { } clickCustomiseFilterHeader() { - Util.waitUntilElementIsVisible(this.customiseFilter); + BrowserVisibility.waitUntilElementIsVisible(this.customiseFilter); this.customiseFilter.click(); return this; } checkCustomiseFilterHeaderIsExpanded() { const expansionPanelExtended = element.all(by.css('mat-expansion-panel-header[class*="mat-expanded"]')).first(); - Util.waitUntilElementIsVisible(expansionPanelExtended); + BrowserVisibility.waitUntilElementIsVisible(expansionPanelExtended); const content = element(by.css('div[class*="mat-expansion-panel-content "][style*="visible"]')); - Util.waitUntilElementIsVisible(content); + BrowserVisibility.waitUntilElementIsVisible(content); return this; } @@ -50,8 +50,8 @@ export class EditProcessFilterCloudComponent { this.clickOnDropDownArrow('status'); const statusElement = element.all(by.cssContainingText('mat-option span', option)).first(); - Util.waitUntilElementIsClickable(statusElement); - Util.waitUntilElementIsVisible(statusElement); + BrowserVisibility.waitUntilElementIsClickable(statusElement); + BrowserVisibility.waitUntilElementIsVisible(statusElement); statusElement.click(); return this; } @@ -64,15 +64,15 @@ export class EditProcessFilterCloudComponent { this.clickOnDropDownArrow('sort'); const sortElement = element.all(by.cssContainingText('mat-option span', option)).first(); - Util.waitUntilElementIsClickable(sortElement); - Util.waitUntilElementIsVisible(sortElement); + BrowserVisibility.waitUntilElementIsClickable(sortElement); + BrowserVisibility.waitUntilElementIsVisible(sortElement); sortElement.click(); return this; } getSortFilterDropDownValue() { const sortLocator = element.all(by.css("mat-form-field[data-automation-id='sort'] span")).first(); - Util.waitUntilElementIsVisible(sortLocator); + BrowserVisibility.waitUntilElementIsVisible(sortLocator); return sortLocator.getText(); } @@ -80,8 +80,8 @@ export class EditProcessFilterCloudComponent { this.clickOnDropDownArrow('order'); const orderElement = element.all(by.cssContainingText('mat-option span', option)).first(); - Util.waitUntilElementIsClickable(orderElement); - Util.waitUntilElementIsVisible(orderElement); + BrowserVisibility.waitUntilElementIsClickable(orderElement); + BrowserVisibility.waitUntilElementIsVisible(orderElement); orderElement.click(); return this; } @@ -92,18 +92,18 @@ export class EditProcessFilterCloudComponent { clickOnDropDownArrow(option) { const dropDownArrow = element.all(by.css("mat-form-field[data-automation-id='" + option + "'] div[class='mat-select-arrow-wrapper']")).first(); - Util.waitUntilElementIsVisible(dropDownArrow); - Util.waitUntilElementIsClickable(dropDownArrow); + BrowserVisibility.waitUntilElementIsVisible(dropDownArrow); + BrowserVisibility.waitUntilElementIsClickable(dropDownArrow); dropDownArrow.click(); - Util.waitUntilElementIsVisible(this.selectedOption); + BrowserVisibility.waitUntilElementIsVisible(this.selectedOption); } setAppNameDropDown(option) { this.clickOnDropDownArrow('appName'); const appNameElement = element.all(by.cssContainingText('mat-option span', option)).first(); - Util.waitUntilElementIsClickable(appNameElement); - Util.waitUntilElementIsVisible(appNameElement); + BrowserVisibility.waitUntilElementIsClickable(appNameElement); + BrowserVisibility.waitUntilElementIsVisible(appNameElement); appNameElement.click(); return this; } @@ -134,13 +134,13 @@ export class EditProcessFilterCloudComponent { getProperty(property) { const locator = element.all(by.css('input[data-automation-id="adf-cloud-edit-process-property-' + property + '"]')).first(); - Util.waitUntilElementIsVisible(locator); + BrowserVisibility.waitUntilElementIsVisible(locator); return locator.getAttribute('value'); } setProperty(property, option) { const locator = element.all(by.css('input[data-automation-id="adf-cloud-edit-process-property-' + property + '"]')).first(); - Util.waitUntilElementIsVisible(locator); + BrowserVisibility.waitUntilElementIsVisible(locator); locator.clear(); locator.sendKeys(option); locator.sendKeys(protractor.Key.ENTER); @@ -148,55 +148,55 @@ export class EditProcessFilterCloudComponent { } checkSaveButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.saveButton); + BrowserVisibility.waitUntilElementIsVisible(this.saveButton); return this; } checkSaveAsButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.saveAsButton); + BrowserVisibility.waitUntilElementIsVisible(this.saveAsButton); return this; } checkDeleteButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.deleteButton); + BrowserVisibility.waitUntilElementIsVisible(this.deleteButton); return this; } checkSaveButtonIsEnabled() { - Util.waitUntilElementIsVisible(this.saveButton); + BrowserVisibility.waitUntilElementIsVisible(this.saveButton); return this.saveButton.isEnabled(); } checkSaveAsButtonIsEnabled() { - Util.waitUntilElementIsVisible(this.saveAsButton); + BrowserVisibility.waitUntilElementIsVisible(this.saveAsButton); return this.saveAsButton.isEnabled(); } checkDeleteButtonIsEnabled() { - Util.waitUntilElementIsVisible(this.deleteButton); + BrowserVisibility.waitUntilElementIsVisible(this.deleteButton); return this.deleteButton.isEnabled(); } clickSaveAsButton() { - const disabledButton = element(by.css(("button[data-automation-id='adf-filter-action-saveAs'][disabled]"))); - Util.waitUntilElementIsClickable(this.saveAsButton); - Util.waitUntilElementIsVisible(this.saveAsButton); - Util.waitUntilElementIsNotVisible(disabledButton); + const disabledButton = element(by.css(("button[id='adf-save-as-id'][disabled]"))); + BrowserVisibility.waitUntilElementIsClickable(this.saveAsButton); + BrowserVisibility.waitUntilElementIsVisible(this.saveAsButton); + BrowserVisibility.waitUntilElementIsNotVisible(disabledButton); this.saveAsButton.click(); return this.editProcessFilter; } clickDeleteButton() { - Util.waitUntilElementIsVisible(this.deleteButton); + BrowserVisibility.waitUntilElementIsVisible(this.deleteButton); this.deleteButton.click(); return this; } clickSaveButton() { - const disabledButton = element(by.css(("button[data-automation-id='adf-filter-action-saveAs'][disabled]"))); - Util.waitUntilElementIsClickable(this.saveButton); - Util.waitUntilElementIsVisible(this.saveButton); - Util.waitUntilElementIsNotVisible(disabledButton); + const disabledButton = element(by.css(("button[id='adf-save-as-id'][disabled]"))); + BrowserVisibility.waitUntilElementIsClickable(this.saveButton); + BrowserVisibility.waitUntilElementIsVisible(this.saveButton); + BrowserVisibility.waitUntilElementIsNotVisible(disabledButton); this.saveButton.click(); return this; } diff --git a/e2e/pages/adf/process-cloud/editTaskFilterCloudComponent.ts b/e2e/pages/adf/process-cloud/editTaskFilterCloudComponent.ts index c5484f2413..51e802e91d 100644 --- a/e2e/pages/adf/process-cloud/editTaskFilterCloudComponent.ts +++ b/e2e/pages/adf/process-cloud/editTaskFilterCloudComponent.ts @@ -15,9 +15,9 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; import { by, element, protractor } from 'protractor'; import { EditTaskFilterDialog } from '../dialog/editTaskFilterDialog'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class EditTaskFilterCloudComponent { @@ -43,7 +43,7 @@ export class EditTaskFilterCloudComponent { } clickCustomiseFilterHeader() { - Util.waitUntilElementIsVisible(this.customiseFilter); + BrowserVisibility.waitUntilElementIsVisible(this.customiseFilter); this.customiseFilter.click(); return this; } @@ -52,8 +52,8 @@ export class EditTaskFilterCloudComponent { this.clickOnDropDownArrow('status'); const statusElement = element.all(by.cssContainingText('mat-option span', option)).first(); - Util.waitUntilElementIsVisible(statusElement); - Util.waitUntilElementIsClickable(statusElement); + BrowserVisibility.waitUntilElementIsVisible(statusElement); + BrowserVisibility.waitUntilElementIsClickable(statusElement); statusElement.click(); return this; } @@ -66,15 +66,15 @@ export class EditTaskFilterCloudComponent { this.clickOnDropDownArrow('sort'); const sortElement = element.all(by.cssContainingText('mat-option span', option)).first(); - Util.waitUntilElementIsClickable(sortElement); - Util.waitUntilElementIsVisible(sortElement); + BrowserVisibility.waitUntilElementIsClickable(sortElement); + BrowserVisibility.waitUntilElementIsVisible(sortElement); sortElement.click(); return this; } getSortFilterDropDownValue() { const elementSort = element.all(by.css("mat-select[data-automation-id='adf-cloud-edit-task-property-sort'] span")).first(); - Util.waitUntilElementIsVisible(elementSort); + BrowserVisibility.waitUntilElementIsVisible(elementSort); return elementSort.getText(); } @@ -82,8 +82,8 @@ export class EditTaskFilterCloudComponent { this.clickOnDropDownArrow('order'); const orderElement = element.all(by.cssContainingText('mat-option span', option)).first(); - Util.waitUntilElementIsClickable(orderElement); - Util.waitUntilElementIsVisible(orderElement); + BrowserVisibility.waitUntilElementIsClickable(orderElement); + BrowserVisibility.waitUntilElementIsVisible(orderElement); orderElement.click(); return this; } @@ -94,9 +94,9 @@ export class EditTaskFilterCloudComponent { clickOnDropDownArrow(option) { const dropDownArrow = element.all(by.css("mat-form-field[data-automation-id='" + option + "'] div[class*='arrow']")).first(); - Util.waitUntilElementIsVisible(dropDownArrow); + BrowserVisibility.waitUntilElementIsVisible(dropDownArrow); dropDownArrow.click(); - Util.waitUntilElementIsVisible(this.selectedOption); + BrowserVisibility.waitUntilElementIsVisible(this.selectedOption); } setAssignee(option) { @@ -150,52 +150,52 @@ export class EditTaskFilterCloudComponent { } checkSaveButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.saveButton); + BrowserVisibility.waitUntilElementIsVisible(this.saveButton); return this; } checkSaveAsButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.saveAsButton); + BrowserVisibility.waitUntilElementIsVisible(this.saveAsButton); return this; } checkDeleteButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.deleteButton); + BrowserVisibility.waitUntilElementIsVisible(this.deleteButton); return this; } checkSaveButtonIsEnabled() { - Util.waitUntilElementIsVisible(this.saveButton); + BrowserVisibility.waitUntilElementIsVisible(this.saveButton); return this.saveButton.isEnabled(); } checkSaveAsButtonIsEnabled() { - Util.waitUntilElementIsVisible(this.saveButton); + BrowserVisibility.waitUntilElementIsVisible(this.saveButton); return this.saveAsButton.isEnabled(); } checkDeleteButtonIsEnabled() { - Util.waitUntilElementIsVisible(this.saveButton); + BrowserVisibility.waitUntilElementIsVisible(this.saveButton); return this.deleteButton.isEnabled(); } clickSaveAsButton() { const disabledButton = element(by.css(("button[id='adf-save-as-id'][disabled]"))); - Util.waitUntilElementIsClickable(this.saveAsButton); - Util.waitUntilElementIsVisible(this.saveAsButton); - Util.waitUntilElementIsNotVisible(disabledButton); + BrowserVisibility.waitUntilElementIsClickable(this.saveAsButton); + BrowserVisibility.waitUntilElementIsVisible(this.saveAsButton); + BrowserVisibility.waitUntilElementIsNotVisible(disabledButton); this.saveAsButton.click(); return this.editTaskFilter; } clickDeleteButton() { - Util.waitUntilElementIsVisible(this.deleteButton); + BrowserVisibility.waitUntilElementIsVisible(this.deleteButton); this.deleteButton.click(); return this; } clickSaveButton() { - Util.waitUntilElementIsVisible(this.saveButton); + BrowserVisibility.waitUntilElementIsVisible(this.saveButton); this.saveButton.click(); return this; } @@ -206,7 +206,7 @@ export class EditTaskFilterCloudComponent { } clearField(locator) { - Util.waitUntilElementIsVisible(locator); + BrowserVisibility.waitUntilElementIsVisible(locator); locator.getAttribute('value').then((result) => { for (let i = result.length; i >= 0; i--) { locator.sendKeys(protractor.Key.BACK_SPACE); @@ -218,15 +218,15 @@ export class EditTaskFilterCloudComponent { this.clickOnDropDownArrow('appName'); const appNameElement = element.all(by.cssContainingText('mat-option span', option)).first(); - Util.waitUntilElementIsClickable(appNameElement); - Util.waitUntilElementIsVisible(appNameElement); + BrowserVisibility.waitUntilElementIsClickable(appNameElement); + BrowserVisibility.waitUntilElementIsVisible(appNameElement); appNameElement.click(); return this; } getAppNameDropDownValue() { const locator = element.all(by.css("mat-select[data-automation-id='adf-cloud-edit-task-property-appName'] span")).first(); - Util.waitUntilElementIsVisible(locator); + BrowserVisibility.waitUntilElementIsVisible(locator); return locator.getText(); } @@ -252,7 +252,7 @@ export class EditTaskFilterCloudComponent { setProperty(property, option) { const locator = element(by.css('input[data-automation-id="adf-cloud-edit-task-property-' + property + '"]')); - Util.waitUntilElementIsVisible(locator); + BrowserVisibility.waitUntilElementIsVisible(locator); locator.clear(); locator.sendKeys(option); locator.sendKeys(protractor.Key.ENTER); diff --git a/e2e/pages/adf/process-cloud/groupCloudComponent.ts b/e2e/pages/adf/process-cloud/groupCloudComponent.ts index da69613b33..8552a82d34 100644 --- a/e2e/pages/adf/process-cloud/groupCloudComponent.ts +++ b/e2e/pages/adf/process-cloud/groupCloudComponent.ts @@ -16,14 +16,14 @@ */ import { by, element, protractor } from 'protractor'; -import { Util } from '../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class GroupCloudComponent { groupCloudSearch = element(by.css('input[data-automation-id="adf-cloud-group-search-input"]')); searchGroups(name) { - Util.waitUntilElementIsVisible(this.groupCloudSearch); + BrowserVisibility.waitUntilElementIsVisible(this.groupCloudSearch); this.groupCloudSearch.clear().then(() => { for (let i = 0; i < name.length; i++) { this.groupCloudSearch.sendKeys(name[i]); @@ -36,26 +36,26 @@ export class GroupCloudComponent { selectGroupFromList(name) { const groupRow = element.all(by.cssContainingText('mat-option span', name)).first(); - Util.waitUntilElementIsVisible(groupRow); + BrowserVisibility.waitUntilElementIsVisible(groupRow); groupRow.click(); - Util.waitUntilElementIsNotVisible(groupRow); + BrowserVisibility.waitUntilElementIsNotVisible(groupRow); return this; } checkGroupIsDisplayed(name) { const groupRow = element.all(by.cssContainingText('mat-option span', name)).first(); - Util.waitUntilElementIsVisible(groupRow); + BrowserVisibility.waitUntilElementIsVisible(groupRow); return this; } checkGroupIsNotDisplayed(name) { const groupRow = element.all(by.cssContainingText('mat-option span', name)).first(); - Util.waitUntilElementIsNotVisible(groupRow); + BrowserVisibility.waitUntilElementIsNotVisible(groupRow); return this; } checkSelectedGroup(group) { - Util.waitUntilElementIsVisible(element(by.cssContainingText('mat-chip[data-automation-id*="adf-cloud-group-chip-"]', group))); + BrowserVisibility.waitUntilElementIsVisible(element(by.cssContainingText('mat-chip[data-automation-id*="adf-cloud-group-chip-"]', group))); return this; } diff --git a/e2e/pages/adf/process-cloud/peopleCloudComponent.ts b/e2e/pages/adf/process-cloud/peopleCloudComponent.ts index 939a414ea6..85f7f7c109 100644 --- a/e2e/pages/adf/process-cloud/peopleCloudComponent.ts +++ b/e2e/pages/adf/process-cloud/peopleCloudComponent.ts @@ -16,14 +16,14 @@ */ import { by, element, protractor } from 'protractor'; -import { Util } from '../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class PeopleCloudComponent { peopleCloudSearch = element(by.css('input[data-automation-id="adf-people-cloud-search-input"]')); searchAssigneeAndSelect(name) { - Util.waitUntilElementIsVisible(this.peopleCloudSearch); + BrowserVisibility.waitUntilElementIsVisible(this.peopleCloudSearch); this.peopleCloudSearch.clear(); this.peopleCloudSearch.sendKeys(name); this.selectAssigneeFromList(name); @@ -31,7 +31,7 @@ export class PeopleCloudComponent { } searchAssignee(name) { - Util.waitUntilElementIsVisible(this.peopleCloudSearch); + BrowserVisibility.waitUntilElementIsVisible(this.peopleCloudSearch); this.peopleCloudSearch.clear().then(() => { for (let i = 0; i < name.length; i++) { this.peopleCloudSearch.sendKeys(name[i]); @@ -44,31 +44,31 @@ export class PeopleCloudComponent { selectAssigneeFromList(name) { const assigneeRow = element(by.cssContainingText('mat-option span.adf-people-label-name', name)); - Util.waitUntilElementIsVisible(assigneeRow); + BrowserVisibility.waitUntilElementIsVisible(assigneeRow); assigneeRow.click(); - Util.waitUntilElementIsNotVisible(assigneeRow); + BrowserVisibility.waitUntilElementIsNotVisible(assigneeRow); return this; } getAssignee() { - Util.waitUntilElementIsVisible(this.peopleCloudSearch); + BrowserVisibility.waitUntilElementIsVisible(this.peopleCloudSearch); return this.peopleCloudSearch.getAttribute('value'); } checkUserIsDisplayed(name) { const assigneeRow = element(by.cssContainingText('mat-option span.adf-people-label-name', name)); - Util.waitUntilElementIsVisible(assigneeRow); + BrowserVisibility.waitUntilElementIsVisible(assigneeRow); return this; } checkUserIsNotDisplayed(name) { const assigneeRow = element(by.cssContainingText('mat-option span.adf-people-label-name', name)); - Util.waitUntilElementIsNotVisible(assigneeRow); + BrowserVisibility.waitUntilElementIsNotVisible(assigneeRow); return this; } checkSelectedPeople(person) { - Util.waitUntilElementIsVisible(element(by.cssContainingText('mat-chip-list mat-chip', person))); + BrowserVisibility.waitUntilElementIsVisible(element(by.cssContainingText('mat-chip-list mat-chip', person))); return this; } diff --git a/e2e/pages/adf/process-cloud/processFiltersCloudComponent.ts b/e2e/pages/adf/process-cloud/processFiltersCloudComponent.ts index a4871f0fa4..194b98bb8b 100644 --- a/e2e/pages/adf/process-cloud/processFiltersCloudComponent.ts +++ b/e2e/pages/adf/process-cloud/processFiltersCloudComponent.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; import { by } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class ProcessFiltersCloudComponent { @@ -28,30 +28,30 @@ export class ProcessFiltersCloudComponent { } checkProcessFilterIsDisplayed() { - Util.waitUntilElementIsVisible(this.filter); + BrowserVisibility.waitUntilElementIsVisible(this.filter); return this; } getProcessFilterIcon() { - Util.waitUntilElementIsVisible(this.filter); + BrowserVisibility.waitUntilElementIsVisible(this.filter); const icon = this.filter.element(this.filterIcon); - Util.waitUntilElementIsVisible(icon); + BrowserVisibility.waitUntilElementIsVisible(icon); return icon.getText(); } checkProcessFilterHasNoIcon() { - Util.waitUntilElementIsVisible(this.filter); - Util.waitUntilElementIsNotOnPage(this.filter.element(this.filterIcon)); + BrowserVisibility.waitUntilElementIsVisible(this.filter); + BrowserVisibility.waitUntilElementIsNotOnPage(this.filter.element(this.filterIcon)); } clickProcessFilter() { - Util.waitUntilElementIsVisible(this.filter); - Util.waitUntilElementIsClickable(this.filter); + BrowserVisibility.waitUntilElementIsVisible(this.filter); + BrowserVisibility.waitUntilElementIsClickable(this.filter); return this.filter.click(); } checkProcessFilterNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.filter); + BrowserVisibility.waitUntilElementIsNotVisible(this.filter); return this.filter; } diff --git a/e2e/pages/adf/process-cloud/processListCloudComponent.ts b/e2e/pages/adf/process-cloud/processListCloudComponent.ts index 603ceb1819..6107cb6e82 100644 --- a/e2e/pages/adf/process-cloud/processListCloudComponent.ts +++ b/e2e/pages/adf/process-cloud/processListCloudComponent.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; import { DataTableComponentPage } from '../dataTableComponentPage'; import { element, by } from 'protractor'; @@ -55,12 +55,12 @@ export class ProcessListCloudComponent { } checkProcessListIsLoaded() { - Util.waitUntilElementIsVisible(this.processList); + BrowserVisibility.waitUntilElementIsVisible(this.processList); return this; } getNoProcessFoundMessage() { - Util.waitUntilElementIsVisible(this.noProcessFound); + BrowserVisibility.waitUntilElementIsVisible(this.noProcessFound); return this.noProcessFound.getText(); } diff --git a/e2e/pages/adf/process-cloud/taskFiltersCloudComponent.ts b/e2e/pages/adf/process-cloud/taskFiltersCloudComponent.ts index c0bc3ef967..2bca03e1bc 100644 --- a/e2e/pages/adf/process-cloud/taskFiltersCloudComponent.ts +++ b/e2e/pages/adf/process-cloud/taskFiltersCloudComponent.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; import { by } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class TaskFiltersCloudComponent { @@ -28,29 +28,29 @@ export class TaskFiltersCloudComponent { } checkTaskFilterIsDisplayed() { - Util.waitUntilElementIsVisible(this.filter); + BrowserVisibility.waitUntilElementIsVisible(this.filter); return this; } getTaskFilterIcon() { - Util.waitUntilElementIsVisible(this.filter); + BrowserVisibility.waitUntilElementIsVisible(this.filter); const icon = this.filter.element(this.taskIcon); - Util.waitUntilElementIsVisible(icon); + BrowserVisibility.waitUntilElementIsVisible(icon); return icon.getText(); } checkTaskFilterHasNoIcon() { - Util.waitUntilElementIsVisible(this.filter); - Util.waitUntilElementIsNotOnPage(this.filter.element(this.taskIcon)); + BrowserVisibility.waitUntilElementIsVisible(this.filter); + BrowserVisibility.waitUntilElementIsNotOnPage(this.filter.element(this.taskIcon)); } clickTaskFilter() { - Util.waitUntilElementIsVisible(this.filter); + BrowserVisibility.waitUntilElementIsVisible(this.filter); return this.filter.click(); } checkTaskFilterNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.filter); + BrowserVisibility.waitUntilElementIsNotVisible(this.filter); return this.filter; } diff --git a/e2e/pages/adf/process-cloud/taskListCloudComponent.ts b/e2e/pages/adf/process-cloud/taskListCloudComponent.ts index 55bdcdab20..db2b09186e 100644 --- a/e2e/pages/adf/process-cloud/taskListCloudComponent.ts +++ b/e2e/pages/adf/process-cloud/taskListCloudComponent.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; import { DataTableComponentPage } from '../dataTableComponentPage'; import { element, by } from 'protractor'; @@ -67,7 +67,7 @@ export class TaskListCloudComponent { } getRow(taskName) { - return this.dataTable.getRow('Name', taskName); + return this.dataTable.getRowElement('Name', taskName); } checkContentIsDisplayedByProcessInstanceId(taskName) { @@ -87,12 +87,12 @@ export class TaskListCloudComponent { } checkTaskListIsLoaded() { - Util.waitUntilElementIsVisible(this.taskList); + BrowserVisibility.waitUntilElementIsVisible(this.taskList); return this; } getNoTasksFoundMessage() { - Util.waitUntilElementIsVisible(this.noTasksFound); + BrowserVisibility.waitUntilElementIsVisible(this.noTasksFound); return this.noTasksFound.getText(); } @@ -106,7 +106,7 @@ export class TaskListCloudComponent { getIdCellValue(rowName) { const locator = new DataTableComponentPage().getCellByRowAndColumn('Name', rowName, column.id); - Util.waitUntilElementIsVisible(locator); + BrowserVisibility.waitUntilElementIsVisible(locator); return locator.getText(); } diff --git a/e2e/pages/adf/process-services/analyticsPage.ts b/e2e/pages/adf/process-services/analyticsPage.ts index c3afdcc4b8..f6e0464134 100644 --- a/e2e/pages/adf/process-services/analyticsPage.ts +++ b/e2e/pages/adf/process-services/analyticsPage.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; import { element, by, protractor } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class AnalyticsPage { @@ -27,15 +27,15 @@ export class AnalyticsPage { getReport(title) { const reportTitle = element(by.css(`mat-icon[data-automation-id="${title}_filter"]`)); - Util.waitUntilElementIsVisible(reportTitle); + BrowserVisibility.waitUntilElementIsVisible(reportTitle); reportTitle.click(); } changeReportTitle(title) { - Util.waitUntilElementIsVisible(this.toolbarTitleContainer); - Util.waitUntilElementIsClickable(this.toolbarTitleContainer); + BrowserVisibility.waitUntilElementIsVisible(this.toolbarTitleContainer); + BrowserVisibility.waitUntilElementIsClickable(this.toolbarTitleContainer); this.toolbarTitleContainer.click(); - Util.waitUntilElementIsVisible(this.toolbarTitleInput); + BrowserVisibility.waitUntilElementIsVisible(this.toolbarTitleInput); this.toolbarTitleInput.click(); this.clearReportTitle(); this.toolbarTitleInput.sendKeys(title); @@ -43,23 +43,23 @@ export class AnalyticsPage { } clearReportTitle() { - Util.waitUntilElementIsVisible(this.toolbarTitleInput); + BrowserVisibility.waitUntilElementIsVisible(this.toolbarTitleInput); this.toolbarTitleInput.getAttribute('value').then((value) => { let i; for (i = value.length; i >= 0; i--) { this.toolbarTitleInput.sendKeys(protractor.Key.BACK_SPACE); } }); - Util.waitUntilElementIsVisible(this.toolbarTitleInput); + BrowserVisibility.waitUntilElementIsVisible(this.toolbarTitleInput); } getReportTitle() { - Util.waitUntilElementIsVisible(this.toolbarTitle); + BrowserVisibility.waitUntilElementIsVisible(this.toolbarTitle); return this.toolbarTitle.getText(); } checkNoReportMessage() { - Util.waitUntilElementIsVisible(this.reportMessage); + BrowserVisibility.waitUntilElementIsVisible(this.reportMessage); } } diff --git a/e2e/pages/adf/process-services/appNavigationBarPage.ts b/e2e/pages/adf/process-services/appNavigationBarPage.ts index 8b3b1e5927..24be431a9e 100644 --- a/e2e/pages/adf/process-services/appNavigationBarPage.ts +++ b/e2e/pages/adf/process-services/appNavigationBarPage.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; import { element, by, browser } from 'protractor'; export class AppNavigationBarPage { @@ -28,7 +28,7 @@ export class AppNavigationBarPage { reportsButtonSelected = element.all(by.cssContainingText('div[class*="mat-tab-label"] .mat-tab-labels div[aria-selected="true"]', 'Reports')).first(); clickTasksButton() { - Util.waitUntilElementIsVisible(this.tasksButton); + BrowserVisibility.waitUntilElementIsVisible(this.tasksButton); this.tasksButton.click(); return browser.sleep(400); } @@ -48,8 +48,8 @@ export class AppNavigationBarPage { } clickReportsButton() { - Util.waitUntilElementIsVisible(this.reportsButton); + BrowserVisibility.waitUntilElementIsVisible(this.reportsButton); this.reportsButton.click(); - return Util.waitUntilElementIsVisible(this.reportsButtonSelected); + return BrowserVisibility.waitUntilElementIsVisible(this.reportsButtonSelected); } } diff --git a/e2e/pages/adf/process-services/attachFormPage.ts b/e2e/pages/adf/process-services/attachFormPage.ts index 1d298526b0..501bdfedeb 100644 --- a/e2e/pages/adf/process-services/attachFormPage.ts +++ b/e2e/pages/adf/process-services/attachFormPage.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; import { element, by } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class AttachFormPage { @@ -29,19 +29,19 @@ export class AttachFormPage { attachFormDropdown = element(by.css("div[class='adf-attach-form-row']")); checkNoFormMessageIsDisplayed() { - return Util.waitUntilElementIsVisible(this.noFormMessage); + return BrowserVisibility.waitUntilElementIsVisible(this.noFormMessage); } checkAttachFormButtonIsDisplayed() { - return Util.waitUntilElementIsVisible(this.attachFormButton); + return BrowserVisibility.waitUntilElementIsVisible(this.attachFormButton); } checkCompleteButtonIsDisplayed() { - return Util.waitUntilElementIsVisible(this.completeButton); + return BrowserVisibility.waitUntilElementIsVisible(this.completeButton); } clickAttachFormButton() { - Util.waitUntilElementIsVisible(this.attachFormButton); + BrowserVisibility.waitUntilElementIsVisible(this.attachFormButton); return this.attachFormButton.click(); } @@ -52,29 +52,29 @@ export class AttachFormPage { } checkFormDropdownIsDisplayed() { - return Util.waitUntilElementIsVisible(this.formDropdown); + return BrowserVisibility.waitUntilElementIsVisible(this.formDropdown); } checkCancelButtonIsDisplayed() { - return Util.waitUntilElementIsVisible(this.cancelButton); + return BrowserVisibility.waitUntilElementIsVisible(this.cancelButton); } clickAttachFormDropdown() { - Util.waitUntilElementIsClickable(this.attachFormDropdown); + BrowserVisibility.waitUntilElementIsClickable(this.attachFormDropdown); return this.attachFormDropdown.click(); } selectAttachFormOption(option) { - Util.waitUntilElementIsClickable(element(by.cssContainingText("mat-option[role='option']", option))); + BrowserVisibility.waitUntilElementIsClickable(element(by.cssContainingText("mat-option[role='option']", option))); return element(by.cssContainingText("mat-option[role='option']", option)).click(); } clickCancelButton() { - Util.waitUntilElementIsVisible(this.cancelButton); + BrowserVisibility.waitUntilElementIsVisible(this.cancelButton); return this.cancelButton.click(); } checkAttachFormButtonIsDisabled() { - return Util.waitUntilElementIsVisible(element(by.css('button[id="adf-no-form-attach-form-button"][disabled]'))); + return BrowserVisibility.waitUntilElementIsVisible(element(by.css('button[id="adf-no-form-attach-form-button"][disabled]'))); } } diff --git a/e2e/pages/adf/process-services/attachmentListPage.ts b/e2e/pages/adf/process-services/attachmentListPage.ts index 6d27b548ff..3fb2606d1d 100644 --- a/e2e/pages/adf/process-services/attachmentListPage.ts +++ b/e2e/pages/adf/process-services/attachmentListPage.ts @@ -17,10 +17,10 @@ import { element, by, protractor, browser } from 'protractor'; -import { Util } from '../../../util/util'; import TestConfig = require('../../../test.config'); import path = require('path'); import remote = require('selenium-webdriver/remote'); +import { BrowserVisibility } from '@alfresco/adf-testing'; export class AttachmentListPage { @@ -32,31 +32,31 @@ export class AttachmentListPage { noContentContainer = element(by.css("div[class*='adf-no-content-container']")); checkEmptyAttachmentList() { - Util.waitUntilElementIsVisible(this.noContentContainer); + BrowserVisibility.waitUntilElementIsVisible(this.noContentContainer); } clickAttachFileButton(fileLocation) { browser.setFileDetector(new remote.FileDetector()); - Util.waitUntilElementIsVisible(this.attachFileButton); + BrowserVisibility.waitUntilElementIsVisible(this.attachFileButton); return this.attachFileButton.sendKeys(path.resolve(path.join(TestConfig.main.rootPath, fileLocation))); } checkFileIsAttached(name) { const fileAttached = element.all(by.css('div[data-automation-id="' + name + '"]')).first(); - Util.waitUntilElementIsVisible(fileAttached); + BrowserVisibility.waitUntilElementIsVisible(fileAttached); } checkAttachFileButtonIsNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.attachFileButton); + BrowserVisibility.waitUntilElementIsNotVisible(this.attachFileButton); } viewFile(name) { - Util.waitUntilElementIsVisible(element.all(by.css('div[data-automation-id="' + name + '"]')).first()); + BrowserVisibility.waitUntilElementIsVisible(element.all(by.css('div[data-automation-id="' + name + '"]')).first()); element.all(by.css('div[data-automation-id="' + name + '"]')).first().click(); - Util.waitUntilElementIsVisible(this.buttonMenu); + BrowserVisibility.waitUntilElementIsVisible(this.buttonMenu); this.buttonMenu.click(); - Util.waitUntilElementIsVisible(this.viewButton); + BrowserVisibility.waitUntilElementIsVisible(this.viewButton); browser.driver.sleep(500); this.viewButton.click(); browser.driver.sleep(500); @@ -64,11 +64,11 @@ export class AttachmentListPage { } removeFile(name) { - Util.waitUntilElementIsVisible(element.all(by.css('div[data-automation-id="' + name + '"]')).first()); + BrowserVisibility.waitUntilElementIsVisible(element.all(by.css('div[data-automation-id="' + name + '"]')).first()); element.all(by.css('div[data-automation-id="' + name + '"]')).first().click(); - Util.waitUntilElementIsVisible(this.buttonMenu); + BrowserVisibility.waitUntilElementIsVisible(this.buttonMenu); this.buttonMenu.click(); - Util.waitUntilElementIsVisible(this.removeButton); + BrowserVisibility.waitUntilElementIsVisible(this.removeButton); browser.driver.sleep(500); this.removeButton.click(); browser.driver.sleep(500); @@ -76,28 +76,28 @@ export class AttachmentListPage { } downloadFile(name) { - Util.waitUntilElementIsVisible(element.all(by.css('div[data-automation-id="' + name + '"]')).first()); + BrowserVisibility.waitUntilElementIsVisible(element.all(by.css('div[data-automation-id="' + name + '"]')).first()); element.all(by.css('div[data-automation-id="' + name + '"]')).first().click(); - Util.waitUntilElementIsVisible(this.buttonMenu); + BrowserVisibility.waitUntilElementIsVisible(this.buttonMenu); this.buttonMenu.click(); - Util.waitUntilElementIsVisible(this.downloadButton); + BrowserVisibility.waitUntilElementIsVisible(this.downloadButton); browser.driver.sleep(500); this.downloadButton.click(); return this; } doubleClickFile(name) { - Util.waitUntilElementIsVisible(element.all(by.css('div[data-automation-id="' + name + '"]')).first()); + BrowserVisibility.waitUntilElementIsVisible(element.all(by.css('div[data-automation-id="' + name + '"]')).first()); const fileAttached = element.all(by.css('div[data-automation-id="' + name + '"]')).first(); - Util.waitUntilElementIsVisible(fileAttached); - Util.waitUntilElementIsClickable(fileAttached); + BrowserVisibility.waitUntilElementIsVisible(fileAttached); + BrowserVisibility.waitUntilElementIsClickable(fileAttached); fileAttached.click(); browser.actions().sendKeys(protractor.Key.ENTER).perform(); } checkFileIsRemoved(name) { const fileAttached = element.all(by.css('div[data-automation-id="' + name + '"]')).first(); - Util.waitUntilElementIsNotVisible(fileAttached); + BrowserVisibility.waitUntilElementIsNotVisible(fileAttached); return this; } diff --git a/e2e/pages/adf/process-services/dialog/appSettingsToggles.ts b/e2e/pages/adf/process-services/dialog/appSettingsToggles.ts index 51550bca84..69c59d9e1b 100644 --- a/e2e/pages/adf/process-services/dialog/appSettingsToggles.ts +++ b/e2e/pages/adf/process-services/dialog/appSettingsToggles.ts @@ -41,19 +41,9 @@ export class AppSettingsToggles { return this; } - disableTaskFiltersIcon() { - this.formControllersPage.disableToggle(this.showTaskFilterIconsToggle); - return this; - } - enableProcessFiltersIcon() { this.formControllersPage.enableToggle(this.showProcessFilterIconsToggle); return this; } - disableProcessFiltersIcon() { - this.formControllersPage.disableToggle(this.showProcessFilterIconsToggle); - return this; - } - } diff --git a/e2e/pages/adf/process-services/dialog/createChecklistDialog.ts b/e2e/pages/adf/process-services/dialog/createChecklistDialog.ts index 36d167de1a..18e8a7c213 100644 --- a/e2e/pages/adf/process-services/dialog/createChecklistDialog.ts +++ b/e2e/pages/adf/process-services/dialog/createChecklistDialog.ts @@ -16,7 +16,7 @@ */ import { element, by } from 'protractor'; -import { Util } from '../../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class ChecklistDialog { @@ -26,41 +26,41 @@ export class ChecklistDialog { dialogTitle = element(by.id('add-checklist-title')); addName(name) { - Util.waitUntilElementIsClickable(this.nameField); + BrowserVisibility.waitUntilElementIsClickable(this.nameField); this.nameField.clear(); this.nameField.sendKeys(name); return this; } clickCreateChecklistButton() { - Util.waitUntilElementIsVisible(this.addChecklistButton); + BrowserVisibility.waitUntilElementIsVisible(this.addChecklistButton); this.addChecklistButton.click(); } clickCancelButton() { - Util.waitUntilElementIsVisible(this.closeButton); + BrowserVisibility.waitUntilElementIsVisible(this.closeButton); this.closeButton.click(); } getDialogTitle() { - Util.waitUntilElementIsVisible(this.dialogTitle); + BrowserVisibility.waitUntilElementIsVisible(this.dialogTitle); return this.dialogTitle.getText(); } getNameFieldPlaceholder() { - Util.waitUntilElementIsVisible(this.nameField); + BrowserVisibility.waitUntilElementIsVisible(this.nameField); return this.nameField.getAttribute('placeholder'); } checkCancelButtonIsEnabled() { - Util.waitUntilElementIsVisible(this.closeButton); - Util.waitUntilElementIsClickable(this.closeButton); + BrowserVisibility.waitUntilElementIsVisible(this.closeButton); + BrowserVisibility.waitUntilElementIsClickable(this.closeButton); return this; } checkAddChecklistButtonIsEnabled() { - Util.waitUntilElementIsVisible(this.addChecklistButton); - Util.waitUntilElementIsClickable(this.addChecklistButton); + BrowserVisibility.waitUntilElementIsVisible(this.addChecklistButton); + BrowserVisibility.waitUntilElementIsClickable(this.addChecklistButton); return this; } diff --git a/e2e/pages/adf/process-services/dialog/startTaskDialog.ts b/e2e/pages/adf/process-services/dialog/startTaskDialog.ts index 52d6435849..2c16a2ee35 100644 --- a/e2e/pages/adf/process-services/dialog/startTaskDialog.ts +++ b/e2e/pages/adf/process-services/dialog/startTaskDialog.ts @@ -16,7 +16,7 @@ */ import { element, by, Key } from 'protractor'; -import { Util } from '../../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class StartTaskDialog { @@ -30,26 +30,26 @@ export class StartTaskDialog { cancelButton = element(by.css('button[id="button-cancel"]')); addName(userName) { - Util.waitUntilElementIsVisible(this.name); + BrowserVisibility.waitUntilElementIsVisible(this.name); this.name.clear(); this.name.sendKeys(userName); return this; } addDescription(userDescription) { - Util.waitUntilElementIsVisible(this.description); + BrowserVisibility.waitUntilElementIsVisible(this.description); this.description.sendKeys(userDescription); return this; } addDueDate(date) { - Util.waitUntilElementIsVisible(this.dueDate); + BrowserVisibility.waitUntilElementIsVisible(this.dueDate); this.dueDate.sendKeys(date); return this; } addAssignee(name) { - Util.waitUntilElementIsVisible(this.assignee); + BrowserVisibility.waitUntilElementIsVisible(this.assignee); this.assignee.sendKeys(name); this.selectAssigneeFromList(name); return this; @@ -57,50 +57,50 @@ export class StartTaskDialog { selectAssigneeFromList(name) { const assigneeRow = element(by.cssContainingText('mat-option span.adf-people-label-name', name)); - Util.waitUntilElementIsVisible(assigneeRow); + BrowserVisibility.waitUntilElementIsVisible(assigneeRow); assigneeRow.click(); - Util.waitUntilElementIsNotVisible(assigneeRow); + BrowserVisibility.waitUntilElementIsNotVisible(assigneeRow); return this; } getAssignee() { - Util.waitUntilElementIsVisible(this.assignee); + BrowserVisibility.waitUntilElementIsVisible(this.assignee); return this.assignee.getAttribute('placeholder'); } addForm(form) { - Util.waitUntilElementIsVisible(this.formDropDown); + BrowserVisibility.waitUntilElementIsVisible(this.formDropDown); this.formDropDown.click(); return this.selectForm(form); } selectForm(form) { const option = element(by.cssContainingText('span[class*="mat-option-text"]', form)); - Util.waitUntilElementIsVisible(option); - Util.waitUntilElementIsClickable(option); + BrowserVisibility.waitUntilElementIsVisible(option); + BrowserVisibility.waitUntilElementIsClickable(option); option.click(); return this; } clickStartButton() { - Util.waitUntilElementIsVisible(this.startButton); - Util.waitUntilElementIsClickable(this.startButton); + BrowserVisibility.waitUntilElementIsVisible(this.startButton); + BrowserVisibility.waitUntilElementIsClickable(this.startButton); return this.startButton.click(); } checkStartButtonIsEnabled() { - Util.waitUntilElementIsVisible(this.startButtonEnabled); + BrowserVisibility.waitUntilElementIsVisible(this.startButtonEnabled); return this; } checkStartButtonIsDisabled() { - Util.waitUntilElementIsVisible(this.startButton.getAttribute('disabled')); + BrowserVisibility.waitUntilElementIsVisible(this.startButton.getAttribute('disabled')); return this; } clickCancelButton() { - Util.waitUntilElementIsVisible(this.cancelButton); - Util.waitUntilElementIsClickable(this.cancelButton); + BrowserVisibility.waitUntilElementIsVisible(this.cancelButton); + BrowserVisibility.waitUntilElementIsClickable(this.cancelButton); return this.cancelButton.click(); } @@ -112,7 +112,7 @@ export class StartTaskDialog { checkValidationErrorIsDisplayed(error, elementRef = 'mat-error') { const errorElement = element(by.cssContainingText(elementRef, error)); - Util.waitUntilElementIsVisible(errorElement); + BrowserVisibility.waitUntilElementIsVisible(errorElement); return this; } } diff --git a/e2e/pages/adf/process-services/filtersPage.ts b/e2e/pages/adf/process-services/filtersPage.ts index 5e66ea05a7..fc41f71501 100644 --- a/e2e/pages/adf/process-services/filtersPage.ts +++ b/e2e/pages/adf/process-services/filtersPage.ts @@ -16,8 +16,8 @@ */ import { by, element } from 'protractor'; -import { Util } from '../../../util/util'; import { DataTableComponentPage } from '../dataTableComponentPage'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class FiltersPage { @@ -25,13 +25,13 @@ export class FiltersPage { dataTable = new DataTableComponentPage(); getActiveFilter() { - Util.waitUntilElementIsVisible(this.activeFilter); + BrowserVisibility.waitUntilElementIsVisible(this.activeFilter); return this.activeFilter.getText(); } goToFilter(filterName) { const filter = element(by.css(`span[data-automation-id="${filterName}_filter"]`)); - Util.waitUntilElementIsVisible(filter); + BrowserVisibility.waitUntilElementIsVisible(filter); filter.click(); return this; } diff --git a/e2e/pages/adf/process-services/formFields.ts b/e2e/pages/adf/process-services/formFields.ts index 00bef9cdf0..72086647d8 100644 --- a/e2e/pages/adf/process-services/formFields.ts +++ b/e2e/pages/adf/process-services/formFields.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; import { by, element } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class FormFields { @@ -35,7 +35,7 @@ export class FormFields { setFieldValue(locator, field, value) { const fieldElement = element(locator(field)); - Util.waitUntilElementIsVisible(fieldElement); + BrowserVisibility.waitUntilElementIsVisible(fieldElement); fieldElement.clear(); fieldElement.sendKeys(value); return this; @@ -43,29 +43,29 @@ export class FormFields { checkWidgetIsVisible(fieldId) { const fieldElement = element.all(by.css(`adf-form-field div[id='field-${fieldId}-container']`)).first(); - Util.waitUntilElementIsVisible(fieldElement); + BrowserVisibility.waitUntilElementIsVisible(fieldElement); } checkWidgetIsHidden(fieldId) { const hiddenElement = element(by.css(`adf-form-field div[id='field-${fieldId}-container'][hidden]`)); - Util.waitUntilElementIsVisible(hiddenElement); + BrowserVisibility.waitUntilElementIsVisible(hiddenElement); } getWidget(fieldId) { const widget = element(by.css(`adf-form-field div[id='field-${fieldId}-container']`)); - Util.waitUntilElementIsVisible(widget); + BrowserVisibility.waitUntilElementIsVisible(widget); return widget; } getFieldValue(fieldId, valueLocatorParam?: any) { const value = this.getWidget(fieldId).element(valueLocatorParam || this.valueLocator); - Util.waitUntilElementIsVisible(value); + BrowserVisibility.waitUntilElementIsVisible(value); return value.getAttribute('value'); } getFieldLabel(fieldId, labelLocatorParam?: any) { const label = this.getWidget(fieldId).all(labelLocatorParam || this.labelLocator).first(); - Util.waitUntilElementIsVisible(label); + BrowserVisibility.waitUntilElementIsVisible(label); return label.getText(); } @@ -76,96 +76,96 @@ export class FormFields { getFieldText(fieldId, labelLocatorParam?: any) { const label = this.getWidget(fieldId).element(labelLocatorParam || this.labelLocator); - Util.waitUntilElementIsVisible(label); + BrowserVisibility.waitUntilElementIsVisible(label); return label.getText(); } getFieldPlaceHolder(fieldId, locator = 'input') { const placeHolderLocator = element(by.css(`${locator}#${fieldId}`)).getAttribute('placeholder'); - Util.waitUntilElementIsVisible(placeHolderLocator); + BrowserVisibility.waitUntilElementIsVisible(placeHolderLocator); return placeHolderLocator; } checkFieldValue(locator, field, val) { - Util.waitUntilElementHasValue(element(locator(field)), val); + BrowserVisibility.waitUntilElementHasValue(element(locator(field)), val); return this; } refreshForm() { - Util.waitUntilElementIsVisible(this.refreshButton); + BrowserVisibility.waitUntilElementIsVisible(this.refreshButton); this.refreshButton.click(); return this; } saveForm() { - Util.waitUntilElementIsVisible(this.saveButton); - Util.waitUntilElementIsClickable(this.saveButton); + BrowserVisibility.waitUntilElementIsVisible(this.saveButton); + BrowserVisibility.waitUntilElementIsClickable(this.saveButton); this.saveButton.click(); return this; } noFormIsDisplayed() { - Util.waitUntilElementIsNotOnPage(this.formContent); + BrowserVisibility.waitUntilElementIsNotOnPage(this.formContent); return this; } checkFormIsDisplayed() { - Util.waitUntilElementIsVisible(this.formContent); + BrowserVisibility.waitUntilElementIsVisible(this.formContent); return this; } getNoFormMessage() { - Util.waitUntilElementIsVisible(this.noFormMessage); + BrowserVisibility.waitUntilElementIsVisible(this.noFormMessage); return this.noFormMessage.getText(); } getCompletedTaskNoFormMessage() { - Util.waitUntilElementIsVisible(this.completedTaskNoFormMessage); + BrowserVisibility.waitUntilElementIsVisible(this.completedTaskNoFormMessage); return this.completedTaskNoFormMessage.getText(); } clickOnAttachFormButton() { - Util.waitUntilElementIsVisible(this.attachFormButton); + BrowserVisibility.waitUntilElementIsVisible(this.attachFormButton); this.attachFormButton.click(); return this; } selectForm(formName) { - Util.waitUntilElementIsVisible(this.selectFormDropDownArrow); + BrowserVisibility.waitUntilElementIsVisible(this.selectFormDropDownArrow); this.selectFormDropDownArrow.click(); - Util.waitUntilElementIsVisible(this.selectFormContent); + BrowserVisibility.waitUntilElementIsVisible(this.selectFormContent); this.selectFormFromDropDown(formName); return this; } selectFormFromDropDown(formName) { const formNameElement = element(by.cssContainingText('span', formName)); - Util.waitUntilElementIsVisible(formNameElement); + BrowserVisibility.waitUntilElementIsVisible(formNameElement); formNameElement.click(); } checkWidgetIsReadOnlyMode(fieldId) { const widget = element(by.css(`adf-form-field div[id='field-${fieldId}-container']`)); const widgetReadOnly = widget.element(by.css('div[class*="adf-readonly"]')); - Util.waitUntilElementIsVisible(widgetReadOnly); + BrowserVisibility.waitUntilElementIsVisible(widgetReadOnly); return widgetReadOnly; } completeForm() { - Util.waitUntilElementIsVisible(this.completeButton); + BrowserVisibility.waitUntilElementIsVisible(this.completeButton); return this.completeButton.click(); } setValueInInputById(fieldId, value) { const input = element(by.id(fieldId)); - Util.waitUntilElementIsVisible(input); + BrowserVisibility.waitUntilElementIsVisible(input); input.clear(); input.sendKeys(value); return this; } isCompleteFormButtonDisabled() { - Util.waitUntilElementIsVisible(this.completeButton); + BrowserVisibility.waitUntilElementIsVisible(this.completeButton); return this.completeButton.getAttribute('disabled'); } } diff --git a/e2e/pages/adf/process-services/formPage.ts b/e2e/pages/adf/process-services/formPage.ts index 9ccde1bc17..0684eecde4 100644 --- a/e2e/pages/adf/process-services/formPage.ts +++ b/e2e/pages/adf/process-services/formPage.ts @@ -16,28 +16,28 @@ */ import { element, by } from 'protractor'; -import { Util } from '../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class FormPage { errorLog = element(by.css('div[class*="console"]')); checkErrorMessageForWidgetIsDisplayed(errorMessage) { - return Util.waitUntilElementIsVisible(element(by.cssContainingText('.adf-error-text', errorMessage))); + return BrowserVisibility.waitUntilElementIsVisible(element(by.cssContainingText('.adf-error-text', errorMessage))); } checkErrorMessageForWidgetIsNotDisplayed(errorMessage) { - return Util.waitUntilElementIsNotVisible(element(by.cssContainingText('.adf-error-text', errorMessage))); + return BrowserVisibility.waitUntilElementIsNotVisible(element(by.cssContainingText('.adf-error-text', errorMessage))); } checkErrorLogMessage(errorMessage) { - Util.waitUntilElementIsVisible(this.errorLog); - return Util.waitUntilElementIsVisible(element(by.cssContainingText('div[class*="console"] p', errorMessage))); + BrowserVisibility.waitUntilElementIsVisible(this.errorLog); + return BrowserVisibility.waitUntilElementIsVisible(element(by.cssContainingText('div[class*="console"] p', errorMessage))); } checkErrorMessageIsNotDisplayed(errorMessage) { - Util.waitUntilElementIsVisible(this.errorLog); - return Util.waitUntilElementIsNotVisible(element(by.cssContainingText('div[class*="console"] p', errorMessage))); + BrowserVisibility.waitUntilElementIsVisible(this.errorLog); + return BrowserVisibility.waitUntilElementIsNotVisible(element(by.cssContainingText('div[class*="console"] p', errorMessage))); } } diff --git a/e2e/pages/adf/process-services/processDetailsPage.ts b/e2e/pages/adf/process-services/processDetailsPage.ts index 8e7ec3a943..78d4f76ea9 100644 --- a/e2e/pages/adf/process-services/processDetailsPage.ts +++ b/e2e/pages/adf/process-services/processDetailsPage.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; import { by, element, protractor } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class ProcessDetailsPage { @@ -49,88 +49,88 @@ export class ProcessDetailsPage { taskTitle = element(by.css('h2[class="adf-activiti-task-details__header"]')); checkDetailsAreDisplayed() { - Util.waitUntilElementIsVisible(this.processStatusField); - Util.waitUntilElementIsVisible(this.processEndDateField); - Util.waitUntilElementIsVisible(this.processCategoryField); - Util.waitUntilElementIsVisible(this.processBusinessKeyField); - Util.waitUntilElementIsVisible(this.processCreatedByField); - Util.waitUntilElementIsVisible(this.processCreatedField); - Util.waitUntilElementIsVisible(this.processIdField); - Util.waitUntilElementIsVisible(this.processDescription); - Util.waitUntilElementIsVisible(this.showDiagramButton); - Util.waitUntilElementIsVisible(this.activeTask); - Util.waitUntilElementIsVisible(this.cancelProcessButton); - Util.waitUntilElementIsVisible(this.commentInput); - Util.waitUntilElementIsVisible(this.auditLogButton); + BrowserVisibility.waitUntilElementIsVisible(this.processStatusField); + BrowserVisibility.waitUntilElementIsVisible(this.processEndDateField); + BrowserVisibility.waitUntilElementIsVisible(this.processCategoryField); + BrowserVisibility.waitUntilElementIsVisible(this.processBusinessKeyField); + BrowserVisibility.waitUntilElementIsVisible(this.processCreatedByField); + BrowserVisibility.waitUntilElementIsVisible(this.processCreatedField); + BrowserVisibility.waitUntilElementIsVisible(this.processIdField); + BrowserVisibility.waitUntilElementIsVisible(this.processDescription); + BrowserVisibility.waitUntilElementIsVisible(this.showDiagramButton); + BrowserVisibility.waitUntilElementIsVisible(this.activeTask); + BrowserVisibility.waitUntilElementIsVisible(this.cancelProcessButton); + BrowserVisibility.waitUntilElementIsVisible(this.commentInput); + BrowserVisibility.waitUntilElementIsVisible(this.auditLogButton); return this; } checkProcessTitleIsDisplayed() { - Util.waitUntilElementIsVisible(this.processTitle); + BrowserVisibility.waitUntilElementIsVisible(this.processTitle); return this.processTitle.getText(); } checkProcessDetailsMessage() { - Util.waitUntilElementIsVisible(this.processDetailsMessage); + BrowserVisibility.waitUntilElementIsVisible(this.processDetailsMessage); return this.processDetailsMessage.getText(); } getProcessStatus() { - Util.waitUntilElementIsVisible(this.processStatusField); + BrowserVisibility.waitUntilElementIsVisible(this.processStatusField); return this.processStatusField.getText(); } getEndDate() { - Util.waitUntilElementIsVisible(this.processEndDateField); + BrowserVisibility.waitUntilElementIsVisible(this.processEndDateField); return this.processEndDateField.getText(); } getProcessCategory() { - Util.waitUntilElementIsVisible(this.processCategoryField); + BrowserVisibility.waitUntilElementIsVisible(this.processCategoryField); return this.processCategoryField.getText(); } getBusinessKey() { - Util.waitUntilElementIsVisible(this.processBusinessKeyField); + BrowserVisibility.waitUntilElementIsVisible(this.processBusinessKeyField); return this.processBusinessKeyField.getText(); } getCreatedBy() { - Util.waitUntilElementIsVisible(this.processCreatedByField); + BrowserVisibility.waitUntilElementIsVisible(this.processCreatedByField); return this.processCreatedByField.getText(); } getCreated() { - Util.waitUntilElementIsVisible(this.processCreatedField); + BrowserVisibility.waitUntilElementIsVisible(this.processCreatedField); return this.processCreatedField.getText(); } getId() { - Util.waitUntilElementIsVisible(this.processIdField); + BrowserVisibility.waitUntilElementIsVisible(this.processIdField); return this.processIdField.getText(); } getProcessDescription() { - Util.waitUntilElementIsVisible(this.processDescription); + BrowserVisibility.waitUntilElementIsVisible(this.processDescription); return this.processDescription.getText(); } clickShowDiagram() { - Util.waitUntilElementIsVisible(this.showDiagramButton); - Util.waitUntilElementIsClickable(this.showDiagramButton); + BrowserVisibility.waitUntilElementIsVisible(this.showDiagramButton); + BrowserVisibility.waitUntilElementIsClickable(this.showDiagramButton); this.showDiagramButton.click(); - Util.waitUntilElementIsVisible(this.diagramCanvas); - Util.waitUntilElementIsVisible(this.backButton); - Util.waitUntilElementIsClickable(this.backButton); + BrowserVisibility.waitUntilElementIsVisible(this.diagramCanvas); + BrowserVisibility.waitUntilElementIsVisible(this.backButton); + BrowserVisibility.waitUntilElementIsClickable(this.backButton); this.backButton.click(); } checkShowDiagramIsDisabled() { - Util.waitUntilElementIsVisible(this.showDiagramButtonDisabled); + BrowserVisibility.waitUntilElementIsVisible(this.showDiagramButtonDisabled); } addComment(comment) { - Util.waitUntilElementIsVisible(this.commentInput); + BrowserVisibility.waitUntilElementIsVisible(this.commentInput); this.commentInput.sendKeys(comment); this.commentInput.sendKeys(protractor.Key.ENTER); return this; @@ -138,37 +138,37 @@ export class ProcessDetailsPage { checkCommentIsDisplayed(comment) { const commentInserted = element(by.cssContainingText('div[id="comment-message"]', comment)); - Util.waitUntilElementIsVisible(commentInserted); + BrowserVisibility.waitUntilElementIsVisible(commentInserted); return this; } clickAuditLogButton() { - Util.waitUntilElementIsVisible(this.auditLogButton); - Util.waitUntilElementIsClickable(this.auditLogButton); + BrowserVisibility.waitUntilElementIsVisible(this.auditLogButton); + BrowserVisibility.waitUntilElementIsClickable(this.auditLogButton); this.auditLogButton.click(); } clickCancelProcessButton() { - Util.waitUntilElementIsVisible(this.cancelProcessButton); - Util.waitUntilElementIsClickable(this.cancelProcessButton); + BrowserVisibility.waitUntilElementIsVisible(this.cancelProcessButton); + BrowserVisibility.waitUntilElementIsClickable(this.cancelProcessButton); this.cancelProcessButton.click(); } clickOnActiveTask() { - Util.waitUntilElementIsVisible(this.activeTask); + BrowserVisibility.waitUntilElementIsVisible(this.activeTask); return this.activeTask.click(); } clickOnCompletedTask() { - Util.waitUntilElementIsClickable(this.completedTask); + BrowserVisibility.waitUntilElementIsClickable(this.completedTask); return this.completedTask.click(); } checkActiveTaskTitleIsDisplayed() { - Util.waitUntilElementIsVisible(this.taskTitle); + BrowserVisibility.waitUntilElementIsVisible(this.taskTitle); } checkProcessDetailsCard() { - Util.waitUntilElementIsVisible(this.propertiesList); + BrowserVisibility.waitUntilElementIsVisible(this.propertiesList); } } diff --git a/e2e/pages/adf/process-services/processFiltersPage.ts b/e2e/pages/adf/process-services/processFiltersPage.ts index d906393228..5681ef3623 100644 --- a/e2e/pages/adf/process-services/processFiltersPage.ts +++ b/e2e/pages/adf/process-services/processFiltersPage.ts @@ -15,10 +15,10 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; import { element, by } from 'protractor'; import { StartProcessPage } from './startProcessPage'; import { DataTableComponentPage } from '../dataTableComponentPage'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class ProcessFiltersPage { @@ -44,52 +44,52 @@ export class ProcessFiltersPage { } clickRunningFilterButton() { - Util.waitUntilElementIsVisible(this.runningFilter); - Util.waitUntilElementIsClickable(this.runningFilter); + BrowserVisibility.waitUntilElementIsVisible(this.runningFilter); + BrowserVisibility.waitUntilElementIsClickable(this.runningFilter); return this.runningFilter.click(); } clickCompletedFilterButton() { - Util.waitUntilElementIsVisible(this.completedFilter); - Util.waitUntilElementIsClickable(this.completedFilter); + BrowserVisibility.waitUntilElementIsVisible(this.completedFilter); + BrowserVisibility.waitUntilElementIsClickable(this.completedFilter); this.completedFilter.click(); expect(this.completedFilter.isEnabled()).toBe(true); } clickAllFilterButton() { - Util.waitUntilElementIsVisible(this.allFilter); - Util.waitUntilElementIsClickable(this.allFilter); + BrowserVisibility.waitUntilElementIsVisible(this.allFilter); + BrowserVisibility.waitUntilElementIsClickable(this.allFilter); this.allFilter.click(); expect(this.allFilter.isEnabled()).toBe(true); } clickCreateProcessButton() { - Util.waitUntilElementIsOnPage(this.accordionMenu); - Util.waitUntilElementIsVisible(this.processesPage); - Util.waitUntilElementIsPresent(this.createProcessButton); + BrowserVisibility.waitUntilElementIsOnPage(this.accordionMenu); + BrowserVisibility.waitUntilElementIsVisible(this.processesPage); + BrowserVisibility.waitUntilElementIsPresent(this.createProcessButton); this.createProcessButton.click(); } clickNewProcessDropdown() { - Util.waitUntilElementIsOnPage(this.buttonWindow); - Util.waitUntilElementIsVisible(this.newProcessButton); - Util.waitUntilElementIsClickable(this.newProcessButton); + BrowserVisibility.waitUntilElementIsOnPage(this.buttonWindow); + BrowserVisibility.waitUntilElementIsVisible(this.newProcessButton); + BrowserVisibility.waitUntilElementIsClickable(this.newProcessButton); this.newProcessButton.click(); } checkNoContentMessage() { - return Util.waitUntilElementIsVisible(this.noContentMessage); + return BrowserVisibility.waitUntilElementIsVisible(this.noContentMessage); } selectFromProcessList(title) { const processName = element.all(by.css(`div[data-automation-id="text_${title}"]`)).first(); - Util.waitUntilElementIsVisible(processName); + BrowserVisibility.waitUntilElementIsVisible(processName); processName.click(); } checkFilterIsHighlighted(filterName) { const processNameHighlighted = element(by.css(`mat-list-item.adf-active span[data-automation-id='${filterName}_filter']`)); - Util.waitUntilElementIsVisible(processNameHighlighted); + BrowserVisibility.waitUntilElementIsVisible(processNameHighlighted); } numberOfProcessRows() { @@ -97,7 +97,7 @@ export class ProcessFiltersPage { } waitForTableBody() { - Util.waitUntilElementIsVisible(this.tableBody); + BrowserVisibility.waitUntilElementIsVisible(this.tableBody); } /** @@ -115,26 +115,26 @@ export class ProcessFiltersPage { checkFilterIsDisplayed(name) { const filterName = element(by.css(`span[data-automation-id='${name}_filter']`)); - return Util.waitUntilElementIsVisible(filterName); + return BrowserVisibility.waitUntilElementIsVisible(filterName); } checkFilterHasNoIcon(name) { const filterName = element(by.css(`span[data-automation-id='${name}_filter']`)); - Util.waitUntilElementIsVisible(filterName); - return Util.waitUntilElementIsNotOnPage(filterName.element(this.processIcon)); + BrowserVisibility.waitUntilElementIsVisible(filterName); + return BrowserVisibility.waitUntilElementIsNotOnPage(filterName.element(this.processIcon)); } getFilterIcon(name) { const filterName = element(by.css(`span[data-automation-id='${name}_filter']`)); - Util.waitUntilElementIsVisible(filterName); + BrowserVisibility.waitUntilElementIsVisible(filterName); const icon = filterName.element(this.processIcon); - Util.waitUntilElementIsVisible(icon); + BrowserVisibility.waitUntilElementIsVisible(icon); return icon.getText(); } checkFilterIsNotDisplayed(name) { const filterName = element(by.css(`span[data-automation-id='${name}_filter']`)); - return Util.waitUntilElementIsNotVisible(filterName); + return BrowserVisibility.waitUntilElementIsNotVisible(filterName); } checkProcessesSortedByNameAsc() { diff --git a/e2e/pages/adf/process-services/processListPage.ts b/e2e/pages/adf/process-services/processListPage.ts index ae161b1571..e90de2dd88 100644 --- a/e2e/pages/adf/process-services/processListPage.ts +++ b/e2e/pages/adf/process-services/processListPage.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; import { element, by } from 'protractor'; export class ProcessListPage { @@ -24,12 +24,12 @@ export class ProcessListPage { processInstanceList = element(by.css('adf-process-instance-list')); checkProcessListTitleIsDisplayed() { - Util.waitUntilElementIsVisible(this.processListTitle); + BrowserVisibility.waitUntilElementIsVisible(this.processListTitle); return this.processListTitle.getText(); } checkProcessListIsDisplayed() { - Util.waitUntilElementIsVisible(this.processInstanceList); + BrowserVisibility.waitUntilElementIsVisible(this.processInstanceList); } } diff --git a/e2e/pages/adf/process-services/processServicesPage.ts b/e2e/pages/adf/process-services/processServicesPage.ts index 97ad72b21b..f1a33944bb 100644 --- a/e2e/pages/adf/process-services/processServicesPage.ts +++ b/e2e/pages/adf/process-services/processServicesPage.ts @@ -15,10 +15,10 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; import { AppNavigationBarPage } from './appNavigationBarPage'; import { element, by } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class ProcessServicesPage { @@ -28,52 +28,52 @@ export class ProcessServicesPage { descriptionLocator = by.css('mat-card-subtitle[class*="subtitle"]'); checkApsContainer() { - Util.waitUntilElementIsVisible(this.apsAppsContainer); + BrowserVisibility.waitUntilElementIsVisible(this.apsAppsContainer); } goToApp(applicationName) { const app = element(by.css('mat-card[title="' + applicationName + '"]')); - Util.waitUntilElementIsVisible(app); + BrowserVisibility.waitUntilElementIsVisible(app); app.click(); return new AppNavigationBarPage(); } goToTaskApp() { - Util.waitUntilElementIsVisible(this.taskApp); + BrowserVisibility.waitUntilElementIsVisible(this.taskApp); this.taskApp.click(); return new AppNavigationBarPage(); } getAppIconType(applicationName) { const app = element(by.css('mat-card[title="' + applicationName + '"]')); - Util.waitUntilElementIsVisible(app); + BrowserVisibility.waitUntilElementIsVisible(app); const iconType = app.element(this.iconTypeLocator); - Util.waitUntilElementIsVisible(iconType); + BrowserVisibility.waitUntilElementIsVisible(iconType); return iconType.getText(); } getBackgroundColor(applicationName) { const app = element(by.css('mat-card[title="' + applicationName + '"]')); - Util.waitUntilElementIsVisible(app); + BrowserVisibility.waitUntilElementIsVisible(app); return app.getCssValue('background-color'); } getDescription(applicationName) { const app = element(by.css('mat-card[title="' + applicationName + '"]')); - Util.waitUntilElementIsVisible(app); + BrowserVisibility.waitUntilElementIsVisible(app); const description = app.element(this.descriptionLocator); - Util.waitUntilElementIsVisible(description); + BrowserVisibility.waitUntilElementIsVisible(description); return description.getText(); } checkAppIsNotDisplayed(applicationName) { const app = element(by.css('mat-card[title="' + applicationName + '"]')); - return Util.waitUntilElementIsNotOnPage(app); + return BrowserVisibility.waitUntilElementIsNotOnPage(app); } checkAppIsDisplayed(applicationName) { const app = element(by.css('mat-card[title="' + applicationName + '"]')); - return Util.waitUntilElementIsVisible(app); + return BrowserVisibility.waitUntilElementIsVisible(app); } } diff --git a/e2e/pages/adf/process-services/startProcessPage.ts b/e2e/pages/adf/process-services/startProcessPage.ts index 366de7f580..689394538e 100644 --- a/e2e/pages/adf/process-services/startProcessPage.ts +++ b/e2e/pages/adf/process-services/startProcessPage.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; import { by, element, Key, protractor, browser } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class StartProcessPage { @@ -31,7 +31,7 @@ export class StartProcessPage { processDefinitionOptionsPanel = element(by.css('div[class*="processDefinitionOptions"]')); checkNoProcessMessage() { - Util.waitUntilElementIsVisible(this.noProcess); + BrowserVisibility.waitUntilElementIsVisible(this.noProcess); } pressDownArrowAndEnter() { @@ -40,16 +40,16 @@ export class StartProcessPage { } checkNoProcessDefinitionOptionIsDisplayed() { - Util.waitUntilElementIsNotOnPage(this.processDefinitionOptionsPanel); + BrowserVisibility.waitUntilElementIsNotOnPage(this.processDefinitionOptionsPanel); } getDefaultName() { - Util.waitUntilElementIsVisible(this.defaultProcessName); + BrowserVisibility.waitUntilElementIsVisible(this.defaultProcessName); return this.defaultProcessName.getAttribute('value'); } deleteDefaultName(name) { - Util.waitUntilElementIsVisible(this.processNameInput); + BrowserVisibility.waitUntilElementIsVisible(this.processNameInput); this.processNameInput.getAttribute('value').then((currentValue) => { for (let i = currentValue.length; i >= 0; i--) { if (currentValue === name) { @@ -60,13 +60,13 @@ export class StartProcessPage { } enterProcessName(name) { - Util.waitUntilElementIsVisible(this.processNameInput); + BrowserVisibility.waitUntilElementIsVisible(this.processNameInput); this.clearProcessName(); this.processNameInput.sendKeys(name); } clearProcessName() { - Util.waitUntilElementIsVisible(this.processNameInput); + BrowserVisibility.waitUntilElementIsVisible(this.processNameInput); this.processNameInput.clear(); } @@ -76,53 +76,53 @@ export class StartProcessPage { } clickProcessDropdownArrow() { - Util.waitUntilElementIsVisible(this.selectProcessDropdownArrow); - Util.waitUntilElementIsClickable(this.selectProcessDropdownArrow); + BrowserVisibility.waitUntilElementIsVisible(this.selectProcessDropdownArrow); + BrowserVisibility.waitUntilElementIsClickable(this.selectProcessDropdownArrow); this.selectProcessDropdownArrow.click(); } checkOptionIsDisplayed(name) { const selectProcessDropdown = element(by.cssContainingText('.mat-option-text', name)); - Util.waitUntilElementIsVisible(selectProcessDropdown); - Util.waitUntilElementIsClickable(selectProcessDropdown); + BrowserVisibility.waitUntilElementIsVisible(selectProcessDropdown); + BrowserVisibility.waitUntilElementIsClickable(selectProcessDropdown); return this; } checkOptionIsNotDisplayed(name) { const selectProcessDropdown = element(by.cssContainingText('.mat-option-text', name)); - Util.waitUntilElementIsNotOnPage(selectProcessDropdown); + BrowserVisibility.waitUntilElementIsNotOnPage(selectProcessDropdown); return this; } selectOption(name) { const selectProcessDropdown = element(by.cssContainingText('.mat-option-text', name)); - Util.waitUntilElementIsVisible(selectProcessDropdown); - Util.waitUntilElementIsClickable(selectProcessDropdown); + BrowserVisibility.waitUntilElementIsVisible(selectProcessDropdown); + BrowserVisibility.waitUntilElementIsClickable(selectProcessDropdown); selectProcessDropdown.click(); return this; } typeProcessDefinition(name) { - Util.waitUntilElementIsVisible(this.processDefinition); - Util.waitUntilElementIsClickable(this.processDefinition); + BrowserVisibility.waitUntilElementIsVisible(this.processDefinition); + BrowserVisibility.waitUntilElementIsClickable(this.processDefinition); this.processDefinition.clear(); this.processDefinition.sendKeys(name); return this; } getProcessDefinitionValue() { - Util.waitUntilElementIsVisible(this.processDefinition); + BrowserVisibility.waitUntilElementIsVisible(this.processDefinition); return this.processDefinition.getAttribute('value'); } clickCancelProcessButton() { - Util.waitUntilElementIsVisible(this.cancelProcessButton); + BrowserVisibility.waitUntilElementIsVisible(this.cancelProcessButton); this.cancelProcessButton.click(); } clickFormStartProcessButton() { - Util.waitUntilElementIsVisible(this.formStartProcessButton); - Util.waitUntilElementIsClickable(this.formStartProcessButton); + BrowserVisibility.waitUntilElementIsVisible(this.formStartProcessButton); + BrowserVisibility.waitUntilElementIsClickable(this.formStartProcessButton); return this.formStartProcessButton.click(); } @@ -139,7 +139,7 @@ export class StartProcessPage { } checkSelectProcessPlaceholderIsDisplayed() { - Util.waitUntilElementIsVisible(this.processDefinition); + BrowserVisibility.waitUntilElementIsVisible(this.processDefinition); const processPlaceholder = this.processDefinition.getAttribute('value').then(((result) => { return result; })); @@ -148,7 +148,7 @@ export class StartProcessPage { checkValidationErrorIsDisplayed(error, elementRef = 'mat-error') { const errorElement = element(by.cssContainingText(elementRef, error)); - Util.waitUntilElementIsVisible(errorElement); + BrowserVisibility.waitUntilElementIsVisible(errorElement); return this; } @@ -159,7 +159,7 @@ export class StartProcessPage { } clearField(locator) { - Util.waitUntilElementIsVisible(locator); + BrowserVisibility.waitUntilElementIsVisible(locator); locator.getAttribute('value').then((result) => { for (let i = result.length; i >= 0; i--) { locator.sendKeys(protractor.Key.BACK_SPACE); diff --git a/e2e/pages/adf/process-services/taskDetailsPage.ts b/e2e/pages/adf/process-services/taskDetailsPage.ts index 8e7fe2c2d4..2e1daeab72 100644 --- a/e2e/pages/adf/process-services/taskDetailsPage.ts +++ b/e2e/pages/adf/process-services/taskDetailsPage.ts @@ -16,9 +16,9 @@ */ import { AppSettingsToggles } from './dialog/appSettingsToggles'; -import { Util } from '../../../util/util'; import { element, by, protractor, browser } from 'protractor'; import { TabsPage } from '@alfresco/adf-testing'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class TaskDetailsPage { @@ -68,152 +68,152 @@ export class TaskDetailsPage { emptyTaskDetails = element(by.css('adf-task-details > div > div')); getTaskDetailsTitle() { - Util.waitUntilElementIsVisible(this.taskDetailsTitle); + BrowserVisibility.waitUntilElementIsVisible(this.taskDetailsTitle); return this.taskDetailsTitle.getText(); } checkSelectedForm(formName) { - Util.waitUntilElementIsVisible(this.attachFormName); + BrowserVisibility.waitUntilElementIsVisible(this.attachFormName); expect(formName).toEqual(this.attachFormName.getText()); } checkAttachFormButtonIsDisabled() { - Util.waitUntilElementIsVisible(this.disabledAttachFormButton); + BrowserVisibility.waitUntilElementIsVisible(this.disabledAttachFormButton); } checkAttachFormButtonIsEnabled() { - Util.waitUntilElementIsClickable(this.attachFormButton); + BrowserVisibility.waitUntilElementIsClickable(this.attachFormButton); } checkEditFormButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.editFormButton); + BrowserVisibility.waitUntilElementIsVisible(this.editFormButton); } clickEditFormButton() { - Util.waitUntilElementIsClickable(this.editFormButton); + BrowserVisibility.waitUntilElementIsClickable(this.editFormButton); return this.editFormButton.click(); } checkAttachFormDropdownIsDisplayed() { - Util.waitUntilElementIsVisible(this.attachFormDropdown); + BrowserVisibility.waitUntilElementIsVisible(this.attachFormDropdown); } clickAttachFormDropdown() { - Util.waitUntilElementIsClickable(this.attachFormDropdown); + BrowserVisibility.waitUntilElementIsClickable(this.attachFormDropdown); return this.attachFormDropdown.click(); } selectAttachFormOption(option) { const selectedOption = element(by.cssContainingText('mat-option[role="option"]', option)); - Util.waitUntilElementIsClickable(selectedOption); + BrowserVisibility.waitUntilElementIsClickable(selectedOption); return selectedOption.click(); } checkCancelAttachFormIsDisplayed() { - Util.waitUntilElementIsVisible(this.cancelAttachForm); + BrowserVisibility.waitUntilElementIsVisible(this.cancelAttachForm); } noFormIsDisplayed() { - Util.waitUntilElementIsNotOnPage(this.formContent); + BrowserVisibility.waitUntilElementIsNotOnPage(this.formContent); return this; } clickCancelAttachForm() { - Util.waitUntilElementIsClickable(this.cancelAttachForm); + BrowserVisibility.waitUntilElementIsClickable(this.cancelAttachForm); return this.cancelAttachForm.click(); } checkRemoveAttachFormIsDisplayed() { - Util.waitUntilElementIsVisible(this.removeAttachForm); + BrowserVisibility.waitUntilElementIsVisible(this.removeAttachForm); } clickRemoveAttachForm() { - Util.waitUntilElementIsClickable(this.removeAttachForm); + BrowserVisibility.waitUntilElementIsClickable(this.removeAttachForm); return this.removeAttachForm.click(); } checkAttachFormButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.attachFormButton); + BrowserVisibility.waitUntilElementIsVisible(this.attachFormButton); } checkAttachFormButtonIsNotDisplayed() { - Util.waitUntilElementIsNotOnPage(this.attachFormButton); + BrowserVisibility.waitUntilElementIsNotOnPage(this.attachFormButton); } clickAttachFormButton() { - Util.waitUntilElementIsClickable(this.attachFormButton); + BrowserVisibility.waitUntilElementIsClickable(this.attachFormButton); return this.attachFormButton.click(); } checkFormIsAttached(formName) { - Util.waitUntilElementIsVisible(this.formNameField); + BrowserVisibility.waitUntilElementIsVisible(this.formNameField); this.formNameField.getText().then((attachedFormName) => { expect(attachedFormName).toEqual(formName); }); } getFormName() { - Util.waitUntilElementIsVisible(this.formNameField); + BrowserVisibility.waitUntilElementIsVisible(this.formNameField); return this.formNameField.getText(); } getAssignee() { - Util.waitUntilElementIsVisible(this.assigneeField); + BrowserVisibility.waitUntilElementIsVisible(this.assigneeField); return this.assigneeField.getText(); } getStatus() { - Util.waitUntilElementIsVisible(this.statusField); + BrowserVisibility.waitUntilElementIsVisible(this.statusField); return this.statusField.getText(); } getCategory() { - Util.waitUntilElementIsVisible(this.categoryField); + BrowserVisibility.waitUntilElementIsVisible(this.categoryField); return this.categoryField.getText(); } getParentName() { - Util.waitUntilElementIsVisible(this.parentNameField); + BrowserVisibility.waitUntilElementIsVisible(this.parentNameField); return this.parentNameField.getText(); } getParentTaskId() { - Util.waitUntilElementIsVisible(this.parentTaskIdField); + BrowserVisibility.waitUntilElementIsVisible(this.parentTaskIdField); return this.parentTaskIdField.getText(); } getDuration() { - Util.waitUntilElementIsVisible(this.durationField); + BrowserVisibility.waitUntilElementIsVisible(this.durationField); return this.durationField.getText(); } getEndDate() { - Util.waitUntilElementIsVisible(this.endDateField); + BrowserVisibility.waitUntilElementIsVisible(this.endDateField); return this.endDateField.getText(); } getCreated() { - Util.waitUntilElementIsVisible(this.createdField); + BrowserVisibility.waitUntilElementIsVisible(this.createdField); return this.createdField.getText(); } getId() { - Util.waitUntilElementIsVisible(this.idField); + BrowserVisibility.waitUntilElementIsVisible(this.idField); return this.idField.getText(); } getDescription() { - Util.waitUntilElementIsVisible(this.descriptionField); + BrowserVisibility.waitUntilElementIsVisible(this.descriptionField); return this.descriptionField.getText(); } getDueDate() { - Util.waitUntilElementIsVisible(this.dueDateField); + BrowserVisibility.waitUntilElementIsVisible(this.dueDateField); return this.dueDateField.getText(); } getTitle() { - Util.waitUntilElementIsVisible(this.activitiesTitle); + BrowserVisibility.waitUntilElementIsVisible(this.activitiesTitle); return this.activitiesTitle.getText(); } @@ -230,34 +230,34 @@ export class TaskDetailsPage { } addComment(comment) { - Util.waitUntilElementIsVisible(this.commentField); + BrowserVisibility.waitUntilElementIsVisible(this.commentField); this.commentField.sendKeys(comment); this.addCommentButton.click(); return this; } clearComment(comment) { - Util.waitUntilElementIsVisible(this.commentField); + BrowserVisibility.waitUntilElementIsVisible(this.commentField); this.commentField.sendKeys(protractor.Key.ENTER); return this; } checkCommentIsDisplayed(comment) { const row = element(by.cssContainingText('div[id="comment-message"]', comment)); - Util.waitUntilElementIsVisible(row); + BrowserVisibility.waitUntilElementIsVisible(row); return this; } clickInvolvePeopleButton() { - Util.waitUntilElementIsVisible(this.involvePeopleButton); - Util.waitUntilElementIsClickable(this.involvePeopleButton); + BrowserVisibility.waitUntilElementIsVisible(this.involvePeopleButton); + BrowserVisibility.waitUntilElementIsClickable(this.involvePeopleButton); browser.actions().mouseMove(this.involvePeopleButton).perform(); this.involvePeopleButton.click(); return this; } typeUser(user) { - Util.waitUntilElementIsVisible(this.addPeopleField); + BrowserVisibility.waitUntilElementIsVisible(this.addPeopleField); this.addPeopleField.sendKeys(user); return this; } @@ -269,45 +269,45 @@ export class TaskDetailsPage { checkUserIsSelected(user) { const row = element(by.cssContainingText('div[class*="search-list-container"] div[class*="people-full-name"]', user)); - Util.waitUntilElementIsVisible(row); + BrowserVisibility.waitUntilElementIsVisible(row); return this; } clickAddInvolvedUserButton() { - Util.waitUntilElementIsVisible(this.addInvolvedUserButton); - Util.waitUntilElementIsClickable(this.addInvolvedUserButton); + BrowserVisibility.waitUntilElementIsVisible(this.addInvolvedUserButton); + BrowserVisibility.waitUntilElementIsClickable(this.addInvolvedUserButton); this.addInvolvedUserButton.click(); return this; } getRowsUser(user) { const row = element(by.cssContainingText('div[class*="people-full-name"]', user)); - Util.waitUntilElementIsVisible(row); + BrowserVisibility.waitUntilElementIsVisible(row); return row; } removeInvolvedUser(user) { const row = this.getRowsUser(user).element(by.xpath('ancestor::div[contains(@class, "adf-datatable-row")]')); - Util.waitUntilElementIsVisible(row); + BrowserVisibility.waitUntilElementIsVisible(row); row.element(by.css('button[data-automation-id="action_menu_0"]')).click(); - Util.waitUntilElementIsVisible(this.removeInvolvedPeople); + BrowserVisibility.waitUntilElementIsVisible(this.removeInvolvedPeople); return this.removeInvolvedPeople.click(); } getInvolvedUserEmail(user) { const email = this.getRowsUser(user).element(this.emailInvolvedUser); - Util.waitUntilElementIsVisible(email); + BrowserVisibility.waitUntilElementIsVisible(email); return email.getText(); } getInvolvedUserEditAction(user) { const edit = this.getRowsUser(user).element(this.editActionInvolvedUser); - Util.waitUntilElementIsVisible(edit); + BrowserVisibility.waitUntilElementIsVisible(edit); return edit.getText(); } clickAuditLogButton() { - Util.waitUntilElementIsVisible(this.auditLogButton); + BrowserVisibility.waitUntilElementIsVisible(this.auditLogButton); this.auditLogButton.click(); } @@ -316,115 +316,115 @@ export class TaskDetailsPage { } taskInfoDrawerIsDisplayed() { - Util.waitUntilElementIsVisible(this.taskDetailsInfoDrawer); + BrowserVisibility.waitUntilElementIsVisible(this.taskDetailsInfoDrawer); } taskInfoDrawerIsNotDisplayed() { - Util.waitUntilElementIsNotOnPage(this.taskDetailsInfoDrawer); + BrowserVisibility.waitUntilElementIsNotOnPage(this.taskDetailsInfoDrawer); } checkNoPeopleIsInvolved() { - Util.waitUntilElementIsVisible(this.noPeopleInvolved); + BrowserVisibility.waitUntilElementIsVisible(this.noPeopleInvolved); return this; } clickCancelInvolvePeopleButton() { - Util.waitUntilElementIsVisible(this.cancelInvolvePeopleButton); + BrowserVisibility.waitUntilElementIsVisible(this.cancelInvolvePeopleButton); this.cancelInvolvePeopleButton.click(); return this; } getInvolvePeopleHeader() { - Util.waitUntilElementIsVisible(this.involvePeopleHeader); + BrowserVisibility.waitUntilElementIsVisible(this.involvePeopleHeader); return this.involvePeopleHeader.getText(); } getInvolvePeoplePlaceholder() { - Util.waitUntilElementIsVisible(this.addPeopleField); + BrowserVisibility.waitUntilElementIsVisible(this.addPeopleField); return this.addPeopleField.getAttribute('placeholder'); } checkCancelButtonIsEnabled() { - Util.waitUntilElementIsVisible(this.cancelInvolvePeopleButton); - Util.waitUntilElementIsClickable(this.cancelInvolvePeopleButton); + BrowserVisibility.waitUntilElementIsVisible(this.cancelInvolvePeopleButton); + BrowserVisibility.waitUntilElementIsClickable(this.cancelInvolvePeopleButton); return this; } checkAddPeopleButtonIsEnabled() { - Util.waitUntilElementIsVisible(this.addInvolvedUserButton); - Util.waitUntilElementIsClickable(this.addInvolvedUserButton); + BrowserVisibility.waitUntilElementIsVisible(this.addInvolvedUserButton); + BrowserVisibility.waitUntilElementIsClickable(this.addInvolvedUserButton); return this; } noUserIsDisplayedInSearchInvolvePeople(user) { - Util.waitUntilElementIsNotOnPage(element(by.cssContainingText('div[class*="people-full-name"]', user))); + BrowserVisibility.waitUntilElementIsNotOnPage(element(by.cssContainingText('div[class*="people-full-name"]', user))); return this; } getInvolvedPeopleTitle() { - Util.waitUntilElementIsVisible(this.peopleTitle); + BrowserVisibility.waitUntilElementIsVisible(this.peopleTitle); return this.peopleTitle.getText(); } getInvolvedPeopleInitialImage(user) { const pic = this.getRowsUser(user).element(this.involvedUserPic); - Util.waitUntilElementIsVisible(pic); + BrowserVisibility.waitUntilElementIsVisible(pic); return pic.getText(); } checkTaskDetails() { - Util.waitUntilElementIsVisible(this.taskDetailsSection); + BrowserVisibility.waitUntilElementIsVisible(this.taskDetailsSection); return this.taskDetailsSection.getText(); } checkTaskDetailsEmpty() { - Util.waitUntilElementIsVisible(this.taskDetailsEmptySection); + BrowserVisibility.waitUntilElementIsVisible(this.taskDetailsEmptySection); return this.taskDetailsEmptySection.getText(); } checkTaskDetailsDisplayed() { - Util.waitUntilElementIsVisible(this.taskDetailsSection); - Util.waitUntilElementIsVisible(this.formNameField); - Util.waitUntilElementIsVisible(this.assigneeField); - Util.waitUntilElementIsVisible(this.statusField); - Util.waitUntilElementIsVisible(this.categoryField); - Util.waitUntilElementIsVisible(this.parentNameField); - Util.waitUntilElementIsVisible(this.createdField); - Util.waitUntilElementIsVisible(this.idField); - Util.waitUntilElementIsVisible(this.descriptionField); - Util.waitUntilElementIsVisible(this.dueDateField); - Util.waitUntilElementIsVisible(this.activitiesTitle); + BrowserVisibility.waitUntilElementIsVisible(this.taskDetailsSection); + BrowserVisibility.waitUntilElementIsVisible(this.formNameField); + BrowserVisibility.waitUntilElementIsVisible(this.assigneeField); + BrowserVisibility.waitUntilElementIsVisible(this.statusField); + BrowserVisibility.waitUntilElementIsVisible(this.categoryField); + BrowserVisibility.waitUntilElementIsVisible(this.parentNameField); + BrowserVisibility.waitUntilElementIsVisible(this.createdField); + BrowserVisibility.waitUntilElementIsVisible(this.idField); + BrowserVisibility.waitUntilElementIsVisible(this.descriptionField); + BrowserVisibility.waitUntilElementIsVisible(this.dueDateField); + BrowserVisibility.waitUntilElementIsVisible(this.activitiesTitle); return this.taskDetailsSection.getText(); } clickCompleteTask() { - Util.waitUntilElementIsVisible(this.completeTask); + BrowserVisibility.waitUntilElementIsVisible(this.completeTask); return this.completeTask.click(); } checkCompleteFormButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.completeFormTask); + BrowserVisibility.waitUntilElementIsVisible(this.completeFormTask); return this.completeFormTask; } checkCompleteTaskButtonIsEnabled() { - Util.waitUntilElementIsClickable(this.completeTask); + BrowserVisibility.waitUntilElementIsClickable(this.completeTask); return this; } checkCompleteTaskButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.completeTask); + BrowserVisibility.waitUntilElementIsVisible(this.completeTask); return this; } clickCompleteFormTask() { - Util.waitUntilElementIsClickable(this.completeFormTask); + BrowserVisibility.waitUntilElementIsClickable(this.completeFormTask); return this.completeFormTask.click(); } getEmptyTaskDetailsMessage() { - Util.waitUntilElementIsVisible(this.emptyTaskDetails); + BrowserVisibility.waitUntilElementIsVisible(this.emptyTaskDetails); return this.emptyTaskDetails.getText(); } diff --git a/e2e/pages/adf/process-services/taskFiltersPage.ts b/e2e/pages/adf/process-services/taskFiltersPage.ts index 19e167d081..4bc0acc193 100644 --- a/e2e/pages/adf/process-services/taskFiltersPage.ts +++ b/e2e/pages/adf/process-services/taskFiltersPage.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; import { by } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class TaskFiltersPage { @@ -28,29 +28,29 @@ export class TaskFiltersPage { } checkTaskFilterIsDisplayed() { - Util.waitUntilElementIsVisible(this.filter); + BrowserVisibility.waitUntilElementIsVisible(this.filter); return this; } getTaskFilterIcon() { - Util.waitUntilElementIsVisible(this.filter); + BrowserVisibility.waitUntilElementIsVisible(this.filter); const icon = this.filter.element(this.taskIcon); - Util.waitUntilElementIsVisible(icon); + BrowserVisibility.waitUntilElementIsVisible(icon); return icon.getText(); } checkTaskFilterHasNoIcon() { - Util.waitUntilElementIsVisible(this.filter); - Util.waitUntilElementIsNotOnPage(this.filter.element(this.taskIcon)); + BrowserVisibility.waitUntilElementIsVisible(this.filter); + BrowserVisibility.waitUntilElementIsNotOnPage(this.filter.element(this.taskIcon)); } clickTaskFilter() { - Util.waitUntilElementIsVisible(this.filter); + BrowserVisibility.waitUntilElementIsVisible(this.filter); return this.filter.click(); } checkTaskFilterNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.filter); + BrowserVisibility.waitUntilElementIsNotVisible(this.filter); return this.filter; } diff --git a/e2e/pages/adf/process-services/tasksListPage.ts b/e2e/pages/adf/process-services/tasksListPage.ts index ecd5338af6..4faaa94eb8 100644 --- a/e2e/pages/adf/process-services/tasksListPage.ts +++ b/e2e/pages/adf/process-services/tasksListPage.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; import { DataTableComponentPage } from '../dataTableComponentPage'; import { by, element } from 'protractor'; @@ -54,12 +54,12 @@ export class TasksListPage { } checkTaskListIsLoaded() { - Util.waitUntilElementIsVisible(this.taskList); + BrowserVisibility.waitUntilElementIsVisible(this.taskList); return this; } getNoTasksFoundMessage() { - Util.waitUntilElementIsVisible(this.noTasksFound); + BrowserVisibility.waitUntilElementIsVisible(this.noTasksFound); return this.noTasksFound.getText(); } diff --git a/e2e/pages/adf/process-services/tasksPage.ts b/e2e/pages/adf/process-services/tasksPage.ts index c03f26b289..876cbd87be 100644 --- a/e2e/pages/adf/process-services/tasksPage.ts +++ b/e2e/pages/adf/process-services/tasksPage.ts @@ -15,7 +15,6 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; import { StartTaskDialog } from './dialog/startTaskDialog'; import { FormFields } from './formFields'; import { TaskDetailsPage } from './taskDetailsPage'; @@ -24,6 +23,7 @@ import { FiltersPage } from './filtersPage'; import { ChecklistDialog } from './dialog/createChecklistDialog'; import { TasksListPage } from './tasksListPage'; import { element, by } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class TasksPage { @@ -49,17 +49,17 @@ export class TasksPage { } createButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.createButton); + BrowserVisibility.waitUntilElementIsVisible(this.createButton); return this; } newTaskButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.newTaskButton); + BrowserVisibility.waitUntilElementIsVisible(this.newTaskButton); return this; } clickOnCreateButton() { - Util.waitUntilElementIsClickable(this.createButton); + BrowserVisibility.waitUntilElementIsClickable(this.createButton); this.createButton.click(); return this; } @@ -85,80 +85,80 @@ export class TasksPage { } clickOnAddChecklistButton() { - Util.waitUntilElementIsClickable(this.addChecklistButton); + BrowserVisibility.waitUntilElementIsClickable(this.addChecklistButton); this.addChecklistButton.click(); return new ChecklistDialog(); } getRowsName(name) { const row = element(this.checklistContainer).element(by.cssContainingText('span', name)); - Util.waitUntilElementIsVisible(row); + BrowserVisibility.waitUntilElementIsVisible(row); return row; } getChecklistByName(checklist) { const row = this.getRowsName(checklist).element(this.rowByRowName); - Util.waitUntilElementIsVisible(row); + BrowserVisibility.waitUntilElementIsVisible(row); return row; } checkChecklistIsDisplayed(checklist) { - Util.waitUntilElementIsVisible(this.getChecklistByName(checklist)); + BrowserVisibility.waitUntilElementIsVisible(this.getChecklistByName(checklist)); return this; } checkChecklistIsNotDisplayed(checklist) { - Util.waitUntilElementIsNotOnPage(element(this.checklistContainer).element(by.cssContainingText('span', checklist))); + BrowserVisibility.waitUntilElementIsNotOnPage(element(this.checklistContainer).element(by.cssContainingText('span', checklist))); return this; } checkTaskTitle(taskName) { - Util.waitUntilElementIsVisible(element(by.css(this.taskTitle))); + BrowserVisibility.waitUntilElementIsVisible(element(by.css(this.taskTitle))); const title = element(by.cssContainingText(this.taskTitle, taskName)); - Util.waitUntilElementIsVisible(title); + BrowserVisibility.waitUntilElementIsVisible(title); return this; } completeTaskNoForm() { - Util.waitUntilElementIsClickable(this.completeButtonNoForm); + BrowserVisibility.waitUntilElementIsClickable(this.completeButtonNoForm); this.completeButtonNoForm.click(); } completeTaskNoFormNotDisplayed() { - Util.waitUntilElementIsNotOnPage(this.completeButtonNoForm); + BrowserVisibility.waitUntilElementIsNotOnPage(this.completeButtonNoForm); return this; } checkChecklistDialogIsDisplayed() { - Util.waitUntilElementIsVisible(this.checklistDialog); + BrowserVisibility.waitUntilElementIsVisible(this.checklistDialog); return this; } checkChecklistDialogIsNotDisplayed() { - Util.waitUntilElementIsNotOnPage(this.checklistDialog); + BrowserVisibility.waitUntilElementIsNotOnPage(this.checklistDialog); return this; } checkNoChecklistIsDisplayed() { - Util.waitUntilElementIsVisible(this.checklistNoMessage); + BrowserVisibility.waitUntilElementIsVisible(this.checklistNoMessage); return this; } getNumberOfChecklists() { - Util.waitUntilElementIsVisible(this.numberOfChecklists); + BrowserVisibility.waitUntilElementIsVisible(this.numberOfChecklists); return this.numberOfChecklists.getText(); } removeChecklists(checklist) { const row = this.getRowsName(checklist).element(this.rowByRowName); - Util.waitUntilElementIsVisible(row.element(by.css('mat-icon'))); + BrowserVisibility.waitUntilElementIsVisible(row.element(by.css('mat-icon'))); row.element(by.css('mat-icon')).click(); return this; } checkChecklistsRemoveButtonIsNotDisplayed(checklist) { const row = this.getRowsName(checklist).element(this.rowByRowName); - Util.waitUntilElementIsNotOnPage(row.element(by.css('mat-icon'))); + BrowserVisibility.waitUntilElementIsNotOnPage(row.element(by.css('mat-icon'))); return this; } diff --git a/e2e/pages/adf/process-services/widgets/amountWidget.ts b/e2e/pages/adf/process-services/widgets/amountWidget.ts index 10813288df..27e4e50e50 100644 --- a/e2e/pages/adf/process-services/widgets/amountWidget.ts +++ b/e2e/pages/adf/process-services/widgets/amountWidget.ts @@ -16,7 +16,7 @@ */ import { element, by, protractor } from 'protractor'; -import { Util } from '../../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; import { FormFields } from '../formFields'; export class AmountWidget { @@ -26,7 +26,7 @@ export class AmountWidget { getAmountFieldLabel(fieldId) { const label = element.all(by.css(`adf-form-field div[id="field-${fieldId}-container"] label`)).first(); - Util.waitUntilElementIsVisible(label); + BrowserVisibility.waitUntilElementIsVisible(label); return label.getText(); } @@ -39,7 +39,7 @@ export class AmountWidget { } removeFromAmountWidget(fieldId) { - Util.waitUntilElementIsVisible(this.formFields.getWidget(fieldId)); + BrowserVisibility.waitUntilElementIsVisible(this.formFields.getWidget(fieldId)); const amountWidgetInput = element(by.id(fieldId)); amountWidgetInput.getAttribute('value').then((result) => { @@ -51,7 +51,7 @@ export class AmountWidget { clearFieldValue(fieldId) { const numberField = element(by.id(fieldId)); - Util.waitUntilElementIsVisible(numberField); + BrowserVisibility.waitUntilElementIsVisible(numberField); return numberField.clear(); } @@ -61,7 +61,7 @@ export class AmountWidget { getErrorMessage(fieldId) { const errorMessage = element(by.css(`adf-form-field div[id="field-${fieldId}-container"] div[class="adf-error-text"]`)); - Util.waitUntilElementIsVisible(errorMessage); + BrowserVisibility.waitUntilElementIsVisible(errorMessage); return errorMessage.getText(); } diff --git a/e2e/pages/adf/process-services/widgets/attachFileWidget.ts b/e2e/pages/adf/process-services/widgets/attachFileWidget.ts index 5d54828c1a..401563bd85 100644 --- a/e2e/pages/adf/process-services/widgets/attachFileWidget.ts +++ b/e2e/pages/adf/process-services/widgets/attachFileWidget.ts @@ -18,7 +18,7 @@ import { FormFields } from '../formFields'; import TestConfig = require('../../../../test.config'); import path = require('path'); -import { Util } from '../../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; import remote = require('selenium-webdriver/remote'); import { element, by, browser } from 'protractor'; @@ -33,10 +33,10 @@ export class AttachFileWidget { browser.setFileDetector(new remote.FileDetector()); const widget = this.formFields.getWidget(fieldId); const uploadButton = widget.element(this.uploadLocator); - Util.waitUntilElementIsVisible(uploadButton); + BrowserVisibility.waitUntilElementIsVisible(uploadButton); uploadButton.click(); - Util.waitUntilElementIsVisible(this.localStorageButton); + BrowserVisibility.waitUntilElementIsVisible(this.localStorageButton); this.localStorageButton.sendKeys(path.resolve(path.join(TestConfig.main.rootPath, fileLocation))); return this; } @@ -44,13 +44,13 @@ export class AttachFileWidget { checkFileIsAttached(fieldId, name) { const widget = this.formFields.getWidget(fieldId); const fileAttached = widget.element(this.filesListLocator).element(by.cssContainingText('mat-list-item span ', name)); - Util.waitUntilElementIsVisible(fileAttached); + BrowserVisibility.waitUntilElementIsVisible(fileAttached); return this; } viewFile(name) { const fileView = element(this.filesListLocator).element(by.cssContainingText('mat-list-item span ', name)); - Util.waitUntilElementIsVisible(fileView); + BrowserVisibility.waitUntilElementIsVisible(fileView); fileView.click(); browser.actions().doubleClick(fileView).perform(); return this; diff --git a/e2e/pages/adf/process-services/widgets/checkboxWidget.ts b/e2e/pages/adf/process-services/widgets/checkboxWidget.ts index 7f5c8889a6..1c5bbae855 100644 --- a/e2e/pages/adf/process-services/widgets/checkboxWidget.ts +++ b/e2e/pages/adf/process-services/widgets/checkboxWidget.ts @@ -16,23 +16,22 @@ */ import { FormFields } from '../formFields'; -import { Util } from '../../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; import { by, element } from 'protractor'; export class CheckboxWidget { formFields = new FormFields(); - checkboxField = element(by.css('span[class*="mat-checkbox-label"]')); checkboxLabel = element(by.css('span[class*="mat-checkbox-label"]')); getCheckboxLabel() { - Util.waitUntilElementIsVisible(this.checkboxLabel); + BrowserVisibility.waitUntilElementIsVisible(this.checkboxLabel); return this.checkboxLabel.getText(); } clickCheckboxInput(fieldId) { const checkboxInput = element.all(by.css(`mat-checkbox[id="${fieldId}"] div`)).first(); - Util.waitUntilElementIsVisible(checkboxInput); + BrowserVisibility.waitUntilElementIsVisible(checkboxInput); return checkboxInput.click(); } diff --git a/e2e/pages/adf/process-services/widgets/dateTimeWidget.ts b/e2e/pages/adf/process-services/widgets/dateTimeWidget.ts index f4241e6d6d..caf08fc6c5 100644 --- a/e2e/pages/adf/process-services/widgets/dateTimeWidget.ts +++ b/e2e/pages/adf/process-services/widgets/dateTimeWidget.ts @@ -17,7 +17,7 @@ import { FormFields } from '../formFields'; import { element, by, protractor } from 'protractor'; -import { Util } from '../../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class DateTimeWidget { @@ -28,13 +28,9 @@ export class DateTimeWidget { return this.formFields.checkWidgetIsVisible(fieldId); } - checkLabelIsVisible(fieldId) { - return this.formFields.checkWidgetIsVisible(fieldId); - } - getDateTimeLabel(fieldId) { const label = element(by.css(`adf-form-field div[id="field-${fieldId}-container"] label`)); - Util.waitUntilElementIsVisible(label); + BrowserVisibility.waitUntilElementIsVisible(label); return label.getText(); } @@ -44,30 +40,30 @@ export class DateTimeWidget { clearDateTimeInput(fieldId) { const dateInput = element(by.id(fieldId)); - Util.waitUntilElementIsVisible(dateInput); + BrowserVisibility.waitUntilElementIsVisible(dateInput); return dateInput.clear(); } clickOutsideWidget(fieldId) { const form = this.formFields.getWidget(fieldId); - Util.waitUntilElementIsVisible(form); + BrowserVisibility.waitUntilElementIsVisible(form); return form.click(); } closeDataTimeWidget() { - Util.waitUntilElementIsVisible(this.outsideLayer); + BrowserVisibility.waitUntilElementIsVisible(this.outsideLayer); return this.outsideLayer.click(); } getErrorMessage(fieldId) { const errorMessage = element(by.css(`adf-form-field div[id="field-${fieldId}-container"] div[class="adf-error-text"]`)); - Util.waitUntilElementIsVisible(errorMessage); + BrowserVisibility.waitUntilElementIsVisible(errorMessage); return errorMessage.getText(); } selectDay(day) { const selectedDay = element(by.cssContainingText('div[class*="mat-datetimepicker-calendar-body-cell-content"]', day)); - Util.waitUntilElementIsVisible(selectedDay); + BrowserVisibility.waitUntilElementIsVisible(selectedDay); return selectedDay.click(); } @@ -77,7 +73,7 @@ export class DateTimeWidget { private selectTime(time) { const selectedTime = element(by.cssContainingText('div[class*="mat-datetimepicker-clock-cell"]', time)); - Util.waitUntilElementIsClickable(selectedTime); + BrowserVisibility.waitUntilElementIsClickable(selectedTime); return selectedTime.click(); } @@ -94,7 +90,7 @@ export class DateTimeWidget { } removeFromDatetimeWidget(fieldId) { - Util.waitUntilElementIsVisible(this.formFields.getWidget(fieldId)); + BrowserVisibility.waitUntilElementIsVisible(this.formFields.getWidget(fieldId)); const amountWidgetInput = element(by.id(fieldId)); amountWidgetInput.getAttribute('value').then((result) => { diff --git a/e2e/pages/adf/process-services/widgets/dateWidget.ts b/e2e/pages/adf/process-services/widgets/dateWidget.ts index c72c2db5d2..9d9148ec31 100644 --- a/e2e/pages/adf/process-services/widgets/dateWidget.ts +++ b/e2e/pages/adf/process-services/widgets/dateWidget.ts @@ -17,7 +17,7 @@ import { FormFields } from '../formFields'; import { element, by, protractor } from 'protractor'; -import { Util } from '../../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class DateWidget { @@ -33,7 +33,7 @@ export class DateWidget { getDateLabel(fieldId) { const label = element.all(by.css(`adf-form-field div[id="field-${fieldId}-container"] label`)).first(); - Util.waitUntilElementIsVisible(label); + BrowserVisibility.waitUntilElementIsVisible(label); return label.getText(); } @@ -44,24 +44,24 @@ export class DateWidget { clearDateInput(fieldId) { const dateInput = element(by.id(fieldId)); - Util.waitUntilElementIsVisible(dateInput); + BrowserVisibility.waitUntilElementIsVisible(dateInput); return dateInput.clear(); } clickOutsideWidget(fieldId) { const form = this.formFields.getWidget(fieldId); - Util.waitUntilElementIsVisible(form); + BrowserVisibility.waitUntilElementIsVisible(form); return form.click(); } getErrorMessage(fieldId) { const errorMessage = element(by.css(`adf-form-field div[id="field-${fieldId}-container"] div[class="adf-error-text"]`)); - Util.waitUntilElementIsVisible(errorMessage); + BrowserVisibility.waitUntilElementIsVisible(errorMessage); return errorMessage.getText(); } removeFromDatetimeWidget(fieldId) { - Util.waitUntilElementIsVisible(this.formFields.getWidget(fieldId)); + BrowserVisibility.waitUntilElementIsVisible(this.formFields.getWidget(fieldId)); const dateWidgetInput = element(by.id(fieldId)); dateWidgetInput.getAttribute('value').then((result) => { diff --git a/e2e/pages/adf/process-services/widgets/dropdownWidget.ts b/e2e/pages/adf/process-services/widgets/dropdownWidget.ts index 500572179f..7cd86f9c0b 100644 --- a/e2e/pages/adf/process-services/widgets/dropdownWidget.ts +++ b/e2e/pages/adf/process-services/widgets/dropdownWidget.ts @@ -17,7 +17,7 @@ import { FormFields } from '../formFields'; import { by, element } from 'protractor'; -import { Util } from '../../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class DropdownWidget { @@ -38,12 +38,12 @@ export class DropdownWidget { openDropdown() { this.checkDropdownIsDisplayed(); - Util.waitUntilElementIsClickable(this.dropdown); + BrowserVisibility.waitUntilElementIsClickable(this.dropdown); return this.dropdown.click(); } checkDropdownIsDisplayed() { - Util.waitUntilElementIsVisible(this.dropdown); + BrowserVisibility.waitUntilElementIsVisible(this.dropdown); return this.dropdown; } } diff --git a/e2e/pages/adf/process-services/widgets/dynamicTableWidget.ts b/e2e/pages/adf/process-services/widgets/dynamicTableWidget.ts index 0369bb98a7..c38b7e0ee7 100644 --- a/e2e/pages/adf/process-services/widgets/dynamicTableWidget.ts +++ b/e2e/pages/adf/process-services/widgets/dynamicTableWidget.ts @@ -16,8 +16,8 @@ */ import { FormFields } from '../formFields'; -import { Util } from '../../../../util/util'; import { by, element, browser, protractor } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class DynamicTableWidget { @@ -48,63 +48,63 @@ export class DynamicTableWidget { } clickAddButton() { - Util.waitUntilElementIsVisible(this.addButton); + BrowserVisibility.waitUntilElementIsVisible(this.addButton); return this.addButton.click(); } clickAddRow() { - Util.waitUntilElementIsVisible(this.addRow); + BrowserVisibility.waitUntilElementIsVisible(this.addRow); return this.addRow.click(); } clickTableRow(rowNumber) { const tableRowByIndex = element(by.id('dynamictable-row-' + rowNumber)); - Util.waitUntilElementIsVisible(tableRowByIndex); + BrowserVisibility.waitUntilElementIsVisible(tableRowByIndex); return tableRowByIndex.click(); } clickEditButton() { - Util.waitUntilElementIsVisible(this.editButton); + BrowserVisibility.waitUntilElementIsVisible(this.editButton); return this.editButton.click(); } clickCancelButton() { - Util.waitUntilElementIsVisible(this.cancelButton); + BrowserVisibility.waitUntilElementIsVisible(this.cancelButton); return this.cancelButton.click(); } setDatatableInput(text) { - Util.waitUntilElementIsVisible(this.dataTableInput); + BrowserVisibility.waitUntilElementIsVisible(this.dataTableInput); this.dataTableInput.clear(); return this.dataTableInput.sendKeys(text); } getTableRowText(rowNumber) { const tableRowByIndex = element(by.id('dynamictable-row-' + rowNumber)); - Util.waitUntilElementIsVisible(tableRowByIndex); + BrowserVisibility.waitUntilElementIsVisible(tableRowByIndex); return tableRowByIndex.getText(); } checkTableRowIsVisible(rowNumber) { const tableRowByIndex = element(by.id('dynamictable-row-' + rowNumber)); - return Util.waitUntilElementIsVisible(tableRowByIndex); + return BrowserVisibility.waitUntilElementIsVisible(tableRowByIndex); } checkTableRowIsNotVisible(rowNumber) { const tableRowByIndex = element(by.id('dynamictable-row-' + rowNumber)); - return Util.waitUntilElementIsNotVisible(tableRowByIndex); + return BrowserVisibility.waitUntilElementIsNotVisible(tableRowByIndex); } clickColumnDateTime() { - Util.waitUntilElementIsVisible(this.columnDateTime); + BrowserVisibility.waitUntilElementIsVisible(this.columnDateTime); this.columnDateTime.click(); - Util.waitUntilElementIsVisible(this.calendarHeader); - Util.waitUntilElementIsVisible(this.calendarContent); + BrowserVisibility.waitUntilElementIsVisible(this.calendarHeader); + BrowserVisibility.waitUntilElementIsVisible(this.calendarContent); browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); } addRandomStringOnDateTime(randomText) { - Util.waitUntilElementIsVisible(this.columnDateTime); + BrowserVisibility.waitUntilElementIsVisible(this.columnDateTime); this.columnDateTime.click(); browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); this.columnDateTime.sendKeys(randomText); @@ -113,33 +113,33 @@ export class DynamicTableWidget { } addRandomStringOnDate(randomText) { - Util.waitUntilElementIsVisible(this.columnDate); + BrowserVisibility.waitUntilElementIsVisible(this.columnDate); this.columnDate.click(); return this.columnDate.sendKeys(randomText); } clickSaveButton() { - Util.waitUntilElementIsVisible(this.saveButton); + BrowserVisibility.waitUntilElementIsVisible(this.saveButton); return this.saveButton.click(); } checkErrorMessage() { - Util.waitUntilElementIsVisible(this.errorMessage); + BrowserVisibility.waitUntilElementIsVisible(this.errorMessage); return this.errorMessage.getText(); } clickDateWidget() { - Util.waitUntilElementIsVisible(this.dateWidget); + BrowserVisibility.waitUntilElementIsVisible(this.dateWidget); return this.dateWidget.click(); } getTableRow(rowNumber) { - return Util.waitUntilElementIsVisible(this.tableRow.get(rowNumber)); + return BrowserVisibility.waitUntilElementIsVisible(this.tableRow.get(rowNumber)); } checkItemIsPresent(item) { const row = element(by.cssContainingText('table tbody tr td span', item)); - const present = Util.waitUntilElementIsVisible(row); + const present = BrowserVisibility.waitUntilElementIsVisible(row); expect(present).toBe(true); } } diff --git a/e2e/pages/adf/process-services/widgets/hyperlinkWidget.ts b/e2e/pages/adf/process-services/widgets/hyperlinkWidget.ts index 6f3ef56ddf..bde523aab2 100644 --- a/e2e/pages/adf/process-services/widgets/hyperlinkWidget.ts +++ b/e2e/pages/adf/process-services/widgets/hyperlinkWidget.ts @@ -17,7 +17,7 @@ import { FormFields } from '../formFields'; import { by, element } from 'protractor'; -import { Util } from '../../../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class HyperlinkWidget { @@ -31,7 +31,7 @@ export class HyperlinkWidget { getFieldLabel(fieldId) { const label = element.all(by.css(`adf-form-field div[id="field-${fieldId}-container"] label`)).first(); - Util.waitUntilElementIsVisible(label); + BrowserVisibility.waitUntilElementIsVisible(label); return label.getText(); } } diff --git a/e2e/pages/adf/process-services/widgets/numberWidget.ts b/e2e/pages/adf/process-services/widgets/numberWidget.ts index dcf46b570d..139aec5fb3 100644 --- a/e2e/pages/adf/process-services/widgets/numberWidget.ts +++ b/e2e/pages/adf/process-services/widgets/numberWidget.ts @@ -16,8 +16,8 @@ */ import { element, by } from 'protractor'; -import { Util } from '../../../../util/util'; import { FormFields } from '../formFields'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class NumberWidget { @@ -25,7 +25,7 @@ export class NumberWidget { getNumberFieldLabel(fieldId) { const label = element.all(by.css(`adf-form-field div[id="field-${fieldId}-container"] label`)).first(); - Util.waitUntilElementIsVisible(label); + BrowserVisibility.waitUntilElementIsVisible(label); return label.getText(); } @@ -35,7 +35,7 @@ export class NumberWidget { clearFieldValue(fieldId) { const numberField = element(by.id(fieldId)); - Util.waitUntilElementIsVisible(numberField); + BrowserVisibility.waitUntilElementIsVisible(numberField); return numberField.clear(); } @@ -45,7 +45,7 @@ export class NumberWidget { getErrorMessage(fieldId) { const errorMessage = element(by.css(`adf-form-field div[id="field-${fieldId}-container"] div[class="adf-error-text"]`)); - Util.waitUntilElementIsVisible(errorMessage); + BrowserVisibility.waitUntilElementIsVisible(errorMessage); return errorMessage.getText(); } diff --git a/e2e/pages/adf/process-services/widgets/peopleWidget.ts b/e2e/pages/adf/process-services/widgets/peopleWidget.ts index 78fa36aba4..6a6f519ca0 100644 --- a/e2e/pages/adf/process-services/widgets/peopleWidget.ts +++ b/e2e/pages/adf/process-services/widgets/peopleWidget.ts @@ -16,8 +16,8 @@ */ import { FormFields } from '../formFields'; -import { Util } from '../../../../util/util'; import { by, element } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class PeopleWidget { @@ -28,8 +28,6 @@ export class PeopleWidget { labelLocator = by.css('div[class*="display-text-widget"]'); inputLocator = by.id('involvepeople'); peopleDropDownList = by.css('div[class*="adf-people-widget-list"]'); - userProfileImage = by.css('div[class*="adf-people-widget-pic"'); - userProfileName = by.css('div[class*="adf-people-label-name"'); getFieldLabel(fieldId) { return this.formFields.getFieldLabel(fieldId, this.labelLocator); @@ -48,17 +46,17 @@ export class PeopleWidget { } checkDropDownListIsDisplayed() { - return Util.waitUntilElementIsVisible(element(this.peopleDropDownList)); + return BrowserVisibility.waitUntilElementIsVisible(element(this.peopleDropDownList)); } checkUserIsListed(userName) { const user = element(by.cssContainingText('.adf-people-label-name', userName)); - return Util.waitUntilElementIsVisible(user); + return BrowserVisibility.waitUntilElementIsVisible(user); } checkUserNotListed(userName) { const user = element(by.xpath('div[text()="' + userName + '"]')); - return Util.waitUntilElementIsNotVisible(user); + return BrowserVisibility.waitUntilElementIsNotVisible(user); } selectUserFromDropDown(userName) { @@ -68,16 +66,16 @@ export class PeopleWidget { } checkPeopleFieldIsDisplayed() { - return Util.waitUntilElementIsVisible(this.peopleField); + return BrowserVisibility.waitUntilElementIsVisible(this.peopleField); } fillPeopleField(value) { - Util.waitUntilElementIsClickable(this.peopleField); + BrowserVisibility.waitUntilElementIsClickable(this.peopleField); return this.peopleField.sendKeys(value); } selectUserFromDropdown() { - Util.waitUntilElementIsVisible(this.firstResult); + BrowserVisibility.waitUntilElementIsVisible(this.firstResult); return this.firstResult.click(); } } diff --git a/e2e/pages/adf/process-services/widgets/radioButtonsWidget.ts b/e2e/pages/adf/process-services/widgets/radioButtonsWidget.ts index 317c28777e..55ccc88831 100644 --- a/e2e/pages/adf/process-services/widgets/radioButtonsWidget.ts +++ b/e2e/pages/adf/process-services/widgets/radioButtonsWidget.ts @@ -16,8 +16,8 @@ */ import { FormFields } from '../formFields'; -import { Util } from '../../../../util/util'; import { by, element } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class RadioButtonsWidget { @@ -29,7 +29,7 @@ export class RadioButtonsWidget { const optionLocator = by.css('label[for*="radiobuttons-option_' + optionNumber + '"]'); const option = this.formFields.getWidget(fieldId).element(optionLocator); - Util.waitUntilElementIsVisible(option); + BrowserVisibility.waitUntilElementIsVisible(option); return option.getText(); } @@ -37,18 +37,18 @@ export class RadioButtonsWidget { const optionLocator = by.css(`label[for*="${fieldId}-option_${optionNumber}"]`); const option = this.formFields.getWidget(fieldId).element(optionLocator); - Util.waitUntilElementIsVisible(option); + BrowserVisibility.waitUntilElementIsVisible(option); return option.click(); } isSelectionClean(fieldId) { const option = this.formFields.getWidget(fieldId).element(this.selectedOption); - return Util.waitUntilElementIsNotVisible(option); + return BrowserVisibility.waitUntilElementIsNotVisible(option); } getRadioWidgetLabel(fieldId) { const label = element.all(by.css(`adf-form-field div[id="field-${fieldId}-container"] label`)).first(); - Util.waitUntilElementIsVisible(label); + BrowserVisibility.waitUntilElementIsVisible(label); return label.getText(); } diff --git a/e2e/pages/adf/process_cloud/editTaskFilterCloudComponent.ts b/e2e/pages/adf/process_cloud/editTaskFilterCloudComponent.ts index 2df7b06424..f202cf108b 100644 --- a/e2e/pages/adf/process_cloud/editTaskFilterCloudComponent.ts +++ b/e2e/pages/adf/process_cloud/editTaskFilterCloudComponent.ts @@ -15,9 +15,9 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; import { by, element, protractor } from 'protractor'; import { EditTaskFilterDialog } from '../dialog/editTaskFilterDialog'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class EditTaskFilterCloudComponent { @@ -35,7 +35,7 @@ export class EditTaskFilterCloudComponent { } clickCustomiseFilterHeader() { - Util.waitUntilElementIsVisible(this.customiseFilter); + BrowserVisibility.waitUntilElementIsVisible(this.customiseFilter); this.customiseFilter.click(); return this; } @@ -44,8 +44,8 @@ export class EditTaskFilterCloudComponent { this.clickOnDropDownArrow('status'); const stateElement = element.all(by.cssContainingText('mat-option span', option)).first(); - Util.waitUntilElementIsClickable(stateElement); - Util.waitUntilElementIsVisible(stateElement); + BrowserVisibility.waitUntilElementIsClickable(stateElement); + BrowserVisibility.waitUntilElementIsVisible(stateElement); stateElement.click(); return this; } @@ -58,8 +58,8 @@ export class EditTaskFilterCloudComponent { this.clickOnDropDownArrow('sort'); const sortElement = element.all(by.cssContainingText('mat-option span', option)).first(); - Util.waitUntilElementIsClickable(sortElement); - Util.waitUntilElementIsVisible(sortElement); + BrowserVisibility.waitUntilElementIsClickable(sortElement); + BrowserVisibility.waitUntilElementIsVisible(sortElement); sortElement.click(); return this; } @@ -72,8 +72,8 @@ export class EditTaskFilterCloudComponent { this.clickOnDropDownArrow('order'); const orderElement = element.all(by.cssContainingText('mat-option span', option)).first(); - Util.waitUntilElementIsClickable(orderElement); - Util.waitUntilElementIsVisible(orderElement); + BrowserVisibility.waitUntilElementIsClickable(orderElement); + BrowserVisibility.waitUntilElementIsVisible(orderElement); orderElement.click(); return this; } @@ -84,13 +84,13 @@ export class EditTaskFilterCloudComponent { clickOnDropDownArrow(option) { const dropDownArrow = element(by.css("mat-form-field[data-automation-id='" + option + "'] div[class*='arrow']")); - Util.waitUntilElementIsVisible(dropDownArrow); + BrowserVisibility.waitUntilElementIsVisible(dropDownArrow); dropDownArrow.click(); - Util.waitUntilElementIsVisible(this.selectedOption); + BrowserVisibility.waitUntilElementIsVisible(this.selectedOption); } setAssignment(option) { - Util.waitUntilElementIsVisible(this.assignment); + BrowserVisibility.waitUntilElementIsVisible(this.assignment); this.assignment.clear(); this.assignment.sendKeys(option); this.assignment.sendKeys(protractor.Key.ENTER); @@ -102,17 +102,17 @@ export class EditTaskFilterCloudComponent { } checkSaveButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.saveButton); + BrowserVisibility.waitUntilElementIsVisible(this.saveButton); return this; } checkSaveAsButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.saveAsButton); + BrowserVisibility.waitUntilElementIsVisible(this.saveAsButton); return this; } checkDeleteButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.deleteButton); + BrowserVisibility.waitUntilElementIsVisible(this.deleteButton); return this; } @@ -129,20 +129,20 @@ export class EditTaskFilterCloudComponent { } clickSaveAsButton() { - Util.waitUntilElementIsClickable(this.saveAsButton); - Util.waitUntilElementIsVisible(this.saveAsButton); + BrowserVisibility.waitUntilElementIsClickable(this.saveAsButton); + BrowserVisibility.waitUntilElementIsVisible(this.saveAsButton); this.saveAsButton.click(); return this.editTaskFilter; } clickDeleteButton() { - Util.waitUntilElementIsVisible(this.deleteButton); + BrowserVisibility.waitUntilElementIsVisible(this.deleteButton); this.deleteButton.click(); return this; } clickSaveButton() { - Util.waitUntilElementIsVisible(this.saveButton); + BrowserVisibility.waitUntilElementIsVisible(this.saveButton); this.saveButton.click(); return this; } diff --git a/e2e/pages/adf/searchFiltersPage.ts b/e2e/pages/adf/searchFiltersPage.ts index 8bc5724e3c..1db76ba82e 100644 --- a/e2e/pages/adf/searchFiltersPage.ts +++ b/e2e/pages/adf/searchFiltersPage.ts @@ -15,9 +15,9 @@ * limitations under the License. */ -import { Util } from '../../util/util'; import { element, by } from 'protractor'; import { SearchCategoriesPage } from './content-services/search/search-categories'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class SearchFiltersPage { @@ -41,7 +41,7 @@ export class SearchFiltersPage { facetIntervalsByModified = element(by.css('mat-expansion-panel[data-automation-id="expansion-panel-TheModified"]')); checkSearchFiltersIsDisplayed() { - Util.waitUntilElementIsVisible(this.searchFilters); + BrowserVisibility.waitUntilElementIsVisible(this.searchFilters); } sizeRangeFilterPage() { @@ -69,7 +69,7 @@ export class SearchFiltersPage { } checkCustomFacetFieldLabelIsDisplayed(fieldLabel) { - Util.waitUntilElementIsVisible(element(by.css(`mat-expansion-panel[data-automation-id="expansion-panel-${fieldLabel}"]`))); + BrowserVisibility.waitUntilElementIsVisible(element(by.css(`mat-expansion-panel[data-automation-id="expansion-panel-${fieldLabel}"]`))); } sizeSliderFilterPage() { @@ -283,12 +283,12 @@ export class SearchFiltersPage { } checkFileTypeFacetLabelIsDisplayed(fileType) { - Util.waitUntilElementIsVisible(this.fileTypeFilter.element(by.cssContainingText('.adf-facet-label', fileType))); + BrowserVisibility.waitUntilElementIsVisible(this.fileTypeFilter.element(by.cssContainingText('.adf-facet-label', fileType))); return this; } checkFileTypeFacetLabelIsNotDisplayed(fileType) { - Util.waitUntilElementIsNotVisible(this.fileTypeFilter.element(by.cssContainingText('.adf-facet-label', fileType))); + BrowserVisibility.waitUntilElementIsNotVisible(this.fileTypeFilter.element(by.cssContainingText('.adf-facet-label', fileType))); return this; } diff --git a/e2e/pages/adf/searchResultsPage.ts b/e2e/pages/adf/searchResultsPage.ts index 902fb94daf..c36305d517 100644 --- a/e2e/pages/adf/searchResultsPage.ts +++ b/e2e/pages/adf/searchResultsPage.ts @@ -15,11 +15,11 @@ * limitations under the License. */ -import { Util } from '../../util/util'; import { DataTableComponentPage } from './dataTableComponentPage'; import { SearchSortingPickerPage } from './content-services/search/components/search-sortingPicker.page'; import { element, by } from 'protractor'; import { ContentServicesPage } from './contentServicesPage'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class SearchResultsPage { @@ -38,9 +38,9 @@ export class SearchResultsPage { closeActionButton() { const container = element(by.css('div.cdk-overlay-backdrop.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing')); - Util.waitUntilElementIsVisible(container); + BrowserVisibility.waitUntilElementIsVisible(container); container.click(); - Util.waitUntilElementIsNotVisible(container); + BrowserVisibility.waitUntilElementIsNotVisible(container); return this; } @@ -59,12 +59,12 @@ export class SearchResultsPage { } checkNoResultMessageIsDisplayed() { - Util.waitUntilElementIsVisible(this.noResultsMessage); + BrowserVisibility.waitUntilElementIsVisible(this.noResultsMessage); return this; } checkNoResultMessageIsNotDisplayed() { - Util.waitUntilElementIsNotOnPage(this.noResultsMessage); + BrowserVisibility.waitUntilElementIsNotOnPage(this.noResultsMessage); return this; } diff --git a/e2e/pages/adf/settingsPage.ts b/e2e/pages/adf/settingsPage.ts index bbdef90c41..ee83eb2b4b 100644 --- a/e2e/pages/adf/settingsPage.ts +++ b/e2e/pages/adf/settingsPage.ts @@ -16,8 +16,8 @@ */ import TestConfig = require('../../test.config'); -import { Util } from '../../util/util'; import { browser, by, element, protractor } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class SettingsPage { @@ -58,14 +58,14 @@ export class SettingsPage { goToSettingsPage() { browser.waitForAngularEnabled(true); browser.driver.get(this.settingsURL); - Util.waitUntilElementIsVisible(this.providerDropdown); + BrowserVisibility.waitUntilElementIsVisible(this.providerDropdown); return this; } setProvider(option, selected) { - Util.waitUntilElementIsVisible(this.providerDropdown); + BrowserVisibility.waitUntilElementIsVisible(this.providerDropdown); this.providerDropdown.click(); - Util.waitUntilElementIsVisible(option); + BrowserVisibility.waitUntilElementIsVisible(option); option.click(); return expect(this.selectedOption.getText()).toEqual(selected); } @@ -97,8 +97,8 @@ export class SettingsPage { setProviderEcmBpm() { this.goToSettingsPage(); this.setProvider(this.ecmAndBpm.option, this.ecmAndBpm.text); - Util.waitUntilElementIsVisible(this.bpmText); - Util.waitUntilElementIsVisible(this.ecmText); + BrowserVisibility.waitUntilElementIsVisible(this.bpmText); + BrowserVisibility.waitUntilElementIsVisible(this.ecmText); this.clickApply(); return this; } @@ -106,7 +106,7 @@ export class SettingsPage { setProviderBpm() { this.goToSettingsPage(); this.setProvider(this.bpm.option, this.bpm.text); - Util.waitUntilElementIsVisible(this.bpmText); + BrowserVisibility.waitUntilElementIsVisible(this.bpmText); this.clickApply(); return this; } @@ -114,7 +114,7 @@ export class SettingsPage { setProviderEcm() { this.goToSettingsPage(); this.setProvider(this.ecm.option, this.ecm.text); - Util.waitUntilElementIsVisible(this.ecmText); + BrowserVisibility.waitUntilElementIsVisible(this.ecmText); expect(this.bpmText.isPresent()).toBe(false); this.clickApply(); return this; @@ -123,28 +123,28 @@ export class SettingsPage { setProviderOauth() { this.goToSettingsPage(); this.setProvider(this.oauth.option, this.oauth.text); - Util.waitUntilElementIsVisible(this.bpmText); - Util.waitUntilElementIsVisible(this.ecmText); + BrowserVisibility.waitUntilElementIsVisible(this.bpmText); + BrowserVisibility.waitUntilElementIsVisible(this.ecmText); expect(this.authHostText.isPresent()).toBe(true); this.clickApply(); return this; } async clickBackButton() { - Util.waitUntilElementIsVisible(this.backButton); + BrowserVisibility.waitUntilElementIsVisible(this.backButton); await this.backButton.click(); } async clickSsoRadioButton() { - Util.waitUntilElementIsVisible(this.ssoRadioButton); + BrowserVisibility.waitUntilElementIsVisible(this.ssoRadioButton); await this.ssoRadioButton.click(); } async setProviderEcmSso(contentServiceURL, authHost, identityHost, silentLogin = true, implicitFlow = true, clientId?: string) { this.goToSettingsPage(); this.setProvider(this.ecm.option, this.ecm.text); - Util.waitUntilElementIsNotOnPage(this.bpmText); - Util.waitUntilElementIsVisible(this.ecmText); + BrowserVisibility.waitUntilElementIsNotOnPage(this.bpmText); + BrowserVisibility.waitUntilElementIsVisible(this.ecmText); await this.clickSsoRadioButton(); await this.setClientId(clientId); await this.setContentServicesURL(contentServiceURL); @@ -158,8 +158,8 @@ export class SettingsPage { async setProviderBpmSso(processServiceURL, authHost, identityHost, silentLogin = true, implicitFlow = true) { this.goToSettingsPage(); this.setProvider(this.bpm.option, this.bpm.text); - Util.waitUntilElementIsVisible(this.bpmText); - Util.waitUntilElementIsNotOnPage(this.ecmText); + BrowserVisibility.waitUntilElementIsVisible(this.bpmText); + BrowserVisibility.waitUntilElementIsNotOnPage(this.ecmText); await this.clickSsoRadioButton(); await this.setClientId(); await this.setProcessServicesURL(processServiceURL); @@ -171,56 +171,56 @@ export class SettingsPage { } async setProcessServicesURL(processServiceURL) { - Util.waitUntilElementIsVisible(this.bpmText); + BrowserVisibility.waitUntilElementIsVisible(this.bpmText); this.bpmText.clear(); this.bpmText.sendKeys(processServiceURL); } async setClientId(clientId: string = TestConfig.adf_aps.clientIdSso) { - Util.waitUntilElementIsVisible(this.clientIdText); + BrowserVisibility.waitUntilElementIsVisible(this.clientIdText); this.clientIdText.clear(); this.clientIdText.sendKeys(clientId); } async setContentServicesURL(contentServiceURL) { - Util.waitUntilElementIsClickable(this.ecmText); + BrowserVisibility.waitUntilElementIsClickable(this.ecmText); this.ecmText.clear(); this.ecmText.sendKeys(contentServiceURL); } clearContentServicesURL() { - Util.waitUntilElementIsVisible(this.ecmText); + BrowserVisibility.waitUntilElementIsVisible(this.ecmText); this.ecmText.clear(); this.ecmText.sendKeys('a'); this.ecmText.sendKeys(protractor.Key.BACK_SPACE); } clearProcessServicesURL() { - Util.waitUntilElementIsVisible(this.bpmText); + BrowserVisibility.waitUntilElementIsVisible(this.bpmText); this.bpmText.clear(); this.bpmText.sendKeys('a'); this.bpmText.sendKeys(protractor.Key.BACK_SPACE); } async setAuthHost(authHostURL) { - Util.waitUntilElementIsVisible(this.authHostText); + BrowserVisibility.waitUntilElementIsVisible(this.authHostText); await this.authHostText.clear(); await this.authHostText.sendKeys(authHostURL); } async setIdentityHost(identityHost) { - Util.waitUntilElementIsVisible(this.identityHostText); + BrowserVisibility.waitUntilElementIsVisible(this.identityHostText); await this.identityHostText.clear(); await this.identityHostText.sendKeys(identityHost); } async clickApply() { - Util.waitUntilElementIsVisible(this.applyButton); + BrowserVisibility.waitUntilElementIsVisible(this.applyButton); await this.applyButton.click(); } async setSilentLogin(enableToggle) { - await Util.waitUntilElementIsVisible(this.silentLoginToggleElement); + await BrowserVisibility.waitUntilElementIsVisible(this.silentLoginToggleElement); const isChecked = (await this.silentLoginToggleElement.getAttribute('class')).includes('mat-checked'); @@ -232,7 +232,7 @@ export class SettingsPage { } async setImplicitFlow(enableToggle) { - await Util.waitUntilElementIsVisible(this.implicitFlowElement); + await BrowserVisibility.waitUntilElementIsVisible(this.implicitFlowElement); const isChecked = (await this.implicitFlowElement.getAttribute('class')).includes('mat-checked'); @@ -244,43 +244,43 @@ export class SettingsPage { } checkApplyButtonIsDisabled() { - Util.waitUntilElementIsVisible(this.applyButton.getAttribute('disabled')); + BrowserVisibility.waitUntilElementIsVisible(this.applyButton.getAttribute('disabled')); return this; } checkProviderDropdownIsDisplayed() { - Util.waitUntilElementIsVisible(this.providerDropdown); + BrowserVisibility.waitUntilElementIsVisible(this.providerDropdown); } checkValidationMessageIsDisplayed() { - Util.waitUntilElementIsVisible(this.validationMessage); + BrowserVisibility.waitUntilElementIsVisible(this.validationMessage); } checkProviderOptions() { - Util.waitUntilElementIsVisible(this.providerDropdown); + BrowserVisibility.waitUntilElementIsVisible(this.providerDropdown); this.providerDropdown.click(); - Util.waitUntilElementIsVisible(this.ecmAndBpm.option); - Util.waitUntilElementIsVisible(this.ecm.option); - Util.waitUntilElementIsVisible(this.bpm.option); + BrowserVisibility.waitUntilElementIsVisible(this.ecmAndBpm.option); + BrowserVisibility.waitUntilElementIsVisible(this.ecm.option); + BrowserVisibility.waitUntilElementIsVisible(this.bpm.option); } getBasicAuthRadioButton() { - Util.waitUntilElementIsVisible(this.basicAuthRadioButton); + BrowserVisibility.waitUntilElementIsVisible(this.basicAuthRadioButton); return this.basicAuthRadioButton; } getSsoRadioButton() { - Util.waitUntilElementIsVisible(this.ssoRadioButton); + BrowserVisibility.waitUntilElementIsVisible(this.ssoRadioButton); return this.ssoRadioButton; } getBackButton() { - Util.waitUntilElementIsVisible(this.backButton); + BrowserVisibility.waitUntilElementIsVisible(this.backButton); return this.backButton; } getApplyButton() { - Util.waitUntilElementIsVisible(this.applyButton); + BrowserVisibility.waitUntilElementIsVisible(this.applyButton); return this.applyButton; } diff --git a/e2e/pages/adf/tagPage.ts b/e2e/pages/adf/tagPage.ts index 1bd740a4bb..11e5dc349e 100644 --- a/e2e/pages/adf/tagPage.ts +++ b/e2e/pages/adf/tagPage.ts @@ -15,9 +15,8 @@ * limitations under the License. */ -import { Util } from '../../util/util'; - import { element, by, protractor, browser } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class TagPage { @@ -36,12 +35,12 @@ export class TagPage { tagsOnPage = element.all(by.css('div[class*="adf-list-tag"]')); getNodeId() { - Util.waitUntilElementIsVisible(this.insertNodeIdElement); + BrowserVisibility.waitUntilElementIsVisible(this.insertNodeIdElement); return this.insertNodeIdElement.getAttribute('value'); } insertNodeId(nodeId) { - Util.waitUntilElementIsVisible(this.insertNodeIdElement); + BrowserVisibility.waitUntilElementIsVisible(this.insertNodeIdElement); this.insertNodeIdElement.clear(); this.insertNodeIdElement.sendKeys(nodeId); browser.driver.sleep(200); @@ -51,83 +50,83 @@ export class TagPage { } addNewTagInput(tag) { - Util.waitUntilElementIsVisible(this.newTagInput); + BrowserVisibility.waitUntilElementIsVisible(this.newTagInput); this.newTagInput.sendKeys(tag); return this; } addTag(tag) { this.addNewTagInput(tag); - Util.waitUntilElementIsVisible(this.addTagButton); - Util.waitUntilElementIsClickable(this.addTagButton); + BrowserVisibility.waitUntilElementIsVisible(this.addTagButton); + BrowserVisibility.waitUntilElementIsClickable(this.addTagButton); this.addTagButton.click(); return this; } deleteTagFromTagListByNodeId(name) { const deleteChip = element(by.id('tag_chips_delete_' + name)); - Util.waitUntilElementIsVisible(deleteChip); + BrowserVisibility.waitUntilElementIsVisible(deleteChip); deleteChip.click(); return this; } deleteTagFromTagList(name) { const deleteChip = element(by.id('tag_chips_delete_' + name)); - Util.waitUntilElementIsVisible(deleteChip); + BrowserVisibility.waitUntilElementIsVisible(deleteChip); deleteChip.click(); return this; } getNewTagInput() { - Util.waitUntilElementIsVisible(this.newTagInput); + BrowserVisibility.waitUntilElementIsVisible(this.newTagInput); return this.newTagInput.getAttribute('value'); } getNewTagPlaceholder() { - Util.waitUntilElementIsVisible(this.newTagInput); + BrowserVisibility.waitUntilElementIsVisible(this.newTagInput); return this.newTagInput.getAttribute('placeholder'); } addTagButtonIsEnabled() { - Util.waitUntilElementIsVisible(this.addTagButton); + BrowserVisibility.waitUntilElementIsVisible(this.addTagButton); return this.addTagButton.isEnabled(); } checkTagIsDisplayedInTagList(tagName) { const tag = element(by.cssContainingText('div[id*="tag_name"]', tagName)); - return Util.waitUntilElementIsVisible(tag); + return BrowserVisibility.waitUntilElementIsVisible(tag); } checkTagIsNotDisplayedInTagList(tagName) { const tag = element(by.cssContainingText('div[id*="tag_name"]', tagName)); - return Util.waitUntilElementIsNotOnPage(tag); + return BrowserVisibility.waitUntilElementIsNotOnPage(tag); } checkTagIsNotDisplayedInTagListByNodeId(tagName) { const tag = element(by.cssContainingText('span[id*="tag_name"]', tagName)); - return Util.waitUntilElementIsNotOnPage(tag); + return BrowserVisibility.waitUntilElementIsNotOnPage(tag); } checkTagIsDisplayedInTagListByNodeId(tagName) { const tag = element(by.cssContainingText('span[id*="tag_name"]', tagName)); - return Util.waitUntilElementIsVisible(tag); + return BrowserVisibility.waitUntilElementIsVisible(tag); } checkTagListIsEmpty() { - Util.waitUntilElementIsNotOnPage(this.tagListRow); + BrowserVisibility.waitUntilElementIsNotOnPage(this.tagListRow); } checkTagListByNodeIdIsEmpty() { - return Util.waitUntilElementIsNotOnPage(this.tagListByNodeIdRow); + return BrowserVisibility.waitUntilElementIsNotOnPage(this.tagListByNodeIdRow); } checkTagIsDisplayedInTagListContentServices(tagName) { const tag = element(by.cssContainingText('div[class="adf-list-tag"][id*="tag_name"]', tagName)); - return Util.waitUntilElementIsVisible(tag); + return BrowserVisibility.waitUntilElementIsVisible(tag); } getErrorMessage() { - Util.waitUntilElementIsPresent(this.errorMessage); + BrowserVisibility.waitUntilElementIsPresent(this.errorMessage); return this.errorMessage.getText(); } @@ -158,7 +157,7 @@ export class TagPage { checkListIsSorted(sortOrder, locator) { const deferred = protractor.promise.defer(); const tagList = element.all(locator); - Util.waitUntilElementIsVisible(tagList.first()); + BrowserVisibility.waitUntilElementIsVisible(tagList.first()); const initialList = []; tagList.each(function (currentElement) { currentElement.getText().then(function (text) { @@ -177,26 +176,26 @@ export class TagPage { checkDeleteTagFromTagListByNodeIdIsDisplayed(name) { const deleteChip = element(by.id('tag_chips_delete_' + name)); - return Util.waitUntilElementIsVisible(deleteChip); + return BrowserVisibility.waitUntilElementIsVisible(deleteChip); } checkDeleteTagFromTagListByNodeIdIsNotDisplayed(name) { const deleteChip = element(by.id('tag_chips_delete_' + name)); - return Util.waitUntilElementIsNotVisible(deleteChip); + return BrowserVisibility.waitUntilElementIsNotVisible(deleteChip); } clickShowDeleteButtonSwitch() { - Util.waitUntilElementIsVisible(this.showDeleteButton); - Util.waitUntilElementIsClickable(this.showDeleteButton); + BrowserVisibility.waitUntilElementIsVisible(this.showDeleteButton); + BrowserVisibility.waitUntilElementIsClickable(this.showDeleteButton); this.showDeleteButton.click(); } checkShowMoreButtonIsDisplayed() { - return Util.waitUntilElementIsVisible(this.showMoreButton); + return BrowserVisibility.waitUntilElementIsVisible(this.showMoreButton); } clickShowMoreButton() { - Util.waitUntilElementIsClickable(this.showMoreButton); + BrowserVisibility.waitUntilElementIsClickable(this.showMoreButton); return this.showMoreButton.click(); } @@ -205,11 +204,11 @@ export class TagPage { } checkShowLessButtonIsDisplayed() { - return Util.waitUntilElementIsVisible(this.showLessButton); + return BrowserVisibility.waitUntilElementIsVisible(this.showLessButton); } checkShowLessButtonIsNotDisplayed() { - return Util.waitUntilElementIsNotVisible(this.showLessButton); + return BrowserVisibility.waitUntilElementIsNotVisible(this.showLessButton); } clickShowMoreButtonUntilNotDisplayed() { @@ -218,7 +217,7 @@ export class TagPage { this.showMoreButton.click(); this.clickShowMoreButtonUntilNotDisplayed(); } - }, (err) => { + }, () => { }); } @@ -229,7 +228,7 @@ export class TagPage { this.clickShowLessButtonUntilNotDisplayed(); } - }, (err) => { + }, () => { }); } } diff --git a/e2e/pages/adf/trashcanPage.ts b/e2e/pages/adf/trashcanPage.ts index 08fb371e72..2f624ceeb2 100644 --- a/e2e/pages/adf/trashcanPage.ts +++ b/e2e/pages/adf/trashcanPage.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Util } from '../../util/util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; import { element, by } from 'protractor'; @@ -30,11 +30,11 @@ export class TrashcanPage { } waitForTableBody() { - Util.waitUntilElementIsVisible(this.tableBody); + BrowserVisibility.waitUntilElementIsVisible(this.tableBody); } waitForPagination() { - Util.waitUntilElementIsVisible(this.pagination); + BrowserVisibility.waitUntilElementIsVisible(this.pagination); } } diff --git a/e2e/pages/adf/versionManagerPage.ts b/e2e/pages/adf/versionManagerPage.ts index 6bd2c87e3f..0db919f8c1 100644 --- a/e2e/pages/adf/versionManagerPage.ts +++ b/e2e/pages/adf/versionManagerPage.ts @@ -15,12 +15,12 @@ * limitations under the License. */ -import { Util } from '../../util/util'; import TestConfig = require('../../test.config'); import path = require('path'); import remote = require('selenium-webdriver/remote'); import { browser, by, element, protractor } from 'protractor'; import { FormControllersPage } from './material/formControllersPage'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class VersionManagePage { @@ -38,74 +38,74 @@ export class VersionManagePage { commentsSwitch = element(by.id('adf-version-manager-switch-comments')); checkUploadNewVersionsButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.showNewVersionButton); + BrowserVisibility.waitUntilElementIsVisible(this.showNewVersionButton); return this; } checkMajorChangeIsDisplayed() { - Util.waitUntilElementIsVisible(this.majorRadio); + BrowserVisibility.waitUntilElementIsVisible(this.majorRadio); return this; } checkMinorChangeIsDisplayed() { - Util.waitUntilElementIsVisible(this.minorRadio); + BrowserVisibility.waitUntilElementIsVisible(this.minorRadio); return this; } checkCommentTextIsDisplayed() { - Util.waitUntilElementIsVisible(this.commentText); + BrowserVisibility.waitUntilElementIsVisible(this.commentText); return this; } clickAddNewVersionsButton() { - Util.waitUntilElementIsVisible(this.showNewVersionButton); + BrowserVisibility.waitUntilElementIsVisible(this.showNewVersionButton); this.showNewVersionButton.click(); return this; } checkCancelButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.cancelButton); + BrowserVisibility.waitUntilElementIsVisible(this.cancelButton); return this; } uploadNewVersionFile(fileLocation) { browser.setFileDetector(new remote.FileDetector()); - Util.waitUntilElementIsVisible(this.uploadNewVersionButton); + BrowserVisibility.waitUntilElementIsVisible(this.uploadNewVersionButton); this.uploadNewVersionButton.sendKeys(path.resolve(path.join(TestConfig.main.rootPath, fileLocation))); - Util.waitUntilElementIsVisible(this.showNewVersionButton); + BrowserVisibility.waitUntilElementIsVisible(this.showNewVersionButton); return this; } getFileVersionName(version) { const fileElement = element(by.css(`[id="adf-version-list-item-name-${version}"]`)); - Util.waitUntilElementIsVisible(fileElement); + BrowserVisibility.waitUntilElementIsVisible(fileElement); return fileElement.getText(); } checkFileVersionExist(version) { const fileVersion = element(by.id(`adf-version-list-item-version-${version}`)); - return Util.waitUntilElementIsVisible(fileVersion); + return BrowserVisibility.waitUntilElementIsVisible(fileVersion); } checkFileVersionNotExist(version) { const fileVersion = element(by.id(`adf-version-list-item-version-${version}`)); - return Util.waitUntilElementIsNotVisible(fileVersion); + return BrowserVisibility.waitUntilElementIsNotVisible(fileVersion); } getFileVersionComment(version) { const fileComment = element(by.id(`adf-version-list-item-comment-${version}`)); - Util.waitUntilElementIsVisible(fileComment); + BrowserVisibility.waitUntilElementIsVisible(fileComment); return fileComment.getText(); } getFileVersionDate(version) { const fileDate = element(by.id(`adf-version-list-item-date-${version}`)); - Util.waitUntilElementIsVisible(fileDate); + BrowserVisibility.waitUntilElementIsVisible(fileDate); return fileDate.getText(); } enterCommentText(text) { - Util.waitUntilElementIsVisible(this.commentText); + BrowserVisibility.waitUntilElementIsVisible(this.commentText); this.commentText.sendKeys(''); this.commentText.clear(); this.commentText.sendKeys(text); @@ -114,13 +114,13 @@ export class VersionManagePage { clickMajorChange() { const radioMajor = element(by.id(`adf-new-version-major`)); - Util.waitUntilElementIsVisible(radioMajor); + BrowserVisibility.waitUntilElementIsVisible(radioMajor); radioMajor.click(); } clickMinorChange() { const radioMinor = element(by.id(`adf-new-version-minor`)); - Util.waitUntilElementIsVisible(radioMinor); + BrowserVisibility.waitUntilElementIsVisible(radioMinor); radioMinor.click(); } @@ -168,35 +168,35 @@ export class VersionManagePage { } clickActionButton(version) { - Util.waitUntilElementIsVisible(element(by.id(`adf-version-list-action-menu-button-${version}`))); + BrowserVisibility.waitUntilElementIsVisible(element(by.id(`adf-version-list-action-menu-button-${version}`))); element(by.id(`adf-version-list-action-menu-button-${version}`)).click(); return this; } clickAcceptConfirm() { - Util.waitUntilElementIsVisible(element(by.id(`adf-confirm-accept`))); + BrowserVisibility.waitUntilElementIsVisible(element(by.id(`adf-confirm-accept`))); element(by.id(`adf-confirm-accept`)).click(); return this; } clickCancelConfirm() { - Util.waitUntilElementIsVisible(element(by.id(`adf-confirm-cancel`))); + BrowserVisibility.waitUntilElementIsVisible(element(by.id(`adf-confirm-cancel`))); element(by.id(`adf-confirm-cancel`)).click(); return this; } closeActionButton() { const container = element(by.css('div.cdk-overlay-backdrop.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing')); - Util.waitUntilElementIsVisible(container); + BrowserVisibility.waitUntilElementIsVisible(container); container.click(); - Util.waitUntilElementIsNotVisible(container); + BrowserVisibility.waitUntilElementIsNotVisible(container); return this; } downloadFileVersion(version) { this.clickActionButton(version); const downloadButton = element(by.id(`adf-version-list-action-download-${version}`)); - Util.waitUntilElementIsVisible(downloadButton); + BrowserVisibility.waitUntilElementIsVisible(downloadButton); browser.driver.sleep(500); downloadButton.click(); return this; @@ -205,7 +205,7 @@ export class VersionManagePage { deleteFileVersion(version) { this.clickActionButton(version); const deleteButton = element(by.id(`adf-version-list-action-delete-${version}`)); - Util.waitUntilElementIsVisible(deleteButton); + BrowserVisibility.waitUntilElementIsVisible(deleteButton); browser.driver.sleep(500); deleteButton.click(); return this; @@ -214,20 +214,20 @@ export class VersionManagePage { restoreFileVersion(version) { this.clickActionButton(version); const restoreButton = element(by.id(`adf-version-list-action-restore-${version}`)); - Util.waitUntilElementIsVisible(restoreButton); + BrowserVisibility.waitUntilElementIsVisible(restoreButton); browser.driver.sleep(500); restoreButton.click(); return this; } checkActionsArePresent(version) { - Util.waitUntilElementIsVisible(element(by.id(`adf-version-list-action-download-${version}`))); - Util.waitUntilElementIsVisible(element(by.id(`adf-version-list-action-delete-${version}`))); - Util.waitUntilElementIsVisible(element(by.id(`adf-version-list-action-restore-${version}`))); + BrowserVisibility.waitUntilElementIsVisible(element(by.id(`adf-version-list-action-download-${version}`))); + BrowserVisibility.waitUntilElementIsVisible(element(by.id(`adf-version-list-action-delete-${version}`))); + BrowserVisibility.waitUntilElementIsVisible(element(by.id(`adf-version-list-action-restore-${version}`))); } closeVersionDialog() { browser.actions().sendKeys(protractor.Key.ESCAPE).perform(); - Util.waitUntilElementIsNotOnPage(this.uploadNewVersionContainer); + BrowserVisibility.waitUntilElementIsNotOnPage(this.uploadNewVersionContainer); } } diff --git a/e2e/pages/adf/viewerPage.ts b/e2e/pages/adf/viewerPage.ts index 64ccb71bc5..a56b7f7acc 100644 --- a/e2e/pages/adf/viewerPage.ts +++ b/e2e/pages/adf/viewerPage.ts @@ -15,11 +15,10 @@ * limitations under the License. */ -import { Util } from '../../util/util'; - import { TabsPage } from '@alfresco/adf-testing'; import { FormControllersPage } from './material/formControllersPage'; import { element, by, browser, protractor } from 'protractor'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export class ViewerPage { @@ -99,18 +98,18 @@ export class ViewerPage { moveRightChevron = element(by.css('.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron')); checkCodeViewerIsDisplayed() { - return Util.waitUntilElementIsVisible(this.codeViewer); + return BrowserVisibility.waitUntilElementIsVisible(this.codeViewer); } viewFile(fileName) { const fileView = element.all(by.css(`#document-list-container div[data-automation-id="${fileName}"]`)).first(); - Util.waitUntilElementIsVisible(fileView); + BrowserVisibility.waitUntilElementIsVisible(fileView); fileView.click(); browser.actions().sendKeys(protractor.Key.ENTER).perform(); } clearPageNumber() { - Util.waitUntilElementIsVisible(this.pageSelectorInput); + BrowserVisibility.waitUntilElementIsVisible(this.pageSelectorInput); this.pageSelectorInput.clear(); this.pageSelectorInput.sendKeys(protractor.Key.ENTER); } @@ -125,33 +124,33 @@ export class ViewerPage { } enterPassword(password) { - Util.waitUntilElementIsVisible(this.passwordInput); + BrowserVisibility.waitUntilElementIsVisible(this.passwordInput); this.passwordInput.clear(); this.passwordInput.sendKeys(password); } checkFileIsLoaded() { - Util.waitUntilElementIsOnPage(this.pdfPageLoaded, 15000); + BrowserVisibility.waitUntilElementIsOnPage(this.pdfPageLoaded, 15000); } checkImgViewerIsDisplayed() { - Util.waitUntilElementIsOnPage(this.imgViewer); + BrowserVisibility.waitUntilElementIsOnPage(this.imgViewer); } checkPasswordErrorIsDisplayed() { - Util.waitUntilElementIsVisible(this.passwordError); + BrowserVisibility.waitUntilElementIsVisible(this.passwordError); } checkPasswordInputIsDisplayed() { - Util.waitUntilElementIsVisible(this.passwordInput); + BrowserVisibility.waitUntilElementIsVisible(this.passwordInput); } checkPasswordSubmitDisabledIsDisplayed() { - Util.waitUntilElementIsVisible(this.passwordSubmitDisabled); + BrowserVisibility.waitUntilElementIsVisible(this.passwordSubmitDisabled); } checkPasswordDialogIsDisplayed() { - Util.waitUntilElementIsVisible(this.passwordDialog); + BrowserVisibility.waitUntilElementIsVisible(this.passwordDialog); } checkAllThumbnailsDisplayed(nbPages) { @@ -169,28 +168,28 @@ export class ViewerPage { } checkThumbnailsCloseIsDisplayed() { - Util.waitUntilElementIsVisible(this.thumbnailsClose); + BrowserVisibility.waitUntilElementIsVisible(this.thumbnailsClose); } checkThumbnailsBtnIsDisplayed() { - Util.waitUntilElementIsVisible(this.thumbnailsBtn); + BrowserVisibility.waitUntilElementIsVisible(this.thumbnailsBtn); } checkThumbnailsBtnIsDisabled() { - Util.waitUntilElementIsVisible(this.thumbnailsBtn.getAttribute('disabled')); + BrowserVisibility.waitUntilElementIsVisible(this.thumbnailsBtn.getAttribute('disabled')); return this; } checkThumbnailsContentIsDisplayed() { - Util.waitUntilElementIsVisible(this.thumbnailsContent); + BrowserVisibility.waitUntilElementIsVisible(this.thumbnailsContent); } checkThumbnailsContentIsNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.thumbnailsContent); + BrowserVisibility.waitUntilElementIsNotVisible(this.thumbnailsContent); } checkCloseButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.closeButton); + BrowserVisibility.waitUntilElementIsVisible(this.closeButton); } getLastButtonTitle() { @@ -202,63 +201,63 @@ export class ViewerPage { } checkDownloadButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.downloadButton); + BrowserVisibility.waitUntilElementIsVisible(this.downloadButton); } checkInfoButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.infoButton); + BrowserVisibility.waitUntilElementIsVisible(this.infoButton); } checkInfoButtonIsNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.infoButton); + BrowserVisibility.waitUntilElementIsNotVisible(this.infoButton); } checkFileThumbnailIsDisplayed() { - Util.waitUntilElementIsVisible(this.fileThumbnail); + BrowserVisibility.waitUntilElementIsVisible(this.fileThumbnail); } checkFileNameIsDisplayed(file) { - Util.waitUntilElementIsVisible(this.fileName); + BrowserVisibility.waitUntilElementIsVisible(this.fileName); expect(this.fileName.getText()).toEqual(file); } checkPreviousPageButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.previousPageButton); + BrowserVisibility.waitUntilElementIsVisible(this.previousPageButton); } checkNextPageButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.nextPageButton); + BrowserVisibility.waitUntilElementIsVisible(this.nextPageButton); } checkZoomInButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.zoomInButton); + BrowserVisibility.waitUntilElementIsVisible(this.zoomInButton); } checkZoomInButtonIsNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.zoomInButton); + BrowserVisibility.waitUntilElementIsNotVisible(this.zoomInButton); } checkZoomOutButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.zoomOutButton); + BrowserVisibility.waitUntilElementIsVisible(this.zoomOutButton); } checkScalePageButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.scalePageButton); + BrowserVisibility.waitUntilElementIsVisible(this.scalePageButton); } checkPageSelectorInputIsDisplayed(checkNumber) { - Util.waitUntilElementIsVisible(this.pageSelectorInput); + BrowserVisibility.waitUntilElementIsVisible(this.pageSelectorInput); this.pageSelectorInput.getAttribute('value').then((pageNumber) => { expect(pageNumber).toEqual(checkNumber); }); } checkImgContainerIsDisplayed() { - Util.waitUntilElementIsVisible(this.imgContainer); + BrowserVisibility.waitUntilElementIsVisible(this.imgContainer); } checkMediaPlayerContainerIsDisplayed() { - Util.waitUntilElementIsVisible(this.mediaContainer); + BrowserVisibility.waitUntilElementIsVisible(this.mediaContainer); } checkFileContent(pageNumber, text) { @@ -267,22 +266,22 @@ export class ViewerPage { const textLayerLoaded = element.all(by.css('div[data-page-number="' + pageNumber + '"] div[class="textLayer"] > div')).first(); const specificText = element.all(by.cssContainingText('div[data-page-number="' + pageNumber + '"] div[class="textLayer"] > div', text)).first(); - Util.waitUntilElementIsVisible(allPages); - Util.waitUntilElementIsVisible(pageLoaded); - Util.waitUntilElementIsVisible(textLayerLoaded); - Util.waitUntilElementIsVisible(specificText); + BrowserVisibility.waitUntilElementIsVisible(allPages); + BrowserVisibility.waitUntilElementIsVisible(pageLoaded); + BrowserVisibility.waitUntilElementIsVisible(textLayerLoaded); + BrowserVisibility.waitUntilElementIsVisible(specificText); } checkFullScreenButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.fullScreenButton); + BrowserVisibility.waitUntilElementIsVisible(this.fullScreenButton); } checkFullScreenButtonIsNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.fullScreenButton); + BrowserVisibility.waitUntilElementIsNotVisible(this.fullScreenButton); } checkPercentageIsDisplayed() { - Util.waitUntilElementIsVisible(this.percentage); + BrowserVisibility.waitUntilElementIsVisible(this.percentage); } checkZoomedIn(zoom) { @@ -294,15 +293,15 @@ export class ViewerPage { } checkRotateLeftButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.rotateLeft); + BrowserVisibility.waitUntilElementIsVisible(this.rotateLeft); } checkRotateRightButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.rotateRight); + BrowserVisibility.waitUntilElementIsVisible(this.rotateRight); } checkScaleImgButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.scaleImg); + BrowserVisibility.waitUntilElementIsVisible(this.scaleImg); } checkRotation(text) { @@ -311,23 +310,23 @@ export class ViewerPage { } checkInfoSideBarIsNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.infoSideBar); + BrowserVisibility.waitUntilElementIsNotVisible(this.infoSideBar); } checkInfoSideBarIsDisplayed() { - Util.waitUntilElementIsVisible(this.infoSideBar); + BrowserVisibility.waitUntilElementIsVisible(this.infoSideBar); } checkLeftSideBarButtonIsNotDisplayed() { - Util.waitUntilElementIsNotOnPage(this.leftSideBarButton); + BrowserVisibility.waitUntilElementIsNotOnPage(this.leftSideBarButton); } checkLeftSideBarButtonIsDisplayed() { - Util.waitUntilElementIsOnPage(this.leftSideBarButton); + BrowserVisibility.waitUntilElementIsOnPage(this.leftSideBarButton); } clickInfoButton() { - Util.waitUntilElementIsVisible(this.infoButton); + BrowserVisibility.waitUntilElementIsVisible(this.infoButton); return this.infoButton.click(); } @@ -338,101 +337,101 @@ export class ViewerPage { checkTabIsActive(tabName) { const tab = element(by.cssContainingText('.adf-info-drawer-layout-content div.mat-tab-labels div.mat-tab-label-active .mat-tab-label-content', tabName)); - Util.waitUntilElementIsVisible(tab); + BrowserVisibility.waitUntilElementIsVisible(tab); return this; } clickLeftSidebarButton() { - Util.waitUntilElementIsVisible(this.leftSideBarButton); + BrowserVisibility.waitUntilElementIsVisible(this.leftSideBarButton); return this.leftSideBarButton.click(); } checkLeftSideBarIsDisplayed() { - Util.waitUntilElementIsVisible(this.leftSideBar); + BrowserVisibility.waitUntilElementIsVisible(this.leftSideBar); } checkLeftSideBarIsNotDisplayed() { - Util.waitUntilElementIsNotOnPage(this.leftSideBar); + BrowserVisibility.waitUntilElementIsNotOnPage(this.leftSideBar); } clickPasswordSubmit() { - Util.waitUntilElementIsVisible(this.passwordSubmit); + BrowserVisibility.waitUntilElementIsVisible(this.passwordSubmit); return this.passwordSubmit.click(); } clickSecondThumbnail() { - Util.waitUntilElementIsClickable(this.secondThumbnail); + BrowserVisibility.waitUntilElementIsClickable(this.secondThumbnail); return this.secondThumbnail.click(); } clickLastThumbnailDisplayed() { - Util.waitUntilElementIsClickable(this.lastThumbnailDisplayed); + BrowserVisibility.waitUntilElementIsClickable(this.lastThumbnailDisplayed); return this.lastThumbnailDisplayed.click(); } clickThumbnailsClose() { - Util.waitUntilElementIsClickable(this.thumbnailsClose); + BrowserVisibility.waitUntilElementIsClickable(this.thumbnailsClose); return this.thumbnailsClose.click(); } clickThumbnailsBtn() { - Util.waitUntilElementIsVisible(this.thumbnailsBtn); - Util.waitUntilElementIsClickable(this.thumbnailsBtn); + BrowserVisibility.waitUntilElementIsVisible(this.thumbnailsBtn); + BrowserVisibility.waitUntilElementIsClickable(this.thumbnailsBtn); return this.thumbnailsBtn.click(); } clickScaleImgButton() { - Util.waitUntilElementIsClickable(this.scaleImg); + BrowserVisibility.waitUntilElementIsClickable(this.scaleImg); return this.scaleImg.click(); } clickDownloadButton() { - Util.waitUntilElementIsVisible(this.downloadButton); + BrowserVisibility.waitUntilElementIsVisible(this.downloadButton); return this.downloadButton.click(); } clickCloseButton() { - Util.waitUntilElementIsVisible(this.closeButton); + BrowserVisibility.waitUntilElementIsVisible(this.closeButton); return this.closeButton.click(); } clickPreviousPageButton() { - Util.waitUntilElementIsVisible(this.previousPageButton); + BrowserVisibility.waitUntilElementIsVisible(this.previousPageButton); return this.previousPageButton.click(); } clickNextPageButton() { - Util.waitUntilElementIsVisible(this.nextPageButton); + BrowserVisibility.waitUntilElementIsVisible(this.nextPageButton); return this.nextPageButton.click(); } clickZoomInButton() { - Util.waitUntilElementIsVisible(this.zoomInButton); + BrowserVisibility.waitUntilElementIsVisible(this.zoomInButton); return this.zoomInButton.click(); } clickZoomOutButton() { - Util.waitUntilElementIsVisible(this.zoomOutButton); + BrowserVisibility.waitUntilElementIsVisible(this.zoomOutButton); return this.zoomOutButton.click(); } clickFullScreenButton() { - Util.waitUntilElementIsClickable(this.fullScreenButton); + BrowserVisibility.waitUntilElementIsClickable(this.fullScreenButton); return this.fullScreenButton.click(); } clickRotateLeftButton() { - Util.waitUntilElementIsClickable(this.rotateLeft); + BrowserVisibility.waitUntilElementIsClickable(this.rotateLeft); return this.rotateLeft.click(); } clickRotateRightButton() { - Util.waitUntilElementIsClickable(this.rotateRight); + BrowserVisibility.waitUntilElementIsClickable(this.rotateRight); return this.rotateRight.click(); } getActiveTab() { - Util.waitUntilElementIsVisible(this.activeTab); + BrowserVisibility.waitUntilElementIsVisible(this.activeTab); return this.activeTab.getText(); } @@ -450,12 +449,12 @@ export class ViewerPage { } checkToolbarIsDisplayed() { - Util.waitUntilElementIsVisible(this.toolbar); + BrowserVisibility.waitUntilElementIsVisible(this.toolbar); return this; } checkToolbarIsNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.toolbar); + BrowserVisibility.waitUntilElementIsNotVisible(this.toolbar); return this; } @@ -468,12 +467,12 @@ export class ViewerPage { } checkGoBackIsDisplayed() { - Util.waitUntilElementIsVisible(this.closeButton); + BrowserVisibility.waitUntilElementIsVisible(this.closeButton); return this; } checkGoBackIsNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.closeButton); + BrowserVisibility.waitUntilElementIsNotVisible(this.closeButton); return this; } @@ -486,12 +485,12 @@ export class ViewerPage { } checkToolbarOptionsIsDisplayed() { - Util.waitUntilElementIsVisible(this.openWith); + BrowserVisibility.waitUntilElementIsVisible(this.openWith); return this; } checkToolbarOptionsIsNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.openWith); + BrowserVisibility.waitUntilElementIsNotVisible(this.openWith); return this; } @@ -504,12 +503,12 @@ export class ViewerPage { } checkDownloadButtonDisplayed() { - Util.waitUntilElementIsVisible(this.downloadButton); + BrowserVisibility.waitUntilElementIsVisible(this.downloadButton); return this; } checkDownloadButtonIsNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.downloadButton); + BrowserVisibility.waitUntilElementIsNotVisible(this.downloadButton); return this; } @@ -522,12 +521,12 @@ export class ViewerPage { } checkPrintButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.printButton); + BrowserVisibility.waitUntilElementIsVisible(this.printButton); return this; } checkPrintButtonIsNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.printButton); + BrowserVisibility.waitUntilElementIsNotVisible(this.printButton); return this; } @@ -540,16 +539,16 @@ export class ViewerPage { } checkMoreActionsDisplayed() { - Util.waitUntilElementIsVisible(this.bugButton); - Util.waitUntilElementIsVisible(this.timeButton); - Util.waitUntilElementIsVisible(this.uploadButton); + BrowserVisibility.waitUntilElementIsVisible(this.bugButton); + BrowserVisibility.waitUntilElementIsVisible(this.timeButton); + BrowserVisibility.waitUntilElementIsVisible(this.uploadButton); return this; } checkMoreActionsIsNotDisplayed() { - Util.waitUntilElementIsNotVisible(this.bugButton); - Util.waitUntilElementIsNotVisible(this.timeButton); - Util.waitUntilElementIsNotVisible(this.uploadButton); + BrowserVisibility.waitUntilElementIsNotVisible(this.bugButton); + BrowserVisibility.waitUntilElementIsNotVisible(this.timeButton); + BrowserVisibility.waitUntilElementIsNotVisible(this.uploadButton); return this; } @@ -576,7 +575,7 @@ export class ViewerPage { } checkCustomToolbarIsDisplayed() { - Util.waitUntilElementIsVisible(this.customToolbar); + BrowserVisibility.waitUntilElementIsVisible(this.customToolbar); return this; } @@ -589,18 +588,18 @@ export class ViewerPage { } clickToggleRightSidebar() { - Util.waitUntilElementIsVisible(this.showRightSidebarSwitch); + BrowserVisibility.waitUntilElementIsVisible(this.showRightSidebarSwitch); this.showRightSidebarSwitch.click(); } clickToggleLeftSidebar() { - Util.waitUntilElementIsVisible(this.showLeftSidebarSwitch); + BrowserVisibility.waitUntilElementIsVisible(this.showLeftSidebarSwitch); this.showLeftSidebarSwitch.click(); } enterCustomName(text) { const textField = element(by.css('input[data-automation-id="adf-text-custom-name"]')); - Util.waitUntilElementIsVisible(textField); + BrowserVisibility.waitUntilElementIsVisible(textField); textField.sendKeys(''); textField.clear(); textField.sendKeys(text); @@ -613,17 +612,17 @@ export class ViewerPage { } checkOverlayViewerIsDisplayed() { - Util.waitUntilElementIsVisible(this.viewer.element(by.css('div[class*="adf-viewer-overlay-container"]'))); + BrowserVisibility.waitUntilElementIsVisible(this.viewer.element(by.css('div[class*="adf-viewer-overlay-container"]'))); return this; } checkInlineViewerIsDisplayed() { - Util.waitUntilElementIsVisible(this.viewer.element(by.css('div[class*="adf-viewer-inline-container"]'))); + BrowserVisibility.waitUntilElementIsVisible(this.viewer.element(by.css('div[class*="adf-viewer-inline-container"]'))); return this; } clickMoveRightChevron() { - Util.waitUntilElementIsVisible(this.moveRightChevron); + BrowserVisibility.waitUntilElementIsVisible(this.moveRightChevron); return this.moveRightChevron.click(); } } diff --git a/e2e/process-services-cloud/edit-task-filters-component.e2e.ts b/e2e/process-services-cloud/edit-task-filters-component.e2e.ts index 68fe1fc39f..6811b6aa55 100644 --- a/e2e/process-services-cloud/edit-task-filters-component.e2e.ts +++ b/e2e/process-services-cloud/edit-task-filters-component.e2e.ts @@ -17,14 +17,13 @@ import TestConfig = require('../test.config'); -import { LoginSSOPage } from '@alfresco/adf-testing'; +import { ApiService, LoginSSOPage, TasksService } from '@alfresco/adf-testing'; import { SettingsPage } from '../pages/adf/settingsPage'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { AppListCloudPage } from '@alfresco/adf-testing'; -import { Util } from '../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; -import { Tasks } from '../actions/APS-cloud/tasks'; import { browser } from 'protractor'; describe('Edit task filters cloud', () => { @@ -35,11 +34,11 @@ describe('Edit task filters cloud', () => { const navigationBarPage = new NavigationBarPage(); const appListCloudComponent = new AppListCloudPage(); const tasksCloudDemoPage = new TasksCloudDemoPage(); - const tasksService: Tasks = new Tasks(); + let tasksService: TasksService; let silentLogin; const simpleApp = 'simple-app'; - const completedTaskName = Util.generateRandomString(), assignedTaskName = Util.generateRandomString(); + const completedTaskName = StringUtil.generateRandomString(), assignedTaskName = StringUtil.generateRandomString(); let assignedTask; beforeAll(async () => { @@ -49,7 +48,10 @@ describe('Edit task filters cloud', () => { browser.ignoreSynchronization = true; loginSSOPage.loginSSOIdentityService(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); - await tasksService.init(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + const apiService = new ApiService('activiti', TestConfig.adf.url, TestConfig.adf.hostSso, 'BPM'); + await apiService.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + + tasksService = new TasksService(apiService); assignedTask = await tasksService.createStandaloneTask(assignedTaskName, simpleApp); await tasksService.claimTask(assignedTask.entry.id, simpleApp); await tasksService.createAndCompleteTask(completedTaskName, simpleApp); diff --git a/e2e/process-services-cloud/people-group-cloud-component.e2e.ts b/e2e/process-services-cloud/people-group-cloud-component.e2e.ts index 8c348c4ea0..52f7a3b55b 100644 --- a/e2e/process-services-cloud/people-group-cloud-component.e2e.ts +++ b/e2e/process-services-cloud/people-group-cloud-component.e2e.ts @@ -17,17 +17,14 @@ import TestConfig = require('../test.config'); -import { LoginSSOPage } from '@alfresco/adf-testing'; import { SettingsPage } from '../pages/adf/settingsPage'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { PeopleGroupCloudComponentPage } from '../pages/adf/demo-shell/process-services/peopleGroupCloudComponentPage'; import { PeopleCloudComponent } from '../pages/adf/process-cloud/peopleCloudComponent'; import { GroupCloudComponent } from '../pages/adf/process-cloud/groupCloudComponent'; import { browser } from 'protractor'; -import { Identity } from '../actions/APS-cloud/identity'; -import { GroupIdentity } from '../actions/APS-cloud/groupIdentity'; +import { LoginSSOPage, IdentityService, GroupIdentityService, RolesService, ApiService } from '@alfresco/adf-testing'; import CONSTANTS = require('../util/constants'); -import { Roles } from '../actions/APS-cloud/roles'; describe('People Groups Cloud Component', () => { @@ -38,14 +35,14 @@ describe('People Groups Cloud Component', () => { const peopleGroupCloudComponentPage = new PeopleGroupCloudComponentPage(); const peopleCloudComponent = new PeopleCloudComponent(); const groupCloudComponent = new GroupCloudComponent(); - const identityService: Identity = new Identity(); - const groupIdentityService: GroupIdentity = new GroupIdentity(); - const rolesService: Roles = new Roles(); + let identityService: IdentityService; + let groupIdentityService: GroupIdentityService; + let rolesService: RolesService; let silentLogin; let apsUser; let activitiUser; - let noRoleUser ; + let noRoleUser; let groupAps; let groupActiviti; let groupNoRole; @@ -53,12 +50,16 @@ describe('People Groups Cloud Component', () => { let activitiUserRoleId; let apsAdminRoleId; let activitiAdminRoleId; - let users = new Array(); - let groups = new Array(); + let users = []; + let groups = []; beforeAll(async () => { - await identityService.init(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); - await rolesService.init(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + + const apiService = new ApiService('activiti', TestConfig.adf.url, TestConfig.adf.hostSso, 'BPM'); + await apiService.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + identityService = new IdentityService(apiService); + rolesService = new RolesService(apiService); + apsUser = await identityService.createIdentityUser(); apsUserRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.APS_USER); await identityService.assignRole(apsUser.id, apsUserRoleId, CONSTANTS.ROLES.APS_USER); @@ -66,7 +67,7 @@ describe('People Groups Cloud Component', () => { activitiUserRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.ACTIVITI_USER); await identityService.assignRole(activitiUser.id, activitiUserRoleId, CONSTANTS.ROLES.ACTIVITI_USER); noRoleUser = await identityService.createIdentityUser(); - await groupIdentityService.init(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + groupIdentityService = new GroupIdentityService(apiService); groupAps = await groupIdentityService.createIdentityGroup(); apsAdminRoleId = await rolesService.getRoleIdByRoleName(CONSTANTS.ROLES.APS_ADMIN); await groupIdentityService.assignRole(groupAps.id, apsAdminRoleId, CONSTANTS.ROLES.APS_ADMIN); @@ -93,7 +94,7 @@ describe('People Groups Cloud Component', () => { } }); - beforeEach( () => { + beforeEach(() => { browser.refresh(); peopleGroupCloudComponentPage.checkGroupsCloudComponentTitleIsDisplayed(); peopleGroupCloudComponentPage.checkPeopleCloudComponentTitleIsDisplayed(); diff --git a/e2e/process-services-cloud/process-custom-filters.e2e.ts b/e2e/process-services-cloud/process-custom-filters.e2e.ts index 0a8eee4a8f..b568a805e0 100644 --- a/e2e/process-services-cloud/process-custom-filters.e2e.ts +++ b/e2e/process-services-cloud/process-custom-filters.e2e.ts @@ -17,7 +17,7 @@ import TestConfig = require('../test.config'); -import { LoginSSOPage } from '@alfresco/adf-testing'; +import { TasksService, QueryService, ProcessDefinitionsService, ProcessInstancesService, LoginSSOPage, ApiService } from '@alfresco/adf-testing'; import { SettingsPage } from '../pages/adf/settingsPage'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { ProcessCloudDemoPage } from '../pages/adf/demo-shell/process-services/processCloudDemoPage'; @@ -25,10 +25,6 @@ import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tas import { AppListCloudPage } from '@alfresco/adf-testing'; import { ConfigEditorPage } from '../pages/adf/configEditorPage'; -import { ProcessDefinitions } from '../actions/APS-cloud/process-definitions'; -import { ProcessInstances } from '../actions/APS-cloud/process-instances'; -import { Tasks } from '../actions/APS-cloud/tasks'; -import { Query } from '../actions/APS-cloud/query'; import { browser, protractor } from 'protractor'; describe('Process list cloud', () => { @@ -42,22 +38,21 @@ describe('Process list cloud', () => { const processCloudDemoPage = new ProcessCloudDemoPage(); const tasksCloudDemoPage = new TasksCloudDemoPage(); - const tasksService: Tasks = new Tasks(); - const processDefinitionService: ProcessDefinitions = new ProcessDefinitions(); - const processInstancesService: ProcessInstances = new ProcessInstances(); - const queryService: Query = new Query(); + let tasksService: TasksService; + let processDefinitionService: ProcessDefinitionsService; + let processInstancesService: ProcessInstancesService; + let queryService: QueryService; let silentLogin; let completedProcess, runningProcessInstance, switchProcessInstance, noOfApps; const simpleApp = 'candidateuserapp'; - const user = TestConfig.adf.adminEmail, password = TestConfig.adf.adminPassword; beforeAll(async () => { silentLogin = false; settingsPage.setProviderBpmSso(TestConfig.adf.hostBPM, TestConfig.adf.hostSso, TestConfig.adf.hostIdentity, silentLogin); loginSSOPage.clickOnSSOButton(); browser.ignoreSynchronization = true; - loginSSOPage.loginSSOIdentityService(user, password); + loginSSOPage.loginSSOIdentityService(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); navigationBarPage.clickConfigEditorButton(); configEditorPage.clickEditProcessCloudConfiguration(); @@ -69,17 +64,21 @@ describe('Process list cloud', () => { '}'); configEditorPage.clickSaveButton(); - await processDefinitionService.init(user, password); + const apiService = new ApiService('activiti', TestConfig.adf.url, TestConfig.adf.hostSso, 'BPM'); + await apiService.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + + processDefinitionService = new ProcessDefinitionsService(apiService); const processDefinition = await processDefinitionService.getProcessDefinitions(simpleApp); - await processInstancesService.init(user, password); + processInstancesService = new ProcessInstancesService(apiService); await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, simpleApp); runningProcessInstance = await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, simpleApp); switchProcessInstance = await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, simpleApp); completedProcess = await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, simpleApp); - await queryService.init(user, password); + queryService = new QueryService(apiService); + const task = await queryService.getProcessInstanceTasks(completedProcess.entry.id, simpleApp); - await tasksService.init(user, password); + tasksService = new TasksService(apiService); const claimedTask = await tasksService.claimTask(task.list.entries[0].entry.id, simpleApp); await tasksService.completeTask(claimedTask.entry.id, simpleApp); }); @@ -93,7 +92,7 @@ describe('Process list cloud', () => { done(); }); - it('[C290069] Should display processes ordered by name when Name is selected from sort dropdown', async() => { + it('[C290069] Should display processes ordered by name when Name is selected from sort dropdown', async () => { processCloudDemoPage.editProcessFilterCloudComponent().clickCustomiseFilterHeader().setStatusFilterDropDown('RUNNING') .setSortFilterDropDown('Name').setOrderFilterDropDown('ASC'); processCloudDemoPage.processListCloudComponent().getAllRowsNameColumn().then(function (list) { @@ -111,7 +110,7 @@ describe('Process list cloud', () => { }); }); - it('[C291783] Should display processes ordered by id when Id is selected from sort dropdown', async() => { + it('[C291783] Should display processes ordered by id when Id is selected from sort dropdown', async () => { processCloudDemoPage.editProcessFilterCloudComponent().clickCustomiseFilterHeader().setStatusFilterDropDown('RUNNING') .setSortFilterDropDown('Id').setOrderFilterDropDown('ASC'); processCloudDemoPage.processListCloudComponent().getDataTable().checkSpinnerIsDisplayed().checkSpinnerIsNotDisplayed(); @@ -135,7 +134,7 @@ describe('Process list cloud', () => { }); }); - it('[C297697] The value of the filter should be preserved when saving it', async() => { + it('[C297697] The value of the filter should be preserved when saving it', async () => { processCloudDemoPage.editProcessFilterCloudComponent().clickCustomiseFilterHeader() .setProcessInstanceId(completedProcess.entry.id); @@ -152,7 +151,7 @@ describe('Process list cloud', () => { expect(processCloudDemoPage.editProcessFilterCloudComponent().getProcessInstanceId()).toEqual(completedProcess.entry.id); }); - it('[C297646] Should display the filter dropdown fine , after switching between saved filters', async() => { + it('[C297646] Should display the filter dropdown fine , after switching between saved filters', async () => { noOfApps = processCloudDemoPage.editProcessFilterCloudComponent().clickCustomiseFilterHeader().getNumberOfAppNameOptions(); expect(processCloudDemoPage.editProcessFilterCloudComponent().checkAppNamesAreUnique()).toBe(true); diff --git a/e2e/process-services-cloud/process-filters-cloud.e2e.ts b/e2e/process-services-cloud/process-filters-cloud.e2e.ts index 8360e86f7b..0b9ff8b3fb 100644 --- a/e2e/process-services-cloud/process-filters-cloud.e2e.ts +++ b/e2e/process-services-cloud/process-filters-cloud.e2e.ts @@ -17,17 +17,13 @@ import TestConfig = require('../test.config'); -import { LoginSSOPage } from '@alfresco/adf-testing'; +import { TasksService, QueryService, ProcessDefinitionsService, ProcessInstancesService, LoginSSOPage, ApiService } from '@alfresco/adf-testing'; import { SettingsPage } from '../pages/adf/settingsPage'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { ProcessCloudDemoPage } from '../pages/adf/demo-shell/process-services/processCloudDemoPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { AppListCloudPage } from '@alfresco/adf-testing'; -import { ProcessDefinitions } from '../actions/APS-cloud/process-definitions'; -import { ProcessInstances } from '../actions/APS-cloud/process-instances'; -import { Tasks } from '../actions/APS-cloud/tasks'; -import { Query } from '../actions/APS-cloud/query'; import { browser } from 'protractor'; describe('Process filters cloud', () => { @@ -40,10 +36,10 @@ describe('Process filters cloud', () => { const processCloudDemoPage = new ProcessCloudDemoPage(); const tasksCloudDemoPage = new TasksCloudDemoPage(); - const tasksService: Tasks = new Tasks(); - const processDefinitionService: ProcessDefinitions = new ProcessDefinitions(); - const processInstancesService: ProcessInstances = new ProcessInstances(); - const queryService: Query = new Query(); + let tasksService: TasksService; + let processDefinitionService: ProcessDefinitionsService; + let processInstancesService: ProcessInstancesService; + let queryService: QueryService; let silentLogin; let runningProcess, completedProcess; @@ -57,15 +53,18 @@ describe('Process filters cloud', () => { browser.ignoreSynchronization = true; loginSSOPage.loginSSOIdentityService(user, password); - await processDefinitionService.init(user, password); + const apiService = new ApiService('activiti', TestConfig.adf.url, TestConfig.adf.hostSso, 'BPM'); + await apiService.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + + processDefinitionService = new ProcessDefinitionsService(apiService); const processDefinition = await processDefinitionService.getProcessDefinitions(simpleApp); - await processInstancesService.init(user, password); + processInstancesService = new ProcessInstancesService(apiService); runningProcess = await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, simpleApp); completedProcess = await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, simpleApp); - await queryService.init(user, password); + queryService = new QueryService(apiService); const task = await queryService.getProcessInstanceTasks(completedProcess.entry.id, simpleApp); - await tasksService.init(user, password); + tasksService = new TasksService(apiService); const claimedTask = await tasksService.claimTask(task.list.entries[0].entry.id, simpleApp); await tasksService.completeTask(claimedTask.entry.id, simpleApp); }); diff --git a/e2e/process-services-cloud/process-header-cloud.e2e.ts b/e2e/process-services-cloud/process-header-cloud.e2e.ts index b8372187a2..4cbe018c96 100644 --- a/e2e/process-services-cloud/process-header-cloud.e2e.ts +++ b/e2e/process-services-cloud/process-header-cloud.e2e.ts @@ -17,27 +17,20 @@ import TestConfig = require('../test.config'); import CONSTANTS = require('../util/constants'); -import { Util } from '../util/util'; import moment = require('moment'); -import { ProcessDefinitions } from '../actions/APS-cloud/process-definitions'; -import { ProcessInstances } from '../actions/APS-cloud/process-instances'; -import { Query } from '../actions/APS-cloud/query'; - import { NavigationBarPage } from '../pages/adf/navigationBarPage'; -import { LoginSSOPage } from '@alfresco/adf-testing'; +import { ApiService, StringUtil, LoginSSOPage, ProcessDefinitionsService, ProcessInstancesService, QueryService } from '@alfresco/adf-testing'; import { SettingsPage } from '../pages/adf/settingsPage'; import { AppListCloudPage } from '@alfresco/adf-testing'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { ProcessHeaderCloudPage } from '@alfresco/adf-testing'; import { ProcessCloudDemoPage } from '../pages/adf/demo-shell/process-services/processCloudDemoPage'; -import { browser } from 'protractor'; describe('Process Header cloud component', () => { describe('Process Header cloud component', () => { - const user = TestConfig.adf.adminEmail, password = TestConfig.adf.adminPassword; const simpleApp = 'simple-app', subProcessApp = 'projectsubprocess'; const formatDate = 'DD-MM-YYYY'; @@ -50,9 +43,9 @@ describe('Process Header cloud component', () => { const tasksCloudDemoPage = new TasksCloudDemoPage(); const processCloudDemoPage = new ProcessCloudDemoPage(); - const processDefinitionService: ProcessDefinitions = new ProcessDefinitions(); - const processInstancesService: ProcessInstances = new ProcessInstances(); - const queryService: Query = new Query(); + let processDefinitionService: ProcessDefinitionsService; + let processInstancesService: ProcessInstancesService; + let queryService: QueryService; let silentLogin; let runningProcess, runningCreatedDate, parentCompleteProcess, childCompleteProcess, completedCreatedDate; @@ -61,19 +54,22 @@ describe('Process Header cloud component', () => { silentLogin = false; settingsPage.setProviderBpmSso(TestConfig.adf.hostBPM, TestConfig.adf.hostSso, TestConfig.adf.hostIdentity, silentLogin); loginSSOPage.clickOnSSOButton(); - browser.ignoreSynchronization = true; - loginSSOPage.loginSSOIdentityService(user, password); - await processDefinitionService.init(user, password); + const apiService = new ApiService('activiti', TestConfig.adf.url, TestConfig.adf.hostSso, 'BPM'); + await apiService.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + + processDefinitionService = new ProcessDefinitionsService(apiService); const processDefinition = await processDefinitionService.getProcessDefinitions(simpleApp); const childProcessDefinition = await processDefinitionService.getProcessDefinitions(subProcessApp); - await processInstancesService.init(user, password); + processInstancesService = new ProcessInstancesService(apiService); runningProcess = await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, - simpleApp, {name: Util.generateRandomString(), businessKey: 'test'}); + simpleApp, { name: StringUtil.generateRandomString(), businessKey: 'test' }); runningCreatedDate = moment(runningProcess.entry.startDate).format(formatDate); parentCompleteProcess = await processInstancesService.createProcessInstance(childProcessDefinition.list.entries[0].entry.key, - subProcessApp, {name: 'cris'}); + subProcessApp, { name: 'cris' }); + + queryService = new QueryService(apiService); const parentProcessInstance = await queryService.getProcessInstanceSubProcesses(parentCompleteProcess.entry.id, subProcessApp); diff --git a/e2e/process-services-cloud/processList-cloud-component.e2e.ts b/e2e/process-services-cloud/processList-cloud-component.e2e.ts index b733379589..aa0499f6c3 100644 --- a/e2e/process-services-cloud/processList-cloud-component.e2e.ts +++ b/e2e/process-services-cloud/processList-cloud-component.e2e.ts @@ -16,17 +16,14 @@ */ import TestConfig = require('../test.config'); -import { LoginSSOPage } from '@alfresco/adf-testing'; +import { ProcessDefinitionsService, ProcessInstancesService, LoginSSOPage, ApiService } from '@alfresco/adf-testing'; import { SettingsPage } from '../pages/adf/settingsPage'; import { ProcessCloudDemoPage } from '../pages/adf/demo-shell/process-services/processCloudDemoPage'; import { AppListCloudPage } from '@alfresco/adf-testing'; -import { ProcessDefinitions } from '../actions/APS-cloud/process-definitions'; -import { ProcessInstances } from '../actions/APS-cloud/process-instances'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { ConfigEditorPage } from '../pages/adf/configEditorPage'; import { ProcessListCloudConfiguration } from './processListCloud.config'; -import { browser } from 'protractor'; describe('Process list cloud', () => { @@ -38,12 +35,11 @@ describe('Process list cloud', () => { const appListCloudComponent = new AppListCloudPage(); const processCloudDemoPage = new ProcessCloudDemoPage(); - const processDefinitionService: ProcessDefinitions = new ProcessDefinitions(); - const processInstancesService: ProcessInstances = new ProcessInstances(); + let processDefinitionService: ProcessDefinitionsService; + let processInstancesService: ProcessInstancesService; let silentLogin; const simpleApp = 'candidateuserapp'; - const user = TestConfig.adf.adminEmail, password = TestConfig.adf.adminPassword; let jsonFile; let runningProcess; @@ -51,12 +47,13 @@ describe('Process list cloud', () => { silentLogin = false; settingsPage.setProviderBpmSso(TestConfig.adf.hostBPM, TestConfig.adf.hostSso, TestConfig.adf.hostIdentity, silentLogin); loginSSOPage.clickOnSSOButton(); - browser.ignoreSynchronization = true; - loginSSOPage.loginSSOIdentityService(user, password); - await processDefinitionService.init(user, password); + const apiService = new ApiService('activiti', TestConfig.adf.url, TestConfig.adf.hostSso, 'BPM'); + await apiService.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + + processDefinitionService = new ProcessDefinitionsService(apiService); const processDefinition = await processDefinitionService.getProcessDefinitions(simpleApp); - await processInstancesService.init(user, password); + processInstancesService = new ProcessInstancesService(apiService); runningProcess = await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, simpleApp); }); @@ -82,7 +79,7 @@ describe('Process list cloud', () => { done(); }); - it('[C291997] Should be able to change the default columns', async() => { + it('[C291997] Should be able to change the default columns', async () => { expect(processCloudDemoPage.processListCloudComponent().getDataTable().getNumberOfColumns()).toBe(13); processCloudDemoPage.processListCloudComponent().getDataTable().checkColumnIsDisplayed('id'); diff --git a/e2e/process-services-cloud/processListCloud.config.ts b/e2e/process-services-cloud/processListCloud.config.ts index 174f750b62..dd399d093a 100644 --- a/e2e/process-services-cloud/processListCloud.config.ts +++ b/e2e/process-services-cloud/processListCloud.config.ts @@ -17,9 +17,6 @@ export class ProcessListCloudConfiguration { - constructor() { - } - getConfiguration() { return { 'presets': { diff --git a/e2e/process-services-cloud/start-process-cloud.e2e.ts b/e2e/process-services-cloud/start-process-cloud.e2e.ts index 1c278e0da2..b14e313e5c 100644 --- a/e2e/process-services-cloud/start-process-cloud.e2e.ts +++ b/e2e/process-services-cloud/start-process-cloud.e2e.ts @@ -22,7 +22,7 @@ import TestConfig = require('../test.config'); import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { ProcessCloudDemoPage } from '../pages/adf/demo-shell/process-services/processCloudDemoPage'; import { StartProcessPage } from '../pages/adf/process-services/startProcessPage'; -import { Util } from '../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; import { browser } from 'protractor'; describe('Start Process', () => { @@ -33,9 +33,9 @@ describe('Start Process', () => { const appListCloudComponent = new AppListCloudPage(); const processCloudDemoPage = new ProcessCloudDemoPage(); const startProcessPage = new StartProcessPage(); - const processName = Util.generateRandomString(10); - const processName255Characters = Util.generateRandomString(255); - const processNameBiggerThen255Characters = Util.generateRandomString(256); + const processName = StringUtil.generateRandomString(10); + const processName255Characters = StringUtil.generateRandomString(255); + const processNameBiggerThen255Characters = StringUtil.generateRandomString(256); const lengthValidationError = 'Length exceeded, 255 characters max.'; const requiredError = 'Process Name is required', requiredProcessError = 'Process Definition is required'; const processDefinition = 'processwithvariables'; diff --git a/e2e/process-services-cloud/start-task-custom-app-cloud.e2e.ts b/e2e/process-services-cloud/start-task-custom-app-cloud.e2e.ts index 84a232ced4..19aac34cb4 100644 --- a/e2e/process-services-cloud/start-task-custom-app-cloud.e2e.ts +++ b/e2e/process-services-cloud/start-task-custom-app-cloud.e2e.ts @@ -22,7 +22,7 @@ import TestConfig = require('../test.config'); import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { StartTasksCloudPage } from '@alfresco/adf-testing'; -import { Util } from '../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; import { PeopleCloudComponent } from '../pages/adf/process-cloud/peopleCloudComponent'; import { TaskHeaderCloudPage } from '@alfresco/adf-testing'; import { browser } from 'protractor'; @@ -37,10 +37,10 @@ describe('Start Task', () => { const tasksCloudDemoPage = new TasksCloudDemoPage(); const startTask = new StartTasksCloudPage(); const peopleCloudComponent = new PeopleCloudComponent(); - const standaloneTaskName = Util.generateRandomString(5); - const unassignedTaskName = Util.generateRandomString(5); - const taskName255Characters = Util.generateRandomString(255); - const taskNameBiggerThen255Characters = Util.generateRandomString(256); + const standaloneTaskName = StringUtil.generateRandomString(5); + const unassignedTaskName = StringUtil.generateRandomString(5); + const taskName255Characters = StringUtil.generateRandomString(255); + const taskNameBiggerThen255Characters = StringUtil.generateRandomString(256); const lengthValidationError = 'Length exceeded, 255 characters max.'; const requiredError = 'Field required'; const dateValidationError = 'Date format DD/MM/YYYY'; diff --git a/e2e/process-services-cloud/task-filters-cloud.e2e.ts b/e2e/process-services-cloud/task-filters-cloud.e2e.ts index 304c2d0a87..51f7e21664 100644 --- a/e2e/process-services-cloud/task-filters-cloud.e2e.ts +++ b/e2e/process-services-cloud/task-filters-cloud.e2e.ts @@ -17,13 +17,12 @@ import TestConfig = require('../test.config'); -import { LoginSSOPage } from '@alfresco/adf-testing'; +import { LoginSSOPage, TasksService, ApiService } from '@alfresco/adf-testing'; import { SettingsPage } from '../pages/adf/settingsPage'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { AppListCloudPage } from '@alfresco/adf-testing'; -import { Util } from '../util/util'; -import { Tasks } from '../actions/APS-cloud/tasks'; +import { StringUtil } from '@alfresco/adf-testing'; import { browser } from 'protractor'; describe('Task filters cloud', () => { @@ -34,11 +33,11 @@ describe('Task filters cloud', () => { const navigationBarPage = new NavigationBarPage(); const appListCloudComponent = new AppListCloudPage(); const tasksCloudDemoPage = new TasksCloudDemoPage(); - const tasksService: Tasks = new Tasks(); + let tasksService: TasksService; const user = TestConfig.adf.adminEmail, password = TestConfig.adf.adminPassword; let silentLogin; - const newTask = Util.generateRandomString(5), completedTask = Util.generateRandomString(5); + const newTask = StringUtil.generateRandomString(5), completedTask = StringUtil.generateRandomString(5); const simpleApp = 'simple-app'; beforeAll(() => { @@ -62,7 +61,11 @@ describe('Task filters cloud', () => { }); it('[C290009] Should display default filters and created task', async () => { - await tasksService.init(user, password); + const apiService = new ApiService('activiti', TestConfig.adf.url, TestConfig.adf.hostSso, 'BPM'); + await apiService.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + + tasksService = new TasksService(apiService); + const task = await tasksService.createStandaloneTask(newTask, simpleApp); await tasksService.claimTask(task.entry.id, simpleApp); @@ -77,7 +80,11 @@ describe('Task filters cloud', () => { }); it('[C289955] Should display task in Complete Tasks List when task is completed', async () => { - await tasksService.init(user, password); + const apiService = new ApiService('activiti', TestConfig.adf.url, TestConfig.adf.hostSso, 'BPM'); + await apiService.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + + tasksService = new TasksService(apiService); + const task = await tasksService.createStandaloneTask(completedTask, simpleApp); await tasksService.claimTask(task.entry.id, simpleApp); diff --git a/e2e/process-services-cloud/task-header-cloud.e2e.ts b/e2e/process-services-cloud/task-header-cloud.e2e.ts index e9168e2382..7283102ef5 100644 --- a/e2e/process-services-cloud/task-header-cloud.e2e.ts +++ b/e2e/process-services-cloud/task-header-cloud.e2e.ts @@ -17,23 +17,21 @@ import TestConfig = require('../test.config'); import CONSTANTS = require('../util/constants'); -import { Util } from '../util/util'; +import { ApiService, StringUtil } from '@alfresco/adf-testing'; import moment = require('moment'); -import { Tasks } from '../actions/APS-cloud/tasks'; - import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { LoginSSOPage } from '@alfresco/adf-testing'; import { SettingsPage } from '../pages/adf/settingsPage'; import { AppListCloudPage } from '@alfresco/adf-testing'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; -import { TaskHeaderCloudPage } from '@alfresco/adf-testing'; +import { TaskHeaderCloudPage, TasksService } from '@alfresco/adf-testing'; import { browser } from 'protractor'; describe('Task Header cloud component', () => { const user = TestConfig.adf.adminEmail, password = TestConfig.adf.adminPassword; - const basicCreatedTaskName = Util.generateRandomString(), completedTaskName = Util.generateRandomString(); + const basicCreatedTaskName = StringUtil.generateRandomString(), completedTaskName = StringUtil.generateRandomString(); let basicCreatedTask, basicCreatedDate, completedTask, completedCreatedDate, subTask, subTaskCreatedDate; const simpleApp = 'simple-app'; const priority = 30, description = 'descriptionTask', formatDate = 'MMM DD YYYY'; @@ -45,7 +43,7 @@ describe('Task Header cloud component', () => { const navigationBarPage = new NavigationBarPage(); const appListCloudComponent = new AppListCloudPage(); const tasksCloudDemoPage = new TasksCloudDemoPage(); - const tasksService: Tasks = new Tasks(); + let tasksService: TasksService; let silentLogin; @@ -56,7 +54,11 @@ describe('Task Header cloud component', () => { browser.ignoreSynchronization = true; loginSSOPage.loginSSOIdentityService(user, password); - await tasksService.init(user, password); + const apiService = new ApiService('activiti', TestConfig.adf.url, TestConfig.adf.hostSso, 'BPM'); + await apiService.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + + tasksService = new TasksService(apiService); + const createdTaskId = await tasksService.createStandaloneTask(basicCreatedTaskName, simpleApp); await tasksService.claimTask(createdTaskId.entry.id, simpleApp); basicCreatedTask = await tasksService.getTask(createdTaskId.entry.id, simpleApp); @@ -69,7 +71,7 @@ describe('Task Header cloud component', () => { completedTask = await tasksService.getTask(completedTaskId.entry.id, simpleApp); completedCreatedDate = moment(completedTask.entry.createdDate).format(formatDate); - const subTaskId = await tasksService.createStandaloneSubtask(createdTaskId.entry.id, simpleApp, Util.generateRandomString()); + const subTaskId = await tasksService.createStandaloneSubtask(createdTaskId.entry.id, simpleApp, StringUtil.generateRandomString()); await tasksService.claimTask(subTaskId.entry.id, simpleApp); subTask = await tasksService.getTask(subTaskId.entry.id, simpleApp); subTaskCreatedDate = moment(subTask.entry.createdDate).format(formatDate); diff --git a/e2e/process-services-cloud/task-list-properties.e2e.ts b/e2e/process-services-cloud/task-list-properties.e2e.ts index cd73ae7cfc..bc67a31098 100644 --- a/e2e/process-services-cloud/task-list-properties.e2e.ts +++ b/e2e/process-services-cloud/task-list-properties.e2e.ts @@ -17,7 +17,7 @@ import TestConfig = require('../test.config'); -import { LoginSSOPage } from '@alfresco/adf-testing'; +import { StringUtil, TasksService, ProcessDefinitionsService, ProcessInstancesService, LoginSSOPage, ApiService } from '@alfresco/adf-testing'; import { SettingsPage } from '../pages/adf/settingsPage'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; @@ -25,13 +25,9 @@ import { AppListCloudPage } from '@alfresco/adf-testing'; import { ConfigEditorPage } from '../pages/adf/configEditorPage'; import { TaskListCloudConfiguration } from './taskListCloud.config'; -import { Util } from '../util/util'; import moment = require('moment'); import { DateUtil } from '../util/dateUtil'; -import { Tasks } from '../actions/APS-cloud/tasks'; -import { ProcessDefinitions } from '../actions/APS-cloud/process-definitions'; -import { ProcessInstances } from '../actions/APS-cloud/process-instances'; import { NotificationPage } from '../pages/adf/notificationPage'; import { browser } from 'protractor'; @@ -42,12 +38,13 @@ describe('Edit task filters and task list properties', () => { const settingsPage = new SettingsPage(); const loginSSOPage = new LoginSSOPage(); const navigationBarPage = new NavigationBarPage(); + const appListCloudComponent = new AppListCloudPage(); const tasksCloudDemoPage = new TasksCloudDemoPage(); - const tasksService: Tasks = new Tasks(); - const processDefinitionService: ProcessDefinitions = new ProcessDefinitions(); - const processInstancesService: ProcessInstances = new ProcessInstances(); + let tasksService: TasksService; + let processDefinitionService: ProcessDefinitionsService; + let processInstancesService: ProcessInstancesService; const notificationPage = new NotificationPage(); let silentLogin; @@ -91,21 +88,24 @@ describe('Edit task filters and task list properties', () => { '}'); configEditorPage.clickSaveButton(); - await tasksService.init(user, password); - createdTask = await tasksService.createStandaloneTask(Util.generateRandomString(), simpleApp); + const apiService = new ApiService('activiti', TestConfig.adf.url, TestConfig.adf.hostSso, 'BPM'); + await apiService.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + + tasksService = new TasksService(apiService); + createdTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), simpleApp); await tasksService.claimTask(createdTask.entry.id, simpleApp); - notAssigned = await tasksService.createStandaloneTask(Util.generateRandomString(), simpleApp); - priorityTask = await tasksService.createStandaloneTask(Util.generateRandomString(), simpleApp, {priority: priority}); + notAssigned = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), simpleApp); + priorityTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), simpleApp, {priority: priority}); await tasksService.claimTask(priorityTask.entry.id, simpleApp); - notDisplayedTask = await tasksService.createStandaloneTask(Util.generateRandomString(), candidateUserApp); + notDisplayedTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateUserApp); await tasksService.claimTask(notDisplayedTask.entry.id, candidateUserApp); - await processDefinitionService.init(user, password); + processDefinitionService = new ProcessDefinitionsService(apiService); processDefinition = await processDefinitionService.getProcessDefinitions(simpleApp); - await processInstancesService.init(user, password); + processInstancesService = new ProcessInstancesService(apiService); processInstance = await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, simpleApp); - subTask = await tasksService.createStandaloneSubtask(createdTask.entry.id, simpleApp, Util.generateRandomString()); + subTask = await tasksService.createStandaloneSubtask(createdTask.entry.id, simpleApp, StringUtil.generateRandomString()); await tasksService.claimTask(subTask.entry.id, simpleApp); done(); diff --git a/e2e/process-services-cloud/task-list-selection.e2e.ts b/e2e/process-services-cloud/task-list-selection.e2e.ts index b2c9c14af9..9ba734b21c 100644 --- a/e2e/process-services-cloud/task-list-selection.e2e.ts +++ b/e2e/process-services-cloud/task-list-selection.e2e.ts @@ -17,13 +17,12 @@ import TestConfig = require('../test.config'); -import { LoginSSOPage } from '@alfresco/adf-testing'; +import { ApiService, LoginSSOPage, TasksService } from '@alfresco/adf-testing'; import { SettingsPage } from '../pages/adf/settingsPage'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { AppListCloudPage } from '@alfresco/adf-testing'; -import { Util } from '../util/util'; -import { Tasks } from '../actions/APS-cloud/tasks'; +import { StringUtil } from '@alfresco/adf-testing'; import { browser } from 'protractor'; describe('Task list cloud - selection', () => { @@ -35,7 +34,7 @@ describe('Task list cloud - selection', () => { const appListCloudComponent = new AppListCloudPage(); const tasksCloudDemoPage = new TasksCloudDemoPage(); - const tasksService: Tasks = new Tasks(); + let tasksService: TasksService; let silentLogin; const simpleApp = 'simple-app'; @@ -51,9 +50,13 @@ describe('Task list cloud - selection', () => { browser.ignoreSynchronization = true; loginSSOPage.loginSSOIdentityService(user, password); - await tasksService.init(user, password); + const apiService = new ApiService('activiti', TestConfig.adf.url, TestConfig.adf.hostSso, 'BPM'); + await apiService.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + + tasksService = new TasksService(apiService); + for (let i = 0; i < noOfTasks; i++) { - response = await tasksService.createStandaloneTask(Util.generateRandomString(), simpleApp); + response = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), simpleApp); await tasksService.claimTask(response.entry.id, simpleApp); tasks.push(response.entry.name); } diff --git a/e2e/process-services-cloud/tasks-custom-filters.e2e.ts b/e2e/process-services-cloud/tasks-custom-filters.e2e.ts index b92b12db77..aa2d9d5396 100644 --- a/e2e/process-services-cloud/tasks-custom-filters.e2e.ts +++ b/e2e/process-services-cloud/tasks-custom-filters.e2e.ts @@ -17,17 +17,12 @@ import TestConfig = require('../test.config'); -import { LoginSSOPage } from '@alfresco/adf-testing'; +import { StringUtil, TasksService, QueryService, ProcessDefinitionsService, ProcessInstancesService, LoginSSOPage, ApiService } from '@alfresco/adf-testing'; import { SettingsPage } from '../pages/adf/settingsPage'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { AppListCloudPage } from '@alfresco/adf-testing'; -import { Tasks } from '../actions/APS-cloud/tasks'; -import { ProcessDefinitions } from '../actions/APS-cloud/process-definitions'; -import { ProcessInstances } from '../actions/APS-cloud/process-instances'; -import { Query } from '../actions/APS-cloud/query'; -import { Util } from '../util/util'; import { browser } from 'protractor'; describe('Task filters cloud', () => { @@ -38,14 +33,14 @@ describe('Task filters cloud', () => { const navigationBarPage = new NavigationBarPage(); const appListCloudComponent = new AppListCloudPage(); const tasksCloudDemoPage = new TasksCloudDemoPage(); - const tasksService: Tasks = new Tasks(); - const processDefinitionService: ProcessDefinitions = new ProcessDefinitions(); - const processInstancesService: ProcessInstances = new ProcessInstances(); - const queryService: Query = new Query(); + let tasksService: TasksService; + let processDefinitionService: ProcessDefinitionsService; + let processInstancesService: ProcessInstancesService; + let queryService: QueryService; let silentLogin; - const createdTaskName = Util.generateRandomString(), completedTaskName = Util.generateRandomString(), - assignedTaskName = Util.generateRandomString(), deletedTaskName = Util.generateRandomString(); + const createdTaskName = StringUtil.generateRandomString(), completedTaskName = StringUtil.generateRandomString(), + assignedTaskName = StringUtil.generateRandomString(), deletedTaskName = StringUtil.generateRandomString(); const simpleApp = 'simple-app'; const user = TestConfig.adf.adminEmail, password = TestConfig.adf.adminPassword; let assignedTask, deletedTask, suspendedTasks; @@ -60,7 +55,10 @@ describe('Task filters cloud', () => { browser.ignoreSynchronization = true; loginSSOPage.loginSSOIdentityService(user, password); - await tasksService.init(user, password); + const apiService = new ApiService('activiti', TestConfig.adf.url, TestConfig.adf.hostSso, 'BPM'); + await apiService.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + + tasksService = new TasksService(apiService); await tasksService.createStandaloneTask(createdTaskName, simpleApp); assignedTask = await tasksService.createStandaloneTask(assignedTaskName, simpleApp); @@ -73,12 +71,13 @@ describe('Task filters cloud', () => { priority = priority + 20; } - await processDefinitionService.init(user, password); + processDefinitionService = new ProcessDefinitionsService(apiService); const processDefinition = await processDefinitionService.getProcessDefinitions(simpleApp); - await processInstancesService.init(user, password); + processInstancesService = new ProcessInstancesService(apiService); const processInstance = await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, simpleApp); const secondProcessInstance = await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, simpleApp); - await queryService.init(user, password); + + queryService = new QueryService(apiService); suspendedTasks = await queryService.getProcessInstanceTasks(processInstance.entry.id, simpleApp); await queryService.getProcessInstanceTasks(secondProcessInstance.entry.id, simpleApp); await processInstancesService.suspendProcessInstance(processInstance.entry.id, simpleApp); diff --git a/e2e/process-services/start-process-component.e2e.ts b/e2e/process-services/start-process-component.e2e.ts index be45253e7f..be7abe67b4 100644 --- a/e2e/process-services/start-process-component.e2e.ts +++ b/e2e/process-services/start-process-component.e2e.ts @@ -38,6 +38,7 @@ import dateFormat = require('dateformat'); import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import path = require('path'); +import { StringUtil } from '@alfresco/adf-testing'; describe('Start Process Component', () => { @@ -54,8 +55,8 @@ describe('Start Process Component', () => { const simpleApp = resources.Files.WIDGETS_SMOKE_TEST; let appId, procUserModel, secondProcUserModel, tenantId, simpleAppCreated; const processModelWithSe = 'process_with_se', processModelWithoutSe = 'process_without_se'; - const processName255Characters = Util.generateRandomString(255); - const processNameBiggerThen255Characters = Util.generateRandomString(256); + const processName255Characters = StringUtil.generateRandomString(255); + const processNameBiggerThen255Characters = StringUtil.generateRandomString(256); const lengthValidationError = 'Length exceeded, 255 characters max.'; const auditLogFile = path.join('../e2e/download/', 'Audit.pdf'); diff --git a/e2e/process-services/start-task-task-app.e2e.ts b/e2e/process-services/start-task-task-app.e2e.ts index fbe87390ff..894ad6fd80 100644 --- a/e2e/process-services/start-task-task-app.e2e.ts +++ b/e2e/process-services/start-task-task-app.e2e.ts @@ -33,7 +33,7 @@ import resources = require('../util/resources'); import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import { UsersActions } from '../actions/users.actions'; -import { Util } from '../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; import fs = require('fs'); import path = require('path'); @@ -50,8 +50,8 @@ describe('Start Task - Task App', () => { const formFieldValue = 'First value '; const taskPage = new TasksPage(); const firstComment = 'comm1', firstChecklist = 'checklist1'; - const taskName255Characters = Util.generateRandomString(255); - const taskNameBiggerThen255Characters = Util.generateRandomString(256); + const taskName255Characters = StringUtil.generateRandomString(255); + const taskNameBiggerThen255Characters = StringUtil.generateRandomString(256); const lengthValidationError = 'Length exceeded, 255 characters max.'; const tasks = ['Modifying task', 'Information box', 'No form', 'Not Created', 'Refreshing form', 'Assignee task', 'Attach File']; const showHeaderTask = 'Show Header'; diff --git a/e2e/process-services/task-details-form.e2e.ts b/e2e/process-services/task-details-form.e2e.ts index b77a7bd348..04b7d0b13a 100644 --- a/e2e/process-services/task-details-form.e2e.ts +++ b/e2e/process-services/task-details-form.e2e.ts @@ -16,7 +16,7 @@ */ import TestConfig = require('../test.config'); -import { Util } from '../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; import CONSTANTS = require('../util/constants'); import { LoginPage } from '../pages/adf/loginPage'; @@ -41,19 +41,19 @@ describe('Task Details - Form', () => { beforeAll(async (done) => { const users = new UsersActions(); const attachedFormModel = { - 'name': Util.generateRandomString(), + 'name': StringUtil.generateRandomString(), 'description': '', 'modelType': 2, 'stencilSet': 0 }; const otherTaskModel = new StandaloneTask(); const otherAttachedFormModel = { - 'name': Util.generateRandomString(), + 'name': StringUtil.generateRandomString(), 'description': '', 'modelType': 2, 'stencilSet': 0 }; - const newFormModel = { 'name': Util.generateRandomString(), 'description': '', 'modelType': 2, 'stencilSet': 0 }; + const newFormModel = { 'name': StringUtil.generateRandomString(), 'description': '', 'modelType': 2, 'stencilSet': 0 }; this.alfrescoJsApi = new AlfrescoApi({ provider: 'BPM', diff --git a/e2e/restAPI/httpRequest/HTTPRequestPublic.js b/e2e/restAPI/httpRequest/HTTPRequestPublic.js index 3d58a7249a..535ab6dc8c 100644 --- a/e2e/restAPI/httpRequest/HTTPRequestPublic.js +++ b/e2e/restAPI/httpRequest/HTTPRequestPublic.js @@ -17,6 +17,6 @@ var HTTPRequestPublic = function(authorization) { this.authorization = authorization; -} +}; module.exports = HTTPRequestPublic; diff --git a/e2e/search/components/search-checkList.e2e.ts b/e2e/search/components/search-checkList.e2e.ts index f4a0b2139d..73c56c4676 100644 --- a/e2e/search/components/search-checkList.e2e.ts +++ b/e2e/search/components/search-checkList.e2e.ts @@ -31,7 +31,7 @@ import { SearchConfiguration } from '../search.config'; import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import { UploadActions } from '../../actions/ACS/upload.actions'; import { browser } from 'protractor'; -import { Util } from '../../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; describe('Search Checklist Component', () => { @@ -51,7 +51,7 @@ describe('Search Checklist Component', () => { custom: 'TEST_NAME' }; - const randomName = Util.generateRandomString(); + const randomName = StringUtil.generateRandomString(); const nodeNames = { document: `${randomName}.txt`, folder: `${randomName}Folder` diff --git a/e2e/search/components/search-radio.e2e.ts b/e2e/search/components/search-radio.e2e.ts index 6f86234e75..e515248938 100644 --- a/e2e/search/components/search-radio.e2e.ts +++ b/e2e/search/components/search-radio.e2e.ts @@ -31,7 +31,7 @@ import { SearchConfiguration } from '../search.config'; import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import { UploadActions } from '../../actions/ACS/upload.actions'; import { browser } from 'protractor'; -import { Util } from '../../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; describe('Search Radio Component', () => { @@ -53,7 +53,7 @@ describe('Search Radio Component', () => { custom: 'TEST_NAME' }; - const randomName = Util.generateRandomString(); + const randomName = StringUtil.generateRandomString(); const nodeNames = { document: `${randomName}.txt`, folder: `${randomName}Folder` diff --git a/e2e/search/search-component.e2e.ts b/e2e/search/search-component.e2e.ts index 8909337c36..e0fdba8876 100644 --- a/e2e/search/search-component.e2e.ts +++ b/e2e/search/search-component.e2e.ts @@ -29,6 +29,7 @@ import { FolderModel } from '../models/ACS/folderModel'; import TestConfig = require('../test.config'); import { Util } from '../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import { UploadActions } from '../actions/ACS/upload.actions'; @@ -43,7 +44,7 @@ describe('Search component - Search Bar', () => { firstChar: 'x', secondChar: 'y', thirdChar: 'z', - name: 'impossible-name-folder' + Util.generateRandomString(8) + name: 'impossible-name-folder' + StringUtil.generateRandomString(8) } }; @@ -57,10 +58,10 @@ describe('Search component - Search Bar', () => { const acsUser = new AcsUserModel(); const uploadActions = new UploadActions(); - const filename = Util.generateRandomString(16); - const firstFolderName = Util.generateRandomString(16); - const secondFolderName = Util.generateRandomString(16); - const thirdFolderName = Util.generateRandomString(16); + const filename = StringUtil.generateRandomString(16); + const firstFolderName = StringUtil.generateRandomString(16); + const secondFolderName = StringUtil.generateRandomString(16); + const thirdFolderName = StringUtil.generateRandomString(16); const filesToDelete = []; const firstFileModel = new FileModel({ @@ -98,7 +99,7 @@ describe('Search component - Search Bar', () => { Object.assign(firstFileModel, firstFileUploaded.entry); fileHighlightUploaded = await this.alfrescoJsApi.nodes.addNode('-my-', { - 'name': Util.generateRandomString(16), + 'name': StringUtil.generateRandomString(16), 'nodeType': 'cm:content', 'properties': { 'cm:title': term, diff --git a/e2e/search/search-filters.e2e.ts b/e2e/search/search-filters.e2e.ts index 72395d6edb..a71226d223 100644 --- a/e2e/search/search-filters.e2e.ts +++ b/e2e/search/search-filters.e2e.ts @@ -28,7 +28,7 @@ import { AcsUserModel } from '../models/ACS/acsUserModel'; import { FileModel } from '../models/ACS/fileModel'; import TestConfig = require('../test.config'); -import { Util } from '../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; import resources = require('../util/resources'); import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; @@ -50,11 +50,11 @@ describe('Search Filters', () => { const acsUser = new AcsUserModel(); - const filename = Util.generateRandomString(16); - const fileNamePrefix = Util.generateRandomString(5); - const uniqueFileName1 = fileNamePrefix + Util.generateRandomString(5); - const uniqueFileName2 = fileNamePrefix + Util.generateRandomString(5); - const uniqueFileName3 = fileNamePrefix + Util.generateRandomString(5); + const filename = StringUtil.generateRandomString(16); + const fileNamePrefix = StringUtil.generateRandomString(5); + const uniqueFileName1 = fileNamePrefix + StringUtil.generateRandomString(5); + const uniqueFileName2 = fileNamePrefix + StringUtil.generateRandomString(5); + const uniqueFileName3 = fileNamePrefix + StringUtil.generateRandomString(5); const fileModel = new FileModel({ 'name': filename, 'shortName': filename.substring(0, 8) diff --git a/e2e/search/search-multiselect.e2e.ts b/e2e/search/search-multiselect.e2e.ts index 8d19614bcf..8b2934b333 100644 --- a/e2e/search/search-multiselect.e2e.ts +++ b/e2e/search/search-multiselect.e2e.ts @@ -18,7 +18,7 @@ import TestConfig = require('../test.config'); import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; -import { Util } from '../util/util'; +import { StringUtil } from '@alfresco/adf-testing'; import resources = require('../util/resources'); import CONSTANTS = require('../util/constants'); import { UploadActions } from '../actions/ACS/upload.actions'; @@ -51,7 +51,7 @@ describe('Search Component - Multi-Select Facet', () => { let jpgFile, jpgFileSite, txtFile, txtFileSite; const acsUser = new AcsUserModel(); - const randomName = Util.generateRandomString(); + const randomName = StringUtil.generateRandomString(); const jpgFileInfo = new FileModel({ 'location': resources.Files.ADF_DOCUMENTS.JPG.file_location, 'name': `${randomName}.jpg` @@ -69,7 +69,7 @@ describe('Search Component - Multi-Select Facet', () => { await this.alfrescoJsApi.login(acsUser.id, acsUser.password); site = await this.alfrescoJsApi.core.sitesApi.createSite({ - title: Util.generateRandomString(8), + title: StringUtil.generateRandomString(8), visibility: 'PUBLIC' }); @@ -132,7 +132,7 @@ describe('Search Component - Multi-Select Facet', () => { const userUploadingTxt = new AcsUserModel(); const userUploadingImg = new AcsUserModel(); - const randomName = Util.generateRandomString(); + const randomName = StringUtil.generateRandomString(); const jpgFileInfo = new FileModel({ 'location': resources.Files.ADF_DOCUMENTS.JPG.file_location, 'name': `${randomName}.jpg` @@ -151,7 +151,7 @@ describe('Search Component - Multi-Select Facet', () => { await this.alfrescoJsApi.login(userUploadingTxt.id, userUploadingTxt.password); site = await this.alfrescoJsApi.core.sitesApi.createSite({ - title: Util.generateRandomString(8), + title: StringUtil.generateRandomString(8), visibility: 'PUBLIC' }); @@ -201,7 +201,7 @@ describe('Search Component - Multi-Select Facet', () => { let txtFile; const acsUser = new AcsUserModel(); - const randomName = Util.generateRandomString(); + const randomName = StringUtil.generateRandomString(); const txtFileInfo = new FileModel({ 'location': resources.Files.ADF_DOCUMENTS.TXT_0B.file_location, 'name': `${randomName}.txt` @@ -215,7 +215,7 @@ describe('Search Component - Multi-Select Facet', () => { await this.alfrescoJsApi.login(acsUser.id, acsUser.password); site = await this.alfrescoJsApi.core.sitesApi.createSite({ - title: Util.generateRandomString(8), + title: StringUtil.generateRandomString(8), visibility: 'PUBLIC' }); diff --git a/e2e/search/search-page-component.e2e.ts b/e2e/search/search-page-component.e2e.ts index 24c5fba447..a9d8d156ef 100644 --- a/e2e/search/search-page-component.e2e.ts +++ b/e2e/search/search-page-component.e2e.ts @@ -31,6 +31,7 @@ import { FileModel } from '../models/ACS/fileModel'; import TestConfig = require('../test.config'); import { Util } from '../util/util'; import resources = require('../util/resources'); +import { StringUtil } from '@alfresco/adf-testing'; import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import { UploadActions } from '../actions/ACS/upload.actions'; @@ -40,7 +41,7 @@ describe('Search component - Search Page', () => { active: { firstFile: null, secondFile: null, - base: Util.generateRandomString(7), + base: StringUtil.generateRandomString(7), extension: '.txt' }, no_permission: { @@ -56,17 +57,16 @@ describe('Search component - Search Page', () => { const filePreviewPage = new FilePreviewPage(); const acsUser = new AcsUserModel(); - const emptyFolderModel = new FolderModel({ 'name': 'search' + Util.generateRandomString() }); + const emptyFolderModel = new FolderModel({ 'name': 'search' + StringUtil.generateRandomString() }); let firstFileModel; const newFolderModel = new FolderModel({ 'name': 'newFolder' }); let fileNames = []; - let adminFileNames = []; const nrOfFiles = 15; const adminNrOfFiles = 5; beforeAll(async (done) => { fileNames = Util.generateSequenceFiles(1, nrOfFiles, search.active.base, search.active.extension); - adminFileNames = Util.generateSequenceFiles(nrOfFiles + 1, nrOfFiles + adminNrOfFiles, search.active.base, search.active.extension); + const adminFileNames = Util.generateSequenceFiles(nrOfFiles + 1, nrOfFiles + adminNrOfFiles, search.active.base, search.active.extension); search.active.firstFile = fileNames[0]; search.active.secondFile = fileNames[1]; fileNames.splice(0, 1); @@ -84,9 +84,7 @@ describe('Search component - Search Page', () => { }); await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); - await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser); - await this.alfrescoJsApi.login(acsUser.id, acsUser.password); await uploadActions.createFolder(this.alfrescoJsApi, emptyFolderModel.name, '-my-'); @@ -108,7 +106,7 @@ describe('Search component - Search Page', () => { }); it('[C260264] Should display message when no results are found', () => { - const notExistentFileName = Util.generateRandomString(); + const notExistentFileName = StringUtil.generateRandomString(); searchDialog.checkSearchBarIsNotVisible().checkSearchIconIsVisible().clickOnSearchIcon() .enterTextAndPressEnter(notExistentFileName); searchResultPage.checkNoResultMessageIsDisplayed(); diff --git a/e2e/test.config.js b/e2e/test.config.js index 1c298d23c9..4fabcf4f73 100644 --- a/e2e/test.config.js +++ b/e2e/test.config.js @@ -82,6 +82,7 @@ module.exports = { baseUrl = HOST; } + return `http://${baseUrl}/auth/admin/realms/alfresco`; }() diff --git a/e2e/util/material.ts b/e2e/util/material.ts index 3805b29ba7..13cf5fcadc 100644 --- a/e2e/util/material.ts +++ b/e2e/util/material.ts @@ -16,10 +16,10 @@ */ import { ElementFinder } from 'protractor'; -import { Util } from './util'; +import { BrowserVisibility } from '@alfresco/adf-testing'; export function uncheck(el: ElementFinder) { - Util.waitUntilElementIsVisible(el); + BrowserVisibility.waitUntilElementIsVisible(el); el.getAttribute('class').then((classList) => { if (classList && classList.indexOf('mat-checked') > -1) { el.click(); @@ -29,7 +29,7 @@ export function uncheck(el: ElementFinder) { } export function check(el: ElementFinder) { - Util.waitUntilElementIsVisible(el); + BrowserVisibility.waitUntilElementIsVisible(el); el.getAttribute('class').then((classList) => { if (classList && classList.indexOf('mat-checked') === -1) { el.click(); diff --git a/e2e/util/util.ts b/e2e/util/util.ts index 27a7272c35..c349d91452 100644 --- a/e2e/util/util.ts +++ b/e2e/util/util.ts @@ -15,117 +15,11 @@ * limitations under the License. */ -import { browser, protractor } from 'protractor'; +import { browser } from 'protractor'; import fs = require('fs'); -import path = require('path'); -import TestConfig = require('../test.config'); - -const until = protractor.ExpectedConditions; -const DEFAULT_TIMEOUT = parseInt(TestConfig.main.timeout, 10); export class Util { - /** - * creates an absolute path string if multiple file uploads are required - */ - static uploadParentFolder(filePath) { - const parentFolder = path.resolve(path.join(__dirname, 'test')); - return path.resolve(path.join(parentFolder, filePath)); - } - - /** - * Generates a random string. - * - * @param length {int} If this parameter is not provided the length is set to 8 by default. - * @return {string} - * @method generateRandomString - */ - static generateRandomString(length: number = 8): string { - let text = ''; - const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; - - for (let i = 0; i < length; i++) { - text += possible.charAt(Math.floor(Math.random() * possible.length)); - } - - return text; - } - - static generatePasswordString(length: number = 8): string { - let text = ''; - const possibleUpperCase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; - const possibleLowerCase = 'abcdefghijklmnopqrstuvwxyz'; - const lowerCaseLimit = Math.floor(length / 2); - - for (let i = 0; i < lowerCaseLimit; i++) { - text += possibleLowerCase.charAt(Math.floor(Math.random() * possibleLowerCase.length)); - } - - for (let i = 0; i < length - lowerCaseLimit; i++) { - text += possibleUpperCase.charAt(Math.floor(Math.random() * possibleUpperCase.length)); - } - - return text; - } - - /** - * Generates a random string - digits only. - * - * @param length {int} If this parameter is not provided the length is set to 8 by default. - * @return {string} - * @method generateRandomString - */ - static generateRandomStringDigits(length: number = 8): string { - let text = ''; - const possible = '0123456789'; - - for (let i = 0; i < length; i++) { - text += possible.charAt(Math.floor(Math.random() * possible.length)); - } - - return text; - } - - /** - * Generates a random string - non-latin characters only. - * - * @param length {int} If this parameter is not provided the length is set to 3 by default. - * @return {string} - * @method generateRandomString - */ - static generateRandomStringNonLatin(length: number = 3): string { - let text = ''; - const possible = '密码你好𠮷'; - - for (let i = 0; i < length; i++) { - text += possible.charAt(Math.floor(Math.random() * possible.length)); - } - - return text; - } - - /** - * Generates a random string to lowercase. - * - * @param length {int} If this parameter is not provided the length is set to 8 by default. - * @return {string} - * @method generateRandomString - */ - static generateRandomStringToLowerCase(length?: number): string { - return this.generateRandomString(length).toLowerCase(); - } - - /** - * Generates a random string to uppercase. - * - * @param length {int} If this parameter is not provided the length is set to 8 by default. - * @return {string} - * @method generateRandomString - */ - static generateRandomStringToUpperCase(length?: number): string { - return this.generateRandomString(length).toUpperCase(); - } - /** * Generates a sequence of files with name: baseName + index + extension (e.g.) baseName1.txt, baseName2.txt, ... * @@ -144,72 +38,6 @@ export class Util { return fileNames; } - /** - * Generates a random number (as int) in the interval [min, max). - * - * @param min {int} - * @param max {int} - * @return {number} - * @method generateRandomInt - */ - static generateRandomInt(min, max) { - return Math.floor(Math.random() * (max - min) + min); - } - - /** - * Generates a random email address following the format: abcdef@activiti.test.com - * - * @param length {int} - * @return {string} - * @method generateRandomEmail - */ - static generateRandomEmail(length: number = 5): string { - let email = ''; - const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; - - for (let i = 0; i < length; i++) { - email += possible.charAt(Math.floor(Math.random() * possible.length)); - } - - email += '@activiti.test.com'; - return email.toLowerCase(); - } - - /** - * Generates a random date inside the interval [1990, 2100) following the format dd.mm.yyyy - * - * @method generateRandomDateFormat - */ - static generateRandomDateFormat(): string { - const day = Math.floor(Math.random() * (29 - 1) + 1); - const month = Math.floor(Math.random() * (12 - 1) + 1); - const year = Math.floor(Math.random() * (2100 - 1990) + 1990); - - return day + '.' + month + '.' + year; - } - - /** - * Generates a random date inside the interval [1990, 2100) following the format dd-mm-yyyy. - * - * @method generateRandomDate - */ - static generateRandomDate(): string { - let dayText; - let monthText; - - const day = (Math.floor(Math.random() * (29 - 1) + 1)); - if (day < 10) { - dayText = '0' + day.toString(); - } - const month = Math.floor(Math.random() * (12 - 1) + 1); - if (month < 10) { - monthText = '0' + month.toString(); - } - const year = Math.floor(Math.random() * (2100 - 1990) + 1990); - - return dayText + '-' + monthText + '-' + year.toString(); - } - /** * Returns TRUE if the first array contains all elements from the second one. * @@ -228,122 +56,6 @@ export class Util { }); } - /** - * Reads the content of the file and provides it on callback - * - * @param filePath - * @param callback - * @method readFile - */ - static readFile(filePath, callback) { - const absolutePath = path.join(TestConfig.main.rootPath + filePath); - fs.readFile(absolutePath, { encoding: 'utf8' }, function (err, data) { - if (err) { - throw err; - } - callback(data); - }); - } - - static waitUntilElementIsVisible(elementToCheck, waitTimeout: number = DEFAULT_TIMEOUT) { - let isDisplayed = false; - return browser.wait(() => { - browser.waitForAngularEnabled(); - - elementToCheck.isDisplayed().then( - () => { - isDisplayed = true; - }, - (err) => { - isDisplayed = false; - } - ); - return isDisplayed; - }, waitTimeout, 'Element is not visible ' + elementToCheck.locator()); - } - - static waitUntilElementIsPresent(elementToCheck, waitTimeout: number = DEFAULT_TIMEOUT) { - browser.waitForAngularEnabled(); - - return browser.wait(until.presenceOf(elementToCheck), waitTimeout, 'Element is not present ' + elementToCheck.locator()); - } - - /* - * Wait for element to have value - */ - static waitUntilElementHasValue(elementToCheck, elementValue, waitTimeout: number = DEFAULT_TIMEOUT) { - browser.waitForAngularEnabled(); - - browser.wait(until.textToBePresentInElementValue(elementToCheck, elementValue), waitTimeout, 'Element doesn\'t have a value ' + elementToCheck.locator()); - } - - /* - * Wait for element to be clickable - */ - static waitUntilElementIsClickable(elementToCheck, waitTimeout: number = DEFAULT_TIMEOUT) { - return browser.wait(() => { - browser.waitForAngularEnabled(); - return until.elementToBeClickable(elementToCheck); - }, waitTimeout, 'Element is not Clickable' + elementToCheck.locator()); - } - - /* - * Wait for element to not be visible - */ - static waitUntilElementIsNotVisible(elementToCheck, waitTimeout: number = DEFAULT_TIMEOUT) { - return browser.wait(() => { - browser.waitForAngularEnabled(); - return elementToCheck.isPresent().then(function (present) { - return !present; - }); - }, waitTimeout, 'Element is Visible and it should not' + elementToCheck.locator()); - } - - static waitUntilElementIsNotDisplayed(elementToCheck, waitTimeout: number = DEFAULT_TIMEOUT) { - return browser.wait(() => { - browser.waitForAngularEnabled(); - return elementToCheck.isDisplayed().then(function (present) { - return !present; - }); - }, waitTimeout, 'Element is dysplayed and it should not' + elementToCheck.locator()); - } - - /* - * Wait for element to not be visible - */ - static waitUntilElementIsStale(elementToCheck, waitTimeout: number = DEFAULT_TIMEOUT) { - return browser.wait(until.stalenessOf(elementToCheck), waitTimeout, 'Element is not in stale ' + elementToCheck.locator()); - } - - /* - * Wait for element to not be visible - */ - static waitUntilElementIsNotOnPage(elementToCheck, waitTimeout: number = DEFAULT_TIMEOUT) { - return browser.wait(() => { - browser.waitForAngularEnabled(); - return browser.wait(until.not(until.visibilityOf(elementToCheck))); - }, waitTimeout, 'Element is not in the page ' + elementToCheck.locator()); - } - - static waitUntilElementIsOnPage(elementToCheck, waitTimeout: number = DEFAULT_TIMEOUT) { - return browser.wait(browser.wait(until.visibilityOf(elementToCheck)), waitTimeout); - } - - /** - * @method waitForPage - */ - static waitForPage() { - browser.wait(function () { - const deferred = protractor.promise.defer(); - browser.executeScript('return document.readyState').then((text) => { - deferred.fulfill(() => { - return text === 'complete'; - }); - }); - return deferred.promise; - }); - } - static openNewTabInBrowser() { browser.driver.executeScript("window.open('about: blank', '_blank');"); } diff --git a/lib/testing/src/lib/content-services/actions/example.action.ts b/lib/testing/src/lib/content-services/actions/example.action.ts index e3ebd14983..9ad97c1557 100644 --- a/lib/testing/src/lib/content-services/actions/example.action.ts +++ b/lib/testing/src/lib/content-services/actions/example.action.ts @@ -1,6 +1,6 @@ /*! * @license - * Copyright 2016 Alfresco Software, Ltd. + * Copyright 2019 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. diff --git a/lib/testing/src/lib/content-services/actions/public-api.ts b/lib/testing/src/lib/content-services/actions/public-api.ts index c5eb261e15..005ff462eb 100644 --- a/lib/testing/src/lib/content-services/actions/public-api.ts +++ b/lib/testing/src/lib/content-services/actions/public-api.ts @@ -1,5 +1,18 @@ -/* - * Public API Surface of testing +/*! + * @license + * Copyright 2019 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. */ export * from './example.action'; diff --git a/lib/testing/src/lib/content-services/pages/example.page.ts b/lib/testing/src/lib/content-services/pages/example.page.ts index cb7bdb491f..9c83469852 100644 --- a/lib/testing/src/lib/content-services/pages/example.page.ts +++ b/lib/testing/src/lib/content-services/pages/example.page.ts @@ -1,6 +1,6 @@ /*! * @license - * Copyright 2016 Alfresco Software, Ltd. + * Copyright 2019 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. diff --git a/lib/testing/src/lib/content-services/pages/public-api.ts b/lib/testing/src/lib/content-services/pages/public-api.ts index 12e314e7c7..1233d842d2 100644 --- a/lib/testing/src/lib/content-services/pages/public-api.ts +++ b/lib/testing/src/lib/content-services/pages/public-api.ts @@ -1,5 +1,18 @@ -/* - * Public API Surface of testing +/*! + * @license + * Copyright 2019 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. */ export * from './example.page'; diff --git a/lib/testing/src/lib/content-services/public-api.ts b/lib/testing/src/lib/content-services/public-api.ts index dcc70fb91a..357976c2aa 100644 --- a/lib/testing/src/lib/content-services/public-api.ts +++ b/lib/testing/src/lib/content-services/public-api.ts @@ -1,5 +1,18 @@ -/* - * Public API Surface of testing +/*! + * @license + * Copyright 2019 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. */ export * from './pages/public-api'; diff --git a/e2e/actions/APS-cloud/apiservice.ts b/lib/testing/src/lib/core/actions/api.service.ts similarity index 66% rename from e2e/actions/APS-cloud/apiservice.ts rename to lib/testing/src/lib/core/actions/api.service.ts index 6ef8cef966..4e692c79b2 100644 --- a/e2e/actions/APS-cloud/apiservice.ts +++ b/lib/testing/src/lib/core/actions/api.service.ts @@ -16,46 +16,42 @@ */ import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; -import TestConfig = require('../../test.config'); import { AlfrescoApiConfig } from '@alfresco/js-api/src/alfrescoApiConfig'; export class ApiService { - HOST_SSO: string = TestConfig.adf.hostSso; - HOST_BPM: string = TestConfig.adf.hostBPM; - HOST_IDENTITY: string = TestConfig.adf.hostIdentity; + apiService: AlfrescoApi; - config: AlfrescoApiConfig = { - provider: 'BPM', - hostBpm: this.HOST_BPM, - authType: 'OAUTH', - oauth2: { - host: this.HOST_SSO, - clientId: 'activiti', - scope: 'openid', - secret: '', - implicitFlow: false, - silentLogin: false, - redirectUri: '/', - redirectUriLogout: '/logout' - } + config: AlfrescoApiConfig; - }; + constructor(clientId: string, host: string, hostSso: string, provider: string) { + this.config = { + provider: provider, + hostBpm: host, + hostEcm: host, + authType: 'OAUTH', + oauth2: { + host: hostSso, + clientId: clientId, + scope: 'openid', + secret: '', + implicitFlow: false, + silentLogin: false, + redirectUri: '/', + redirectUriLogout: '/logout' + } - apiService: any; + }; - constructor(clientId: string = 'activiti') { - this.config.oauth2.clientId = clientId; this.apiService = new AlfrescoApi(this.config); - } - async login(username, password) { + async login(username: string, password: string) { await this.apiService.login(username, password); } - async performBpmOperation(path, method, queryParams, postBody) { - const uri = this.HOST_BPM + path; + async performBpmOperation(path: string, method: string, queryParams: any, postBody: any) { + const uri = this.config.hostBpm + path; const pathParams = {}, formParams = {}; const contentTypes = ['application/json']; const accepts = ['application/json']; @@ -71,8 +67,8 @@ export class ApiService { }); } - async performIdentityOperation(path, method, queryParams, postBody) { - const uri = this.HOST_IDENTITY + path; + async performIdentityOperation(path: string, method: string, queryParams: any, postBody: any) { + const uri = this.config.oauth2.host.replace('/realms', '/admin/realms') + path; const pathParams = {}, formParams = {}; const contentTypes = ['application/json']; const accepts = ['application/json']; diff --git a/e2e/actions/APS-cloud/groupIdentity.ts b/lib/testing/src/lib/core/actions/identity/group-identity.service.ts similarity index 86% rename from e2e/actions/APS-cloud/groupIdentity.ts rename to lib/testing/src/lib/core/actions/identity/group-identity.service.ts index 899cd4e066..9f7b9a346d 100644 --- a/e2e/actions/APS-cloud/groupIdentity.ts +++ b/lib/testing/src/lib/core/actions/identity/group-identity.service.ts @@ -15,18 +15,18 @@ * limitations under the License. */ -import { ApiService } from '../APS-cloud/apiservice'; -import { Util } from '../../util/util'; +import { ApiService } from '../api.service'; +import { StringUtil } from '../../string.util'; -export class GroupIdentity { +export class GroupIdentityService { - api: ApiService = new ApiService(); + api: ApiService; - async init(username, password) { - await this.api.login(username, password); + constructor(api: ApiService) { + this.api = api; } - async createIdentityGroup(groupName = Util.generateRandomString(5)) { + async createIdentityGroup(groupName = StringUtil.generateRandomString(5)) { await this.createGroup(groupName); const group = await this.getGroupInfoByGroupName(groupName); return group; diff --git a/e2e/actions/APS-cloud/identity.ts b/lib/testing/src/lib/core/actions/identity/identity.service.ts similarity index 62% rename from e2e/actions/APS-cloud/identity.ts rename to lib/testing/src/lib/core/actions/identity/identity.service.ts index d8b616f3d4..e42a46e4a7 100644 --- a/e2e/actions/APS-cloud/identity.ts +++ b/lib/testing/src/lib/core/actions/identity/identity.service.ts @@ -15,39 +15,59 @@ * limitations under the License. */ -import { ApiService } from '../APS-cloud/apiservice'; -import { Util } from '../../util/util'; +import { ApiService } from '../api.service'; +import { UserModel } from '../../models/user.model'; -export class Identity { +export class IdentityService { api: ApiService; - async init(username: string, password: string, clientId?: string) { - this.api = new ApiService(clientId); - await this.api.login(username, password); + constructor(api: ApiService) { + this.api = api; } - async createIdentityUser(username = Util.generateRandomString(5), password = Util.generateRandomString(5)) { - await this.createUser(username); - const user = await this.getUserInfoByUsername(username); - await this.resetPassword(user.id, password); - user.password = password; + async createIdentityUser(user: UserModel = new UserModel()) { + await this.createUser(user); + + const userIdentity = await this.getUserInfoByUsername(user.email); + await this.resetPassword(userIdentity.id, user.password); + user.idIdentityService = userIdentity.id; return user; } + async createIdentityUserAndSyncECMBPM(user: UserModel) { + if (this.api.config.provider === 'ECM' || this.api.config.provider === 'ALL') { + await this.api.apiService.core.peopleApi.addPerson(user); + } + + if (this.api.config.provider === 'BPM' || this.api.config.provider === 'ALL') { + await this.api.apiService.activiti.adminUsersApi.createNewUser({ + email: user.email, + firstName: user.firstName, + lastName: user.lastName, + password: user.password, + type: 'enterprise', + tenantId: 1, + company: null + }); + } + + await this.createIdentityUser(user); + } + async deleteIdentityUser(userId) { await this.deleteUser(userId); } - async createUser(username) { + async createUser(user: UserModel) { const path = '/users'; const method = 'POST'; const queryParams = {}, postBody = { - 'username': username, - 'firstName': username, - 'lastName': 'LastName', + 'username': user.email, + 'firstName': user.firstName, + 'lastName': user.lastName, 'enabled': true, - 'email': username + '@alfresco.com' + 'email': user.email }; const data = await this.api.performIdentityOperation(path, method, queryParams, postBody); return data; diff --git a/lib/testing/src/lib/core/actions/identity/public-api.ts b/lib/testing/src/lib/core/actions/identity/public-api.ts new file mode 100644 index 0000000000..1a5fe24bc1 --- /dev/null +++ b/lib/testing/src/lib/core/actions/identity/public-api.ts @@ -0,0 +1,22 @@ +/*! + * @license + * Copyright 2019 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. + */ + +export * from './identity.service'; +export * from './group-identity.service'; +export * from './roles.service'; +export * from './tasks.service'; +export * from './query.service'; diff --git a/e2e/actions/APS-cloud/query.ts b/lib/testing/src/lib/core/actions/identity/query.service.ts similarity index 86% rename from e2e/actions/APS-cloud/query.ts rename to lib/testing/src/lib/core/actions/identity/query.service.ts index be0ec036b1..fdfbb4e660 100644 --- a/e2e/actions/APS-cloud/query.ts +++ b/lib/testing/src/lib/core/actions/identity/query.service.ts @@ -15,17 +15,14 @@ * limitations under the License. */ -import { ApiService } from './apiservice'; +import { ApiService } from '../api.service'; -export class Query { +export class QueryService { - api: ApiService = new ApiService(); + api: ApiService; - constructor() { - } - - async init(username, password) { - await this.api.login(username, password); + constructor(api: ApiService) { + this.api = api; } async getProcessInstanceTasks(processInstanceId, appName) { diff --git a/e2e/actions/APS-cloud/roles.ts b/lib/testing/src/lib/core/actions/identity/roles.service.ts similarity index 81% rename from e2e/actions/APS-cloud/roles.ts rename to lib/testing/src/lib/core/actions/identity/roles.service.ts index 3ee27fd39e..acce862c4b 100644 --- a/e2e/actions/APS-cloud/roles.ts +++ b/lib/testing/src/lib/core/actions/identity/roles.service.ts @@ -15,14 +15,14 @@ * limitations under the License. */ -import { ApiService } from '../APS-cloud/apiservice'; +import { ApiService } from '../api.service'; -export class Roles { +export class RolesService { - api: ApiService = new ApiService(); + api: ApiService; - async init(username, password) { - await this.api.login(username, password); + constructor(api: ApiService) { + this.api = api; } async getRoleIdByRoleName(roleName) { @@ -34,7 +34,7 @@ export class Roles { const data = await this.api.performIdentityOperation(path, method, queryParams, postBody); for (const key in data) { if (data[key].name === roleName) { - roleId = data[key].id; + roleId = data[key].id; } } return roleId; diff --git a/e2e/actions/APS-cloud/tasks.ts b/lib/testing/src/lib/core/actions/identity/tasks.service.ts similarity index 93% rename from e2e/actions/APS-cloud/tasks.ts rename to lib/testing/src/lib/core/actions/identity/tasks.service.ts index 972955ab00..87d4e41417 100644 --- a/e2e/actions/APS-cloud/tasks.ts +++ b/lib/testing/src/lib/core/actions/identity/tasks.service.ts @@ -15,17 +15,14 @@ * limitations under the License. */ -import { ApiService } from './apiservice'; +import { ApiService } from '../api.service'; -export class Tasks { +export class TasksService { - api: ApiService = new ApiService(); + api: ApiService; - constructor() { - } - - async init(username, password) { - await this.api.login(username, password); + constructor(api: ApiService) { + this.api = api; } async createStandaloneTask(taskName, appName, options?) { diff --git a/lib/testing/src/lib/core/actions/public-api.ts b/lib/testing/src/lib/core/actions/public-api.ts index 79b4ec75e2..07aff579cd 100644 --- a/lib/testing/src/lib/core/actions/public-api.ts +++ b/lib/testing/src/lib/core/actions/public-api.ts @@ -1,3 +1,19 @@ -/* - * Public API Surface of testing +/*! + * @license + * Copyright 2019 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. */ + +export * from './identity/public-api'; +export * from './api.service'; diff --git a/lib/testing/src/lib/core/browser-visibility.ts b/lib/testing/src/lib/core/browser-visibility.ts index 7c2ecfcc42..bd38a6c5cb 100644 --- a/lib/testing/src/lib/core/browser-visibility.ts +++ b/lib/testing/src/lib/core/browser-visibility.ts @@ -1,6 +1,6 @@ /*! * @license - * Copyright 2016 Alfresco Software, Ltd. + * Copyright 2019 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. @@ -17,7 +17,6 @@ import { browser, protractor } from 'protractor'; const until = protractor.ExpectedConditions; - const DEFAULT_TIMEOUT = 40000; export class BrowserVisibility { @@ -64,6 +63,25 @@ export class BrowserVisibility { }, waitTimeout, 'Element is not visible ' + elementToCheck.locator()); } + /* + * Wait for element to not be visible + */ + static waitUntilElementIsStale(elementToCheck, waitTimeout: number = DEFAULT_TIMEOUT) { + return browser.wait(until.stalenessOf(elementToCheck), waitTimeout, 'Element is not in stale ' + elementToCheck.locator()); + } + + /* + * Wait for element to not be visible + */ + static waitUntilElementIsNotVisible(elementToCheck, waitTimeout: number = DEFAULT_TIMEOUT) { + return browser.wait(() => { + browser.waitForAngularEnabled(); + return elementToCheck.isPresent().then(function (present) { + return !present; + }); + }, waitTimeout, 'Element is Visible and it should not' + elementToCheck.locator()); + } + /* * Wait for element to have value */ @@ -73,6 +91,10 @@ export class BrowserVisibility { browser.wait(until.textToBePresentInElementValue(elementToCheck, elementValue), waitTimeout, 'Element doesn\'t have a value ' + elementToCheck.locator()); } + static waitUntilElementIsOnPage(elementToCheck, waitTimeout: number = DEFAULT_TIMEOUT) { + return browser.wait(browser.wait(until.visibilityOf(elementToCheck)), waitTimeout); + } + /* * Wait for element to not be visible */ @@ -80,4 +102,10 @@ export class BrowserVisibility { return browser.wait(until.not(until.visibilityOf(elementToCheck)), waitTimeout, 'Element is not in the page ' + elementToCheck.locator()); } + static waitUntilElementIsPresent(elementToCheck, waitTimeout: number = DEFAULT_TIMEOUT) { + browser.waitForAngularEnabled(); + + return browser.wait(until.presenceOf(elementToCheck), waitTimeout, 'Element is not present ' + elementToCheck.locator()); + } + } diff --git a/lib/testing/src/lib/core/models/public-api.ts b/lib/testing/src/lib/core/models/public-api.ts new file mode 100644 index 0000000000..5b16ef57a6 --- /dev/null +++ b/lib/testing/src/lib/core/models/public-api.ts @@ -0,0 +1,18 @@ +/*! + * @license + * Copyright 2019 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. + */ + +export * from './user.model'; diff --git a/lib/testing/src/lib/core/models/user.model.ts b/lib/testing/src/lib/core/models/user.model.ts new file mode 100644 index 0000000000..b307c35a09 --- /dev/null +++ b/lib/testing/src/lib/core/models/user.model.ts @@ -0,0 +1,36 @@ +/*! + * @license + * Copyright 2019 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 { StringUtil } from '../string.util'; + +export class UserModel { + + firstName: string = StringUtil.generateRandomString(); + lastName: string = StringUtil.generateRandomString(); + password: string = StringUtil.generateRandomString(); + email: string = StringUtil.generateRandomEmail('@alfresco.com'); + idIdentityService: string; + + constructor(details?: any) { + Object.assign(this, details); + } + + get id() { + return this.email; + } + +} diff --git a/lib/testing/src/lib/core/pages/header.page.ts b/lib/testing/src/lib/core/pages/header.page.ts index 97d397bbec..480bee699d 100644 --- a/lib/testing/src/lib/core/pages/header.page.ts +++ b/lib/testing/src/lib/core/pages/header.page.ts @@ -1,6 +1,6 @@ /*! * @license - * Copyright 2016 Alfresco Software, Ltd. + * Copyright 2019 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. diff --git a/lib/testing/src/lib/core/pages/public-api.ts b/lib/testing/src/lib/core/pages/public-api.ts index a3a3be60b5..a1a7936cb0 100644 --- a/lib/testing/src/lib/core/pages/public-api.ts +++ b/lib/testing/src/lib/core/pages/public-api.ts @@ -1,5 +1,18 @@ -/* - * Public API Surface of testing +/*! + * @license + * Copyright 2019 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. */ export * from './header.page'; diff --git a/lib/testing/src/lib/core/public-api.ts b/lib/testing/src/lib/core/public-api.ts index f9bf45abd6..a81925d1f1 100644 --- a/lib/testing/src/lib/core/public-api.ts +++ b/lib/testing/src/lib/core/public-api.ts @@ -1,7 +1,23 @@ -/* - * Public API Surface of testing +/*! + * @license + * Copyright 2019 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. */ export * from './browser-visibility'; +export * from './actions/public-api'; export * from './pages/public-api'; export * from './material/public-api'; +export * from './models/public-api'; +export * from './string.util'; diff --git a/lib/testing/src/lib/core/string.util.ts b/lib/testing/src/lib/core/string.util.ts new file mode 100644 index 0000000000..6ce0c5b50d --- /dev/null +++ b/lib/testing/src/lib/core/string.util.ts @@ -0,0 +1,106 @@ +/*! + * @license + * Copyright 2019 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. + */ + +export class StringUtil { + + static generatePasswordString(length: number = 8): string { + let text = ''; + const possibleUpperCase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; + const possibleLowerCase = 'abcdefghijklmnopqrstuvwxyz'; + const lowerCaseLimit = Math.floor(length / 2); + + for (let i = 0; i < lowerCaseLimit; i++) { + text += possibleLowerCase.charAt(Math.floor(Math.random() * possibleLowerCase.length)); + } + + for (let i = 0; i < length - lowerCaseLimit; i++) { + text += possibleUpperCase.charAt(Math.floor(Math.random() * possibleUpperCase.length)); + } + + return text; + } + + /** + * Generates a random string. + * + * @param length If this parameter is not provided the length is set to 8 by default. + * @method generateRandomString + */ + static generateRandomString(length: number = 8): string { + let text = ''; + const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + + for (let i = 0; i < length; i++) { + text += possible.charAt(Math.floor(Math.random() * possible.length)); + } + + return text; + } + + /** + * Generates a random email address following the format: abcdef@activiti.test.com + * + * @param domain + * @param length + * @method generateRandomEmail + */ + static generateRandomEmail(domain: string, length: number = 5): string { + let email = ''; + const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + + for (let i = 0; i < length; i++) { + email += possible.charAt(Math.floor(Math.random() * possible.length)); + } + + email += domain; + return email.toLowerCase(); + } + + /** + * Generates a random string - digits only. + * + * @param length {int} If this parameter is not provided the length is set to 8 by default. + * @method generateRandomString + */ + static generateRandomStringDigits(length: number = 8): string { + let text = ''; + const possible = '0123456789'; + + for (let i = 0; i < length; i++) { + text += possible.charAt(Math.floor(Math.random() * possible.length)); + } + + return text; + } + + /** + * Generates a random string - non-latin characters only. + * + * @param length {int} If this parameter is not provided the length is set to 3 by default. + * @method generateRandomString + */ + static generateRandomStringNonLatin(length: number = 3): string { + let text = ''; + const possible = '密码你好𠮷'; + + for (let i = 0; i < length; i++) { + text += possible.charAt(Math.floor(Math.random() * possible.length)); + } + + return text; + } +} diff --git a/lib/testing/src/lib/material/public-api.ts b/lib/testing/src/lib/material/public-api.ts new file mode 100644 index 0000000000..5e77b5653c --- /dev/null +++ b/lib/testing/src/lib/material/public-api.ts @@ -0,0 +1,18 @@ +/*! + * @license + * Copyright 2019 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. + */ + +export * from './tabs.page'; diff --git a/e2e/actions/APS-cloud/process-definitions.ts b/lib/testing/src/lib/process-services-cloud/actions/process-definitions.service.ts similarity index 79% rename from e2e/actions/APS-cloud/process-definitions.ts rename to lib/testing/src/lib/process-services-cloud/actions/process-definitions.service.ts index 24a138db60..79042c8387 100644 --- a/e2e/actions/APS-cloud/process-definitions.ts +++ b/lib/testing/src/lib/process-services-cloud/actions/process-definitions.service.ts @@ -15,17 +15,14 @@ * limitations under the License. */ -import { ApiService } from './apiservice'; +import { ApiService } from '../../core/actions/api.service'; -export class ProcessDefinitions { +export class ProcessDefinitionsService { - api: ApiService = new ApiService(); + api: ApiService; - constructor() { - } - - async init(username, password) { - await this.api.login(username, password); + constructor(api: ApiService) { + this.api = api; } async getProcessDefinitions(appName) { diff --git a/e2e/actions/APS-cloud/process-instances.ts b/lib/testing/src/lib/process-services-cloud/actions/process-instances.service.ts similarity index 71% rename from e2e/actions/APS-cloud/process-instances.ts rename to lib/testing/src/lib/process-services-cloud/actions/process-instances.service.ts index 5a6f640744..57f644d112 100644 --- a/e2e/actions/APS-cloud/process-instances.ts +++ b/lib/testing/src/lib/process-services-cloud/actions/process-instances.service.ts @@ -15,20 +15,17 @@ * limitations under the License. */ -import { ApiService } from './apiservice'; +import { ApiService } from '../../core/actions/api.service'; -export class ProcessInstances { +export class ProcessInstancesService { - api: ApiService = new ApiService(); + api: ApiService; - constructor() { + constructor(api: ApiService) { + this.api = api; } - async init(username, password) { - await this.api.login(username, password); - } - - async createProcessInstance(processDefKey, appName, options?) { + async createProcessInstance(processDefKey, appName, options?: any) { const path = '/' + appName + '-rb/v1/process-instances'; const method = 'POST'; @@ -38,8 +35,7 @@ export class ProcessInstances { ...options }; - const data = await this.api.performBpmOperation(path, method, queryParams, postBody); - return data; + return await this.api.performBpmOperation(path, method, queryParams, postBody); } async suspendProcessInstance(processInstanceId, appName) { @@ -48,8 +44,7 @@ export class ProcessInstances { const queryParams = {}, postBody = {}; - const data = await this.api.performBpmOperation(path, method, queryParams, postBody); - return data; + return await this.api.performBpmOperation(path, method, queryParams, postBody); } async deleteProcessInstance(processInstanceId, appName) { @@ -58,8 +53,7 @@ export class ProcessInstances { const queryParams = {}, postBody = {}; - const data = await this.api.performBpmOperation(path, method, queryParams, postBody); - return data; + return await this.api.performBpmOperation(path, method, queryParams, postBody); } async completeProcessInstance(processInstanceId, appName) { @@ -68,7 +62,6 @@ export class ProcessInstances { const queryParams = {}, postBody = {}; - const data = await this.api.performBpmOperation(path, method, queryParams, postBody); - return data; + return await this.api.performBpmOperation(path, method, queryParams, postBody); } } diff --git a/lib/testing/src/lib/process-services-cloud/actions/public-api.ts b/lib/testing/src/lib/process-services-cloud/actions/public-api.ts index b55db50921..52277a363a 100644 --- a/lib/testing/src/lib/process-services-cloud/actions/public-api.ts +++ b/lib/testing/src/lib/process-services-cloud/actions/public-api.ts @@ -1,6 +1,21 @@ -/* - * Public API Surface of testing +/*! + * @license + * Copyright 2019 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. */ export * from './testing-alfresco-api.service'; export * from './testing-app-config.service'; +export * from './process-definitions.service'; +export * from './process-instances.service'; diff --git a/lib/testing/src/lib/process-services-cloud/app/public-api.ts b/lib/testing/src/lib/process-services-cloud/app/public-api.ts index 3a6065b3f8..c3438aaa73 100644 --- a/lib/testing/src/lib/process-services-cloud/app/public-api.ts +++ b/lib/testing/src/lib/process-services-cloud/app/public-api.ts @@ -1,5 +1,18 @@ -/* - * Public API Surface of testing +/*! + * @license + * Copyright 2019 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. */ -export * from '../app/app-list-cloud.page'; +export * from './app-list-cloud.page'; diff --git a/lib/testing/src/lib/process-services-cloud/pages/login-sso.page.ts b/lib/testing/src/lib/process-services-cloud/pages/login-sso.page.ts index 3d8404f4ec..e4a6316abb 100644 --- a/lib/testing/src/lib/process-services-cloud/pages/login-sso.page.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/login-sso.page.ts @@ -17,6 +17,7 @@ import { element, by, browser, protractor } from 'protractor'; import { BrowserVisibility } from '../../core/browser-visibility'; + export class LoginSSOPage { ssoButton = element(by.css(`[data-automation-id="login-button-sso"]`)); diff --git a/lib/testing/src/lib/process-services-cloud/pages/public-api.ts b/lib/testing/src/lib/process-services-cloud/pages/public-api.ts index 151e1597ab..09b6aca866 100644 --- a/lib/testing/src/lib/process-services-cloud/pages/public-api.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/public-api.ts @@ -1,5 +1,18 @@ -/* - * Public API Surface of testing +/*! + * @license + * Copyright 2019 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. */ export * from './login-sso.page'; diff --git a/lib/testing/src/lib/process-services-cloud/public-api.ts b/lib/testing/src/lib/process-services-cloud/public-api.ts index 1f41c55c44..8f32cd8d0d 100644 --- a/lib/testing/src/lib/process-services-cloud/public-api.ts +++ b/lib/testing/src/lib/process-services-cloud/public-api.ts @@ -1,5 +1,18 @@ -/* - * Public API Surface of testing +/*! + * @license + * Copyright 2019 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. */ export * from './pages/public-api'; diff --git a/lib/testing/src/lib/process-services/pages/form-fields.page.ts b/lib/testing/src/lib/process-services/pages/form-fields.page.ts index a3f3c1e9d4..91392ed884 100644 --- a/lib/testing/src/lib/process-services/pages/form-fields.page.ts +++ b/lib/testing/src/lib/process-services/pages/form-fields.page.ts @@ -1,6 +1,6 @@ /*! * @license - * Copyright 2016 Alfresco Software, Ltd. + * Copyright 2019 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. diff --git a/lib/testing/src/lib/process-services/pages/public-api.ts b/lib/testing/src/lib/process-services/pages/public-api.ts index 0c89dd2d2c..ebafd7e54e 100644 --- a/lib/testing/src/lib/process-services/pages/public-api.ts +++ b/lib/testing/src/lib/process-services/pages/public-api.ts @@ -1,5 +1,18 @@ -/* - * Public API Surface of testing +/*! + * @license + * Copyright 2019 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. */ export * from './form-fields.page'; diff --git a/lib/testing/src/lib/process-services/public-api.ts b/lib/testing/src/lib/process-services/public-api.ts index 261612cbe7..4143973c23 100644 --- a/lib/testing/src/lib/process-services/public-api.ts +++ b/lib/testing/src/lib/process-services/public-api.ts @@ -1,5 +1,18 @@ -/* - * Public API Surface of testing +/*! + * @license + * Copyright 2019 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. */ export * from './pages/public-api'; diff --git a/lib/testing/src/lib/testing.module.ts b/lib/testing/src/lib/testing.module.ts index 3129b50512..9b3ae7a669 100644 --- a/lib/testing/src/lib/testing.module.ts +++ b/lib/testing/src/lib/testing.module.ts @@ -1,3 +1,20 @@ +/*! + * @license + * Copyright 2019 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 { NgModule } from '@angular/core'; @NgModule({ diff --git a/lib/testing/src/lib/testing.service.spec.ts b/lib/testing/src/lib/testing.service.spec.ts index e2a2990f79..025bff92e0 100644 --- a/lib/testing/src/lib/testing.service.spec.ts +++ b/lib/testing/src/lib/testing.service.spec.ts @@ -1,3 +1,20 @@ +/*! + * @license + * Copyright 2019 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 { TestBed } from '@angular/core/testing'; import { TestingService } from './testing.service'; diff --git a/lib/testing/src/lib/testing.service.ts b/lib/testing/src/lib/testing.service.ts index 4fc1dd6233..4ad31c43ce 100644 --- a/lib/testing/src/lib/testing.service.ts +++ b/lib/testing/src/lib/testing.service.ts @@ -1,3 +1,20 @@ +/*! + * @license + * Copyright 2019 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 { Injectable } from '@angular/core'; @Injectable({ diff --git a/lib/testing/src/public-api.ts b/lib/testing/src/public-api.ts index dceecee5ac..9b42b1066f 100644 --- a/lib/testing/src/public-api.ts +++ b/lib/testing/src/public-api.ts @@ -1,5 +1,18 @@ -/* - * Public API Surface of testing +/*! + * @license + * Copyright 2019 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. */ export * from './lib/core/public-api'; @@ -8,3 +21,4 @@ export * from './lib/content-services/public-api'; export * from './lib/process-services/public-api'; export * from './lib/process-services-cloud/public-api'; export * from './lib/testing.module'; +export * from './lib/testing.service'; diff --git a/lib/testing/src/test.ts b/lib/testing/src/test.ts index e11ff1c97b..e81142305a 100644 --- a/lib/testing/src/test.ts +++ b/lib/testing/src/test.ts @@ -1,4 +1,19 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files +/*! + * @license + * Copyright 2019 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 'core-js/es7/reflect'; import 'zone.js/dist/zone'; diff --git a/lib/tslint.json b/lib/tslint.json index ae261ecbde..3d9dfdbd0d 100644 --- a/lib/tslint.json +++ b/lib/tslint.json @@ -1,7 +1,7 @@ { "extends": "../tslint.json", "rules": { - "adf-license-banner": [true, "lib/+(core|content-services|process-services|process-services-cloud|insights|extensions)/**/*.ts", "./license-community.txt"] + "adf-license-banner": [true, "lib/+(core|content-services|process-services|process-services-cloud|insights|extensions|testing)/**/*.ts", "./license-community.txt"] }, "template-accessibility-alt-text": true, "template-accessibility-label-for": true, diff --git a/package-lock.json b/package-lock.json index 0ad5d80389..c5a944d35c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1016,6 +1016,37 @@ } } }, + "@fimbul/bifrost": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@fimbul/bifrost/-/bifrost-0.17.0.tgz", + "integrity": "sha512-gVTkJAOef5HtN6LPmrtt5fAUmBywwlgmObsU3FBhPoNeXPLaIl2zywXkJEtvvVLQnaFmtff3x+wIj5lHRCDE3Q==", + "dev": true, + "requires": { + "@fimbul/ymir": "^0.17.0", + "get-caller-file": "^2.0.0", + "tslib": "^1.8.1", + "tsutils": "^3.5.0" + }, + "dependencies": { + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + } + } + }, + "@fimbul/ymir": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@fimbul/ymir/-/ymir-0.17.0.tgz", + "integrity": "sha512-xMXM9KTXRLHLVS6dnX1JhHNEkmWHcAVCQ/4+DA1KKwC/AFnGHzu/7QfQttEPgw3xplT+ILf9e3i64jrFwB3JtA==", + "dev": true, + "requires": { + "inversify": "^5.0.0", + "reflect-metadata": "^0.1.12", + "tslib": "^1.8.1" + } + }, "@mat-datetimepicker/core": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@mat-datetimepicker/core/-/core-2.0.1.tgz", @@ -8740,6 +8771,12 @@ "loose-envify": "^1.0.0" } }, + "inversify": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/inversify/-/inversify-5.0.1.tgz", + "integrity": "sha512-Ieh06s48WnEYGcqHepdsJUIJUXpwH5o5vodAX+DK2JA/gjy4EbEcQZxw+uFfzysmKjiLXGYwNG3qDZsKVMcINQ==", + "dev": true + }, "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", @@ -17635,6 +17672,28 @@ } } }, + "tslint-consistent-codestyle": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/tslint-consistent-codestyle/-/tslint-consistent-codestyle-1.15.1.tgz", + "integrity": "sha512-38Y3Dz4zcABe/PlPAQSGNEWPGVq0OzcIQR7SEU6dNujp/SgvhxhJOhIhI9gY4r0I3/TNtvVQwARWor9O9LPZWg==", + "dev": true, + "requires": { + "@fimbul/bifrost": "^0.17.0", + "tslib": "^1.7.1", + "tsutils": "^2.29.0" + }, + "dependencies": { + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + } + } + }, "tsscmp": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", diff --git a/package.json b/package.json index 5c28fa5dca..57f34b9ba0 100644 --- a/package.json +++ b/package.json @@ -169,6 +169,7 @@ "tsickle": "^0.34.0", "tslib": "^1.9.0", "tslint": "5.9.1", + "tslint-consistent-codestyle": "^1.15.1", "typedoc": "^0.14.2", "typescript": "3.1.6", "unist-util-select": "^2.0.0", diff --git a/tslint.json b/tslint.json index b1affcc921..cefc89ebcf 100644 --- a/tslint.json +++ b/tslint.json @@ -1,7 +1,8 @@ { "rulesDirectory": [ "./node_modules/codelyzer", - "./tools/tslint-rules/" + "./tools/tslint-rules/", + "tslint-consistent-codestyle" ], "extends": [ "rxjs-tslint-rules"