From ababde37609272ae90a6accebfdbce6d3676aefc Mon Sep 17 00:00:00 2001 From: Eugenio Romano Date: Mon, 16 Nov 2020 00:49:10 +0000 Subject: [PATCH] ix build (#6347) * create after e2e and before e2e script * permission test exclude * flaky exclude * fix * chmod permission * modify check cs * fix * execute * fix * fix --- .travis.yml | 30 ++++++++--------- .../comments/comment-component.e2e.ts | 4 +-- .../directives/download-directive.e2e.ts | 2 +- .../directives/edit-folder-directive.e2e.ts | 2 +- .../directives/favorite-directive.e2e.ts | 8 ++--- .../restore-content-directive.e2e.ts | 18 +++++----- .../document-list-actions.e2e.ts | 2 +- .../document-list-copy-move-actions.e2e.ts | 2 +- .../document-list-properties.e2e.ts | 4 +-- .../metadata/aspect-oriented-config.e2e.ts | 16 ++++----- .../metadata/metadata-properties.e2e.ts | 2 +- .../metadata/metadata-smoke-tests.e2e.ts | 6 ++-- .../permissions/permissions-component.e2e.ts | 7 ++-- .../permissions/site-permissions.e2e.ts | 2 +- .../share-file/share-file.e2e.ts | 4 +-- .../share-file/unshare-file.e2e.ts | 2 +- .../sso-download-directive-component.e2e.ts | 2 +- .../version/version-actions.e2e.ts | 4 +-- .../version/version-properties.e2e.ts | 2 +- .../version/version-smoke-tests.e2e.ts | 2 +- e2e/core/infinite-scrolling.e2e.ts | 2 +- e2e/core/login/login-component.e2e.ts | 6 ++-- e2e/core/pages/content-services.page.ts | 2 +- e2e/core/pages/navigation-bar.page.ts | 33 +++++++------------ e2e/core/settings-component.e2e.ts | 4 +-- e2e/core/viewer/viewer-share-content.ts | 2 +- e2e/protractor.conf.js | 13 +++++--- e2e/protractor.excludes.json | 9 ++++- .../components/search-check-list.e2e.ts | 16 ++++----- .../components/search-date-range.e2e.ts | 2 +- .../components/search-number-range.e2e.ts | 6 ++-- e2e/search/components/search-radio.e2e.ts | 12 +++---- e2e/search/components/search-slider.e2e.ts | 2 +- .../components/search-sorting-picker.e2e.ts | 8 ++--- e2e/search/components/search-text.e2e.ts | 2 +- e2e/search/search-component.e2e.ts | 2 +- e2e/search/search-filters.e2e.ts | 8 ++--- lib/cli/scripts/check-cs-env.ts | 6 ++-- .../dialog/add-permissions-dialog.page.ts | 9 +++-- scripts/ci/job_hooks/after_e2e.sh | 4 +++ scripts/ci/job_hooks/before_e2e.sh | 9 +++++ scripts/ci/job_hooks/before_install.sh | 4 +++ 42 files changed, 152 insertions(+), 130 deletions(-) create mode 100755 scripts/ci/job_hooks/after_e2e.sh create mode 100755 scripts/ci/job_hooks/before_e2e.sh diff --git a/.travis.yml b/.travis.yml index af4b53fd09..d90ba5572b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -88,37 +88,35 @@ jobs: - stage: Release tag script: ./scripts/travis/release/git-tag.sh - - stage: e2e Test name: core - before_script: - - ./scripts/ci/utils/artifact-from-s3.sh -a "$S3_DBP_FOLDER/alfresco-demoshell.tar.bz2" -o "./dist/demo-shell" - - ./scripts/ci/utils/artifact-from-s3.sh -a "$S3_DBP_FOLDER/alfresco-libs.tar.bz2" -o "./lib/dist" + before_script: ./scripts/ci/job_hooks/before_e2e.sh script: ./scripts/travis/e2e/core-e2e.sh + after_script: ./scripts/ci/job_hooks/after_e2e.sh + - stage: e2e Test name: content - before_script: - - ./scripts/ci/utils/artifact-from-s3.sh -a "$S3_DBP_FOLDER/alfresco-demoshell.tar.bz2" -o "./dist/demo-shell" - - ./scripts/ci/utils/artifact-from-s3.sh -a "$S3_DBP_FOLDER/alfresco-libs.tar.bz2" -o "./lib/dist" + before_script: ./scripts/ci/job_hooks/before_e2e.sh script: ./scripts/travis/e2e/content-services-e2e.sh + after_script: ./scripts/ci/job_hooks/after_e2e.sh + - stage: e2e Test name: search - before_script: - - ./scripts/ci/utils/artifact-from-s3.sh -a "$S3_DBP_FOLDER/alfresco-demoshell.tar.bz2" -o "./dist/demo-shell" - - ./scripts/ci/utils/artifact-from-s3.sh -a "$S3_DBP_FOLDER/alfresco-libs.tar.bz2" -o "./lib/dist" + before_script: ./scripts/ci/job_hooks/before_e2e.sh script: ./scripts/travis/e2e/search-e2e.sh + after_script: ./scripts/ci/job_hooks/after_e2e.sh + - stage: e2e Test name: process - before_script: - - ./scripts/ci/utils/artifact-from-s3.sh -a "$S3_DBP_FOLDER/alfresco-demoshell.tar.bz2" -o "./dist/demo-shell" - - ./scripts/ci/utils/artifact-from-s3.sh -a "$S3_DBP_FOLDER/alfresco-libs.tar.bz2" -o "./lib/dist" + before_script: ./scripts/ci/job_hooks/before_e2e.sh script: ./scripts/travis/e2e/process-services-e2e.sh + after_script: ./scripts/ci/job_hooks/after_e2e.sh + - stage: e2e Test name: process Cloud - before_script: - - ./scripts/ci/utils/artifact-from-s3.sh -a "$S3_DBP_FOLDER/alfresco-demoshell.tar.bz2" -o "./dist/demo-shell" - - ./scripts/ci/utils/artifact-from-s3.sh -a "$S3_DBP_FOLDER/alfresco-libs.tar.bz2" -o "./lib/dist" + before_script: ./scripts/ci/job_hooks/before_e2e.sh script: ./scripts/travis/e2e/process-services-cloud-e2e.sh + after_script: ./scripts/ci/job_hooks/after_e2e.sh - stage: Check bundle script: diff --git a/e2e/content-services/comments/comment-component.e2e.ts b/e2e/content-services/comments/comment-component.e2e.ts index d00a0fd8e6..ab7c1e235f 100644 --- a/e2e/content-services/comments/comment-component.e2e.ts +++ b/e2e/content-services/comments/comment-component.e2e.ts @@ -83,7 +83,7 @@ describe('Comment Component', () => { await loginPage.login(acsUser.email, acsUser.password); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.waitForTableBody(); }); @@ -184,7 +184,7 @@ describe('Comment Component', () => { await loginPage.login(acsUser.email, acsUser.password); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); }); afterAll(async () => { diff --git a/e2e/content-services/directives/download-directive.e2e.ts b/e2e/content-services/directives/download-directive.e2e.ts index 23afea0755..381d5dd84b 100644 --- a/e2e/content-services/directives/download-directive.e2e.ts +++ b/e2e/content-services/directives/download-directive.e2e.ts @@ -84,7 +84,7 @@ describe('Version component actions', () => { await loginPage.login(acsUser.email, acsUser.password); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.waitForTableBody(); }); diff --git a/e2e/content-services/directives/edit-folder-directive.e2e.ts b/e2e/content-services/directives/edit-folder-directive.e2e.ts index 784da48c42..b00f95a82c 100644 --- a/e2e/content-services/directives/edit-folder-directive.e2e.ts +++ b/e2e/content-services/directives/edit-folder-directive.e2e.ts @@ -88,7 +88,7 @@ describe('Edit folder directive', () => { beforeEach(async () => { await navigationBarPage.clickHomeButton(); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.getDocumentList().dataTablePage().waitTillContentLoaded(); }); diff --git a/e2e/content-services/directives/favorite-directive.e2e.ts b/e2e/content-services/directives/favorite-directive.e2e.ts index 2e14459261..ea3a016ade 100644 --- a/e2e/content-services/directives/favorite-directive.e2e.ts +++ b/e2e/content-services/directives/favorite-directive.e2e.ts @@ -80,7 +80,7 @@ describe('Favorite directive', () => { }); beforeEach(async () => { - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.getDocumentList().dataTablePage().waitTillContentLoaded(); }); @@ -95,7 +95,7 @@ describe('Favorite directive', () => { await customSourcesPage.selectFavoritesSourceType(); await customSourcesPage.checkRowIsDisplayed(testFile.entry.name); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.getDocumentList().dataTablePage().waitTillContentLoaded(); await contentServicesPage.getDocumentList().dataTablePage().checkContentIsDisplayed('Display name', testFile.entry.name); await contentServicesPage.getDocumentList().dataTablePage().selectRow('Display name', testFile.entry.name); @@ -117,7 +117,7 @@ describe('Favorite directive', () => { await customSourcesPage.selectFavoritesSourceType(); await customSourcesPage.checkRowIsDisplayed(testFolder1.entry.name); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.getDocumentList().dataTablePage().waitTillContentLoaded(); await contentServicesPage.getDocumentList().dataTablePage().checkContentIsDisplayed('Display name', testFolder1.entry.name); await contentServicesPage.getDocumentList().dataTablePage().selectRow('Display name', testFolder1.entry.name); @@ -153,7 +153,7 @@ describe('Favorite directive', () => { await trashcanPage.contentList.dataTablePage().waitTillContentLoaded(); await trashcanPage.checkTrashcanIsEmpty(); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.getDocumentList().dataTablePage().waitTillContentLoaded(); await contentServicesPage.getDocumentList().dataTablePage().checkContentIsDisplayed('Display name', testFile.entry.name); await contentServicesPage.getDocumentList().dataTablePage().selectRow('Display name', testFile.entry.name); diff --git a/e2e/content-services/directives/restore-content-directive.e2e.ts b/e2e/content-services/directives/restore-content-directive.e2e.ts index c42498cb22..7375636464 100644 --- a/e2e/content-services/directives/restore-content-directive.e2e.ts +++ b/e2e/content-services/directives/restore-content-directive.e2e.ts @@ -92,13 +92,13 @@ describe('Restore content directive', () => { beforeEach(async () => { await BrowserActions.closeMenuAndDialogs(); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.waitForTableBody(); }); describe('Restore same name folders', () => { beforeAll(async () => { - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.waitForTableBody(); await contentServicesPage.checkContentIsDisplayed(folderName); await contentServicesPage.deleteContent(folderName); @@ -110,7 +110,7 @@ describe('Restore content directive', () => { it('[C260227] Should validate when restoring Folders with same name', async () => { await uploadActions.createFolder(folderName, '-my-'); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await browser.refresh(); await contentServicesPage.waitForTableBody(); await contentServicesPage.checkContentIsDisplayed(folderName); @@ -123,7 +123,7 @@ describe('Restore content directive', () => { await trashcanPage.getDocumentList().dataTablePage().checkAllRows(); await trashcanPage.clickRestore(); await trashcanPage.getDocumentList().dataTablePage().checkRowContentIsDisplayed(folderName); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.getDocumentList().dataTablePage().waitTillContentLoaded(); await contentServicesPage.checkContentIsDisplayed(folderName); @@ -144,7 +144,7 @@ describe('Restore content directive', () => { await notificationHistoryPage.checkNotifyContains(testFile.entry.name + ' item restored'); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.waitForTableBody(); await contentServicesPage.checkContentIsDisplayed(testFile.entry.name); await contentServicesPage.deleteContent(testFile.entry.name); @@ -165,7 +165,7 @@ describe('Restore content directive', () => { await trashcanPage.clickRestore(); await trashcanPage.getDocumentList().dataTablePage().checkRowContentIsNotDisplayed(folderWithContent.entry.name); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.waitForTableBody(); await contentServicesPage.checkContentIsDisplayed(folderWithContent.entry.name); await contentServicesPage.getDocumentList().dataTablePage().doubleClickRow('Display name', folderWithContent.entry.name); @@ -201,7 +201,7 @@ describe('Restore content directive', () => { await trashcanPage.getDocumentList().dataTablePage().checkRowByContentIsSelected(folderWithFolder.entry.name); await trashcanPage.clickRestore(); await notificationHistoryPage.checkNotifyContains('Restore successful'); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.waitForTableBody(); await contentServicesPage.checkContentIsDisplayed(folderWithFolder.entry.name); await contentServicesPage.openFolder(folderWithFolder.entry.name); @@ -261,7 +261,7 @@ describe('Restore content directive', () => { await trashcanPage.getDocumentList().dataTablePage().checkRowByContentIsSelected(publicSite.entry.id); await trashcanPage.clickRestore(); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.waitForTableBody(); await contentServicesPage.selectSite(publicSite.entry.title); await contentServicesPage.waitForTableBody(); @@ -312,7 +312,7 @@ describe('Restore content directive', () => { await trashcanPage.getDocumentList().dataTablePage().checkRowByContentIsSelected(mainFile.entry.name); await trashcanPage.clickRestore(); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.waitForTableBody(); await contentServicesPage.checkContentIsDisplayed(parentFolder.entry.name); await contentServicesPage.checkContentIsDisplayed(mainFolder.entry.name); 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 f0380297c1..8c4d40a5e2 100644 --- a/e2e/content-services/document-list/document-list-actions.e2e.ts +++ b/e2e/content-services/document-list/document-list-actions.e2e.ts @@ -87,7 +87,7 @@ describe('Document List Component - Actions', () => { }); beforeEach(async () => { - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.contentList.dataTablePage().waitTillContentLoaded(); }); diff --git a/e2e/content-services/document-list/document-list-copy-move-actions.e2e.ts b/e2e/content-services/document-list/document-list-copy-move-actions.e2e.ts index d9a917e6f6..e75e4b1bc2 100644 --- a/e2e/content-services/document-list/document-list-copy-move-actions.e2e.ts +++ b/e2e/content-services/document-list/document-list-copy-move-actions.e2e.ts @@ -118,7 +118,7 @@ describe('Document List Component', () => { beforeEach(async () => { await BrowserActions.closeMenuAndDialogs(); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.contentList.dataTablePage().waitTillContentLoaded(); }); diff --git a/e2e/content-services/document-list/document-list-properties.e2e.ts b/e2e/content-services/document-list/document-list-properties.e2e.ts index d84b218823..2d19b0d080 100644 --- a/e2e/content-services/document-list/document-list-properties.e2e.ts +++ b/e2e/content-services/document-list/document-list-properties.e2e.ts @@ -59,7 +59,7 @@ describe('Document List Component - Properties', () => { }); it('[C299154] Should disallow upload content on a folder row if allowDropFiles is false', async () => { - await navigationBar.clickContentServicesButton(); + await navigationBar.navigateToContentServices(); await contentServicesPage.getDocumentList().dataTablePage().waitTillContentLoaded(); await contentServicesPage.openFolder(parentFolder.entry.name); @@ -75,7 +75,7 @@ describe('Document List Component - Properties', () => { }); it('[C91319] Should allow upload content on a folder row if allowDropFiles is true', async () => { - await navigationBar.clickContentServicesButton(); + await navigationBar.navigateToContentServices(); await contentServicesPage.getDocumentList().dataTablePage().waitTillContentLoaded(); await contentServicesPage.openFolder(parentFolder.entry.name); diff --git a/e2e/content-services/metadata/aspect-oriented-config.e2e.ts b/e2e/content-services/metadata/aspect-oriented-config.e2e.ts index 4a93336817..e016b5ad75 100644 --- a/e2e/content-services/metadata/aspect-oriented-config.e2e.ts +++ b/e2e/content-services/metadata/aspect-oriented-config.e2e.ts @@ -113,7 +113,7 @@ describe('Aspect oriented config', () => { } })); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await viewerPage.viewFile(pngFileModel.name); await viewerPage.clickInfoButton(); @@ -143,7 +143,7 @@ describe('Aspect oriented config', () => { } })); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await viewerPage.viewFile(pngFileModel.name); await viewerPage.clickInfoButton(); @@ -161,7 +161,7 @@ describe('Aspect oriented config', () => { it('[C260183] Should show all the aspect if the content-metadata configuration is NOT provided', async () => { await LocalStorageUtil.setConfigField('content-metadata', '{}'); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await viewerPage.viewFile(pngFileModel.name); await viewerPage.clickInfoButton(); @@ -182,7 +182,7 @@ describe('Aspect oriented config', () => { } })); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await viewerPage.viewFile(pngFileModel.name); await viewerPage.clickInfoButton(); @@ -222,7 +222,7 @@ describe('Aspect oriented config', () => { ' }' + '}'); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await viewerPage.viewFile(pngFileModel.name); await viewerPage.clickInfoButton(); @@ -249,7 +249,7 @@ describe('Aspect oriented config', () => { ' }' + '}'); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await viewerPage.viewFile(pngFileModel.name); await viewerPage.clickInfoButton(); @@ -276,7 +276,7 @@ describe('Aspect oriented config', () => { ' }' + '}'); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await viewerPage.viewFile(pngFileModel.name); await viewerPage.clickInfoButton(); @@ -298,7 +298,7 @@ describe('Aspect oriented config', () => { ' }' + '}'); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await viewerPage.viewFile(pngFileModel.name); await viewerPage.clickInfoButton(); diff --git a/e2e/content-services/metadata/metadata-properties.e2e.ts b/e2e/content-services/metadata/metadata-properties.e2e.ts index 4b90b17a94..be43d9d845 100644 --- a/e2e/content-services/metadata/metadata-properties.e2e.ts +++ b/e2e/content-services/metadata/metadata-properties.e2e.ts @@ -74,7 +74,7 @@ describe('CardView Component - properties', () => { await loginPage.login(acsUser.email, acsUser.password); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.waitForTableBody(); }); diff --git a/e2e/content-services/metadata/metadata-smoke-tests.e2e.ts b/e2e/content-services/metadata/metadata-smoke-tests.e2e.ts index 0b7a77f76e..6b05b4d42d 100644 --- a/e2e/content-services/metadata/metadata-smoke-tests.e2e.ts +++ b/e2e/content-services/metadata/metadata-smoke-tests.e2e.ts @@ -83,7 +83,7 @@ describe('Metadata component', () => { describe('Viewer Metadata', () => { beforeAll(async () => { await loginPage.login(acsUser.email, acsUser.password); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.waitForTableBody(); await LocalStorageUtil.setConfigField('content-metadata', JSON.stringify({ presets: { @@ -230,7 +230,7 @@ describe('Metadata component', () => { await uploadActions.createFolder(folderName, '-my-'); await loginPage.login(acsUser.email, acsUser.password); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.waitForTableBody(); }); @@ -280,7 +280,7 @@ describe('Metadata component', () => { await expect(await metadataViewPage.getPropertyText('properties.cm:description')).toEqual('check author example description'); await loginPage.login(acsUser.email, acsUser.password); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await viewerPage.viewFile(pngFileModel.name); await viewerPage.checkFileIsLoaded(); diff --git a/e2e/content-services/permissions/permissions-component.e2e.ts b/e2e/content-services/permissions/permissions-component.e2e.ts index b9d31c9223..336b792426 100644 --- a/e2e/content-services/permissions/permissions-component.e2e.ts +++ b/e2e/content-services/permissions/permissions-component.e2e.ts @@ -229,7 +229,8 @@ describe('Permissions Component', () => { await permissionsPage.addPermissionsDialog.checkSearchUserInputIsDisplayed(); await permissionsPage.addPermissionsDialog.searchUserOrGroup(groupBody.id); await permissionsPage.addPermissionsDialog.clickUserOrGroup(groupBody.displayName); - await permissionsPage.addPermissionsDialog.checkUserOrGroupIsAdded(groupBody.id); + + await permissionsPage.addPermissionsDialog.checkGroupIsAdded(groupBody.id); }); it('[C277100] Should display EVERYONE group in the search result set', async () => { @@ -263,7 +264,7 @@ describe('Permissions Component', () => { await permissionsPage.addPermissionsDialog.checkSearchUserInputIsDisplayed(); await permissionsPage.addPermissionsDialog.searchUserOrGroup(filePermissionUser.email); await permissionsPage.addPermissionsDialog.clickUserOrGroup(filePermissionUser.firstName); - await permissionsPage.addPermissionsDialog.checkUserOrGroupIsAdded(filePermissionUser.email); + await permissionsPage.addPermissionsDialog.checkUserIsAdded(filePermissionUser.email); }); afterEach(async () => { @@ -313,7 +314,7 @@ describe('Permissions Component', () => { it('[C276982] Should be able to remove User or Group from the locally set permissions', async () => { await expect(await permissionsPage.addPermissionsDialog.getRoleCellValue(filePermissionUser.email)).toEqual('Contributor'); await permissionsPage.addPermissionsDialog.clickDeletePermissionButton(); - await permissionsPage.addPermissionsDialog.checkUserOrGroupIsDeleted(filePermissionUser.email); + await permissionsPage.addPermissionsDialog.checkUserIsDeleted(filePermissionUser.email); }); }); diff --git a/e2e/content-services/permissions/site-permissions.e2e.ts b/e2e/content-services/permissions/site-permissions.e2e.ts index 324be410ba..224a68fc3f 100644 --- a/e2e/content-services/permissions/site-permissions.e2e.ts +++ b/e2e/content-services/permissions/site-permissions.e2e.ts @@ -188,7 +188,7 @@ describe('Permissions Component', () => { await permissionsPage.addPermissionsDialog.searchUserOrGroup(consumerUser.email); await permissionsPage.addPermissionsDialog.clickUserOrGroup(consumerUser.firstName); - await permissionsPage.addPermissionsDialog.checkUserOrGroupIsAdded(consumerUser.email); + await permissionsPage.addPermissionsDialog.checkUserIsAdded(consumerUser.email); await expect(await permissionsPage.addPermissionsDialog.getRoleCellValue(consumerUser.email)).toEqual('SiteCollaborator'); diff --git a/e2e/content-services/share-file/share-file.e2e.ts b/e2e/content-services/share-file/share-file.e2e.ts index ed549b17cb..d7be851249 100644 --- a/e2e/content-services/share-file/share-file.e2e.ts +++ b/e2e/content-services/share-file/share-file.e2e.ts @@ -91,7 +91,7 @@ describe('Share file', () => { describe('Shared link dialog', () => { beforeAll(async () => { await loginPage.login(acsUser.email, acsUser.password); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentListPage.selectRow(pngFileModel.name); await BrowserActions.closeMenuAndDialogs(); }); @@ -165,7 +165,7 @@ describe('Share file', () => { beforeEach(async () => { await loginPage.login(acsUser.email, acsUser.password); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.waitForTableBody(); }); diff --git a/e2e/content-services/share-file/unshare-file.e2e.ts b/e2e/content-services/share-file/unshare-file.e2e.ts index 66f069b1c2..d54fb91216 100644 --- a/e2e/content-services/share-file/unshare-file.e2e.ts +++ b/e2e/content-services/share-file/unshare-file.e2e.ts @@ -105,7 +105,7 @@ describe('Unshare file', () => { nodeId = pngUploadedFile.entry.id; await loginPage.login(acsUser.email, acsUser.password); - await navBar.clickContentServicesButton(); + await navBar.navigateToContentServices(); await contentServicesPage.waitForTableBody(); }); diff --git a/e2e/content-services/sso/sso-download-directive-component.e2e.ts b/e2e/content-services/sso/sso-download-directive-component.e2e.ts index 46df8cec3e..1ed76b7ed3 100644 --- a/e2e/content-services/sso/sso-download-directive-component.e2e.ts +++ b/e2e/content-services/sso/sso-download-directive-component.e2e.ts @@ -77,7 +77,7 @@ describe('SSO in ADF using ACS and AIS, Download Directive, Viewer, DocumentList await loginSsoPage.loginSSOIdentityService(acsUser.email, acsUser.password); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.checkAcsContainer(); await contentServicesPage.openFolder(folderName); await contentListPage.waitForTableBody(); diff --git a/e2e/content-services/version/version-actions.e2e.ts b/e2e/content-services/version/version-actions.e2e.ts index edf73577a6..ff8b785967 100644 --- a/e2e/content-services/version/version-actions.e2e.ts +++ b/e2e/content-services/version/version-actions.e2e.ts @@ -71,7 +71,7 @@ describe('Version component actions', () => { Object.assign(txtFileModel, txtUploadedFile.entry); txtFileModel.update(txtUploadedFile.entry); await loginPage.login(acsUser.email, acsUser.password); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.waitForTableBody(); }); @@ -179,7 +179,7 @@ describe('Version component actions', () => { await browser.refresh(); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.waitForTableBody(); await contentServicesPage.checkContentIsDisplayed(txtFileModel.name); }); diff --git a/e2e/content-services/version/version-properties.e2e.ts b/e2e/content-services/version/version-properties.e2e.ts index f25faeb225..5d0bc3f949 100644 --- a/e2e/content-services/version/version-properties.e2e.ts +++ b/e2e/content-services/version/version-properties.e2e.ts @@ -70,7 +70,7 @@ describe('Version Properties', () => { await loginPage.login(acsUser.email, acsUser.password); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.waitForTableBody(); }); diff --git a/e2e/content-services/version/version-smoke-tests.e2e.ts b/e2e/content-services/version/version-smoke-tests.e2e.ts index 5ac4aacb07..49325c79ca 100644 --- a/e2e/content-services/version/version-smoke-tests.e2e.ts +++ b/e2e/content-services/version/version-smoke-tests.e2e.ts @@ -84,7 +84,7 @@ describe('Version component', () => { await loginPage.login(acsUser.email, acsUser.password); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.waitForTableBody(); await contentServicesPage.versionManagerContent(txtFileModel.name); }); diff --git a/e2e/core/infinite-scrolling.e2e.ts b/e2e/core/infinite-scrolling.e2e.ts index 92f3b67369..a6094d8887 100644 --- a/e2e/core/infinite-scrolling.e2e.ts +++ b/e2e/core/infinite-scrolling.e2e.ts @@ -83,7 +83,7 @@ describe('Enable infinite scrolling', () => { }); beforeEach(async () => { - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.contentList.dataTablePage().waitTillContentLoaded(); }); diff --git a/e2e/core/login/login-component.e2e.ts b/e2e/core/login/login-component.e2e.ts index cd47a58245..f6ffd11aa1 100644 --- a/e2e/core/login/login-component.e2e.ts +++ b/e2e/core/login/login-component.e2e.ts @@ -160,7 +160,7 @@ describe('Login component', () => { await loginPage.loginWithProfile('admin'); await navigationBarPage.navigateToProcessServicesPage(); await processServicesPage.checkApsContainer(); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await loginPage.waitForElements(); }); @@ -170,7 +170,7 @@ describe('Login component', () => { await loginPage.goToLoginPage(); await expect(await loginPage.getSignInButtonIsEnabled()).toBe(false); await loginPage.loginWithProfile('admin'); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.checkAcsContainer(); }); @@ -182,7 +182,7 @@ describe('Login component', () => { await loginPage.loginWithProfile('admin'); await navigationBarPage.navigateToProcessServicesPage(); await processServicesPage.checkApsContainer(); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.checkAcsContainer(); await navigationBarPage.clickLoginButton(); await loginPage.waitForElements(); diff --git a/e2e/core/pages/content-services.page.ts b/e2e/core/pages/content-services.page.ts index 5bfeb50e27..61e0aefd78 100644 --- a/e2e/core/pages/content-services.page.ts +++ b/e2e/core/pages/content-services.page.ts @@ -293,7 +293,7 @@ export class ContentServicesPage { async goToDocumentList(): Promise { const navigationBarPage = new NavigationBarPage(); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await this.contentList.dataTablePage().waitTillContentLoaded(); } diff --git a/e2e/core/pages/navigation-bar.page.ts b/e2e/core/pages/navigation-bar.page.ts index 2b3956ee60..9fec3c1c1c 100644 --- a/e2e/core/pages/navigation-bar.page.ts +++ b/e2e/core/pages/navigation-bar.page.ts @@ -30,31 +30,32 @@ export class NavigationBarPage { processServicesCloudHomeButton = this.linkMenuChildrenContainer.element(by.css('.app-sidenav-link[data-automation-id="Home"]')); themeButton = element(by.css('button[data-automation-id="theme menu"]')); themeMenuContent = element(by.css('div[class*="mat-menu-panel"]')); - languageMenuButton = element(by.css('button[data-automation-id="language-menu-button"]')); appTitle = element(by.css('.adf-app-title')); menuButton = element(by.css('button[data-automation-id="adf-menu-icon"]')); formButton = this.linkMenuChildrenContainer.element(by.css('.app-sidenav-link[data-automation-id="Form"]')); peopleGroupCloudButton = this.linkMenuChildrenContainer.element(by.css('.app-sidenav-link[data-automation-id="People/Group Cloud"]')); logoutSection: ElementFinder = element(by.css('div[data-automation-id="adf-logout-section"]')); + personalFiles: ElementFinder = element(by.css('div [title="Personal Files"]')); - async clickNavigationBarItem(title: string): Promise { + async clickNavigationBarItem(title: string, untilElementIsVisible?: ElementFinder): Promise { Logger.log(`clickNavigationBarItem ${title}`); const menu = element(by.css(`.app-sidenav-link[data-automation-id="${title}"]`)); await BrowserActions.closeMenuAndDialogs(); - await BrowserActions.click(menu); + + if (untilElementIsVisible) { + await BrowserActions.clickUntilIsNotVisible(menu, untilElementIsVisible); + } else { + await BrowserActions.click(menu); + } } async clickHomeButton(): Promise { await this.clickNavigationBarItem('Home'); } - async clickContentServicesButton(): Promise { - await this.clickNavigationBarItem('Content Services'); - } - - async clickCardViewButton(): Promise { - await this.clickNavigationBarItem('CardView'); + async navigateToContentServices(): Promise { + await this.clickNavigationBarItem('Content Services', this.personalFiles); } async clickHeaderDataButton(): Promise { @@ -89,7 +90,7 @@ export class NavigationBarPage { await BrowserVisibility.waitUntilElementIsNotPresent(this.linkMenuChildrenContainer); } - async clickProcessServicesButton() { + private async clickProcessServicesButton() { await BrowserActions.closeMenuAndDialogs(); await BrowserActions.clickUntilIsNotVisible(this.getMenuItem('Process Services'), this.linkMenuChildrenContainer); } @@ -206,18 +207,6 @@ export class NavigationBarPage { await BrowserActions.getUrl(`${browser.baseUrl}/files/${folderId}`); } - async openLanguageMenu(): Promise { - await BrowserActions.closeMenuAndDialogs(); - await BrowserActions.click(this.languageMenuButton); - await BrowserVisibility.waitUntilElementIsVisible(this.appTitle); - } - - async chooseLanguage(language): Promise { - const buttonLanguage = element(by.xpath(`//adf-language-menu//button[contains(text(), '${language}')]`)); - await BrowserActions.click(buttonLanguage); - await BrowserVisibility.waitUntilElementIsNotPresent(this.linkMenuChildrenContainer); - } - async checkMenuButtonIsDisplayed(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.menuButton); } diff --git a/e2e/core/settings-component.e2e.ts b/e2e/core/settings-component.e2e.ts index 10695ee671..bd2ae876b3 100644 --- a/e2e/core/settings-component.e2e.ts +++ b/e2e/core/settings-component.e2e.ts @@ -168,7 +168,7 @@ describe('Settings component', () => { await loginPage.enterUsername(browser.params.testConfig.users.admin.username); await loginPage.enterPassword(browser.params.testConfig.users.admin.password); await loginPage.clickSignInButton(); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.checkAcsContainer(); await navigationBarPage.clickSettingsButton(); await expect(await settingsPage.getSelectedOptionText()).toBe('ECM'); @@ -195,7 +195,7 @@ describe('Settings component', () => { await loginPage.enterUsername(browser.params.testConfig.users.admin.username); await loginPage.enterPassword(browser.params.testConfig.users.admin.password); await loginPage.clickSignInButton(); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.checkAcsContainer(); await navigationBarPage.navigateToProcessServicesPage(); await processServicesPage.checkApsContainer(); diff --git a/e2e/core/viewer/viewer-share-content.ts b/e2e/core/viewer/viewer-share-content.ts index 5053cdb1f4..f3dfc51227 100644 --- a/e2e/core/viewer/viewer-share-content.ts +++ b/e2e/core/viewer/viewer-share-content.ts @@ -106,7 +106,7 @@ describe('Viewer', () => { }); it('[C260106] Should be able to open a Word file shared via API', async () => { - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await contentServicesPage.waitForTableBody(); await contentList.selectRow(wordFileInfo.name); diff --git a/e2e/protractor.conf.js b/e2e/protractor.conf.js index 28d368e285..ef81569714 100644 --- a/e2e/protractor.conf.js +++ b/e2e/protractor.conf.js @@ -5,7 +5,7 @@ const retry = require('protractor-retry').retry; const tsConfig = require('./tsconfig.e2e.json'); const testConfig = require('./test.config'); const RESOURCES = require('./util/resources'); -const smartRunner = require('protractor-smartrunner'); +const SmartRunner = require('protractor-smartrunner'); const resolve = require('path').resolve; const fs = require('fs'); @@ -165,7 +165,7 @@ exports.config = { includeStackTrace: true, print: () => { }, - ...smartRunner.withOptionalExclusions( + ...SmartRunner.withOptionalExclusions( resolve(__dirname, './protractor.excludes.json') ) }, @@ -196,11 +196,14 @@ exports.config = { async onPrepare() { if (process.env.CI) { - smartRunner.apply({repoHash: process.env.GIT_HASH || ''}); + retry.onPrepare(); + const repoHash = process.env.GIT_HASH || ''; + const outputDirectory = process.env.SMART_RUNNER_DIRECTORY; + console.log(`SmartRunner's repoHash: "${repoHash}"`); + console.log(`SmartRunner's outputDirectory: "${outputDirectory}"`); + SmartRunner.apply({ outputDirectory, repoHash }); } - retry.onPrepare(); - jasmine.DEFAULT_TIMEOUT_INTERVAL = TIMEOUT; require('ts-node').register({ diff --git a/e2e/protractor.excludes.json b/e2e/protractor.excludes.json index fe1aead005..240299b1e9 100644 --- a/e2e/protractor.excludes.json +++ b/e2e/protractor.excludes.json @@ -6,5 +6,12 @@ "C260051": "login problem APS not basic", "C279932": "login problem APS not basic", "C279931": "login problem APS not basic", - "C279930": "login problem APS not basic" + "C279930": "login problem APS not basic", + "C274691": "ADF-5283 Fix Permission Flaky test", + "C276980": "ADF-5283 Fix Permission Flaky test", + "C276993": "ADF-5283 Fix Permission Flaky test", + "C276996": "ADF-5283 Fix Permission Flaky test", + "C277000": "ADF-5283 Fix Permission Flaky test", + "C277003": "ADF-5283 Fix Permission Flaky test", + "C277004": "ADF-5283 Fix Permission Flaky test" } diff --git a/e2e/search/components/search-check-list.e2e.ts b/e2e/search/components/search-check-list.e2e.ts index 1d359503de..e785d8448d 100644 --- a/e2e/search/components/search-check-list.e2e.ts +++ b/e2e/search/components/search-check-list.e2e.ts @@ -81,7 +81,7 @@ describe('Search Checklist Component', () => { }); beforeEach(async () => { - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await searchBarPage.checkSearchIconIsVisible(); await searchBarPage.clickOnSearchIcon(); await searchBarPage.enterTextAndPressEnter(randomName); @@ -147,7 +147,7 @@ describe('Search Checklist Component', () => { }); it('[C277143] Should be able to click show more/less button with pageSize set as default', async () => { - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); for (let numberOfOptions = 0; numberOfOptions < 8; numberOfOptions++) { jsonFile.categories[1].component.settings.options.push({ @@ -185,7 +185,7 @@ describe('Search Checklist Component', () => { }); it('[C277144] Should be able to click show more/less button with pageSize set with a custom value', async () => { - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); jsonFile.categories[1].component.settings.pageSize = 10; @@ -209,7 +209,7 @@ describe('Search Checklist Component', () => { await searchFiltersPage.checkListFiltersPage().checkShowMoreButtonIsNotDisplayed(); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); jsonFile.categories[1].component.settings.pageSize = 11; await LocalStorageUtil.setConfigField('search', JSON.stringify(jsonFile)); @@ -225,7 +225,7 @@ describe('Search Checklist Component', () => { await searchFiltersPage.checkListFiltersPage().checkShowMoreButtonIsNotDisplayed(); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); jsonFile.categories[1].component.settings.pageSize = 9; @@ -242,7 +242,7 @@ describe('Search Checklist Component', () => { }); it('[C277145] Should be able to click show more/less button with pageSize set to zero', async () => { - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); jsonFile.categories[1].component.settings.pageSize = 0; @@ -276,7 +276,7 @@ describe('Search Checklist Component', () => { await searchFiltersPage.checkListFiltersPage().checkShowMoreButtonIsNotDisplayed(); await searchFiltersPage.checkListFiltersPage().checkShowLessButtonIsDisplayed(); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); delete jsonFile.categories[1].component.settings.pageSize; @@ -308,7 +308,7 @@ describe('Search Checklist Component', () => { beforeEach(async () => { jsonFile = SearchConfiguration.getConfiguration(); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); }); it('[C277018] Should be able to change the operator', async () => { diff --git a/e2e/search/components/search-date-range.e2e.ts b/e2e/search/components/search-date-range.e2e.ts index a6e957d5d6..d51722e7c9 100644 --- a/e2e/search/components/search-date-range.e2e.ts +++ b/e2e/search/components/search-date-range.e2e.ts @@ -176,7 +176,7 @@ describe('Search Date Range Filter', () => { }); it('[C277117] Should be able to change date format', async () => { - await navigationBar.clickContentServicesButton(); + await navigationBar.navigateToContentServices(); jsonFile.categories[4].component.settings.dateFormat = 'MM-DD-YY'; diff --git a/e2e/search/components/search-number-range.e2e.ts b/e2e/search/components/search-number-range.e2e.ts index 408154dab0..205fae3107 100644 --- a/e2e/search/components/search-number-range.e2e.ts +++ b/e2e/search/components/search-number-range.e2e.ts @@ -379,7 +379,7 @@ describe('Search Number Range Filter', () => { }); it('[C276928] Should be able to change the field property for number range', async () => { - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); jsonFile.categories[3].component.settings.field = 'cm:created'; @@ -418,7 +418,7 @@ describe('Search Number Range Filter', () => { }); it('[C277139] Should be able to set To field to be exclusive', async () => { - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); jsonFile.categories[3].component.settings.format = '[{FROM} TO {TO}>'; @@ -457,7 +457,7 @@ describe('Search Number Range Filter', () => { }); it('[C277140] Should be able to set From field to be exclusive', async () => { - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); jsonFile.categories[3].component.settings.format = '<{FROM} TO {TO}]'; diff --git a/e2e/search/components/search-radio.e2e.ts b/e2e/search/components/search-radio.e2e.ts index 1dd7203c37..6ebe8dd4ad 100644 --- a/e2e/search/components/search-radio.e2e.ts +++ b/e2e/search/components/search-radio.e2e.ts @@ -135,7 +135,7 @@ describe('Search Radio Component', () => { }); it('[C277147] Should be able to customise the pageSize value', async () => { - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); jsonFile.categories[5].component.settings.pageSize = 10; @@ -157,7 +157,7 @@ describe('Search Radio Component', () => { await expect(await searchFiltersPage.typeFiltersPage().getRadioButtonsNumberOnPage()).toBe(10); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); jsonFile.categories[5].component.settings.pageSize = 11; @@ -172,7 +172,7 @@ describe('Search Radio Component', () => { await expect(await searchFiltersPage.typeFiltersPage().getRadioButtonsNumberOnPage()).toBe(10); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); jsonFile.categories[5].component.settings.pageSize = 9; await LocalStorageUtil.setConfigField('search', JSON.stringify(jsonFile)); @@ -193,7 +193,7 @@ describe('Search Radio Component', () => { }); it('[C277148] Should be able to click show more/less button', async () => { - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); jsonFile.categories[5].component.settings.pageSize = 0; @@ -232,7 +232,7 @@ describe('Search Radio Component', () => { await searchFiltersPage.typeFiltersPage().checkShowMoreButtonIsDisplayed(); await searchFiltersPage.typeFiltersPage().checkShowLessButtonIsNotDisplayed(); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); delete jsonFile.categories[5].component.settings.pageSize; await LocalStorageUtil.setConfigField('search', JSON.stringify(jsonFile)); @@ -278,7 +278,7 @@ describe('Search Radio Component', () => { }); it('[C277033] Should be able to add a new option', async () => { - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); jsonFile.categories[5].component.settings.options.push({ 'name': filterType.custom, diff --git a/e2e/search/components/search-slider.e2e.ts b/e2e/search/components/search-slider.e2e.ts index aabdf61ebd..5b3fc9ec21 100644 --- a/e2e/search/components/search-slider.e2e.ts +++ b/e2e/search/components/search-slider.e2e.ts @@ -154,7 +154,7 @@ describe('Search Slider Filter', () => { beforeEach(async () => { jsonFile = SearchConfiguration.getConfiguration(); - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); }); it('[C276983] Should be able to disable thumb label in Search Size Slider', async () => { diff --git a/e2e/search/components/search-sorting-picker.e2e.ts b/e2e/search/components/search-sorting-picker.e2e.ts index 765c18558e..b499f21b9f 100644 --- a/e2e/search/components/search-sorting-picker.e2e.ts +++ b/e2e/search/components/search-sorting-picker.e2e.ts @@ -101,7 +101,7 @@ describe('Search Sorting Picker', () => { }); it('[C277271] Should be able to add a custom search sorter in the "sort by" option', async () => { - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); jsonFile = SearchConfiguration.getConfiguration(); jsonFile.sorting.options.push({ 'key': 'Modifier', @@ -124,7 +124,7 @@ describe('Search Sorting Picker', () => { }); it('[C277272] Should be able to exclude a standard search sorter from the sorting option', async () => { - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); jsonFile = SearchConfiguration.getConfiguration(); const removedOption = jsonFile.sorting.options.splice(0, 1); await LocalStorageUtil.setConfigField('search', JSON.stringify(jsonFile)); @@ -141,7 +141,7 @@ describe('Search Sorting Picker', () => { }); it('[C277273] Should be able to set a default order for a search sorting option', async () => { - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); jsonFile = SearchConfiguration.getConfiguration(); jsonFile.sorting.options[0].ascending = false; @@ -195,7 +195,7 @@ describe('Search Sorting Picker', () => { }); it('[C277288] Should be able to sort the search results by "Modified Date" ASC', async () => { - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); jsonFile = SearchConfiguration.getConfiguration(); jsonFile.sorting.options.push({ diff --git a/e2e/search/components/search-text.e2e.ts b/e2e/search/components/search-text.e2e.ts index 8de8c64f9d..7416a739bf 100644 --- a/e2e/search/components/search-text.e2e.ts +++ b/e2e/search/components/search-text.e2e.ts @@ -100,7 +100,7 @@ describe('Search component - Text widget', () => { jsonFile.categories[0].component.settings.field = 'cm:description'; - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await LocalStorageUtil.setConfigField('search', JSON.stringify(jsonFile)); await searchBarPage.clickOnSearchIcon(); diff --git a/e2e/search/search-component.e2e.ts b/e2e/search/search-component.e2e.ts index c35b08abb1..9d495048cd 100644 --- a/e2e/search/search-component.e2e.ts +++ b/e2e/search/search-component.e2e.ts @@ -277,7 +277,7 @@ describe('Search component - Search Bar', () => { const searchConfiguration = SearchConfiguration.getConfiguration(); beforeAll(async () => { - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await LocalStorageUtil.setConfigField('search', JSON.stringify(searchConfiguration)); diff --git a/e2e/search/search-filters.e2e.ts b/e2e/search/search-filters.e2e.ts index 4dac987e91..b291f38379 100644 --- a/e2e/search/search-filters.e2e.ts +++ b/e2e/search/search-filters.e2e.ts @@ -216,7 +216,7 @@ describe('Search Filters', () => { }); it('[C299200] Should reset the filters facet with search query', async () => { - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await searchBarPage.checkSearchIconIsVisible(); await searchBarPage.clickOnSearchIcon(); await searchBarPage.enterTextAndPressEnter(fileTypeTxt1.entry.name); @@ -244,7 +244,7 @@ describe('Search Filters', () => { describe('Change config', () => { it('[C291802] Should be able to filter facet fields with "Contains"', async () => { - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); jsonFile['filterWithContains'] = true; await LocalStorageUtil.setConfigField('search', JSON.stringify(jsonFile)); @@ -258,7 +258,7 @@ describe('Search Filters', () => { }); it('[C291981] Should group search facets under the default label, by default', async () => { - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); await LocalStorageUtil.setConfigField('search', JSON.stringify(jsonFile)); @@ -272,7 +272,7 @@ describe('Search Filters', () => { }); it('[C299124] Should be able to parse escaped empty spaced labels inside facetFields', async () => { - await navigationBarPage.clickContentServicesButton(); + await navigationBarPage.navigateToContentServices(); jsonFile.facetFields.fields[0].label = 'My File Types'; jsonFile.facetFields.fields[1].label = 'My File Sizes'; diff --git a/lib/cli/scripts/check-cs-env.ts b/lib/cli/scripts/check-cs-env.ts index 5a69057a9b..11fe68001c 100755 --- a/lib/cli/scripts/check-cs-env.ts +++ b/lib/cli/scripts/check-cs-env.ts @@ -50,6 +50,8 @@ async function checkEnv() { } async function checkDiskSpaceFullEnv() { + console.log(`Start Check disk full space`); + try { const alfrescoJsApi = new alfrescoApi.AlfrescoApiCompatibility({ @@ -98,7 +100,6 @@ async function checkDiskSpaceFullEnv() { } catch (error) { counter++; - console.log('error', error); const retry = program.retry || MAX_RETRY; const time = program.time || TIMEOUT; if (retry === counter) { @@ -108,7 +109,7 @@ async function checkDiskSpaceFullEnv() { console.log('============================================================='); process.exit(1); } else { - console.log(`Retry in 1 minute attempt N ${counter}`, error); + console.log(`Retry N ${counter} ${error?.error?.status}`); sleep(time); checkDiskSpaceFullEnv(); } @@ -118,6 +119,7 @@ async function checkDiskSpaceFullEnv() { } function sleep(delay) { + console.log(`Sleep ${delay}`); var start = new Date().getTime(); while (new Date().getTime() < start + delay) ; } diff --git a/lib/testing/src/lib/content-services/dialog/add-permissions-dialog.page.ts b/lib/testing/src/lib/content-services/dialog/add-permissions-dialog.page.ts index fa991fc387..bbcc79a3a5 100644 --- a/lib/testing/src/lib/content-services/dialog/add-permissions-dialog.page.ts +++ b/lib/testing/src/lib/content-services/dialog/add-permissions-dialog.page.ts @@ -70,12 +70,17 @@ export class AddPermissionsDialogPage { await BrowserActions.click(this.addButton); } - async checkUserOrGroupIsAdded(name: string): Promise { + async checkUserIsAdded(name: string): Promise { const userOrGroupName = element(by.css('div[data-automation-id="text_' + name + '"]')); await BrowserVisibility.waitUntilElementIsVisible(userOrGroupName); } - async checkUserOrGroupIsDeleted(name: string): Promise { + async checkGroupIsAdded(name: string): Promise { + const userOrGroupName = element(by.css('div[data-automation-id="text_GROUP_' + name + '"]')); + await BrowserVisibility.waitUntilElementIsVisible(userOrGroupName); + } + + async checkUserIsDeleted(name: string): Promise { const userOrGroupName = element(by.css('div[data-automation-id="text_' + name + '"]')); await BrowserVisibility.waitUntilElementIsNotVisible(userOrGroupName); } diff --git a/scripts/ci/job_hooks/after_e2e.sh b/scripts/ci/job_hooks/after_e2e.sh new file mode 100755 index 0000000000..a85f2496dc --- /dev/null +++ b/scripts/ci/job_hooks/after_e2e.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +# Upload protractor-smartrunner artifact related to this particular job to S3 +./scripts/ci/utils/artifact-to-s3.sh -a "$SMART_RUNNER_DIRECTORY" -o "$S3_DBP_FOLDER/protractor-smartrunner-$TRAVIS_JOB_ID.tar.bz2" diff --git a/scripts/ci/job_hooks/before_e2e.sh b/scripts/ci/job_hooks/before_e2e.sh new file mode 100755 index 0000000000..7bef3fe482 --- /dev/null +++ b/scripts/ci/job_hooks/before_e2e.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +# Download built application artifact from S3 +./scripts/ci/utils/artifact-from-s3.sh -a "$S3_DBP_FOLDER/alfresco-demoshell.tar.bz2" -o "./dist/demo-shell" +./scripts/ci/utils/artifact-from-s3.sh -a "$S3_DBP_FOLDER/alfresco-libs.tar.bz2" -o "./lib/dist" + +# Download protractor-smartrunner artifact related to this particular job from S3, if exists +./scripts/ci/utils/artifact-from-s3.sh -a "$S3_DBP_FOLDER/protractor-smartrunner-$TRAVIS_JOB_ID.tar.bz2" -o "$SMART_RUNNER_DIRECTORY" + diff --git a/scripts/ci/job_hooks/before_install.sh b/scripts/ci/job_hooks/before_install.sh index 655ef992ee..b0108b67bd 100755 --- a/scripts/ci/job_hooks/before_install.sh +++ b/scripts/ci/job_hooks/before_install.sh @@ -2,6 +2,10 @@ pip install --user awscli +# Settings for protractor-smartrunner ------------------------------------------------- +export SMART_RUNNER_DIRECTORY=".protractor-smartrunner" + + export NODE_OPTIONS="--max_old_space_size=30000" export GIT_HASH=`git rev-parse HEAD` echo "GIT_HASH: $GIT_HASH"