diff --git a/e2e/content-services/comments/comment-component.e2e.ts b/e2e/content-services/comments/comment-component.e2e.ts index 2208d89eb9..3ab185e0d0 100644 --- a/e2e/content-services/comments/comment-component.e2e.ts +++ b/e2e/content-services/comments/comment-component.e2e.ts @@ -88,7 +88,8 @@ describe('Comment Component', () => { loginPage.loginToContentServicesUsingUserModel(acsUser); - contentServicesPage.navigateToDocumentList(); + navigationBar.clickContentServicesButton(); + contentServicesPage.waitForTableBody(); done(); }); @@ -195,7 +196,7 @@ describe('Comment Component', () => { loginPage.loginToContentServicesUsingUserModel(acsUser); - contentServicesPage.navigateToDocumentList(); + navigationBar.clickContentServicesButton(); done(); }); diff --git a/e2e/content-services/directives/create-folder-directive.e2e.ts b/e2e/content-services/directives/create-folder-directive.e2e.ts index 37d0ffdc33..0c7a801cc3 100644 --- a/e2e/content-services/directives/create-folder-directive.e2e.ts +++ b/e2e/content-services/directives/create-folder-directive.e2e.ts @@ -20,7 +20,6 @@ import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import { CreateFolderDialog } from '../../pages/adf/dialog/createFolderDialog'; import { NotificationPage } from '../../pages/adf/notificationPage'; import { MetadataViewPage } from '../../pages/adf/metadataViewPage'; -import { ContentListPage } from '../../pages/adf/dialog/contentListPage'; import { AcsUserModel } from '../../models/ACS/acsUserModel'; import TestConfig = require('../../test.config'); @@ -34,7 +33,6 @@ describe('Create folder directive', function () { let createFolderDialog = new CreateFolderDialog(); let notificationPage = new NotificationPage(); let metadataViewPage = new MetadataViewPage(); - let contentListPage = new ContentListPage(); let acsUser = new AcsUserModel(); @@ -103,7 +101,7 @@ describe('Create folder directive', function () { contentServicesPage.createNewFolder(folderName); contentServicesPage.checkContentIsDisplayed(folderName); - contentServicesPage.navigateToFolder(folderName); + contentServicesPage.doubleClickRow(folderName); contentServicesPage.createNewFolder(folderName); contentServicesPage.checkContentIsDisplayed(folderName); @@ -122,7 +120,7 @@ describe('Create folder directive', function () { contentServicesPage.checkContentIsDisplayed(folderName); - contentListPage.metadataContent(folderName); + contentServicesPage.metadataContent(folderName); expect(metadataViewPage.getPropertyText('properties.cm:description')).toEqual('this is the description'); }); 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 c720d21e60..c7f6300a05 100644 --- a/e2e/content-services/document-list/document-list-actions.e2e.ts +++ b/e2e/content-services/document-list/document-list-actions.e2e.ts @@ -18,7 +18,6 @@ import { browser } from 'protractor'; import { LoginPage } from '../../pages/adf/loginPage'; import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; -import { ContentListPage } from '../../pages/adf/dialog/contentListPage'; import { AcsUserModel } from '../../models/ACS/acsUserModel'; import TestConfig = require('../../test.config'); import resources = require('../../util/resources'); @@ -31,7 +30,7 @@ describe('Document List Component - Actions', () => { let loginPage = new LoginPage(); let contentServicesPage = new ContentServicesPage(); - let contentListPage = new ContentListPage(); + let contentListPage = contentServicesPage.getDocumentList(); let uploadedFolder, secondUploadedFolder; let uploadActions = new UploadActions(); let acsUser = null; @@ -88,8 +87,8 @@ describe('Document List Component - Actions', () => { it('[C213257] Should be able to copy a file', () => { browser.driver.sleep(15000); - contentListPage.rightClickOnRowNamed(pdfUploadedNode.entry.name); - contentListPage.pressContextMenuActionNamed('Copy'); + contentListPage.rightClickOnRow(pdfUploadedNode.entry.name); + contentServicesPage.pressContextMenuActionNamed('Copy'); contentServicesPage.typeIntoNodeSelectorSearchField(folderName); contentServicesPage.clickContentNodeSelectorResult(folderName); contentServicesPage.clickCopyButton(); @@ -99,45 +98,45 @@ describe('Document List Component - Actions', () => { }); it('[C280561] Should be able to delete a file via dropdown menu', () => { - contentListPage.deleteContent(pdfFileModel.name); - contentListPage.checkContentIsNotDisplayed(pdfFileModel.name); + contentServicesPage.deleteContent(pdfFileModel.name); + contentServicesPage.checkContentIsNotDisplayed(pdfFileModel.name); pdfUploadedNode = null; }); it('[C280562] Should be able to delete multiple files via dropdown menu', () => { - contentListPage.clickRowToSelect(pdfFileModel.name); - contentListPage.clickRowToSelect(testFileModel.name); - contentListPage.deleteContent(pdfFileModel.name); - contentListPage.checkContentIsNotDisplayed(pdfFileModel.name); - contentListPage.checkContentIsDisplayed(testFileModel.name); + contentListPage.selectRow(pdfFileModel.name); + contentListPage.selectRow(testFileModel.name); + contentServicesPage.deleteContent(pdfFileModel.name); + contentServicesPage.checkContentIsNotDisplayed(pdfFileModel.name); + contentServicesPage.checkContentIsDisplayed(testFileModel.name); }); it('[C280565] Should be able to delete a file using context menu', () => { - contentListPage.rightClickOnRowNamed(pdfFileModel.name); - contentListPage.pressContextMenuActionNamed('Delete'); - contentListPage.checkContentIsNotDisplayed(pdfFileModel.name); + contentListPage.rightClickOnRow(pdfFileModel.name); + contentServicesPage.pressContextMenuActionNamed('Delete'); + contentServicesPage.checkContentIsNotDisplayed(pdfFileModel.name); pdfUploadedNode = null; }); it('[C280566] Should be able to open context menu with right click', () => { - contentListPage.rightClickOnRowNamed(pdfFileModel.name); - contentListPage.checkContextActionIsVisible('Download'); - contentListPage.checkContextActionIsVisible('Copy'); - contentListPage.checkContextActionIsVisible('Move'); - contentListPage.checkContextActionIsVisible('Delete'); - contentListPage.checkContextActionIsVisible('Info'); - contentListPage.checkContextActionIsVisible('Manage versions'); - contentListPage.checkContextActionIsVisible('Permission'); - contentListPage.checkContextActionIsVisible('Lock'); + contentListPage.rightClickOnRow(pdfFileModel.name); + contentServicesPage.checkContextActionIsVisible('Download'); + contentServicesPage.checkContextActionIsVisible('Copy'); + contentServicesPage.checkContextActionIsVisible('Move'); + contentServicesPage.checkContextActionIsVisible('Delete'); + contentServicesPage.checkContextActionIsVisible('Info'); + contentServicesPage.checkContextActionIsVisible('Manage versions'); + contentServicesPage.checkContextActionIsVisible('Permission'); + contentServicesPage.checkContextActionIsVisible('Lock'); }); it('[C280567] Should be able to delete multiple files using context menu', () => { - contentListPage.clickRowToSelect(pdfFileModel.name); - contentListPage.clickRowToSelect(testFileModel.name); - contentListPage.rightClickOnRowNamed(pdfFileModel.name); - contentListPage.pressContextMenuActionNamed('Delete'); - contentListPage.checkContentIsNotDisplayed(pdfFileModel.name); - contentListPage.checkContentIsDisplayed(testFileModel.name); + contentListPage.selectRow(pdfFileModel.name); + contentListPage.selectRow(testFileModel.name); + contentListPage.rightClickOnRow(pdfFileModel.name); + contentServicesPage.pressContextMenuActionNamed('Delete'); + contentServicesPage.checkContentIsNotDisplayed(pdfFileModel.name); + contentServicesPage.checkContentIsDisplayed(testFileModel.name); }); }); @@ -173,25 +172,25 @@ describe('Document List Component - Actions', () => { }); it('[C260123] Should be able to delete a folder using context menu', () => { - contentListPage.deleteContent(folderName); - contentListPage.checkContentIsNotDisplayed(folderName); + contentServicesPage.deleteContent(folderName); + contentServicesPage.checkContentIsNotDisplayed(folderName); uploadedFolder = null; }); it('[C280568] Should be able to open context menu with right click', () => { - contentListPage.rightClickOnRowNamed(folderName); - contentListPage.checkContextActionIsVisible('Download'); - contentListPage.checkContextActionIsVisible('Copy'); - contentListPage.checkContextActionIsVisible('Move'); - contentListPage.checkContextActionIsVisible('Delete'); - contentListPage.checkContextActionIsVisible('Info'); - contentListPage.checkContextActionIsVisible('Permission'); + contentListPage.rightClickOnRow(folderName); + contentServicesPage.checkContextActionIsVisible('Download'); + contentServicesPage.checkContextActionIsVisible('Copy'); + contentServicesPage.checkContextActionIsVisible('Move'); + contentServicesPage.checkContextActionIsVisible('Delete'); + contentServicesPage.checkContextActionIsVisible('Info'); + contentServicesPage.checkContextActionIsVisible('Permission'); }); it('[C260138] Should be able to copy a folder', () => { browser.driver.sleep(15000); - contentListPage.copyContent(folderName); + contentServicesPage.copyContent(folderName); contentServicesPage.typeIntoNodeSelectorSearchField(secondFolderName); contentServicesPage.clickContentNodeSelectorResult(secondFolderName); contentServicesPage.clickCopyButton(); 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 b589f2b0b6..3c444ff3df 100644 --- a/e2e/content-services/document-list/document-list-component.e2e.ts +++ b/e2e/content-services/document-list/document-list-component.e2e.ts @@ -91,6 +91,8 @@ describe('Document List Component', () => { afterAll(async (done) => { await this.alfrescoJsApi.core.sitesApi.deleteSite(privateSite.entry.id); + navBar.openLanguageMenu(); + navBar.chooseLanguage('English'); done(); }); @@ -178,8 +180,12 @@ describe('Document List Component', () => { done(); }); + beforeEach(async (done) => { + await loginPage.loginToContentServicesUsingUserModel(acsUser); + done(); + }); + it('[C279926] Should only display the user\'s files and folders', () => { - loginPage.loginToContentServicesUsingUserModel(acsUser); contentServicesPage.goToDocumentList(); contentServicesPage.checkContentIsDisplayed(folderName); contentServicesPage.checkContentIsDisplayed(pdfFileModel.name); @@ -188,7 +194,6 @@ describe('Document List Component', () => { }); it('[C279927] Should display default columns', () => { - loginPage.loginToContentServicesUsingUserModel(acsUser); contentServicesPage.goToDocumentList(); contentServicesPage.checkColumnNameHeader(); contentServicesPage.checkColumnSizeHeader(); @@ -199,7 +204,6 @@ describe('Document List Component', () => { it('[C279928] Should be able to display date with timeAgo', async (done) => { await this.alfrescoJsApi.login(acsUser.id, acsUser.password); timeAgoUploadedNode = await uploadActions.uploadFile(this.alfrescoJsApi, timeAgoFileModel.location, timeAgoFileModel.name, '-my-'); - loginPage.loginToContentServicesUsingUserModel(acsUser); contentServicesPage.goToDocumentList(); let dateValue = contentServicesPage.getColumnValueForRow(timeAgoFileModel.name, 'Created'); expect(dateValue).toContain('ago'); @@ -210,7 +214,6 @@ describe('Document List Component', () => { await this.alfrescoJsApi.login(acsUser.id, acsUser.password); mediumDateUploadedNode = await uploadActions.uploadFile(this.alfrescoJsApi, mediumFileModel.location, mediumFileModel.name, '-my-'); let createdDate = moment(mediumDateUploadedNode.createdAt).format('ll'); - loginPage.loginToContentServicesUsingUserModel(acsUser); contentServicesPage.goToDocumentList(); contentServicesPage.enableMediumTimeFormat(); let dateValue = contentServicesPage.getColumnValueForRow(mediumFileModel.name, 'Created'); @@ -240,16 +243,20 @@ describe('Document List Component', () => { beforeAll(async (done) => { - acsUser = new AcsUserModel(); + let user = new AcsUserModel(); await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); - await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser); + await this.alfrescoJsApi.core.peopleApi.addPerson(user); - await this.alfrescoJsApi.login(acsUser.id, acsUser.password); + await this.alfrescoJsApi.login(user.id, user.password); fileANode = await uploadActions.uploadFile(this.alfrescoJsApi, fakeFileA.location, fakeFileA.name, '-my-'); fileBNode = await uploadActions.uploadFile(this.alfrescoJsApi, fakeFileB.location, fakeFileB.name, '-my-'); fileCNode = await uploadActions.uploadFile(this.alfrescoJsApi, fakeFileC.location, fakeFileC.name, '-my-'); + + loginPage.loginToContentServicesUsingUserModel(user); + contentServicesPage.goToDocumentList(); + done(); }); @@ -268,39 +275,27 @@ describe('Document List Component', () => { }); it('[C260112] Should be able to sort by name (Ascending)', () => { - loginPage.loginToContentServicesUsingUserModel(acsUser); - contentServicesPage.goToDocumentList(); - contentServicesPage.sortAndCheckListIsOrderedByName('asc'); + expect(contentServicesPage.sortAndCheckListIsOrderedByName('asc')).toBe(true, 'List is not sorted.'); }); it('[C272770] Should be able to sort by name (Descending)', () => { - loginPage.loginToContentServicesUsingUserModel(acsUser); - contentServicesPage.goToDocumentList(); - contentServicesPage.sortAndCheckListIsOrderedByName('desc'); + expect(contentServicesPage.sortAndCheckListIsOrderedByName('desc')).toBe(true, 'List is not sorted.'); }); it('[C272771] Should be able to sort by author (Ascending)', () => { - loginPage.loginToContentServicesUsingUserModel(acsUser); - contentServicesPage.goToDocumentList(); - contentServicesPage.sortAndCheckListIsOrderedByAuthor('asc'); + expect(contentServicesPage.sortAndCheckListIsOrderedByAuthor('asc')).toBe(true, 'List is not sorted.'); }); it('[C272772] Should be able to sort by author (Descending)', () => { - loginPage.loginToContentServicesUsingUserModel(acsUser); - contentServicesPage.goToDocumentList(); - contentServicesPage.sortAndCheckListIsOrderedByAuthor('desc'); + expect(contentServicesPage.sortAndCheckListIsOrderedByAuthor('desc')).toBe(true, 'List is not sorted.'); }); it('[C272773] Should be able to sort by date (Ascending)', () => { - loginPage.loginToContentServicesUsingUserModel(acsUser); - contentServicesPage.goToDocumentList(); - contentServicesPage.sortAndCheckListIsOrderedByCreated('asc'); + expect(contentServicesPage.sortAndCheckListIsOrderedByCreated('asc')).toBe(true, 'List is not sorted.'); }); it('[C272774] Should be able to sort by date (Descending)', () => { - loginPage.loginToContentServicesUsingUserModel(acsUser); - contentServicesPage.goToDocumentList(); - contentServicesPage.sortAndCheckListIsOrderedByCreated('desc'); + expect(contentServicesPage.sortAndCheckListIsOrderedByCreated('desc')).toBe(true, 'List is not sorted.'); }); }); @@ -323,7 +318,7 @@ describe('Document List Component', () => { loginPage.loginToContentServicesUsingUserModel(acsUser); contentServicesPage.goToDocumentList(); contentServicesPage.createNewFolder(folderName); - contentServicesPage.navigateToFolder(folderName); + contentServicesPage.doubleClickRow(folderName); contentServicesPage.checkEmptyFolderTextToBe('This folder is empty'); contentServicesPage.checkEmptyFolderImageUrlToContain('/assets/images/empty_doc_lib.svg'); done(); @@ -344,7 +339,7 @@ describe('Document List Component', () => { loginPage.loginToContentServicesUsingUserModel(acsUser); contentServicesPage.goToDocumentList(); contentServicesPage.checkContentIsDisplayed(uploadedFolder.entry.name); - contentServicesPage.navigateToFolder(uploadedFolder.entry.name); + contentServicesPage.doubleClickRow(uploadedFolder.entry.name); contentServicesPage.uploadFile(testFile.location); contentServicesPage.checkContentIsDisplayed(testFile.name); done(); @@ -645,7 +640,7 @@ describe('Document List Component', () => { it('[C280130] Should be able to go back to List View', () => { contentServicesPage.clickGridViewButton(); contentServicesPage.checkAcsContainer(); - contentServicesPage.navigateToFolder(folderName); + contentServicesPage.doubleClickRow(folderName); contentServicesPage.checkRowIsDisplayed(pdfFile.name); }); diff --git a/e2e/content-services/document-list/document-list-pagination.e2e.ts b/e2e/content-services/document-list/document-list-pagination.e2e.ts index 45284bf0c9..bef133cc1e 100644 --- a/e2e/content-services/document-list/document-list-pagination.e2e.ts +++ b/e2e/content-services/document-list/document-list-pagination.e2e.ts @@ -28,6 +28,7 @@ import { Util } from '../../util/util'; import AlfrescoApi = require('alfresco-js-api-node'); import { UploadActions } from '../../actions/ACS/upload.actions'; +import { browser } from 'protractor'; describe('Document List - Pagination', function () { let pagination = { @@ -54,10 +55,10 @@ describe('Document List - Pagination', function () { let navigationBarPage = new NavigationBarPage(); let acsUser = new AcsUserModel(); - let newFolderModel = new FolderModel({ 'name': 'newFolder' }); + let newFolderModel = new FolderModel({'name': 'newFolder'}); let fileNames = [], nrOfFiles = 20, currentPage = 1, secondSetOfFiles = [], secondSetNumber = 25; - let folderTwoModel = new FolderModel({ 'name': 'folderTwo' }); - let folderThreeModel = new FolderModel({ 'name': 'folderThree' }); + let folderTwoModel = new FolderModel({'name': 'folderTwo'}); + let folderThreeModel = new FolderModel({'name': 'folderThree'}); beforeAll(async (done) => { let uploadActions = new UploadActions(); @@ -90,7 +91,7 @@ describe('Document List - Pagination', function () { it('[C260062] Should use default pagination settings', function () { contentServicesPage.goToDocumentList(); - contentServicesPage.navigateToFolder(newFolderModel.name); + contentServicesPage.doubleClickRow(newFolderModel.name); contentServicesPage.checkAcsContainer(); contentServicesPage.waitForTableBody(); expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.twenty); @@ -105,7 +106,7 @@ describe('Document List - Pagination', function () { it('[C274713] Should be able to set Items per page to 20', function () { contentServicesPage.goToDocumentList(); - contentServicesPage.navigateToFolder(newFolderModel.name); + contentServicesPage.doubleClickRow(newFolderModel.name); contentServicesPage.checkAcsContainer(); contentServicesPage.waitForTableBody(); paginationPage.selectItemsPerPage(itemsPerPage.twenty); @@ -132,7 +133,7 @@ describe('Document List - Pagination', function () { it('[C260069] Should be able to set Items per page to 5', function () { contentServicesPage.goToDocumentList(); - contentServicesPage.navigateToFolder(newFolderModel.name); + contentServicesPage.doubleClickRow(newFolderModel.name); contentServicesPage.checkAcsContainer(); contentServicesPage.waitForTableBody(); paginationPage.selectItemsPerPage(itemsPerPage.five); @@ -188,7 +189,7 @@ describe('Document List - Pagination', function () { it('[C260067] Should be able to set Items per page to 10', function () { currentPage = 1; contentServicesPage.goToDocumentList(); - contentServicesPage.navigateToFolder(newFolderModel.name); + contentServicesPage.doubleClickRow(newFolderModel.name); contentServicesPage.checkAcsContainer(); contentServicesPage.waitForTableBody(); paginationPage.selectItemsPerPage(itemsPerPage.ten); @@ -225,7 +226,7 @@ describe('Document List - Pagination', function () { it('[C260065] Should be able to set Items per page to 15', function () { currentPage = 1; contentServicesPage.goToDocumentList(); - contentServicesPage.navigateToFolder(newFolderModel.name); + contentServicesPage.doubleClickRow(newFolderModel.name); contentServicesPage.checkAcsContainer(); contentServicesPage.waitForTableBody(); expect(contentServicesPage.getActiveBreadcrumb()).toEqual(newFolderModel.name); @@ -258,15 +259,15 @@ describe('Document List - Pagination', function () { it('[C91320] Pagination should preserve sorting', function () { contentServicesPage.goToDocumentList(); - contentServicesPage.navigateToFolder(newFolderModel.name); + contentServicesPage.doubleClickRow(newFolderModel.name); contentServicesPage.checkAcsContainer(); contentServicesPage.waitForTableBody(); expect(contentServicesPage.getActiveBreadcrumb()).toEqual(newFolderModel.name); paginationPage.selectItemsPerPage(itemsPerPage.twenty); contentServicesPage.checkAcsContainer(); contentServicesPage.waitForTableBody(); - contentServicesPage.getElementsDisplayedName().then(function (list) { - contentServicesPage.checkElementsSortedAsc(list); + contentServicesPage.getElementsDisplayedName().then((elements) => { + contentServicesPage.checkElementsSortedAsc(elements); }); contentServicesPage.sortByName(false); @@ -302,20 +303,20 @@ describe('Document List - Pagination', function () { contentServicesPage.checkAcsContainer(); contentServicesPage.waitForTableBody(); expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.five); - contentServicesPage.navigateToFolder(newFolderModel.name); + contentServicesPage.doubleClickRow(newFolderModel.name); contentServicesPage.checkAcsContainer(); contentServicesPage.waitForTableBody(); expect(contentServicesPage.getActiveBreadcrumb()).toEqual(newFolderModel.name); expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.five); contentServicesPage.createNewFolder(folderTwoModel.name).checkContentIsDisplayed(folderTwoModel.name); - contentServicesPage.navigateToFolder(folderTwoModel.name); + contentServicesPage.doubleClickRow(folderTwoModel.name); contentServicesPage.checkPaginationIsNotDisplayed(); }); it('[C260071] Should be able to change pagination when having 25 files', function () { currentPage = 1; contentServicesPage.goToDocumentList(); - contentServicesPage.navigateToFolder(folderThreeModel.name); + contentServicesPage.doubleClickRow(folderThreeModel.name); contentServicesPage.checkAcsContainer(); contentServicesPage.waitForTableBody(); expect(contentServicesPage.getActiveBreadcrumb()).toEqual(folderThreeModel.name); diff --git a/e2e/content-services/lock-file.e2e.ts b/e2e/content-services/lock-file.e2e.ts index 1dbe7ce217..1eda783196 100644 --- a/e2e/content-services/lock-file.e2e.ts +++ b/e2e/content-services/lock-file.e2e.ts @@ -37,9 +37,8 @@ describe('Lock File', () => { const loginPage = new LoginPage(); const navigationBarPage = new NavigationBarPage(); - const contentServicesPage = new ContentServicesPage(); - const contentList = contentServicesPage.getUploadAreaDocumentList(); const lockFilePage = new LockFilePage(); + const contentServices = new ContentServicesPage(); let adminUser = new AcsUserModel(); let managerUser = new AcsUserModel(); @@ -105,7 +104,9 @@ describe('Lock File', () => { loginPage.loginToContentServicesUsingUserModel(adminUser); - navigationBarPage.openContentServicesFolder(documentLibrary); + await navigationBarPage.openContentServicesFolder(documentLibrary); + + contentServices.waitForTableBody(); done(); }); @@ -129,7 +130,7 @@ describe('Lock File', () => { }); it('[C286604] Should be able to open Lock file option by clicking the lock image', () => { - contentList.lockContent(pngFileModel.name); + contentServices.lockContent(pngFileModel.name); lockFilePage.checkLockFileCheckboxIsDisplayed(); lockFilePage.checkCancelButtonIsDisplayed(); @@ -137,38 +138,38 @@ describe('Lock File', () => { }); it('[C286625] Should be able to click Cancel to cancel lock file operation', () => { - contentList.lockContent(pngFileModel.name); + contentServices.lockContent(pngFileModel.name); lockFilePage.checkLockFileCheckboxIsDisplayed(); lockFilePage.clickCancelButton(); - contentList.checkUnlockedIcon(pngFileModel.name); + contentServices.checkUnlockedIcon(pngFileModel.name); }); it('[C286603] Should be able to click on Lock file checkbox and lock a file', () => { - contentList.lockContent(pngFileToLock.name); + contentServices.lockContent(pngFileToLock.name); lockFilePage.checkLockFileCheckboxIsDisplayed(); lockFilePage.clickLockFileCheckbox(); lockFilePage.clickSaveButton(); - contentList.checkLockedIcon(pngFileToLock.name); + contentServices.checkLockedIcon(pngFileToLock.name); }); it('[C286618] Should be able to uncheck Lock file checkbox and unlock a file', () => { - contentList.lockContent(pngFileModel.name); + contentServices.lockContent(pngFileModel.name); lockFilePage.checkLockFileCheckboxIsDisplayed(); lockFilePage.clickLockFileCheckbox(); lockFilePage.clickSaveButton(); - contentList.checkLockedIcon(pngFileModel.name); - contentList.lockContent(pngFileModel.name); + contentServices.checkLockedIcon(pngFileModel.name); + contentServices.lockContent(pngFileModel.name); lockFilePage.clickLockFileCheckbox(); lockFilePage.clickSaveButton(); - contentList.checkUnlockedIcon(pngFileModel.name); + contentServices.checkUnlockedIcon(pngFileModel.name); }); }); @@ -198,7 +199,7 @@ describe('Lock File', () => { }); it('[C286610] Should not be able to delete a locked file', async () => { - await contentList.lockContent(pngFileModel.name); + await contentServices.lockContent(pngFileModel.name); await lockFilePage.checkLockFileCheckboxIsDisplayed(); await lockFilePage.clickLockFileCheckbox(); @@ -214,7 +215,7 @@ describe('Lock File', () => { }); it('[C286611] Should not be able to rename a locked file', async () => { - await contentList.lockContent(pngFileModel.name); + await contentServices.lockContent(pngFileModel.name); await lockFilePage.checkLockFileCheckboxIsDisplayed(); await lockFilePage.clickLockFileCheckbox(); @@ -230,7 +231,7 @@ describe('Lock File', () => { }); it('[C286612] Should not be able to move a locked file', async () => { - await contentList.lockContent(pngFileModel.name); + await contentServices.lockContent(pngFileModel.name); await lockFilePage.checkLockFileCheckboxIsDisplayed(); await lockFilePage.clickLockFileCheckbox(); @@ -245,7 +246,7 @@ describe('Lock File', () => { }); it('[C286613] Should not be able to update a new version on a locked file', async () => { - await contentList.lockContent(pngFileModel.name); + await contentServices.lockContent(pngFileModel.name); await lockFilePage.checkLockFileCheckboxIsDisplayed(); await lockFilePage.clickLockFileCheckbox(); @@ -295,7 +296,7 @@ describe('Lock File', () => { }); it('[C286614] Owner of the locked file should be able to rename if Allow owner to modify is checked', async () => { - await contentList.lockContent(pngFileModel.name); + await contentServices.lockContent(pngFileModel.name); await lockFilePage.checkLockFileCheckboxIsDisplayed(); await lockFilePage.clickLockFileCheckbox(); @@ -308,7 +309,7 @@ describe('Lock File', () => { }); it('[C286615] Owner of the locked file should be able to update a new version if Allow owner to modify is checked', async () => { - await contentList.lockContent(pngFileModel.name); + await contentServices.lockContent(pngFileModel.name); await lockFilePage.checkLockFileCheckboxIsDisplayed(); await lockFilePage.clickLockFileCheckbox(); @@ -321,7 +322,7 @@ describe('Lock File', () => { }); it('[C286616] Owner of the locked file should be able to move if Allow owner to modify is checked', async () => { - await contentList.lockContent(pngFileModel.name); + await contentServices.lockContent(pngFileModel.name); await lockFilePage.checkLockFileCheckboxIsDisplayed(); await lockFilePage.clickLockFileCheckbox(); @@ -337,15 +338,15 @@ describe('Lock File', () => { }); it('[C286617] Owner of the locked file should be able to delete if Allow owner to modify is checked', () => { - contentList.lockContent(pngFileToLock.name); + contentServices.lockContent(pngFileToLock.name); lockFilePage.checkLockFileCheckboxIsDisplayed(); lockFilePage.clickLockFileCheckbox(); lockFilePage.clickAllowOwnerCheckbox(); lockFilePage.clickSaveButton(); - contentList.deleteContentWithRoot(pngFileToBeLocked.entry.name); - contentList.checkContentIsNotDisplayed(pngFileToBeLocked.entry.name); + contentServices.deleteContent(pngFileToBeLocked.entry.name); + contentServices.checkContentIsNotDisplayed(pngFileToBeLocked.entry.name); }); }); diff --git a/e2e/content-services/permissions-component.e2e.ts b/e2e/content-services/permissions-component.e2e.ts index d173523048..81d0116839 100644 --- a/e2e/content-services/permissions-component.e2e.ts +++ b/e2e/content-services/permissions-component.e2e.ts @@ -21,12 +21,12 @@ import { ContentServicesPage } from '../pages/adf/contentServicesPage'; import { AcsUserModel } from '../models/ACS/acsUserModel'; import TestConfig = require('../test.config'); import resources = require('../util/resources'); -import { ContentListPage } from '../pages/adf/dialog/contentListPage'; import AlfrescoApi = require('alfresco-js-api-node'); import { FileModel } from '../models/ACS/fileModel'; import { UploadActions } from '../actions/ACS/upload.actions'; import { Util } from '../util/util'; import { browser } from 'protractor'; +import { NavigationBarPage } from '../pages/adf/navigationBarPage'; describe('Permissions Component', function () { @@ -34,9 +34,10 @@ describe('Permissions Component', function () { let contentServicesPage = new ContentServicesPage(); let permissionsPage = new PermissionsPage(); let uploadActions = new UploadActions(); - let contentList = new ContentListPage(); + let contentList = contentServicesPage.getDocumentList(); let fileOwnerUser, filePermissionUser, file; let publicSite, folderName; + const navigationBar = new NavigationBarPage(); let fileModel = new FileModel({ 'name': resources.Files.ADF_DOCUMENTS.TXT_0B.file_name, @@ -48,7 +49,7 @@ describe('Permissions Component', function () { displayName: Util.generateRandomString() }; - let groupId; + let group; let alfrescoJsApi = new AlfrescoApi({ provider: 'ECM', hostEcm: TestConfig.adf.url @@ -57,71 +58,60 @@ describe('Permissions Component', function () { fileOwnerUser = new AcsUserModel(); filePermissionUser = new AcsUserModel(); - const duplicateUserPermissionMessage = 'One or more of the permissions you have set is already present : authority -> ' + filePermissionUser.getId() + ' / role -> Contributor'; + let duplicateUserPermissionMessage = 'One or more of the permissions you have set is already present : authority -> ' + filePermissionUser.getId() + ' / role -> Contributor'; beforeAll(async (done) => { await alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + await alfrescoJsApi.core.peopleApi.addPerson(fileOwnerUser); await alfrescoJsApi.core.peopleApi.addPerson(filePermissionUser); - let group = await alfrescoJsApi.core.groupsApi.createGroup(groupBody); - groupId = group.entry.id; + + group = await alfrescoJsApi.core.groupsApi.createGroup(groupBody); browser.driver.sleep(15000); // wait search get the groups + await alfrescoJsApi.login(fileOwnerUser.id, fileOwnerUser.password); - let siteName = `PUBLIC_TEST_SITE_${Util.generateRandomString(5)}`; - folderName = `MEESEEKS_${Util.generateRandomString(5)}`; - let publicSiteBody = { visibility: 'PUBLIC', title: siteName }; + + let siteName = Util.generateRandomString(5); + let publicSiteBody = {'title': siteName, 'visibility': 'PUBLIC'}; publicSite = await alfrescoJsApi.core.sitesApi.createSite(publicSiteBody); + + folderName = Util.generateRandomString(5); await uploadActions.createFolder(alfrescoJsApi, folderName, publicSite.entry.guid); + done(); }); afterAll(async (done) => { await alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); await alfrescoJsApi.core.sitesApi.deleteSite(publicSite.entry.id); - await alfrescoJsApi.core.groupsApi.deleteGroup(groupId); + await alfrescoJsApi.core.groupsApi.deleteGroup(group.entry.id); done(); }); describe('Inherit and assigning permissions', function () { - beforeEach(async (done) => { + beforeAll(async (done) => { await alfrescoJsApi.login(fileOwnerUser.id, fileOwnerUser.password); file = await uploadActions.uploadFile(alfrescoJsApi, fileModel.location, fileModel.name, '-my-'); loginPage.loginToContentServicesUsingUserModel(fileOwnerUser); - contentServicesPage.goToDocumentList(); - contentList.checkContentIsDisplayed(fileModel.name); - contentServicesPage.checkSelectedSiteIsDisplayed('My files'); - contentList.rightClickOnRowNamed(fileModel.name); - contentList.pressContextMenuActionNamed('Permission'); done(); }); - afterEach(async (done) => { + afterAll(async (done) => { await uploadActions.deleteFilesOrFolder(alfrescoJsApi, file.entry.id); done(); }); - it('[C286272] Should be able to see results when searching for a user', () => { - permissionsPage.checkAddPermissionButtonIsDisplayed(); - permissionsPage.clickAddPermissionButton(); - permissionsPage.checkAddPermissionDialogIsDisplayed(); - permissionsPage.checkSearchUserInputIsDisplayed(); - permissionsPage.searchUserOrGroup('a'); - permissionsPage.checkResultListIsDisplayed(); - }); - - it('[C276979] Should be able to give permissions to a group of people', () => { - permissionsPage.checkAddPermissionButtonIsDisplayed(); - permissionsPage.clickAddPermissionButton(); - permissionsPage.checkAddPermissionDialogIsDisplayed(); - permissionsPage.checkSearchUserInputIsDisplayed(); - permissionsPage.searchUserOrGroup('GROUP_' + groupBody.id); - permissionsPage.clickUserOrGroup('GROUP_' + groupBody.id); - permissionsPage.checkUserOrGroupIsAdded('GROUP_' + groupBody.id); + beforeEach(() => { + navigationBar.clickContentServicesButton(); + contentServicesPage.checkContentIsDisplayed(fileModel.name); + contentServicesPage.checkSelectedSiteIsDisplayed('My files'); + contentList.rightClickOnRow(fileModel.name); + contentServicesPage.pressContextMenuActionNamed('Permission'); }); it('[C268974] Inherit Permission', () => { @@ -136,6 +126,26 @@ describe('Permissions Component', function () { expect(permissionsPage.getPermissionInheritedButtonText()).toBe('Permission Inherited'); permissionsPage.checkPermissionsDatatableIsDisplayed(); }); + + it('[C286272] Should be able to see results when searching for a user', () => { + permissionsPage.checkAddPermissionButtonIsDisplayed(); + permissionsPage.clickAddPermissionButton(); + permissionsPage.checkAddPermissionDialogIsDisplayed(); + permissionsPage.checkSearchUserInputIsDisplayed(); + permissionsPage.searchUserOrGroup('a'); + permissionsPage.checkResultListIsDisplayed(); + permissionsPage.clickCloseButton(); + }); + + it('[C276979] Should be able to give permissions to a group of people', () => { + permissionsPage.checkAddPermissionButtonIsDisplayed(); + permissionsPage.clickAddPermissionButton(); + permissionsPage.checkAddPermissionDialogIsDisplayed(); + permissionsPage.checkSearchUserInputIsDisplayed(); + permissionsPage.searchUserOrGroup('GROUP_' + groupBody.id); + permissionsPage.clickUserOrGroup('GROUP_' + groupBody.id); + permissionsPage.checkUserOrGroupIsAdded('GROUP_' + groupBody.id); + }); }); describe('Changing and duplicate Permissions', function () { @@ -148,10 +158,10 @@ describe('Permissions Component', function () { loginPage.loginToContentServicesUsingUserModel(fileOwnerUser); contentServicesPage.goToDocumentList(); - contentList.checkContentIsDisplayed(fileModel.name); + contentServicesPage.checkContentIsDisplayed(fileModel.name); contentServicesPage.checkSelectedSiteIsDisplayed('My files'); - contentList.clickRowMenuActionsButton(fileModel.name); - contentList.clickMenuActionNamed('PERMISSION'); + contentList.rightClickOnRow(fileModel.name); + contentServicesPage.pressContextMenuActionNamed('Permission'); permissionsPage.checkAddPermissionButtonIsDisplayed(); permissionsPage.clickAddPermissionButton(); permissionsPage.checkAddPermissionDialogIsDisplayed(); @@ -217,10 +227,10 @@ describe('Permissions Component', function () { beforeEach(async (done) => { loginPage.loginToContentServicesUsingUserModel(fileOwnerUser); browser.get(TestConfig.adf.url + '/files/' + publicSite.entry.guid); - contentList.checkContentIsDisplayed(folderName); + contentServicesPage.checkContentIsDisplayed(folderName); contentServicesPage.checkSelectedSiteIsDisplayed('My files'); - contentList.clickRowMenuActionsButton(folderName); - contentList.clickMenuActionNamed('PERMISSION'); + contentList.rightClickOnRow(folderName); + contentServicesPage.pressContextMenuActionNamed('Permission'); permissionsPage.checkPermissionInheritedButtonIsDisplayed(); permissionsPage.checkAddPermissionButtonIsDisplayed(); permissionsPage.clickAddPermissionButton(); diff --git a/e2e/content-services/share-file/share-file.e2e.ts b/e2e/content-services/share-file/share-file.e2e.ts index 1604c59943..bd7fd78f6c 100644 --- a/e2e/content-services/share-file/share-file.e2e.ts +++ b/e2e/content-services/share-file/share-file.e2e.ts @@ -35,7 +35,7 @@ describe('Share file', () => { const loginPage = new LoginPage(); const contentServicesPage = new ContentServicesPage(); - const contentListPage = contentServicesPage.getUploadAreaDocumentList(); + const contentListPage = contentServicesPage.getDocumentList(); const shareDialog = new ShareDialog(); const navigationBarPage = new NavigationBarPage(); const viewerPage = new ViewerPage(); @@ -66,6 +66,10 @@ describe('Share file', () => { nodeId = pngUploadedFile.entry.id; + loginPage.loginToContentServicesUsingUserModel(acsUser); + + navigationBarPage.clickContentServicesButton(); + done(); }); @@ -81,16 +85,21 @@ describe('Share file', () => { loginPage.loginToContentServicesUsingUserModel(acsUser); - contentServicesPage.navigateToDocumentList(); + navigationBarPage.clickContentServicesButton(); contentServicesPage.waitForTableBody(); - contentListPage.clickRowToSelectWithRoot(pngFileModel.name); - + done(); + }); + + afterEach(async (done) => { + await browser.refresh(); + contentServicesPage.waitForTableBody(); done(); }); it('[C286549] Should check automatically toggle button in Share dialog', () => { + contentListPage.selectRow(pngFileModel.name); contentServicesPage.clickShareButton(); shareDialog.checkDialogIsDisplayed(); shareDialog.shareToggleButtonIsChecked(); @@ -99,6 +108,7 @@ describe('Share file', () => { }); it('[C286544] Should display notification when clicking URL copy button', () => { + contentListPage.selectRow(pngFileModel.name); contentServicesPage.clickShareButton(); shareDialog.checkDialogIsDisplayed(); shareDialog.clickShareLinkButton(); @@ -111,6 +121,7 @@ describe('Share file', () => { }); it('[C286543] Should be possible to close Share dialog', () => { + contentListPage.selectRow(pngFileModel.name); contentServicesPage.clickShareButton(); shareDialog.checkDialogIsDisplayed(); shareDialog.checkShareLinkIsDisplayed(); @@ -118,7 +129,16 @@ describe('Share file', () => { shareDialog.dialogIsClosed(); }); + it('[C286578] Should disable today option in expiration day calendar', () => { + contentListPage.selectRow(pngFileModel.name); + contentServicesPage.clickShareButton(); + shareDialog.checkDialogIsDisplayed(); + shareDialog.clickDateTimePickerButton(); + shareDialog.calendarTodayDayIsDisabled(); + }); + it('[C286548] Should be possible to set expiry date for link', async () => { + contentListPage.selectRow(pngFileModel.name); contentServicesPage.clickShareButton(); shareDialog.checkDialogIsDisplayed(); shareDialog.clickDateTimePickerButton(); @@ -137,6 +157,7 @@ describe('Share file', () => { }); it('[C286578] Should disable today option in expiration day calendar', () => { + contentListPage.selectRow(pngFileModel.name); contentServicesPage.clickShareButton(); shareDialog.checkDialogIsDisplayed(); shareDialog.clickDateTimePickerButton(); @@ -147,7 +168,7 @@ describe('Share file', () => { describe('Shared link preview', () => { afterEach( (done) => { loginPage.loginToContentServicesUsingUserModel(acsUser); - contentServicesPage.navigateToDocumentList(); + navigationBarPage.clickContentServicesButton(); done(); }); @@ -155,7 +176,7 @@ describe('Share file', () => { loginPage.loginToContentServicesUsingUserModel(acsUser); - contentServicesPage.navigateToDocumentList(); + navigationBarPage.clickContentServicesButton(); contentServicesPage.waitForTableBody(); @@ -163,7 +184,7 @@ describe('Share file', () => { }); it('[C286565] Should open file when logged user access shared link', async () => { - contentListPage.clickRowToSelectWithRoot(pngFileModel.name); + contentListPage.selectRow(pngFileModel.name); contentServicesPage.clickShareButton(); shareDialog.checkDialogIsDisplayed(); shareDialog.clickShareLinkButton(); @@ -174,7 +195,7 @@ describe('Share file', () => { }); it('[C287803] Should the URL be kept the same when opening the share dialog multiple times', async () => { - contentListPage.clickRowToSelectWithRoot(pngFileModel.name); + contentListPage.selectRow(pngFileModel.name); contentServicesPage.clickShareButton(); shareDialog.checkDialogIsDisplayed(); shareDialog.clickShareLinkButton(); @@ -192,7 +213,7 @@ describe('Share file', () => { }); it('[C286539] Should open file when non-logged user access shared link', async () => { - contentListPage.clickRowToSelectWithRoot(pngFileModel.name); + contentListPage.selectRow(pngFileModel.name); contentServicesPage.clickShareButton(); shareDialog.checkDialogIsDisplayed(); shareDialog.checkShareLinkIsDisplayed(); diff --git a/e2e/content-services/share-file/unshare-file.e2e.ts b/e2e/content-services/share-file/unshare-file.e2e.ts index 0343301881..3c4c030f95 100644 --- a/e2e/content-services/share-file/unshare-file.e2e.ts +++ b/e2e/content-services/share-file/unshare-file.e2e.ts @@ -20,7 +20,6 @@ import { Util } from '../../util/util'; import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; import { LoginPage } from '../../pages/adf/loginPage'; import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; -import { ContentListPage } from '../../pages/adf/dialog/contentListPage'; import { ErrorPage } from '../../pages/adf/errorPage'; import { ShareDialog } from '../../pages/adf/dialog/shareDialog'; import { AcsUserModel } from '../../models/ACS/acsUserModel'; @@ -35,8 +34,8 @@ describe('Unshare file', () => { const loginPage = new LoginPage(); const contentServicesPage = new ContentServicesPage(); - const contentListPage = contentServicesPage.getUploadAreaDocumentList(); - let navBar = new NavigationBarPage(); + const contentListPage = contentServicesPage.getDocumentList(); + const navBar = new NavigationBarPage(); const errorPage = new ErrorPage(); const shareDialog = new ShareDialog(); const siteName = `PRIVATE-TEST-SITE-${Util.generateRandomString(5)}`; @@ -102,7 +101,8 @@ describe('Unshare file', () => { nodeId = pngUploadedFile.entry.id; loginPage.loginToContentServicesUsingUserModel(acsUser); - contentServicesPage.navigateToDocumentList(); + navBar.clickContentServicesButton(); + contentServicesPage.waitForTableBody(); done(); }); @@ -118,7 +118,7 @@ describe('Unshare file', () => { }); it('[C286550] Should display unshare confirmation dialog', () => { - contentListPage.clickRowToSelectWithRoot(pngFileModel.name); + contentListPage.selectRow(pngFileModel.name); contentServicesPage.clickShareButton(); shareDialog.checkDialogIsDisplayed(); shareDialog.clickUnShareFile(); @@ -126,7 +126,7 @@ describe('Unshare file', () => { }); it('[C286551] Should be able to cancel unshare action', () => { - contentListPage.clickRowToSelectWithRoot(pngFileModel.name); + contentListPage.selectRow(pngFileModel.name); contentServicesPage.clickShareButton(); shareDialog.checkDialogIsDisplayed(); shareDialog.clickUnShareFile(); @@ -136,7 +136,7 @@ describe('Unshare file', () => { }); it('[C286552] Should be able to confirm unshare action', async () => { - contentListPage.clickRowToSelectWithRoot(pngFileModel.name); + contentListPage.selectRow(pngFileModel.name); contentServicesPage.clickShareButton(); shareDialog.checkDialogIsDisplayed(); shareDialog.clickUnShareFile(); @@ -146,7 +146,7 @@ describe('Unshare file', () => { }); it('[C280556] Should redirect to 404 when trying to access an unshared file', async () => { - contentListPage.clickRowToSelectWithRoot(pngFileModel.name); + contentListPage.selectRow(pngFileModel.name); contentServicesPage.clickShareButton(); shareDialog.checkDialogIsDisplayed(); let sharedLink = await shareDialog.getShareLink(); @@ -168,8 +168,8 @@ describe('Unshare file', () => { it('[C286555] Should NOT be able to unshare file without permission', () => { navBar.goToSite(testSite); - contentListPage.navigateToFolder('documentLibrary'); - contentListPage.clickRowToSelect(nodeBody.name); + contentListPage.doubleClickRow('documentLibrary'); + contentListPage.selectRow(nodeBody.name); contentServicesPage.clickShareButton(); shareDialog.checkDialogIsDisplayed(); shareDialog.shareToggleButtonIsChecked(); diff --git a/e2e/content-services/upload/cancel-upload.e2e.ts b/e2e/content-services/upload/cancel-upload.e2e.ts index ec0241780d..7c97614dfb 100644 --- a/e2e/content-services/upload/cancel-upload.e2e.ts +++ b/e2e/content-services/upload/cancel-upload.e2e.ts @@ -81,14 +81,12 @@ describe('Upload component', () => { }); afterEach(async (done) => { - let nodesPromise = await contentServicesPage.getContentList().getAllNodeIdInList(); + let nodesPromise = await contentServicesPage.getElementsDisplayedId(); - nodesPromise.forEach(async (currentNodePromise) => { - await currentNodePromise.then(async (currentNode) => { - if (currentNode && currentNode !== 'Node id') { - await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, currentNode); - } - }); + nodesPromise.forEach(async (currentNode) => { + if (currentNode && currentNode !== 'Node id') { + await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, currentNode); + } }); done(); diff --git a/e2e/content-services/upload/uploader-component.e2e.ts b/e2e/content-services/upload/uploader-component.e2e.ts index aae8699214..8a41e663c9 100644 --- a/e2e/content-services/upload/uploader-component.e2e.ts +++ b/e2e/content-services/upload/uploader-component.e2e.ts @@ -107,92 +107,221 @@ describe('Upload component', () => { contentServicesPage.goToDocumentList(); }); - afterEach(async (done) => { - let nodesPromise = await contentServicesPage.getContentList().getAllNodeIdInList(); + describe('', () => { - nodesPromise.forEach(async (currentNodePromise) => { - await currentNodePromise.then(async (currentNode) => { - if (currentNode && currentNode !== 'Node id') { + beforeEach(() => { + contentServicesPage.goToDocumentList(); + }); + + afterEach(async (done) => { + + contentServicesPage.getElementsDisplayedId().then((nodeList) => { + nodeList.forEach(async (currentNode) => { await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, currentNode); - } + }); }); + + done(); }); - done(); - }); + it('[C272788] Should display upload button', () => { + expect(contentServicesPage.getSingleFileButtonTooltip()).toEqual('Custom tooltip'); - it('[C272788] Should display upload button', () => { - expect(contentServicesPage.getSingleFileButtonTooltip()).toEqual('Custom tooltip'); - - contentServicesPage - .checkUploadButton() - .checkContentIsDisplayed(firstPdfFileModel.name); - }); - - it('[C260173] Should be able to upload folder when enabled', () => { - uploadToggles.enableFolderUpload(); - contentServicesPage.uploadFolder(folderOne.location); - uploadDialog.checkUploadCompleted().then(() => { - contentServicesPage.checkContentIsDisplayed(folderOne.name); + contentServicesPage + .checkUploadButton() + .checkContentIsDisplayed(firstPdfFileModel.name); }); - expect(contentServicesPage.getFolderButtonTooltip()).toEqual('Custom tooltip'); - uploadDialog.fileIsUploaded(uploadedFileInFolder.name); - uploadDialog.clickOnCloseButton().dialogIsNotDisplayed(); - contentServicesPage.doubleClickRow(folderOne.name).checkContentIsDisplayed(uploadedFileInFolder.name); - contentServicesPage.goToDocumentList(); - uploadToggles.disableFolderUpload(); - }); - it('[C272789] Should be able to upload PDF file', () => { - contentServicesPage - .uploadFile(pdfFileModel.location) - .checkContentIsDisplayed(pdfFileModel.name); + it('[C260173] Should be able to upload folder when enabled', () => { + uploadToggles.enableFolderUpload(); + contentServicesPage.uploadFolder(folderOne.location); + uploadDialog.checkUploadCompleted().then(() => { + contentServicesPage.checkContentIsDisplayed(folderOne.name); + }); + expect(contentServicesPage.getFolderButtonTooltip()).toEqual('Custom tooltip'); + uploadDialog.fileIsUploaded(uploadedFileInFolder.name); + uploadDialog.clickOnCloseButton().dialogIsNotDisplayed(); + contentServicesPage.doubleClickRow(folderOne.name).checkContentIsDisplayed(uploadedFileInFolder.name); + contentServicesPage.goToDocumentList(); + uploadToggles.disableFolderUpload(); + }); - uploadDialog.fileIsUploaded(pdfFileModel.name); + it('[C272789] Should be able to upload PDF file', () => { + contentServicesPage + .uploadFile(pdfFileModel.location) + .checkContentIsDisplayed(pdfFileModel.name); - uploadDialog.clickOnCloseButton().dialogIsNotDisplayed(); - }); + uploadDialog.fileIsUploaded(pdfFileModel.name); - it('[C272790] Should be able to upload text file', () => { - contentServicesPage - .uploadFile(docxFileModel.location) - .checkContentIsDisplayed(docxFileModel.name); + uploadDialog.clickOnCloseButton().dialogIsNotDisplayed(); + }); - uploadDialog.fileIsUploaded(docxFileModel.name); - uploadDialog.clickOnCloseButton().dialogIsNotDisplayed(); - }); + it('[C272790] Should be able to upload text file', () => { + contentServicesPage + .uploadFile(docxFileModel.location) + .checkContentIsDisplayed(docxFileModel.name); - it('[C260141] Should be possible to upload PNG file', () => { - contentServicesPage - .uploadFile(pngFileModel.location) - .checkContentIsDisplayed(pngFileModel.name); + uploadDialog.fileIsUploaded(docxFileModel.name); + uploadDialog.clickOnCloseButton().dialogIsNotDisplayed(); + }); - uploadDialog.fileIsUploaded(pngFileModel.name); - uploadDialog.clickOnCloseButton().dialogIsNotDisplayed(); - }); + it('[C260141] Should be possible to upload PNG file', () => { + contentServicesPage + .uploadFile(pngFileModel.location) + .checkContentIsDisplayed(pngFileModel.name); - it('[C260143] Should be possible to maximize/minimize the upload dialog', () => { - contentServicesPage - .uploadFile(docxFileModel.location) - .checkContentIsDisplayed(docxFileModel.name); + uploadDialog.fileIsUploaded(pngFileModel.name); + uploadDialog.clickOnCloseButton().dialogIsNotDisplayed(); + }); - uploadDialog.fileIsUploaded(docxFileModel.name).checkCloseButtonIsDisplayed(); - expect(uploadDialog.numberOfCurrentFilesUploaded()).toEqual('1'); - expect(uploadDialog.numberOfInitialFilesUploaded()).toEqual('1'); - uploadDialog.minimizeUploadDialog().dialogIsMinimized(); - expect(uploadDialog.numberOfCurrentFilesUploaded()).toEqual('1'); - expect(uploadDialog.numberOfInitialFilesUploaded()).toEqual('1'); - uploadDialog.maximizeUploadDialog().dialogIsDisplayed().fileIsUploaded(docxFileModel.name); - expect(uploadDialog.numberOfCurrentFilesUploaded()).toEqual('1'); - expect(uploadDialog.numberOfInitialFilesUploaded()).toEqual('1'); - uploadDialog.checkCloseButtonIsDisplayed().clickOnCloseButton().dialogIsNotDisplayed(); - }); + it('[C260143] Should be possible to maximize/minimize the upload dialog', () => { + contentServicesPage + .uploadFile(docxFileModel.location) + .checkContentIsDisplayed(docxFileModel.name); - it('[C272794] Should display tooltip for uploading files', () => { - uploadToggles.enableMultipleFileUpload(); - browser.driver.sleep(1000); - expect(contentServicesPage.getMultipleFileButtonTooltip()).toEqual('Custom tooltip'); - uploadToggles.disableMultipleFileUpload(); + uploadDialog.fileIsUploaded(docxFileModel.name).checkCloseButtonIsDisplayed(); + expect(uploadDialog.numberOfCurrentFilesUploaded()).toEqual('1'); + expect(uploadDialog.numberOfInitialFilesUploaded()).toEqual('1'); + uploadDialog.minimizeUploadDialog().dialogIsMinimized(); + expect(uploadDialog.numberOfCurrentFilesUploaded()).toEqual('1'); + expect(uploadDialog.numberOfInitialFilesUploaded()).toEqual('1'); + uploadDialog.maximizeUploadDialog().dialogIsDisplayed().fileIsUploaded(docxFileModel.name); + expect(uploadDialog.numberOfCurrentFilesUploaded()).toEqual('1'); + expect(uploadDialog.numberOfInitialFilesUploaded()).toEqual('1'); + uploadDialog.checkCloseButtonIsDisplayed().clickOnCloseButton().dialogIsNotDisplayed(); + }); + + it('[C272794] Should display tooltip for uploading files', () => { + uploadToggles.enableMultipleFileUpload(); + browser.driver.sleep(1000); + expect(contentServicesPage.getMultipleFileButtonTooltip()).toEqual('Custom tooltip'); + uploadToggles.disableMultipleFileUpload(); + }); + + it('[C279920] Should rename a file uploaded twice', () => { + contentServicesPage + .uploadFile(pdfFileModel.location) + .checkContentIsDisplayed(pdfFileModel.name); + + pdfFileModel.setVersion('1'); + + contentServicesPage + .uploadFile(pdfFileModel.location) + .checkContentIsDisplayed(pdfFileModel.getVersionName()); + + uploadDialog + .clickOnCloseButton() + .dialogIsNotDisplayed(); + + pdfFileModel.setVersion(''); + }); + + it('[C260172] Should be possible to enable versioning', () => { + uploadToggles.enableVersioning(); + + contentServicesPage + .uploadFile(pdfFileModel.location) + .checkContentIsDisplayed(pdfFileModel.name); + + pdfFileModel.setVersion('1'); + + contentServicesPage + .uploadFile(pdfFileModel.location) + .checkContentIsDisplayed(pdfFileModel.name); + + uploadDialog + .fileIsUploaded(pdfFileModel.name); + + uploadDialog + .clickOnCloseButton() + .dialogIsNotDisplayed(); + + contentServicesPage + .checkContentIsNotDisplayed(pdfFileModel.getVersionName()); + + pdfFileModel.setVersion(''); + uploadToggles.disableVersioning(); + }); + + it('[C260174] Should be possible to set a max size', () => { + contentServicesPage.goToDocumentList(); + contentServicesPage.checkAcsContainer(); + uploadToggles.enableMaxSize(); + uploadToggles.addMaxSize('400'); + contentServicesPage.uploadFile(fileWithSpecificSize.location); + uploadDialog.fileIsUploaded(fileWithSpecificSize.name).clickOnCloseButton().dialogIsNotDisplayed(); + contentServicesPage.deleteContent(fileWithSpecificSize.name); + contentServicesPage.checkContentIsNotDisplayed(fileWithSpecificSize.name); + uploadToggles.addMaxSize('399'); + contentServicesPage.uploadFile(fileWithSpecificSize.location); + + // expect(contentServicesPage.getErrorMessage()).toEqual('File ' + fileWithSpecificSize.name + ' is larger than the allowed file size'); + + contentServicesPage.checkContentIsNotDisplayed(fileWithSpecificSize.name); + uploadDialog.fileIsNotDisplayedInDialog(fileWithSpecificSize.name); + contentServicesPage.uploadFile(emptyFile.location).checkContentIsDisplayed(emptyFile.name); + uploadDialog.fileIsUploaded(emptyFile.name).clickOnCloseButton().dialogIsNotDisplayed(); + + uploadToggles.disableMaxSize(); + }); + + it('[C272796] Should be possible to set max size to 0', () => { + contentServicesPage.goToDocumentList(); + uploadToggles.enableMaxSize(); + uploadToggles.addMaxSize('0'); + contentServicesPage.uploadFile(fileWithSpecificSize.location); + // expect(contentServicesPage.getErrorMessage()).toEqual('File ' + fileWithSpecificSize.name + ' is larger than the allowed file size'); + + uploadDialog.fileIsNotDisplayedInDialog(fileWithSpecificSize.name); + contentServicesPage.uploadFile(emptyFile.location).checkContentIsDisplayed(emptyFile.name); + uploadDialog.fileIsUploaded(emptyFile.name).clickOnCloseButton().dialogIsNotDisplayed(); + + uploadToggles.disableMaxSize(); + }); + + it('[C272797] Should be possible to set max size to 1', () => { + uploadToggles.enableMaxSize(); + browser.driver.sleep(1000); + uploadToggles.addMaxSize('1'); + uploadToggles.disableMaxSize(); + contentServicesPage.uploadFile(fileWithSpecificSize.location); + uploadDialog.fileIsUploaded(fileWithSpecificSize.name).clickOnCloseButton().dialogIsNotDisplayed(); + contentServicesPage.checkContentIsDisplayed(fileWithSpecificSize.name); + }); + + it('[C91318] Should Enable/Disable upload button when change the disable property', () => { + uploadToggles.clickCheckboxDisableUpload(); + expect(contentServicesPage.uploadButtonIsEnabled()).toBeFalsy(); + + uploadToggles.clickCheckboxDisableUpload(); + expect(contentServicesPage.uploadButtonIsEnabled()).toBeTruthy(); + }); + + it('[C279882] Should be possible Upload a folder in a folder', () => { + uploadToggles.enableFolderUpload(); + browser.driver.sleep(1000); + contentServicesPage.uploadFolder(folderOne.location); + uploadDialog.checkUploadCompleted().then(() => { + contentServicesPage.checkContentIsDisplayed(folderOne.name); + }); + uploadDialog.fileIsUploaded(uploadedFileInFolder.name); + + uploadDialog.clickOnCloseButton().dialogIsNotDisplayed(); + contentServicesPage.doubleClickRow(folderOne.name).checkContentIsDisplayed(uploadedFileInFolder.name); + + uploadToggles.enableFolderUpload(); + browser.driver.sleep(1000); + contentServicesPage.uploadFolder(folderTwo.location); + uploadDialog.checkUploadCompleted().then(() => { + contentServicesPage.checkContentIsDisplayed(folderTwo.name); + }); + uploadDialog.fileIsUploaded(uploadedFileInFolderTwo.name); + + uploadDialog.clickOnCloseButton().dialogIsNotDisplayed(); + contentServicesPage.doubleClickRow(folderTwo.name).checkContentIsDisplayed(uploadedFileInFolderTwo.name); + + uploadToggles.disableFolderUpload(); + }); }); it('[C260171] Should upload only the extension filter allowed when Enable extension filter is enabled', () => { @@ -227,130 +356,6 @@ describe('Upload component', () => { uploadToggles.disableExtensionFilter(); }); - it('[C279920] Should rename a file uploaded twice', () => { - contentServicesPage - .uploadFile(pdfFileModel.location) - .checkContentIsDisplayed(pdfFileModel.name); - - pdfFileModel.setVersion('1'); - - contentServicesPage - .uploadFile(pdfFileModel.location) - .checkContentIsDisplayed(pdfFileModel.getVersionName()); - - uploadDialog - .clickOnCloseButton() - .dialogIsNotDisplayed(); - - pdfFileModel.setVersion(''); - }); - - it('[C260172] Should be possible to enable versioning', () => { - uploadToggles.enableVersioning(); - - contentServicesPage - .uploadFile(pdfFileModel.location) - .checkContentIsDisplayed(pdfFileModel.name); - - pdfFileModel.setVersion('1'); - - contentServicesPage - .uploadFile(pdfFileModel.location) - .checkContentIsDisplayed(pdfFileModel.name); - - uploadDialog - .fileIsUploaded(pdfFileModel.name); - - uploadDialog - .clickOnCloseButton() - .dialogIsNotDisplayed(); - - contentServicesPage - .checkContentIsNotDisplayed(pdfFileModel.getVersionName()); - - pdfFileModel.setVersion(''); - uploadToggles.disableVersioning(); - }); - - it('[C260174] Should be possible to set a max size', () => { - contentServicesPage.goToDocumentList(); - contentServicesPage.checkAcsContainer(); - uploadToggles.enableMaxSize(); - uploadToggles.addMaxSize('400'); - contentServicesPage.uploadFile(fileWithSpecificSize.location); - uploadDialog.fileIsUploaded(fileWithSpecificSize.name).clickOnCloseButton().dialogIsNotDisplayed(); - contentServicesPage.deleteContent(fileWithSpecificSize.name).checkContentIsNotDisplayed(fileWithSpecificSize.name); - uploadToggles.addMaxSize('399'); - contentServicesPage.uploadFile(fileWithSpecificSize.location); - - // expect(contentServicesPage.getErrorMessage()).toEqual('File ' + fileWithSpecificSize.name + ' is larger than the allowed file size'); - - contentServicesPage.checkContentIsNotDisplayed(fileWithSpecificSize.name); - uploadDialog.fileIsNotDisplayedInDialog(fileWithSpecificSize.name); - contentServicesPage.uploadFile(emptyFile.location).checkContentIsDisplayed(emptyFile.name); - uploadDialog.fileIsUploaded(emptyFile.name).clickOnCloseButton().dialogIsNotDisplayed(); - - uploadToggles.disableMaxSize(); - }); - - it('[C272796] Should be possible to set max size to 0', () => { - contentServicesPage.goToDocumentList(); - uploadToggles.enableMaxSize(); - uploadToggles.addMaxSize('0'); - contentServicesPage.uploadFile(fileWithSpecificSize.location); - // expect(contentServicesPage.getErrorMessage()).toEqual('File ' + fileWithSpecificSize.name + ' is larger than the allowed file size'); - - uploadDialog.fileIsNotDisplayedInDialog(fileWithSpecificSize.name); - contentServicesPage.uploadFile(emptyFile.location).checkContentIsDisplayed(emptyFile.name); - uploadDialog.fileIsUploaded(emptyFile.name).clickOnCloseButton().dialogIsNotDisplayed(); - - uploadToggles.disableMaxSize(); - }); - - it('[C272797] Should be possible to set max size to 1', () => { - uploadToggles.enableMaxSize(); - browser.driver.sleep(1000); - uploadToggles.addMaxSize('1'); - uploadToggles.disableMaxSize(); - contentServicesPage.uploadFile(fileWithSpecificSize.location); - uploadDialog.fileIsUploaded(fileWithSpecificSize.name).clickOnCloseButton().dialogIsNotDisplayed(); - contentServicesPage.checkContentIsDisplayed(fileWithSpecificSize.name); - }); - - it('[C91318] Should Enable/Disable upload button when change the disable property', () => { - uploadToggles.clickCheckboxDisableUpload(); - expect(contentServicesPage.uploadButtonIsEnabled()).toBeFalsy(); - - uploadToggles.clickCheckboxDisableUpload(); - expect(contentServicesPage.uploadButtonIsEnabled()).toBeTruthy(); - }); - - it('[C279882] Should be possible Upload a folder in a folder', () => { - uploadToggles.enableFolderUpload(); - browser.driver.sleep(1000); - contentServicesPage.uploadFolder(folderOne.location); - uploadDialog.checkUploadCompleted().then(() => { - contentServicesPage.checkContentIsDisplayed(folderOne.name); - }); - uploadDialog.fileIsUploaded(uploadedFileInFolder.name); - - uploadDialog.clickOnCloseButton().dialogIsNotDisplayed(); - contentServicesPage.doubleClickRow(folderOne.name).checkContentIsDisplayed(uploadedFileInFolder.name); - - uploadToggles.enableFolderUpload(); - browser.driver.sleep(1000); - contentServicesPage.uploadFolder(folderTwo.location); - uploadDialog.checkUploadCompleted().then(() => { - contentServicesPage.checkContentIsDisplayed(folderTwo.name); - }); - uploadDialog.fileIsUploaded(uploadedFileInFolderTwo.name); - - uploadDialog.clickOnCloseButton().dialogIsNotDisplayed(); - contentServicesPage.doubleClickRow(folderTwo.name).checkContentIsDisplayed(uploadedFileInFolderTwo.name); - - uploadToggles.disableFolderUpload(); - }); - it('[C291921] Should display tooltip for uploading files on a not found location', async () => { let folderName = Util.generateRandomString(8); diff --git a/e2e/content-services/version/version-actions.e2e.ts b/e2e/content-services/version/version-actions.e2e.ts index 5dfd77c776..a953879c6c 100644 --- a/e2e/content-services/version/version-actions.e2e.ts +++ b/e2e/content-services/version/version-actions.e2e.ts @@ -19,7 +19,6 @@ import { by, element } from 'protractor'; import { LoginPage } from '../../pages/adf/loginPage'; import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; -import { ContentListPage } from '../../pages/adf/dialog/contentListPage'; import { VersionManagePage } from '../../pages/adf/versionManagerPage'; import { AcsUserModel } from '../../models/ACS/acsUserModel'; @@ -32,13 +31,14 @@ import AlfrescoApi = require('alfresco-js-api-node'); import { UploadActions } from '../../actions/ACS/upload.actions'; import { Util } from '../../util/util'; import path = require('path'); +import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; describe('Version component actions', () => { const loginPage = new LoginPage(); const contentServicesPage = new ContentServicesPage(); - const contentListPage = new ContentListPage(); const versionManagePage = new VersionManagePage(); + const navigationBarPage = new NavigationBarPage(); let acsUser = new AcsUserModel(); @@ -75,8 +75,9 @@ describe('Version component actions', () => { loginPage.loginToContentServicesUsingUserModel(acsUser); - contentServicesPage.navigateToDocumentList(); - contentListPage.versionManagerContent(txtFileModel.name); + navigationBarPage.clickContentServicesButton(); + contentServicesPage.waitForTableBody(); + contentServicesPage.versionManagerContent(txtFileModel.name); done(); }); diff --git a/e2e/content-services/version/version-permissions.e2e.ts b/e2e/content-services/version/version-permissions.e2e.ts index 5f91456165..556ab521d5 100644 --- a/e2e/content-services/version/version-permissions.e2e.ts +++ b/e2e/content-services/version/version-permissions.e2e.ts @@ -18,11 +18,11 @@ import { element, by } from 'protractor'; import { LoginPage } from '../../pages/adf/loginPage'; -import { ContentListPage } from '../../pages/adf/dialog/contentListPage'; import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; import { VersionManagePage } from '../../pages/adf/versionManagerPage'; import { UploadDialog } from '../../pages/adf/dialog/uploadDialog'; import { NotificationPage } from '../../pages/adf/notificationPage'; +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import { AcsUserModel } from '../../models/ACS/acsUserModel'; import { FileModel } from '../../models/ACS/fileModel'; @@ -40,11 +40,11 @@ import CONSTANTS = require('../../util/constants'); describe('Version component permissions', () => { const loginPage = new LoginPage(); - const contentListPage = new ContentListPage(); const versionManagePage = new VersionManagePage(); const navigationBarPage = new NavigationBarPage(); const uploadDialog = new UploadDialog(); const notificationPage = new NotificationPage(); + const contentServices = new ContentServicesPage(); let site; let acsUser = new AcsUserModel(); @@ -158,7 +158,7 @@ describe('Version component permissions', () => { }); it('[C277200] should a user with Manager permission be able to upload a new version for a file with different creator', () => { - contentListPage.versionManagerContent(differentCreatorFile.name); + contentServices.versionManagerContent(differentCreatorFile.name); versionManagePage.showNewVersionButton.click(); @@ -179,7 +179,7 @@ describe('Version component permissions', () => { }); it('[C277204] Should a user with Manager permission not be able to upload a new version for a locked file', () => { - contentListPage.versionManagerContent(lockFileModel.name); + contentServices.versionManagerContent(lockFileModel.name); versionManagePage.showNewVersionButton.click(); @@ -193,7 +193,7 @@ describe('Version component permissions', () => { }); it('[C277196] Should a user with Manager permission be able to upload a new version for the created file', () => { - contentListPage.versionManagerContent(sameCreatorFile.name); + contentServices.versionManagerContent(sameCreatorFile.name); versionManagePage.showNewVersionButton.click(); @@ -225,13 +225,13 @@ describe('Version component permissions', () => { }); it('[C277197] Should a user with Consumer permission not be able to upload a new version for a file with different creator', () => { - contentListPage.versionManagerContent(differentCreatorFile.name); + contentServices.versionManagerContent(differentCreatorFile.name); notificationPage.checkNotifyContains(`You don't have access to do this`); }); it('[C277201] Should a user with Consumer permission not be able to upload a new version for a locked file', () => { - contentListPage.versionManagerContent(lockFileModel.name); + contentServices.versionManagerContent(lockFileModel.name); notificationPage.checkNotifyContains(`You don't have access to do this`); }); @@ -265,7 +265,7 @@ describe('Version component permissions', () => { }); it('[C277177] Should a user with Contributor permission be able to upload a new version for the created file', () => { - contentListPage.versionManagerContent(sameCreatorFile.name); + contentServices.versionManagerContent(sameCreatorFile.name); versionManagePage.showNewVersionButton.click(); @@ -286,13 +286,13 @@ describe('Version component permissions', () => { }); it('[C277198] Should a user with Contributor permission not be able to upload a new version for a file with different creator', () => { - contentListPage.versionManagerContent(differentCreatorFile.name); + contentServices.versionManagerContent(differentCreatorFile.name); notificationPage.checkNotifyContains(`You don't have access to do this`); }); it('[C277202] Should a user with Contributor permission not be able to upload a new version for a locked file', () => { - contentListPage.versionManagerContent(lockFileModel.name); + contentServices.versionManagerContent(lockFileModel.name); notificationPage.checkNotifyContains(`You don't have access to do this`); }); @@ -325,7 +325,7 @@ describe('Version component permissions', () => { }); it('[C277195] Should a user with Collaborator permission be able to upload a new version for the created file', () => { - contentListPage.versionManagerContent(sameCreatorFile.name); + contentServices.versionManagerContent(sameCreatorFile.name); versionManagePage.showNewVersionButton.click(); @@ -346,7 +346,7 @@ describe('Version component permissions', () => { }); it('[C277203] Should a user with Collaborator permission not be able to upload a new version for a locked file', () => { - contentListPage.versionManagerContent(lockFileModel.name); + contentServices.versionManagerContent(lockFileModel.name); versionManagePage.showNewVersionButton.click(); @@ -360,7 +360,7 @@ describe('Version component permissions', () => { }); it('[C277199] should a user with Collaborator permission be able to upload a new version for a file with different creator', () => { - contentListPage.versionManagerContent(differentCreatorFile.name); + contentServices.versionManagerContent(differentCreatorFile.name); versionManagePage.showNewVersionButton.click(); diff --git a/e2e/content-services/version/version-properties.e2e.ts b/e2e/content-services/version/version-properties.e2e.ts index 36957e00fa..0b70e01ed9 100644 --- a/e2e/content-services/version/version-properties.e2e.ts +++ b/e2e/content-services/version/version-properties.e2e.ts @@ -19,7 +19,6 @@ import { by, element } from 'protractor'; import { LoginPage } from '../../pages/adf/loginPage'; import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; -import { ContentListPage } from '../../pages/adf/dialog/contentListPage'; import { VersionManagePage } from '../../pages/adf/versionManagerPage'; import { AcsUserModel } from '../../models/ACS/acsUserModel'; @@ -31,13 +30,14 @@ import resources = require('../../util/resources'); import AlfrescoApi = require('alfresco-js-api-node'); import { UploadActions } from '../../actions/ACS/upload.actions'; import { Util } from '../../util/util'; +import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; describe('Version Properties', () => { const loginPage = new LoginPage(); const contentServicesPage = new ContentServicesPage(); - const contentListPage = new ContentListPage(); const versionManagePage = new VersionManagePage(); + const navigationBarPage = new NavigationBarPage(); let acsUser = new AcsUserModel(); @@ -74,8 +74,9 @@ describe('Version Properties', () => { loginPage.loginToContentServicesUsingUserModel(acsUser); - contentServicesPage.navigateToDocumentList(); - contentListPage.versionManagerContent(txtFileModel.name); + navigationBarPage.clickContentServicesButton(); + contentServicesPage.waitForTableBody(); + contentServicesPage.versionManagerContent(txtFileModel.name); done(); }); diff --git a/e2e/content-services/version/version-smoke-tests.e2e.ts b/e2e/content-services/version/version-smoke-tests.e2e.ts index 5cc34c41bd..35d2d5027a 100644 --- a/e2e/content-services/version/version-smoke-tests.e2e.ts +++ b/e2e/content-services/version/version-smoke-tests.e2e.ts @@ -19,7 +19,6 @@ import { browser } from 'protractor'; import { LoginPage } from '../../pages/adf/loginPage'; import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; -import { ContentListPage } from '../../pages/adf/dialog/contentListPage'; import { VersionManagePage } from '../../pages/adf/versionManagerPage'; import { AcsUserModel } from '../../models/ACS/acsUserModel'; @@ -31,13 +30,14 @@ import resources = require('../../util/resources'); import AlfrescoApi = require('alfresco-js-api-node'); import { UploadActions } from '../../actions/ACS/upload.actions'; import { Util } from '../../util/util'; +import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; describe('Version component', () => { let txtUploadedFile; const loginPage = new LoginPage(); const contentServicesPage = new ContentServicesPage(); - const contentListPage = new ContentListPage(); + const navigationBarPage = new NavigationBarPage(); const versionManagePage = new VersionManagePage(); let acsUser = new AcsUserModel(); @@ -89,8 +89,9 @@ describe('Version component', () => { loginPage.loginToContentServicesUsingUserModel(acsUser); - contentServicesPage.navigateToDocumentList(); - contentListPage.versionManagerContent(txtFileModel.name); + navigationBarPage.clickContentServicesButton(); + contentServicesPage.waitForTableBody(); + contentServicesPage.versionManagerContent(txtFileModel.name); done(); }); diff --git a/e2e/core/card-view/metadata-properties.e2e.ts b/e2e/core/card-view/metadata-properties.e2e.ts index 7d2840276e..04601180fc 100644 --- a/e2e/core/card-view/metadata-properties.e2e.ts +++ b/e2e/core/card-view/metadata-properties.e2e.ts @@ -16,7 +16,6 @@ */ import { LoginPage } from '../../pages/adf/loginPage'; -import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import { ViewerPage } from '../../pages/adf/viewerPage'; import { MetadataViewPage } from '../../pages/adf/metadataViewPage'; @@ -29,6 +28,8 @@ import resources = require('../../util/resources'); import AlfrescoApi = require('alfresco-js-api-node'); import { UploadActions } from '../../actions/ACS/upload.actions'; import { check, uncheck } from '../../util/material'; +import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; describe('CardView Component - properties', () => { @@ -46,9 +47,10 @@ describe('CardView Component - properties', () => { }; let loginPage = new LoginPage(); - let contentServicesPage = new ContentServicesPage(); + let navigationBarPage = new NavigationBarPage(); let viewerPage = new ViewerPage(); let metadataViewPage = new MetadataViewPage(); + const contentServicesPage = new ContentServicesPage(); let acsUser = new AcsUserModel(); @@ -80,7 +82,8 @@ describe('CardView Component - properties', () => { loginPage.loginToContentServicesUsingUserModel(acsUser); - contentServicesPage.navigateToDocumentList(); + navigationBarPage.clickContentServicesButton(); + contentServicesPage.waitForTableBody(); done(); }); diff --git a/e2e/core/card-view/metadata-smoke-tests.e2e.ts b/e2e/core/card-view/metadata-smoke-tests.e2e.ts index 5a6a3c8d8e..4008314255 100644 --- a/e2e/core/card-view/metadata-smoke-tests.e2e.ts +++ b/e2e/core/card-view/metadata-smoke-tests.e2e.ts @@ -21,7 +21,6 @@ import { LoginPage } from '../../pages/adf/loginPage'; import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import { ViewerPage } from '../../pages/adf/viewerPage'; import { MetadataViewPage } from '../../pages/adf/metadataViewPage'; -import { ContentListPage } from '../../pages/adf/dialog/contentListPage'; import { AcsUserModel } from '../../models/ACS/acsUserModel'; import { FileModel } from '../../models/ACS/fileModel'; @@ -32,6 +31,7 @@ import dateFormat = require('dateformat'); import AlfrescoApi = require('alfresco-js-api-node'); import { UploadActions } from '../../actions/ACS/upload.actions'; +import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; describe('Metadata component', () => { @@ -52,7 +52,7 @@ describe('Metadata component', () => { const contentServicesPage = new ContentServicesPage(); const viewerPage = new ViewerPage(); const metadataViewPage = new MetadataViewPage(); - const contentListPage = new ContentListPage(); + const navigationBarPage = new NavigationBarPage(); let acsUser = new AcsUserModel(); @@ -87,7 +87,8 @@ describe('Metadata component', () => { pngFileModel.update(pngUploadedFile.entry); loginPage.loginToContentServicesUsingUserModel(acsUser); - contentServicesPage.navigateToDocumentList(); + navigationBarPage.clickContentServicesButton(); + contentServicesPage.waitForTableBody(); done(); }); @@ -233,7 +234,7 @@ describe('Metadata component', () => { expect(metadataViewPage.getPropertyText('properties.cm:description')).toEqual('check author example description'); loginPage.loginToContentServicesUsingUserModel(acsUser); - contentServicesPage.navigateToDocumentList(); + navigationBarPage.clickContentServicesButton(); await browser.get(fileUrl); @@ -291,14 +292,14 @@ describe('Metadata component', () => { }); it('[C261157] Should be possible use the metadata component When the node is a Folder', () => { - contentListPage.metadataContent(folderName); + contentServicesPage.metadataContent(folderName); expect(metadataViewPage.getPropertyText('name')).toEqual(folderName); expect(metadataViewPage.getPropertyText('createdByUser.displayName')).toEqual(acsUser.firstName + ' ' + acsUser.lastName); }); it('[C261158] Should be possible edit the metadata When the node is a Folder', () => { - contentListPage.metadataContent(folderName); + contentServicesPage.metadataContent(folderName); browser.controlFlow().execute(async () => { await metadataViewPage.editIconClick(); diff --git a/e2e/core/datatable/data-table-component-selection.e2e.ts b/e2e/core/datatable/data-table-component-selection.e2e.ts index d7a47ebe58..8b4e2f66f6 100644 --- a/e2e/core/datatable/data-table-component-selection.e2e.ts +++ b/e2e/core/datatable/data-table-component-selection.e2e.ts @@ -16,7 +16,8 @@ */ import { LoginPage } from '../../pages/adf/loginPage'; -import { DataTablePage } from '../../pages/adf/dataTablePage'; +import { DataTablePage } from '../../pages/adf/demo-shell/dataTablePage'; +import { DataTableComponentPage } from '../../pages/adf/dataTableComponentPage'; import TestConfig = require('../../test.config'); import { AcsUserModel } from '../../models/ACS/acsUserModel'; @@ -29,6 +30,7 @@ describe('Datatable component - selection', () => { let loginPage = new LoginPage(); let acsUser = new AcsUserModel(); let navigationBarPage = new NavigationBarPage(); + let dataTableComponent = new DataTableComponentPage(); beforeAll(async (done) => { this.alfrescoJsApi = new AlfrescoApi({ @@ -49,21 +51,21 @@ describe('Datatable component - selection', () => { it('[C213258] Should be possible change the selection modes when change the selectionMode property', () => { dataTablePage.selectRow('2'); - dataTablePage.checkRowIsSelected('2'); + dataTableComponent.checkRowIsSelected('Id', '2'); dataTablePage.getNumberOfSelectedRows().then((result) => { expect(result).toEqual(1); }); dataTablePage.selectRow('3'); - dataTablePage.checkRowIsSelected('3'); + dataTableComponent.checkRowIsSelected('Id', '3'); dataTablePage.getNumberOfSelectedRows().then((result) => { expect(result).toEqual(1); }); dataTablePage.selectSelectionMode('Multiple'); dataTablePage.selectRow('1'); - dataTablePage.checkRowIsSelected('1'); + dataTableComponent.checkRowIsSelected('Id', '1'); dataTablePage.selectRowWithKeyboard('3'); - dataTablePage.checkRowIsSelected('1'); - dataTablePage.checkRowIsSelected('3'); + dataTableComponent.checkRowIsSelected('Id', '1'); + dataTableComponent.checkRowIsSelected('Id', '3'); dataTablePage.checkRowIsNotSelected('2'); dataTablePage.checkRowIsNotSelected('4'); dataTablePage.selectSelectionMode('None'); diff --git a/e2e/core/datatable/data-table-component.e2e.ts b/e2e/core/datatable/data-table-component.e2e.ts index 5c9cff3497..1342a07bcc 100644 --- a/e2e/core/datatable/data-table-component.e2e.ts +++ b/e2e/core/datatable/data-table-component.e2e.ts @@ -16,7 +16,8 @@ */ import { LoginPage } from '../../pages/adf/loginPage'; -import { DataTablePage } from '../../pages/adf/dataTablePage'; +import { DataTablePage } from '../../pages/adf/demo-shell/dataTablePage'; +import { DataTableComponentPage } from '../../pages/adf/dataTableComponentPage'; import { AcsUserModel } from '../../models/ACS/acsUserModel'; import TestConfig = require('../../test.config'); @@ -25,10 +26,11 @@ import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; describe('Datatable component', () => { - let dataTablePage = new DataTablePage(); - let loginPage = new LoginPage(); - let acsUser = new AcsUserModel(); - let navigationBarPage = new NavigationBarPage(); + const dataTablePage = new DataTablePage(); + const loginPage = new LoginPage(); + const acsUser = new AcsUserModel(); + const navigationBarPage = new NavigationBarPage(); + const dataTableComponent = new DataTableComponentPage(); beforeAll(async (done) => { this.alfrescoJsApi = new AlfrescoApi({ @@ -48,11 +50,11 @@ describe('Datatable component', () => { }); it('[C91314] Should be possible add new row to the table', () => { - dataTablePage.getNumberOfRows().then((result) => { + dataTableComponent.numberOfRows().then((result) => { dataTablePage.addRow(); - expect(dataTablePage.getNumberOfRows()).toEqual(result + 1); + expect(dataTableComponent.numberOfRows()).toEqual(result + 1); dataTablePage.addRow(); - expect(dataTablePage.getNumberOfRows()).toEqual(result + 2); + expect(dataTableComponent.numberOfRows()).toEqual(result + 2); }); }); @@ -65,11 +67,11 @@ describe('Datatable component', () => { }); it('[C277314] Should filter the table rows when the input filter is passed', () => { - expect(dataTablePage.getNumberOfRows()).toEqual(4); + expect(dataTableComponent.numberOfRows()).toEqual(4); dataTablePage.insertFilter('Name'); - expect(dataTablePage.getNumberOfRows()).toEqual(3); + expect(dataTableComponent.numberOfRows()).toEqual(3); dataTablePage.insertFilter('I'); - expect(dataTablePage.getNumberOfRows()).toEqual(1); + expect(dataTableComponent.numberOfRows()).toEqual(1); }); }); diff --git a/e2e/core/infinite-scrolling.e2e.ts b/e2e/core/infinite-scrolling.e2e.ts index 983e32671f..09b45ed3db 100644 --- a/e2e/core/infinite-scrolling.e2e.ts +++ b/e2e/core/infinite-scrolling.e2e.ts @@ -71,7 +71,7 @@ describe('Enable infinite scrolling', () => { }); it('[C260484] Should be possible to enable infinite scrolling', () => { - contentServicesPage.navigateToFolder(folderModel.name); + contentServicesPage.doubleClickRow(folderModel.name); contentServicesPage.enableInfiniteScrolling(); contentServicesPage.clickLoadMoreButton(); for (fileNum; fileNum < nrOfFiles; fileNum++) { diff --git a/e2e/core/pagination-empty-current-page.e2e.ts b/e2e/core/pagination-empty-current-page.e2e.ts index 863dfbf716..eae5097301 100644 --- a/e2e/core/pagination-empty-current-page.e2e.ts +++ b/e2e/core/pagination-empty-current-page.e2e.ts @@ -78,7 +78,7 @@ describe('Pagination - returns to previous page when current is empty', () => { }); it('[C274710] Should redirect to previous page when current is emptied', () => { - contentServicesPage.navigateToFolder(folderModel.name); + contentServicesPage.doubleClickRow(folderModel.name); contentServicesPage.checkAcsContainer(); contentServicesPage.waitForTableBody(); diff --git a/e2e/core/viewer/viewer-component.e2e.ts b/e2e/core/viewer/viewer-component.e2e.ts index 88ce3a2207..a781c21edc 100644 --- a/e2e/core/viewer/viewer-component.e2e.ts +++ b/e2e/core/viewer/viewer-component.e2e.ts @@ -21,7 +21,6 @@ import { LoginPage } from '../../pages/adf/loginPage'; import { ViewerPage } from '../../pages/adf/viewerPage'; import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; -import { ContentListPage } from '../../pages/adf/dialog/contentListPage'; import { ShareDialog } from '../../pages/adf/dialog/shareDialog'; import { AboutPage } from '../../pages/adf/demo-shell/aboutPage'; @@ -36,7 +35,6 @@ import { AcsUserModel } from '../../models/ACS/acsUserModel'; import AlfrescoApi = require('alfresco-js-api-node'); import { UploadActions } from '../../actions/ACS/upload.actions'; import { browser } from 'protractor'; -import { viewWrappedDebugError } from '@angular/core/src/view/errors'; xdescribe('Viewer', () => { @@ -48,7 +46,7 @@ xdescribe('Viewer', () => { let site; let acsUser = new AcsUserModel(); let pngFileUploaded; - const contentList = new ContentListPage(); + const contentList = contentServicesPage.getDocumentList(); const shareDialog = new ShareDialog(); const about = new AboutPage(); @@ -158,7 +156,7 @@ xdescribe('Viewer', () => { }); it('[C260517] Should be possible to open any Archive file', () => { - contentServicesPage.navigateToFolder('archive'); + contentServicesPage.doubleClickRow('archive'); uploadedArchives.forEach((currentFile) => { if (currentFile.entry.name !== '.DS_Store') { @@ -193,7 +191,7 @@ xdescribe('Viewer', () => { }); it('[C280008] Should be possible to open any Excel file', () => { - contentServicesPage.navigateToFolder('excel'); + contentServicesPage.doubleClickRow('excel'); uploadedExcels.forEach((currentFile) => { if (currentFile.entry.name !== '.DS_Store') { @@ -228,7 +226,7 @@ xdescribe('Viewer', () => { }); it('[C280009] Should be possible to open any PowerPoint file', () => { - contentServicesPage.navigateToFolder('ppt'); + contentServicesPage.doubleClickRow('ppt'); uploadedPpt.forEach((currentFile) => { if (currentFile.entry.name !== '.DS_Store') { @@ -263,7 +261,7 @@ xdescribe('Viewer', () => { }); it('[C280010] Should be possible to open any Text file', () => { - contentServicesPage.navigateToFolder('text'); + contentServicesPage.doubleClickRow('text'); uploadedTexts.forEach((currentFile) => { if (currentFile.entry.name !== '.DS_Store') { @@ -298,7 +296,7 @@ xdescribe('Viewer', () => { }); it('[C280011] Should be possible to open any Word file', () => { - contentServicesPage.navigateToFolder('word'); + contentServicesPage.doubleClickRow('word'); uploadedWords.forEach((currentFile) => { if (currentFile.entry.name !== '.DS_Store') { @@ -333,7 +331,7 @@ xdescribe('Viewer', () => { }); it('[C280012] Should be possible to open any other Document supported extension', () => { - contentServicesPage.navigateToFolder('other'); + contentServicesPage.doubleClickRow('other'); uploadedOthers.forEach((currentFile) => { if (currentFile.entry.name !== '.DS_Store') { @@ -372,7 +370,7 @@ xdescribe('Viewer', () => { }); it('[C279966] Should be possible to open any Image supported extension', () => { - contentServicesPage.navigateToFolder('images'); + contentServicesPage.doubleClickRow('images'); uploadedImages.forEach((currentFile) => { if (currentFile.entry.name !== '.DS_Store') { @@ -382,7 +380,7 @@ xdescribe('Viewer', () => { } }); - contentServicesPage.navigateToFolder('images-rendition'); + contentServicesPage.doubleClickRow('images-rendition'); uploadedImgRenditionFolderInfo.forEach((currentFile) => { if (currentFile.entry.name !== '.DS_Store') { @@ -434,9 +432,10 @@ xdescribe('Viewer', () => { }); it('[C260106] Should be able to open a Word file shared via API', () => { - contentServicesPage.navigateToDocumentList(); + navigationBarPage.clickContentServicesButton(); + contentServicesPage.waitForTableBody(); - contentList.clickRowToSelect(wordFileInfo.name); + contentList.selectRow(wordFileInfo.name); contentServicesPage.clickShareButton(); shareDialog.checkDialogIsDisplayed(); shareDialog.clickShareLinkButton(); diff --git a/e2e/core/viewer/viewer-properties.e2e.ts b/e2e/core/viewer/viewer-properties.e2e.ts index 7dffe577b8..a8dc80fa12 100644 --- a/e2e/core/viewer/viewer-properties.e2e.ts +++ b/e2e/core/viewer/viewer-properties.e2e.ts @@ -21,7 +21,7 @@ import { LoginPage } from '../../pages/adf/loginPage'; import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import { ViewerPage } from '../../pages/adf/viewerPage'; import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; -import { DataTablePage } from '../../pages/adf/dataTablePage'; +import { DataTableComponentPage } from '../../pages/adf/dataTableComponentPage'; import resources = require('../../util/resources'); @@ -38,7 +38,7 @@ describe('Viewer - properties', () => { let contentServicesPage = new ContentServicesPage(); let loginPage = new LoginPage(); let navigationBarPage = new NavigationBarPage(); - let dataTable = new DataTablePage(); + let dataTable = new DataTableComponentPage(); let pngFile = new FileModel({ 'name': resources.Files.ADF_DOCUMENTS.PNG.file_name, @@ -189,18 +189,18 @@ describe('Viewer - properties', () => { viewerPage.clickCloseButton(); navigationBarPage.clickOverlayViewerButton(); - dataTable.doubleClickRow(fileForOverlay.name); + dataTable.doubleClickRow('Name', fileForOverlay.name); viewerPage.checkOverlayViewerIsDisplayed(); viewerPage.clickCloseButton(); - dataTable.doubleClickRow(pngFile.name); + dataTable.doubleClickRow('Name', pngFile.name); viewerPage.checkOverlayViewerIsDisplayed(); viewerPage.clickCloseButton(); viewerPage.disableOverlay(); - dataTable.doubleClickRow(fileForOverlay.name); + dataTable.doubleClickRow('Name', fileForOverlay.name); viewerPage.checkImgContainerIsDisplayed(); viewerPage.checkInlineViewerIsDisplayed(); - dataTable.doubleClickRow(pngFile.name); + dataTable.doubleClickRow('Name', pngFile.name); viewerPage.checkImgContainerIsDisplayed(); viewerPage.checkInlineViewerIsDisplayed(); }); diff --git a/e2e/pages/adf/content-services/documentListPage.ts b/e2e/pages/adf/content-services/documentListPage.ts new file mode 100644 index 0000000000..e7bf58a0b8 --- /dev/null +++ b/e2e/pages/adf/content-services/documentListPage.ts @@ -0,0 +1,86 @@ +/*! + * @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 { by, element, ElementFinder, browser } from 'protractor'; +import { DataTableComponentPage } from '../dataTableComponentPage'; +import { Util } from '../../../util/util'; + +export class DocumentListPage { + + rootElement: ElementFinder; + actionMenu = element(by.css('div[role="menu"]')); + optionButton = by.css('button[data-automation-id*="action_menu_"]'); + tableBody; + dataTable; + + constructor(rootElement: ElementFinder = element.all(by.css('adf-document-list')).first()) { + this.rootElement = rootElement; + this.dataTable = new DataTableComponentPage(this.rootElement); + this.tableBody = rootElement.all(by.css('div[class="adf-datatable-body"]')).first(); + } + + checkLockedIcon(content) { + let row = this.dataTable.getRowParentElement('Display name', content); + let lockIcon = row.element(by.cssContainingText('div[title="Lock"] mat-icon', 'lock')); + Util.waitUntilElementIsVisible(lockIcon); + return this; + } + + checkUnlockedIcon(content) { + let row = this.dataTable.getRowParentElement('Display name', content); + let lockIcon = row.element(by.cssContainingText('div[title="Lock"] mat-icon', 'lock_open')); + Util.waitUntilElementIsVisible(lockIcon); + return this; + } + + waitForTableBody() { + return Util.waitUntilElementIsVisible(this.tableBody); + } + + getTooltip(nodeName) { + return this.dataTable.getTooltip('Display name', nodeName); + } + + selectRow(nodeName) { + return this.dataTable.selectRow('Display name', nodeName); + } + + rightClickOnRow(nodeName) { + return this.dataTable.rightClickOnRow('Display name', nodeName); + } + + clickOnActionMenu(content) { + let row = this.dataTable.getRowParentElement('Display name', content); + row.element(this.optionButton).click(); + Util.waitUntilElementIsVisible(this.actionMenu); + browser.sleep(500); + return this; + } + + dataTablePage() { + return new DataTableComponentPage(this.rootElement); + } + + getAllRowsColumnValues(column) { + return this.dataTable.getAllRowsColumnValues(column); + } + + doubleClickRow(nodeName) { + this.dataTable.doubleClickRow('Display name', nodeName); + return this; + } +} 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 4728d64ac2..b1c920bc45 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 @@ -15,7 +15,7 @@ * limitations under the License. */ -import { browser, by, protractor } from 'protractor'; +import { browser, by } from 'protractor'; import { Util } from '../../../../../util/util'; export class SearchSliderPage { diff --git a/e2e/pages/adf/contentServicesPage.ts b/e2e/pages/adf/contentServicesPage.ts index 56b943ec9e..ec97a3c8c8 100644 --- a/e2e/pages/adf/contentServicesPage.ts +++ b/e2e/pages/adf/contentServicesPage.ts @@ -17,10 +17,9 @@ import TestConfig = require('../../test.config'); import { Util } from '../../util/util'; -import { ContentListPage } from './dialog/contentListPage'; +import { DocumentListPage } from './content-services/documentListPage'; import { CreateFolderDialog } from './dialog/createFolderDialog'; import { CreateLibraryDialog } from './dialog/createLibraryDialog'; -import { NavigationBarPage } from './navigationBarPage'; import { NodeActions } from '../../actions/ACS/node.actions'; import { DropActions } from '../../actions/drop.actions'; import { by, element, protractor, $$, browser } from 'protractor'; @@ -29,13 +28,12 @@ import path = require('path'); export class ContentServicesPage { - contentList = new ContentListPage(); + 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')); - tableBody = element.all(by.css('adf-document-list div[class="adf-datatable-body"]')).first(); contentServices = element(by.css('a[data-automation-id="Content Services"]')); currentFolder = element(by.css('div[class*="adf-breadcrumb-item adf-active"] div')); createFolderButton = element(by.css('button[data-automation-id="create-new-folder"]')); @@ -66,21 +64,94 @@ export class ContentServicesPage { copyButton = element(by.css('button[data-automation-id="content-node-selector-actions-choose"]')); searchInputElement = element(by.css('input[data-automation-id="content-node-selector-search-input"]')); shareNodeButton = element(by.cssContainingText('mat-icon', ' share ')); + nameColumnHeader = 'name'; + createdByColumnHeader = 'createdByUser.displayName'; + createdColumnHeader = 'createdAt'; + deleteContentElement = element(by.css('button[data-automation-id*="DELETE"]')); + metadataAction = element(by.css('button[data-automation-id*="METADATA"]')); + versionManagerAction = element(by.css('button[data-automation-id*="VERSIONS"]')); + moveContentElement = element(by.css('button[data-automation-id*="MOVE"]')); + copyContentElement = element(by.css('button[data-automation-id*="COPY"]')); + 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']`)); - getUploadAreaDocumentList() { - return new ContentListPage(element(by.css('adf-upload-drag-area'))); + pressContextMenuActionNamed(actionName) { + let actionButton = this.checkContextActionIsVisible(actionName); + actionButton.click(); + } + + checkContextActionIsVisible(actionName) { + let actionButton = element(by.css(`button[data-automation-id="context-${actionName}"`)); + Util.waitUntilElementIsVisible(actionButton); + Util.waitUntilElementIsClickable(actionButton); + return actionButton; + } + + getDocumentList() { + return this.contentList; + } + + checkLockedIcon(content) { + return this.contentList.checkLockedIcon(content); + } + + checkUnlockedIcon(content) { + return this.contentList.checkUnlockedIcon(content); + } + + checkDeleteIsDisabled(content) { + this.contentList.clickOnActionMenu(content); + this.waitForContentOptions(); + let disabledDelete = element(by.css(`button[data-automation-id*='DELETE'][disabled='true']`)); + Util.waitUntilElementIsVisible(disabledDelete); + } + + deleteContent(content) { + this.contentList.clickOnActionMenu(content); + this.waitForContentOptions(); + this.deleteContentElement.click(); + } + + metadataContent(content) { + this.contentList.clickOnActionMenu(content); + this.waitForContentOptions(); + this.metadataAction.click(); + } + + versionManagerContent(content) { + this.contentList.clickOnActionMenu(content); + this.waitForContentOptions(); + this.versionManagerAction.click(); + } + + copyContent(content) { + this.contentList.clickOnActionMenu(content); + this.copyContentElement.click(); + } + + lockContent(content) { + this.contentList.clickOnActionMenu(content); + this.lockContentElement.click(); + } + + waitForContentOptions() { + Util.waitUntilElementIsVisible(this.copyContentElement); + Util.waitUntilElementIsVisible(this.moveContentElement); + Util.waitUntilElementIsVisible(this.deleteContentElement); + Util.waitUntilElementIsVisible(this.downloadContent); } clickFileHyperlink(fileName) { - let hyperlink = this.contentList.getFileHyperlink(fileName); + let hyperlink = this.contentList.dataTablePage().getFileHyperlink(fileName); + Util.waitUntilElementIsClickable(hyperlink); hyperlink.click(); return this; } checkFileHyperlinkIsEnabled(fileName) { - let hyperlink = this.contentList.getFileHyperlink(fileName); + let hyperlink = this.contentList.dataTablePage().getFileHyperlink(fileName); Util.waitUntilElementIsVisible(hyperlink); return this; } @@ -93,57 +164,27 @@ export class ContentServicesPage { } getElementsDisplayedCreated() { - let deferred = protractor.promise.defer(); - let fileCreatedLocator = this.contentList.getColumnLocator('Created'); - Util.waitUntilElementIsVisible(element.all(fileCreatedLocator).first()); - let initialList = []; - - element.all(fileCreatedLocator).each((item) => { - item.getAttribute('title').then((dateText) => { - if (dateText !== '') { - let date = new Date(dateText); - initialList.push(date); - } - }); - }).then(function () { - deferred.fulfill(initialList); - }); - - return deferred.promise; + return this.contentList.dataTablePage().getAllRowsColumnValues('Created'); } getElementsDisplayedSize() { - let deferred = protractor.promise.defer(); - let fileSizeLocator = this.contentList.getColumnLocator('Size'); - Util.waitUntilElementIsVisible(element.all(fileSizeLocator).first()); - let initialList = []; - - element.all(fileSizeLocator).each(function (item) { - item.getAttribute('title').then((sizeText) => { - if (sizeText !== '') { - let size = Number(sizeText); - initialList.push(size); - } - }); - }).then(function () { - deferred.fulfill(initialList); - }); - - return deferred.promise; + return this.contentList.dataTablePage().getAllRowsColumnValues('Size'); } getElementsDisplayedAuthor(alfrescoJsApi) { let deferred = protractor.promise.defer(); + let initialList = []; let idList = this.getElementsDisplayedId(); let numberOfElements = this.numberOfResultsDisplayed(); this.nodeActions.getNodesDisplayed(alfrescoJsApi, idList, numberOfElements).then((nodes) => { - let initialList = []; - nodes.forEach((item) => { - if (item.entry.createdByUser.id !== '') { - initialList.push(item.entry.createdByUser.id); - } + item.entry.createdByUser.id.then((author) => { + if (author !== '') { + initialList.push(author); + } + }); }); + }).then(function () { deferred.fulfill(initialList); }); @@ -151,41 +192,11 @@ export class ContentServicesPage { } getElementsDisplayedName() { - let deferred = protractor.promise.defer(); - let fileNameLocator = this.contentList.getColumnLocator('Display name'); - Util.waitUntilElementIsVisible(element.all(fileNameLocator).first()); - let initialList = []; - - element.all(fileNameLocator).each((item) => { - item.getText().then(function (name) { - if (name !== '') { - initialList.push(name); - } - }); - }).then(function () { - deferred.fulfill(initialList); - }); - - return deferred.promise; + return this.contentList.dataTablePage().getAllRowsColumnValues('Display name'); } getElementsDisplayedId() { - let deferred = protractor.promise.defer(); - let fileIdLocator = this.contentList.getColumnLocator('Node id'); - Util.waitUntilElementIsVisible(element.all(fileIdLocator).first()); - let initialList = []; - - element.all(fileIdLocator).each((item) => { - item.getText().then(function (text) { - if (text !== '') { - initialList.push(text); - } - }); - }).then(function () { - deferred.fulfill(initialList); - }); - - return deferred.promise; + return this.contentList.dataTablePage().getAllRowsColumnValues('Node id'); } checkElementsSortedAsc(elements) { @@ -260,7 +271,7 @@ export class ContentServicesPage { } waitForTableBody() { - Util.waitUntilElementIsVisible(this.tableBody); + this.contentList.waitForTableBody(); } goToDocumentList() { @@ -275,14 +286,8 @@ export class ContentServicesPage { this.contentServices.click(); } - navigateToDocumentList() { - let navigationBarPage = new NavigationBarPage(); - navigationBarPage.clickContentServicesButton(); - this.checkAcsContainer(); - } - numberOfResultsDisplayed() { - return this.contentList.getAllDisplayedRows(); + return this.contentList.dataTablePage().numberOfRows(); } currentFolderName() { @@ -294,59 +299,51 @@ export class ContentServicesPage { return deferred.promise; } - getTooltip(content) { - return this.contentList.getRowByRowName(content).element(this.tooltip).getAttribute('title'); - } - - getBreadcrumbTooltip(nodeName: string) { - return element(by.css(`nav[data-automation-id="breadcrumb"] div[title="${nodeName}"]`)).getAttribute('title'); - } - getAllRowsNameColumn() { - return this.contentList.getAllRowsNameColumn(); + return this.contentList.getAllRowsColumnValues('Display name'); } sortByName(sortOrder) { - this.contentList.sortByName(sortOrder); + return this.contentList.dataTable.sortByColumn(sortOrder, this.nameColumnHeader); } sortByAuthor(sortOrder) { - this.contentList.sortByAuthor(sortOrder); + return this.contentList.dataTable.sortByColumn(sortOrder, this.createdByColumnHeader); } sortByCreated(sortOrder) { - return this.contentList.sortByCreated(sortOrder); + return this.contentList.dataTable.sortByColumn(sortOrder, this.createdColumnHeader); } sortAndCheckListIsOrderedByName(sortOrder) { this.sortByName(sortOrder); let deferred = protractor.promise.defer(); - this.contentList.checkListIsOrderedByNameColumn(sortOrder).then((result) => { + this.checkListIsSortedByNameColumn(sortOrder).then((result) => { deferred.fulfill(result); }); return deferred.promise; } async checkListIsSortedByNameColumn(sortOrder) { - await this.contentList.checkListIsOrderedByNameColumn(sortOrder); + return await this.contentList.dataTablePage().checkListIsSorted(sortOrder, 'Display name'); } async checkListIsSortedByCreatedColumn(sortOrder) { - await this.contentList.checkListIsOrderedByCreatedColumn(sortOrder); + return await this.contentList.dataTablePage().checkListIsSorted(sortOrder, 'Created'); } async checkListIsSortedByAuthorColumn(sortOrder) { - await this.contentList.checkListIsOrderedByAuthorColumn(sortOrder); + return await this.contentList.dataTablePage().checkListIsSorted(sortOrder, 'Created by'); } async checkListIsSortedBySizeColumn(sortOrder) { - await this.contentList.checkListIsOrderedBySizeColumn(sortOrder); + return await this.contentList.dataTablePage().checkListIsSorted(sortOrder, 'Size'); } sortAndCheckListIsOrderedByAuthor(sortOrder) { this.sortByAuthor(sortOrder); let deferred = protractor.promise.defer(); - this.contentList.checkListIsOrderedByAuthorColumn(sortOrder).then((result) => { + this.checkListIsSortedByAuthorColumn(sortOrder).then((result) => { deferred.fulfill(result); }); return deferred.promise; @@ -355,17 +352,12 @@ export class ContentServicesPage { sortAndCheckListIsOrderedByCreated(sortOrder) { this.sortByCreated(sortOrder); let deferred = protractor.promise.defer(); - this.contentList.checkListIsOrderedByCreatedColumn(sortOrder).then((result) => { + this.checkListIsSortedByCreatedColumn(sortOrder).then((result) => { deferred.fulfill(result); }); return deferred.promise; } - navigateToFolder(folder) { - this.contentList.navigateToFolder(folder); - return this; - } - doubleClickRow(nodeName) { this.contentList.doubleClickRow(nodeName); return this; @@ -393,7 +385,7 @@ export class ContentServicesPage { } checkContentIsDisplayed(content) { - this.contentList.checkContentIsDisplayed(content); + this.contentList.dataTablePage().checkContentIsDisplayed('Display name', content); return this; } @@ -405,7 +397,7 @@ export class ContentServicesPage { } checkContentIsNotDisplayed(content) { - this.contentList.checkContentIsNotDisplayed(content); + this.contentList.dataTablePage().checkContentIsNotDisplayed('Display name', content); return this; } @@ -465,11 +457,6 @@ export class ContentServicesPage { return this.uploadFileButton.isEnabled(); } - deleteContent(content) { - this.contentList.deleteContent(content); - return this; - } - getErrorMessage() { Util.waitUntilElementIsVisible(this.errorSnackBar); let deferred = protractor.promise.defer(); @@ -479,10 +466,6 @@ export class ContentServicesPage { return deferred.promise; } - checkItemInDocList(fileName) { - Util.waitUntilElementIsVisible(element(by.css(`div[data-automation-id="text_${fileName}"]`))); - } - enableInfiniteScrolling() { let infiniteScrollButton = element(by.cssContainingText('.mat-slide-toggle-content', 'Enable Infinite Scrolling')); Util.waitUntilElementIsVisible(infiniteScrollButton); @@ -564,11 +547,7 @@ export class ContentServicesPage { } getColumnValueForRow(file, columnName) { - let row = this.contentList.getRowByRowName(file); - Util.waitUntilElementIsVisible(row); - let rowColumn = row.element(by.css(`div[title="${columnName}"] span`)); - Util.waitUntilElementIsVisible(rowColumn); - return rowColumn.getText(); + return this.contentList.dataTablePage().getColumnValueForRow('Display name', file, columnName); } async getStyleValueForRowText(rowName, styleName) { @@ -668,7 +647,7 @@ export class ContentServicesPage { } checkRowIsDisplayed(rowName) { - let row = this.contentList.getRowByRowName(rowName); + let row = this.contentList.dataTablePage().getRow('Display name', rowName); Util.waitUntilElementIsVisible(row); } diff --git a/e2e/pages/adf/dataTableComponentPage.ts b/e2e/pages/adf/dataTableComponentPage.ts new file mode 100644 index 0000000000..fb7e717bb5 --- /dev/null +++ b/e2e/pages/adf/dataTableComponentPage.ts @@ -0,0 +1,279 @@ +/*! + * @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 { browser, by, element, protractor } from 'protractor'; +import { Util } from '../../util/util'; +import { ElementFinder, ElementArrayFinder } from 'protractor/built/element'; + +export class DataTableComponentPage { + + rootElement: ElementFinder; + list: ElementArrayFinder; + contents; + tableBody; + spinner; + rows = by.css(`adf-datatable div[class*='adf-datatable-body'] div[class*='adf-datatable-row']`); + allColumns; + selectedRowNumber; + allSelectedRows; + selectAll; + + constructor(rootElement: ElementFinder = element.all(by.css('adf-datatable')).first()) { + this.rootElement = rootElement; + this.list = this.rootElement.all(by.css(`div[class*='adf-datatable-body'] div[class*='adf-datatable-row']`)); + this.contents = this.rootElement.all(by.css('div[class="adf-datatable-body"] span')); + this.tableBody = this.rootElement.all(by.css(`div[class='adf-datatable-body']`)).first(); + this.spinner = this.rootElement.element(by.css('mat-progress-spinner')); + this.allColumns = this.rootElement.all(by.css('div[data-automation-id*="auto_id_entry."]')); + this.selectedRowNumber = this.rootElement.element(by.css(`div[class*='is-selected'] div[data-automation-id*='text_']`)); + this.allSelectedRows = this.rootElement.all(by.css(`div[class*='is-selected']`)); + this.selectAll = this.rootElement.element(by.css(`div[class*='adf-datatable-header'] mat-checkbox`)); + } + + checkAllRowsButtonIsDisplayed() { + Util.waitUntilElementIsVisible(this.selectAll); + return this; + } + + checkAllRows() { + Util.waitUntilElementIsClickable(this.selectAll).then(() => { + this.selectAll.click(); + Util.waitUntilElementIsVisible(this.selectAll.element(by.css('input[aria-checked="true"]'))); + }); + return this; + } + + clickCheckbox(columnName, columnValue) { + let checkbox = this.getRowCheckbox(columnName, columnValue); + Util.waitUntilElementIsClickable(checkbox); + checkbox.click(); + } + + checkRowIsNotChecked(columnName, columnValue) { + Util.waitUntilElementIsNotOnPage(this.getRowCheckbox(columnName, columnValue).element(by.css('input[aria-checked="true"]'))); + } + + checkRowIsChecked(columnName, columnValue) { + let rowCheckbox = this.getRowCheckbox(columnName, columnValue); + Util.waitUntilElementIsVisible(rowCheckbox.element(by.css('input[aria-checked="true"]'))); + } + + getRowCheckbox(columnName, columnValue) { + return this.getRowParentElement(columnName, columnValue) + .element(by.css('mat-checkbox')); + } + + checkNoRowIsSelected() { + Util.waitUntilElementIsNotOnPage(this.selectedRowNumber); + } + + getNumberOfSelectedRows() { + return this.allSelectedRows.count(); + } + + selectRowWithKeyboard(columnName, columnValue) { + let row = this.getRow(columnName, columnValue); + browser.actions().sendKeys(protractor.Key.COMMAND).click(row).perform(); + } + + selectRow(columnName, columnValue) { + let row = this.getRow(columnName, columnValue); + Util.waitUntilElementIsClickable(row); + row.click(); + return this; + } + + checkRowIsSelected(columnName, columnValue) { + let selectedRow = this.getRow(columnName, columnValue).element(by.xpath(`ancestor::div[contains(@class, 'is-selected')]`)); + Util.waitUntilElementIsVisible(selectedRow); + return this; + } + + checkRowIsNotSelected(columnName, columnValue) { + let selectedRow = this.getRow(columnName, columnValue).element(by.xpath(`ancestor::div[contains(@class, 'is-selected')]`)); + Util.waitUntilElementIsNotOnPage(selectedRow); + return this; + } + + getColumnValueForRow(identifyingColumn, identifyingValue, columnName) { + let row = this.getRow(identifyingColumn, identifyingValue).element(by.xpath(`ancestor::div[contains(@class, 'adf-datatable-row')]`)); + Util.waitUntilElementIsVisible(row); + let rowColumn = row.element(by.css(`div[title="${columnName}"] span`)); + Util.waitUntilElementIsVisible(rowColumn); + return rowColumn.getText(); + } + + /** + * Check the list is sorted. + * + * @param sortOrder: 'true' if the list is expected to be sorted ascendant and 'false' for descendant + * @param locator: locator for column + * @return 'true' if the list is sorted as expected and 'false' if it isn't + */ + checkListIsSorted(sortOrder, locator) { + let deferred = protractor.promise.defer(); + let column = element.all(by.css(`div[title='${locator}'] span`)); + Util.waitUntilElementIsVisible(column.first()); + let initialList = []; + column.each(function (currentElement) { + currentElement.getText().then(function (text) { + initialList.push(text); + }); + }).then(function () { + let sortedList = initialList; + sortedList = sortedList.sort(); + if (sortOrder === false) { + sortedList = sortedList.reverse(); + } + deferred.fulfill(initialList.toString() === sortedList.toString()); + }); + return deferred.promise; + } + + rightClickOnRow(columnName, columnValue) { + let row = this.getRow(columnName, columnValue); + browser.actions().click(row, protractor.Button.RIGHT).perform(); + Util.waitUntilElementIsVisible(element(by.id('adf-context-menu-content'))); + } + + getTooltip(columnName, columnValue) { + return this.getRow(columnName, columnValue).getAttribute('title'); + } + + getFileHyperlink(filename) { + return element(by.cssContainingText('adf-name-column[class*="adf-datatable-link"] span', filename)); + } + + numberOfRows() { + return this.rootElement.all(this.rows).count(); + } + + async getAllRowsColumnValues(column) { + let 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()); + let initialList = await element.all(columnLocator).getText(); + return initialList.filter((el) => el); + } + + async getRowsWithSameColumnValues(columnName, columnValue) { + let columnLocator = by.css(`div[title='${columnName}'] div[data-automation-id="text_${columnValue}"] span`); + Util.waitUntilElementIsVisible(this.rootElement.all(columnLocator).first()); + return this.rootElement.all(columnLocator).getText(); + } + + doubleClickRow(columnName, columnValue) { + let row = this.getRow(columnName, columnValue); + Util.waitUntilElementIsVisible(row); + Util.waitUntilElementIsClickable(row); + row.click(); + this.checkRowIsSelected(columnName, columnValue); + browser.actions().sendKeys(protractor.Key.ENTER).perform(); + return this; + } + + waitForTableBody() { + Util.waitUntilElementIsVisible(this.tableBody); + } + + getFirstElementDetail(detail) { + let firstNode = element.all(by.css(`adf-datatable div[title="${detail}"] span`)).first(); + return firstNode.getText(); + } + + sortByColumn(sortOrder, column) { + let locator = by.css(`div[data-automation-id="auto_id_${column}"]`); + Util.waitUntilElementIsVisible(element(locator)); + return element(locator).getAttribute('class').then(function (result) { + if (sortOrder === true) { + if (!result.includes('sorted-asc')) { + if (result.includes('sorted-desc') || result.includes('sortable')) { + element(locator).click(); + } + } + } else { + if (result.includes('sorted-asc')) { + element(locator).click(); + } else if (result.includes('sortable')) { + element(locator).click(); + element(locator).click(); + } + } + + return Promise.resolve(); + }); + } + + checkContentIsDisplayed(columnName, columnValue) { + let row = this.getRow(columnName, columnValue); + Util.waitUntilElementIsVisible(row); + return this; + } + + checkContentIsNotDisplayed(columnName, columnValue) { + let row = this.getRow(columnName, columnValue); + Util.waitUntilElementIsNotOnPage(row); + return this; + } + + contentInPosition(position) { + Util.waitUntilElementIsVisible(this.contents); + return this.contents.get(position - 1).getText(); + } + + getRowParentElement(columnName, columnValue) { + let 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); + return row; + } + + getRow(columnName, columnValue) { + return this.rootElement.all(by.css(`div[title="${columnName}"] div[data-automation-id="text_${columnValue}"] span`)).first(); + } + + checkSpinnerIsDisplayed() { + Util.waitUntilElementIsPresent(this.spinner); + return this; + } + + checkSpinnerIsNotDisplayed() { + Util.waitUntilElementIsNotOnPage(this.spinner); + return this; + } + + tableIsLoaded() { + Util.waitUntilElementIsVisible(this.rootElement); + return this; + } + + checkColumnIsDisplayed(column) { + Util.waitUntilElementIsVisible(element(by.css(`div[data-automation-id="auto_id_entry.${column}"]`))); + return this; + } + + getNumberOfColumns() { + return this.allColumns.count(); + } + + getNumberOfRows() { + return this.list.count(); + } + + getCellByRowAndColumn(rowColumn, rowContent, columnName) { + return this.getRowParentElement(rowColumn, rowContent).element(by.css(`div[title='${columnName}']`)); + } +} diff --git a/e2e/pages/adf/dataTablePage.ts b/e2e/pages/adf/dataTablePage.ts deleted file mode 100644 index c9bef6c327..0000000000 --- a/e2e/pages/adf/dataTablePage.ts +++ /dev/null @@ -1,340 +0,0 @@ -/*! - * @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 { browser, by, element, protractor } from 'protractor'; -import { Util } from '../../util/util'; -import { ElementFinder, ElementArrayFinder } from 'protractor/built/element'; - -export class DataTablePage { - - rootElement: ElementFinder; - list: ElementArrayFinder; - contents = element.all(by.css('div[class="adf-datatable-body"] span')); - multiSelect = element(by.css(`div[data-automation-id='multiselect'] label > div[class='mat-checkbox-inner-container']`)); - selectionButton = element(by.css(`div[class='mat-select-arrow']`)); - selectionDropDown = element(by.css(`div[class*='ng-trigger-transformPanel']`)); - allSelectedRows = element.all(by.css(`div[class*='is-selected']`)); - selectedRowNumber = element(by.css(`div[class*='is-selected'] div[data-automation-id*='text_']`)); - selectAll = element(by.css(`div[class*='header'] mat-checkbox`)); - addRowElement = element(by.xpath(`//span[contains(text(),'Add row')]/..`)); - replaceRowsElement = element(by.xpath(`//span[contains(text(),'Replace rows')]/..`)); - reset = element(by.xpath(`//span[contains(text(),'Reset to default')]/..`)); - replaceColumnsElement = element(by.xpath(`//span[contains(text(),'Replace columns')]/..`)); - createdOnColumn = element(by.css(`div[data-automation-id='auto_id_createdOn']`)); - tableBody = element.all(by.css(`div[class='adf-datatable-body']`)).first(); - spinner = element(by.css('mat-progress-spinner')); - rows = by.css(`adf-datatable div[class*='adf-datatable-body'] div[class*='adf-datatable-row']`); - allColumns = element.all(by.css('div[data-automation-id*="auto_id_entry."]')); - - constructor(rootElement: ElementFinder = element(by.css('adf-datatable'))) { - this.rootElement = rootElement; - this.list = this.rootElement.all(by.css(`div[class*=adf-datatable-body] div[class*=adf-datatable-row]`)); - } - - getFileHyperlink(filename) { - return element(by.cssContainingText('adf-name-column[class*="adf-datatable-link"] span', filename)); - } - - getAllDisplayedRows() { - return element.all(this.rows).count(); - } - - getAllRowsNameColumn() { - return this.getAllRowsColumnValues('Name'); - } - - async getAllRowsColumnValues(locator) { - let columnLocator = by.css("adf-datatable div[class*='adf-datatable-body'] div[class*='adf-datatable-row'] div[title='" + locator + "'] span"); - Util.waitUntilElementIsVisible(element.all(columnLocator).first()); - let initialList = await element.all(columnLocator).getText(); - return initialList.filter((el) => el); - } - - getRowByRowNumber(rowNumber) { - Util.waitUntilElementIsVisible(element(by.css(`div[data-automation-id='text_` + rowNumber + `'] span`))); - return element(by.css(`div[data-automation-id='text_` + rowNumber + `'] span`)); - } - - getRowCheckbox(rowNumber) { - return this.getRowByRowNumber(rowNumber).element(by.xpath(`ancestor::div/div/mat-checkbox[contains(@class, 'mat-checkbox-checked')]`)); - } - - clickMultiSelect() { - Util.waitUntilElementIsVisible(this.multiSelect); - this.multiSelect.click(); - } - - clickReset() { - Util.waitUntilElementIsVisible(this.reset); - this.reset.click(); - } - - clickCheckbox(rowNumber) { - let checkbox = this.getRowByRowNumber(rowNumber).element(by.xpath(`ancestor::div[contains(@class, 'adf-datatable-row')]//mat-checkbox/label`)); - Util.waitUntilElementIsVisible(checkbox); - checkbox.click(); - } - - clickCheckboxByName(rowName) { - let checkbox = this.getRowsName(rowName).element(by.xpath(`ancestor::div[contains(@class, 'adf-datatable-row')]//mat-checkbox/label`)); - Util.waitUntilElementIsVisible(checkbox); - checkbox.click(); - } - - getRowCheckboxByName(rowName) { - return this.getRowsName(rowName).element(by.xpath(`ancestor::div/div/mat-checkbox[contains(@class, 'mat-checkbox-checked')]`)); - } - - checkRowIsNotCheckedByName(rowName) { - Util.waitUntilElementIsNotOnPage(this.getRowCheckboxByName(rowName)); - } - - checkRowIsCheckedByName(rowName) { - Util.waitUntilElementIsVisible(this.getRowCheckboxByName(rowName)); - } - - selectRow(rowNumber) { - return this.getRowByRowNumber(rowNumber).click(); - } - - selectRowWithKeyboard(rowNumber) { - let row = this.getRowByRowNumber(rowNumber); - browser.actions().sendKeys(protractor.Key.COMMAND).click(row).perform(); - } - - selectSelectionMode(selectionMode) { - let selectMode = element(by.cssContainingText(`span[class='mat-option-text']`, selectionMode)); - this.selectionButton.click(); - Util.waitUntilElementIsVisible(this.selectionDropDown); - selectMode.click(); - } - - selectRowByRowName(rowName) { - let row = element(by.cssContainingText(`[data-automation-id*="${rowName}"]`, rowName)); - Util.waitUntilElementIsVisible(row); - Util.waitUntilElementIsClickable(row); - return row.click(); - } - - checkRowIsSelectedByName(rowName) { - let row = element(by.cssContainingText(`[data-automation-id*="${rowName}"]`, rowName)); - let isRowSelected = row.element(by.xpath(`ancestor::div[contains(@class, 'is-selected')]`)); - Util.waitUntilElementIsVisible(isRowSelected); - } - - checkRowIsNotSelectedByName(rowName) { - let row = element(by.cssContainingText(`[data-automation-id*="${rowName}"]`, rowName)); - let isRowSelected = row.element(by.xpath(`ancestor::div[contains(@class, 'is-selected')]`)); - Util.waitUntilElementIsNotOnPage(isRowSelected); - } - - selectRowByNameWithKeyboard(rowName) { - let row = element(by.cssContainingText(`[data-automation-id*="${rowName}"]`, rowName)); - browser.actions().sendKeys(protractor.Key.COMMAND).click(row).perform(); - } - - checkRowIsSelected(rowNumber) { - let isRowSelected = this.getRowByRowNumber(rowNumber).element(by.xpath(`ancestor::div[contains(@class, 'is-selected')]`)); - Util.waitUntilElementIsVisible(isRowSelected); - } - - checkRowIsNotSelected(rowNumber) { - let isRowSelected = this.getRowByRowNumber(rowNumber) - .element(by.xpath(`ancestor::div[contains(@class, 'adf-datatable-row custom-row-style ng-star-inserted is-selected')]`)); - Util.waitUntilElementIsNotOnPage(isRowSelected); - } - - checkNoRowIsSelected() { - Util.waitUntilElementIsNotOnPage(this.selectedRowNumber); - } - - checkAllRowsButtonIsDisplayed() { - Util.waitUntilElementIsVisible(this.selectAll); - Util.waitUntilElementIsVisible(this.selectAll); - return this; - } - - checkAllRows() { - Util.waitUntilElementIsVisible(this.selectAll); - Util.waitUntilElementIsClickable(this.selectAll); - this.selectAll.click(); - } - - checkRowIsChecked(rowNumber) { - Util.waitUntilElementIsVisible(this.getRowCheckbox(rowNumber)); - } - - checkRowIsNotChecked(rowNumber) { - Util.waitUntilElementIsNotOnPage(this.getRowCheckbox(rowNumber)); - } - - addRow() { - Util.waitUntilElementIsVisible(this.addRowElement); - this.addRowElement.click(); - } - - getNumberOfRows() { - return this.list.count(); - } - - getNumberOfSelectedRows() { - return this.allSelectedRows.count(); - } - - replaceRows(id) { - let rowID = this.getRowByRowNumber(id); - Util.waitUntilElementIsVisible(rowID); - this.replaceRowsElement.click(); - Util.waitUntilElementIsNotOnPage(rowID); - } - - replaceColumns() { - Util.waitUntilElementIsVisible(this.replaceColumnsElement); - this.replaceColumnsElement.click(); - Util.waitUntilElementIsNotOnPage(this.createdOnColumn); - } - - getRowsName(content) { - let row = element(by.css(`div[data-automation-id*='` + content + `']`)); - Util.waitUntilElementIsPresent(row); - return row; - } - - doubleClickRow(rowName) { - let row = this.getRowByRowName(rowName); - Util.waitUntilElementIsVisible(row); - Util.waitUntilElementIsClickable(row); - row.click(); - Util.waitUntilElementIsVisible(row.all(by.css(`div[class*='--image'] mat-icon[svgicon*='selected']`)).first()); - browser.actions().sendKeys(protractor.Key.ENTER).perform(); - return this; - } - - getRowByRowName(content) { - let rowByRowName = by.xpath(`ancestor::div[contains(@class, 'adf-datatable-row')]`); - Util.waitUntilElementIsPresent(this.getRowsName(content).element(rowByRowName)); - return this.getRowsName(content).element(rowByRowName); - } - - waitForTableBody() { - Util.waitUntilElementIsVisible(this.tableBody); - } - - insertFilter(filterText) { - let inputFilter = element(by.css(`#adf-datatable-filter-input`)); - inputFilter.clear(); - return inputFilter.sendKeys(filterText); - } - - getNodeIdFirstElement() { - let firstNode = element.all(by.css('adf-datatable div[title="Node id"] span')).first(); - return firstNode.getText(); - } - - sortByColumn(sortOrder, locator) { - Util.waitUntilElementIsVisible(element(locator)); - return element(locator).getAttribute('class').then(function (result) { - if (sortOrder === true) { - if (!result.includes('sorted-asc')) { - if (result.includes('sorted-desc') || result.includes('sortable')) { - element(locator).click(); - } - } - } else { - if (result.includes('sorted-asc')) { - element(locator).click(); - } else if (result.includes('sortable')) { - element(locator).click(); - element(locator).click(); - } - } - - return Promise.resolve(); - }); - } - - checkContentIsDisplayed(content) { - let row = by.cssContainingText(`[data-automation-id*="${content}"]`, content); - Util.waitUntilElementIsVisible(this.tableBody.all(row).first()); - return this; - } - - checkContentIsNotDisplayed(content) { - let row = by.cssContainingText(`[data-automation-id*="${content}"]`, content); - Util.waitUntilElementIsNotOnPage(this.tableBody.all(row).first()); - return this; - } - - selectRowByContentName(content) { - let row = by.cssContainingText(`[data-automation-id*="${content}"]`, content); - Util.waitUntilElementIsVisible(this.tableBody.element(row)); - this.tableBody.element(row).click(); - return this; - } - - contentInPosition(position) { - Util.waitUntilElementIsVisible(this.contents); - return this.contents.get(position - 1).getText(); - } - - checkSpinnerIsDisplayed() { - Util.waitUntilElementIsPresent(this.spinner); - return this; - } - - checkSpinnerIsNotDisplayed() { - Util.waitUntilElementIsNotOnPage(this.spinner); - return this; - } - - checkSpinnerIsNotDisplayed() { - Util.waitUntilElementIsNotOnPage(this.spinner); - } - - checkRowIsDisplayedByName(filename) { - Util.waitUntilElementIsVisible(element.all(by.css(`div[filename="${filename}"]`)).first()); - } - - checkRowIsNotDisplayedByName(filename) { - Util.waitUntilElementIsNotOnPage(element.all(by.css(`div[filename="${filename}"]`)).first()); - } - - getNumberOfRowsDisplayedWithSameName(filename) { - Util.waitUntilElementIsVisible(element(by.css(`div[filename="${filename}"]`))); - return element.all(by.css(`div[title='Name'][filename="${filename}"]`)).count(); - } - - getNumberOfRowsDisplayedByName(filename) { - let rowLocator = by.cssContainingText(`[data-automation-id*="${filename}"]`, filename); - Util.waitUntilElementIsVisible(element(rowLocator)); - return element.all(by.css(`div[title='Name'] div[data-automation-id*="${filename}"]`)).count(); - } - - checkColumnIsDisplayed(column) { - Util.waitUntilElementIsVisible(element(by.css(`div[data-automation-id="auto_id_entry.${column}"]`))); - return this; - } - - getNoOfColumns() { - return this.allColumns.count(); - } - - getCellByNameAndColumn(content, columnName) { - return this.getRowByRowName(content).element(by.css(`div[title='${columnName}']`)); - } - -} diff --git a/e2e/pages/adf/demo-shell/customSourcesPage.ts b/e2e/pages/adf/demo-shell/customSourcesPage.ts index 232b3a9f90..7e339a2b91 100644 --- a/e2e/pages/adf/demo-shell/customSourcesPage.ts +++ b/e2e/pages/adf/demo-shell/customSourcesPage.ts @@ -17,7 +17,7 @@ import { Util } from '../../../util/util'; import { element, by } from 'protractor'; -import { ContentListPage } from '../dialog/contentListPage'; +import { DataTableComponentPage } from '../dataTableComponentPage'; import { NavigationBarPage } from '../navigationBarPage'; let source = { @@ -38,7 +38,7 @@ let column = { export class CustomSources { - contentList = new ContentListPage(); + dataTable = new DataTableComponentPage(); navigationBarPage = new NavigationBarPage(); toolbar = element(by.css('app-custom-sources .adf-toolbar-title')); @@ -67,13 +67,13 @@ export class CustomSources { } checkRowIsDisplayed(rowName) { - let row = this.contentList.getRowsName(rowName); - Util.waitUntilElementIsVisible(row); + return this.dataTable.checkContentIsDisplayed('Name', rowName); } getStatusCell(rowName) { - Util.waitUntilElementIsVisible(this.contentList.getCellByNameAndColumn(rowName, column.status)); - return this.contentList.getCellByNameAndColumn(rowName, column.status).getText(); + let cell = this.dataTable.getCellByRowAndColumn('Name', rowName, column.status); + Util.waitUntilElementIsVisible(cell); + return cell.getText(); } } diff --git a/e2e/pages/adf/demo-shell/dataTablePage.ts b/e2e/pages/adf/demo-shell/dataTablePage.ts new file mode 100644 index 0000000000..25f52e2ce0 --- /dev/null +++ b/e2e/pages/adf/demo-shell/dataTablePage.ts @@ -0,0 +1,127 @@ +/*! + * @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 { browser, by, element, protractor } from 'protractor'; +import { DataTableComponentPage } from '../dataTableComponentPage'; +import { Util } from '../../../util/util'; + +export class DataTablePage { + + dataTable = new DataTableComponentPage(); + multiSelect = element(by.css(`div[data-automation-id='multiselect'] label > div[class='mat-checkbox-inner-container']`)); + reset = element(by.xpath(`//span[contains(text(),'Reset to default')]/..`)); + selectionButton = element(by.css(`div[class='mat-select-arrow']`)); + selectionDropDown = element(by.css(`div[class*='ng-trigger-transformPanel']`)); + allSelectedRows = element.all(by.css(`div[class*='is-selected']`)); + selectedRowNumber = element(by.css(`div[class*='is-selected'] div[data-automation-id*='text_']`)); + selectAll = element(by.css(`div[class*='header'] label`)); + addRowElement = element(by.xpath(`//span[contains(text(),'Add row')]/..`)); + replaceRowsElement = element(by.xpath(`//span[contains(text(),'Replace rows')]/..`)); + replaceColumnsElement = element(by.xpath(`//span[contains(text(),'Replace columns')]/..`)); + createdOnColumn = element(by.css(`div[data-automation-id='auto_id_createdOn']`)); + + insertFilter(filterText) { + let inputFilter = element(by.css(`#adf-datatable-filter-input`)); + inputFilter.clear(); + return inputFilter.sendKeys(filterText); + } + + addRow() { + Util.waitUntilElementIsVisible(this.addRowElement); + this.addRowElement.click(); + } + + replaceRows(id) { + let rowID = this.dataTable.getRow('Id', id); + Util.waitUntilElementIsVisible(rowID); + this.replaceRowsElement.click(); + Util.waitUntilElementIsNotVisible(rowID); + } + + replaceColumns() { + Util.waitUntilElementIsVisible(this.replaceColumnsElement); + this.replaceColumnsElement.click(); + Util.waitUntilElementIsNotOnPage(this.createdOnColumn); + } + + clickMultiSelect() { + Util.waitUntilElementIsVisible(this.multiSelect); + this.multiSelect.click(); + } + + clickReset() { + Util.waitUntilElementIsVisible(this.reset); + this.reset.click(); + } + + checkRowIsNotSelected(rowNumber) { + let isRowSelected = this.dataTable.getRow('Id', rowNumber) + .element(by.xpath(`ancestor::div[contains(@class, 'adf-datatable-row custom-row-style ng-star-inserted is-selected')]`)); + Util.waitUntilElementIsNotOnPage(isRowSelected); + } + + checkNoRowIsSelected() { + Util.waitUntilElementIsNotOnPage(this.selectedRowNumber); + } + + checkAllRows() { + Util.waitUntilElementIsVisible(this.selectAll); + this.selectAll.click(); + } + + checkRowIsChecked(rowNumber) { + Util.waitUntilElementIsVisible(this.getRowCheckbox(rowNumber)); + } + + checkRowIsNotChecked(rowNumber) { + Util.waitUntilElementIsNotOnPage(this.getRowCheckbox(rowNumber)); + } + + getNumberOfSelectedRows() { + return this.allSelectedRows.count(); + } + + clickCheckbox(rowNumber) { + let checkbox = this.dataTable.getRow('Id', rowNumber).element(by.xpath(`ancestor::div[contains(@class, 'adf-datatable-row')]//mat-checkbox/label`)); + Util.waitUntilElementIsVisible(checkbox); + checkbox.click(); + } + + selectRow(rowNumber) { + let locator = this.dataTable.getRow('Id', rowNumber); + Util.waitUntilElementIsVisible(locator); + Util.waitUntilElementIsClickable(locator); + locator.click(); + return this; + } + + selectRowWithKeyboard(rowNumber) { + let row = this.dataTable.getRow('Id', rowNumber); + browser.actions().sendKeys(protractor.Key.COMMAND).click(row).perform(); + } + + selectSelectionMode(selectionMode) { + let selectMode = element(by.cssContainingText(`span[class='mat-option-text']`, selectionMode)); + this.selectionButton.click(); + Util.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')]`)); + } +} diff --git a/e2e/pages/adf/demo-shell/process-services/processListDemoPage.ts b/e2e/pages/adf/demo-shell/process-services/processListDemoPage.ts index 4b250a05c1..eed496f175 100644 --- a/e2e/pages/adf/demo-shell/process-services/processListDemoPage.ts +++ b/e2e/pages/adf/demo-shell/process-services/processListDemoPage.ts @@ -16,7 +16,7 @@ */ import { Util } from '../../../../util/util'; -import { DataTablePage } from '../../dataTablePage'; +import { DataTableComponentPage } from '../../dataTableComponentPage'; import { element, by, protractor } from 'protractor'; export class ProcessListDemoPage { @@ -29,10 +29,10 @@ export class ProcessListDemoPage { stateSelector = element(by.css('mat-select[data-automation-id="state"')); sortSelector = element(by.css('mat-select[data-automation-id="sort"')); - dataTable = new DataTablePage(); + dataTable = new DataTableComponentPage(); getDisplayedProcessesNames() { - return this.dataTable.getAllRowsNameColumn(); + return this.dataTable.getAllRowsColumnValues('Name'); } selectSorting(sort) { @@ -76,11 +76,11 @@ export class ProcessListDemoPage { } checkProcessIsNotDisplayed(processName) { - return this.dataTable.checkRowIsNotDisplayedByName(processName); + return this.dataTable.checkContentIsNotDisplayed('Name', processName); } checkProcessIsDisplayed(processName) { - return this.dataTable.checkRowIsDisplayedByName(processName); + return this.dataTable.checkContentIsDisplayed('Name', processName); } checkAppIdFieldIsDisplayed() { diff --git a/e2e/pages/adf/dialog/contentListPage.ts b/e2e/pages/adf/dialog/contentListPage.ts deleted file mode 100644 index 867fa516a3..0000000000 --- a/e2e/pages/adf/dialog/contentListPage.ts +++ /dev/null @@ -1,465 +0,0 @@ -/*! - * @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 { ElementFinder, browser, by, element, protractor } from 'protractor'; -import { DataTablePage } from '../dataTablePage'; -import { Util } from '../../../util/util'; - -export class ContentListPage { - - rootElement: ElementFinder; - dataTable = new DataTablePage(); - deleteContentElement = element(by.css('button[data-automation-id*="DELETE"]')); - metadataAction = element(by.css('button[data-automation-id*="METADATA"]')); - versionManagerAction = element(by.css('button[data-automation-id*="VERSIONS"]')); - moveContentElement = element(by.css('button[data-automation-id*="MOVE"]')); - copyContentElement = element(by.css('button[data-automation-id*="COPY"]')); - lockContentElement = element(by.css('button[data-automation-id="DOCUMENT_LIST.ACTIONS.LOCK"]')); - downloadContent = element(by.css('button[data-automation-id*="DOWNLOAD"]')); - actionMenu = element(by.css('div[role="menu"]')); - optionButton = by.css('button[data-automation-id*="action_menu_"]'); - rowByRowName = by.xpath('ancestor::div[contains(@class, "adf-datatable-row")]'); - nameColumn = by.css('div[class*="datatable-body"] div[class*="adf-datatable-cell"][title="Display name"]'); - nameColumnHeader = by.css('div[data-automation-id="auto_id_name"]'); - createdByColumn = by.css('div[class*="--text"][title="Created by"] span'); - sizeColumn = by.css('div[id*="document-list-container"] div[class*="adf-datatable-row"] .adf-filesize-cell'); - createdByColumnHeader = by.css('div[data-automation-id*="auto_id_createdByUser"]'); - createdColumn = by.css('div[class*="--date"] span'); - createdColumnHeader = by.css('div[data-automation-id*="auto_id_createdAt"]'); - rows = by.css('div[id="document-list-container"] div[class*="adf-datatable-body"] div[class*="adf-datatable-row"]'); - emptyFolderMessage = element(by.css('div[class="adf-empty-folder-this-space-is-empty"]')); - table = element.all(by.css('adf-datatable')).first(); - tableBody = element.all(by.css('adf-document-list div[class="adf-datatable-body"]')).first(); - - constructor(rootElement: ElementFinder = element(by.css('adf-document-list'))) { - this.rootElement = rootElement; - } - - getFileHyperlink(fileName) { - return this.dataTable.getFileHyperlink(fileName); - } - - getColumnLocator(column) { - return by.css(`div[id*='document-list-container'] div[class*='adf-datatable-row'] div[title='${column}'] span`); - } - - getTooltip(nodeName) { - return this.getRowByRowName(nodeName).element(by.css(`adf-document-list span[title="${nodeName}"]`)).getAttribute('title'); - } - - getRowsName(content) { - let row = element.all(by.css(`adf-document-list span[title='${content}']`)).first(); - Util.waitUntilElementIsVisible(row); - return row; - } - - getRowsNameWithRoot(content) { - let row = this.rootElement.all(by.css(`adf-datatable span[title='${content}']`)).first(); - Util.waitUntilElementIsVisible(row); - return row; - } - - getRowByRowName(content) { - Util.waitUntilElementIsVisible(this.getRowsName(content).element(this.rowByRowName)); - return this.getRowsName(content).element(this.rowByRowName); - } - - getRowByRowNameWithRoot(content) { - Util.waitUntilElementIsVisible(this.getRowsNameWithRoot(content).element(this.rowByRowName)); - return this.getRowsNameWithRoot(content).element(this.rowByRowName); - } - - getCellByNameAndColumn(content, columnName) { - return this.getRowByRowName(content).element(by.css(`div[title='${columnName}']`)); - } - - getAllDisplayedRows() { - return element.all(this.rows).count(); - } - - getAllRowsNameColumn() { - return this.getAllRowsColumnValues(this.nameColumn); - } - - getAllRowsColumnValues(locator) { - let deferred = protractor.promise.defer(); - Util.waitUntilElementIsVisible(element.all(locator).first()); - let initialList = []; - - element.all(locator).each(function (currentElement) { - currentElement.getText().then(function (text) { - if (text !== '') { - initialList.push(text); - } - }); - }).then(function () { - deferred.fulfill(initialList); - }); - - return deferred.promise; - } - - deleteContent(content) { - this.clickOnActionMenu(content); - this.waitForContentOptions(); - this.deleteContentElement.click(); - } - - deleteContentWithRoot(content) { - this.clickOnActionMenuWithRoot(content); - this.waitForContentOptions(); - this.deleteContentElement.click(); - } - - checkDeleteIsDisabled(content) { - this.clickOnActionMenu(content); - this.waitForContentOptions(); - let disabledDelete = element(by.css(`button[data-automation-id*='DELETE'][disabled='true']`)); - Util.waitUntilElementIsVisible(disabledDelete); - } - - metadataContent(content) { - this.clickOnActionMenu(content); - this.waitForContentOptions(); - this.metadataAction.click(); - } - - versionManagerContent(content) { - this.clickOnActionMenu(content); - this.waitForContentOptions(); - this.versionManagerAction.click(); - } - - moveContent(content) { - this.clickOnActionMenu(content); - this.moveContentElement.click(); - } - - copyContent(content) { - this.clickOnActionMenu(content); - this.copyContentElement.click(); - } - - lockContent(content) { - this.clickOnActionMenuWithRoot(content); - this.lockContentElement.click(); - } - - waitForContentOptions() { - Util.waitUntilElementIsVisible(this.copyContentElement); - Util.waitUntilElementIsVisible(this.moveContentElement); - Util.waitUntilElementIsVisible(this.deleteContentElement); - Util.waitUntilElementIsVisible(this.downloadContent); - } - - clickOnActionMenu(content) { - this.getRowByRowName(content).element(this.optionButton).click(); - Util.waitUntilElementIsVisible(this.actionMenu); - browser.sleep(500); - return this; - } - - clickOnActionMenuWithRoot(content) { - this.getRowByRowNameWithRoot(content).element(this.optionButton).click(); - Util.waitUntilElementIsVisible(this.actionMenu); - browser.sleep(500); - return this; - } - - sortByColumn(sortOrder, locator) { - Util.waitUntilElementIsVisible(element(locator)); - return element(locator).getAttribute('class').then(function (result) { - if (sortOrder === true) { - if (!result.includes('sorted-asc')) { - if (result.includes('sorted-desc') || result.includes('sortable')) { - element(locator).click(); - } - } - } else { - if (result.includes('sorted-asc')) { - element(locator).click(); - } else if (result.includes('sortable')) { - element(locator).click(); - element(locator).click(); - } - } - - return Promise.resolve(); - }); - } - - /** - * Sort the list by name column. - * - * @param sortOrder: 'true' to sort the list ascendant and 'false' for descendant - */ - sortByName(sortOrder) { - this.sortByColumn(sortOrder, this.nameColumnHeader); - } - - /** - * Sort the list by author column. - * - * @param sortOrder: 'true' to sort the list ascendant and 'false' for descendant - */ - sortByAuthor(sortOrder) { - this.sortByColumn(sortOrder, this.createdByColumnHeader); - } - - /** - * Sort the list by created column. - * - * @param sortOrder: 'true' to sort the list ascendant and 'false' for descendant - */ - sortByCreated(sortOrder) { - this.sortByColumn(sortOrder, this.createdColumnHeader); - } - - /** - * Check the list is sorted by name column. - * - * @param sortOrder: 'true' if the list is expected to be sorted ascendant and 'false' for descendant - * @return sorted : 'true' if the list is sorted as expected and 'false' if it isn't - */ - checkListIsOrderedByNameColumn(sortOrder) { - let deferred = protractor.promise.defer(); - deferred.fulfill(this.checkListIsSorted(sortOrder, this.nameColumn)); - return deferred.promise; - } - - /** - * Check the list is sorted by author column. - * - * @param sortOrder: 'true' if the list is expected to be sorted ascendant and 'false' for descendant - * @return sorted : 'true' if the list is sorted as expected and 'false' if it isn't - */ - checkListIsOrderedByAuthorColumn(sortOrder) { - let deferred = protractor.promise.defer(); - deferred.fulfill(this.checkListIsSorted(sortOrder, this.createdByColumn)); - return deferred.promise; - } - - checkListIsOrderedBySizeColumn(sortOrder) { - let deferred = protractor.promise.defer(); - deferred.fulfill(this.checkListIsSorted(sortOrder, this.sizeColumn)); - return deferred.promise; - } - - /** - * Check the list is sorted by created column. - * - * @param sortOrder: 'true' if the list is expected to be sorted ascendant and 'false' for descendant - * @return sorted : 'true' if the list is sorted as expected and 'false' if it isn't - */ - checkListIsOrderedByCreatedColumn(sortOrder) { - let deferred = protractor.promise.defer(); - let lastValue; - let sorted = true; - - element.all(this.createdColumn).map(function (currentElement) { - return currentElement.getText(); - }).then(function (texts) { - texts.forEach(function (text) { - if (lastValue !== undefined) { - let currentDate = new Date(text); - let lastDate = new Date(lastValue); - if (sortOrder === true && currentDate.getTime() < lastDate.getTime()) { - sorted = false; - } - if (sortOrder === false && currentDate.getTime() > lastDate.getTime()) { - sorted = false; - } - } - lastValue = text; - }); - deferred.fulfill(sorted); - }); - return deferred.promise; - } - - /** - * Check the list is sorted. - * - * @param sortOrder: 'true' if the list is expected to be sorted ascendant and 'false' for descendant - * @param locator: locator for column - * @return 'true' if the list is sorted as expected and 'false' if it isn't - */ - checkListIsSorted(sortOrder, locator) { - let deferred = protractor.promise.defer(); - Util.waitUntilElementIsVisible(element.all(locator).first()); - let initialList = []; - element.all(locator).each(function (currentElement) { - currentElement.getText().then(function (text) { - initialList.push(text); - }); - }).then(function () { - let sortedList = initialList; - sortedList = sortedList.sort(); - if (sortOrder === false) { - sortedList = sortedList.reverse(); - } - deferred.fulfill(initialList.toString() === sortedList.toString()); - }); - return deferred.promise; - } - - navigateToFolder(folder) { - let row = this.getRowsName(folder); - Util.waitUntilElementIsVisible(row); - Util.waitUntilElementIsOnPage(row); - row.click(); - this.checkRowIsSelected(folder); - browser.actions().sendKeys(protractor.Key.ENTER).perform(); - return this; - } - - doubleClickRow(selectRow) { - let row = this.getRowsName(selectRow); - Util.waitUntilElementIsVisible(row); - Util.waitUntilElementIsClickable(row); - row.click(); - Util.waitUntilElementIsVisible(this.getRowByRowName(selectRow).element(by.css(`div[class*='--image'] mat-icon[svgicon*='selected']`))); - browser.actions().sendKeys(protractor.Key.ENTER).perform(); - return this; - } - - doubleClickEntireRow(selectRow) { - let row = this.getRowByRowName(selectRow); - Util.waitUntilElementIsVisible(row); - Util.waitUntilElementIsClickable(row); - row.click(); - Util.waitUntilElementIsVisible(this.getRowByRowName(selectRow).element(by.css(`div[class*='--image'] mat-icon[svgicon*='selected']`))); - browser.actions().sendKeys(protractor.Key.ENTER).perform(); - return this; - } - - checkRowIsSelected(content) { - let isRowSelected = this.getRowsName(content).element(by.xpath(`ancestor::div[contains(@class, 'is-selected')]`)); - Util.waitUntilElementIsVisible(isRowSelected); - } - - checkRowIsSelectedWithRoot(content) { - let isRowSelected = this.getRowsNameWithRoot(content).element(by.xpath(`ancestor::div[contains(@class, 'is-selected')]`)); - Util.waitUntilElementIsVisible(isRowSelected); - } - - checkContentIsDisplayed(content) { - Util.waitUntilElementIsVisible(this.getRowByRowName(content)); - return this; - } - - getNodeIdByFilename(filename) { - let nodeIdColumn = element.all(by.xpath(`//div[@id='document-list-container']//div[@filename='${filename}' and @title='Node id']`)); - return nodeIdColumn.getText(); - } - - async getAllNodeIdInList() { - let nodeIdColumns = await element.all(by.xpath(`//div[@id='document-list-container']//div[@title='Node id']`)); - return await nodeIdColumns.map(async (currentElement) => { - return await currentElement.getText().then((nodeText) => { - return nodeText; - }); - }); - } - - checkEmptyFolderMessageIsDisplayed() { - Util.waitUntilElementIsVisible(this.emptyFolderMessage); - return this; - } - - checkContextActionIsVisible(actionName) { - let actionButton = element(by.css(`button[data-automation-id="context-${actionName}"`)); - Util.waitUntilElementIsVisible(actionButton); - Util.waitUntilElementIsClickable(actionButton); - return actionButton; - } - - pressContextMenuActionNamed(actionName) { - let actionButton = this.checkContextActionIsVisible(actionName); - actionButton.click(); - } - - clickRowToSelect(rowName) { - let row = this.getRowByRowName(rowName); - browser.actions().keyDown(protractor.Key.COMMAND).click(row).perform(); - this.checkRowIsSelected(rowName); - return this; - } - - clickRowToSelectWithRoot(rowName) { - let row = this.getRowByRowNameWithRoot(rowName); - browser.actions().keyDown(protractor.Key.COMMAND).click(row).perform(); - this.checkRowIsSelectedWithRoot(rowName); - return this; - } - - checkLockedIcon(content) { - let lockIcon = element(by.cssContainingText('div[filename="' + content + '"] mat-icon', 'lock')); - Util.waitUntilElementIsVisible(lockIcon); - return this; - } - - checkUnlockedIcon(content) { - let lockIcon = element(by.cssContainingText('div[filename="' + content + '"] mat-icon', 'lock_open')); - Util.waitUntilElementIsVisible(lockIcon); - return this; - } - - waitForTableBody() { - Util.waitUntilElementIsVisible(this.tableBody); - } - - checkContentIsNotDisplayed(filename) { - Util.waitUntilElementIsNotVisible(element.all(by.css(`#document-list-container span[title='${filename}']`)).first()); - return this; - } - - tableIsLoaded() { - Util.waitUntilElementIsVisible(this.table); - return this; - } - - checkIconColumn(file, extension) { - let row = this.getRowByRowName(file); - Util.waitUntilElementIsVisible(row.element(by.css(`div[class*='--image'] img[alt*="${extension}"]`))); - } - - rightClickOnRowNamed(rowName) { - let row = this.getRowByRowName(rowName); - browser.actions().click(row, protractor.Button.RIGHT).perform(); - Util.waitUntilElementIsVisible(element(by.id('adf-context-menu-content'))); - } - - clickMenuActionNamed(actionName) { - let actionButton = this.checkMenuActionIsVisible(actionName); - actionButton.click(); - } - - checkMenuActionIsVisible(actionName) { - let actionButton = element(by.css(`button[data-automation-id='DOCUMENT_LIST.ACTIONS.${actionName}']`)); - Util.waitUntilElementIsVisible(actionButton); - Util.waitUntilElementIsClickable(actionButton); - return actionButton; - } - - clickRowMenuActionsButton(rowName) { - let row = this.getRowByRowName(rowName); - Util.waitUntilElementIsVisible(row.element(by.css('.adf-datatable__actions-cell button'))); - row.element(by.css('.adf-datatable__actions-cell button')).click(); - } - -} diff --git a/e2e/pages/adf/dialog/uploadDialog.ts b/e2e/pages/adf/dialog/uploadDialog.ts index c2883e5862..d0f91409ae 100644 --- a/e2e/pages/adf/dialog/uploadDialog.ts +++ b/e2e/pages/adf/dialog/uploadDialog.ts @@ -27,7 +27,6 @@ export class UploadDialog { cancelledStatusIcon = by.css('div[class*="status--cancelled"]'); errorStatusIcon = by.css('div[class*="status--error"] mat-icon'); errorTooltip = element(by.css('div.mat-tooltip')); - cancelWhileUploadingIcon = by.css('mat-icon[class*="adf-file-uploading-row__action adf-file-uploading-row__action--cancel"]'); rowByRowName = by.xpath('ancestor::adf-file-uploading-list-row'); title = element(by.css('span[class*="upload-dialog__title"]')); minimizeButton = element(by.css('mat-icon[title="Minimize"]')); diff --git a/e2e/pages/adf/filePreviewPage.ts b/e2e/pages/adf/filePreviewPage.ts index 3f0190e8fc..2e6701b1d7 100644 --- a/e2e/pages/adf/filePreviewPage.ts +++ b/e2e/pages/adf/filePreviewPage.ts @@ -29,8 +29,8 @@ export class FilePreviewPage { } viewFile(fileName) { - Util.waitUntilElementIsVisible(element(by.cssContainingText(`div[data-automation-id="${filename}"]`, fileName))); - browser.actions().doubleClick(element(by.cssContainingText(`div[data-automation-id="${filename}"]`, fileName))).perform(); + Util.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(); } diff --git a/e2e/pages/adf/navigationBarPage.ts b/e2e/pages/adf/navigationBarPage.ts index efb7b3553d..a463049640 100644 --- a/e2e/pages/adf/navigationBarPage.ts +++ b/e2e/pages/adf/navigationBarPage.ts @@ -34,8 +34,6 @@ export class NavigationBarPage { trashcanButton = element(by.css('a[data-automation-id="Trashcan"]')); overlayViewerButton = element(by.css('a[data-automation-id="Overlay Viewer"]')); userProfileButton = element(by.css('button[data-automation-id="adf-user-profile"]')); - themeButton = element(by.css('button[data-automation-id="theme menu"]')); - themeMenuContent = element(by.css('div[class*="mat-menu-panel"]')); logoutButton = element(by.css('a[adf-logout]')); cardViewButton = element(by.cssContainingText('.adf-sidenav-menu-label', 'CardView')); languageMenuButton = element(by.css('button[data-automation-id="language-menu-button"]')); @@ -115,19 +113,6 @@ export class NavigationBarPage { this.userProfileButton.click(); } - clickThemeButton() { - Util.waitUntilElementIsVisible(this.themeButton); - this.themeButton.click(); - Util.waitUntilElementIsVisible(this.themeMenuContent); - } - - clickOnSpecificThemeButton(themeName) { - let themeElement = element(by.css(`button[data-automation-id="${themeName}"]`)); - Util.waitUntilElementIsVisible(themeElement); - Util.waitUntilElementIsClickable(themeElement); - themeElement.click(); - } - clickLogoutButton() { Util.waitUntilElementIsVisible(this.logoutButton); this.logoutButton.click(); @@ -203,11 +188,6 @@ export class NavigationBarPage { Util.waitUntilElementIsVisible(logoTooltip); } - openViewer(nodeId) { - browser.get(TestConfig.adf.url + `/files(overlay:files/${nodeId}/view`); - return this; - } - goToSite(site) { browser.get(TestConfig.adf.url + `/files/${site.entry.guid}/display/list`); } diff --git a/e2e/pages/adf/paginationPage.ts b/e2e/pages/adf/paginationPage.ts index a3e3bc3e97..a1d3a91007 100644 --- a/e2e/pages/adf/paginationPage.ts +++ b/e2e/pages/adf/paginationPage.ts @@ -41,10 +41,8 @@ export class PaginationPage { Util.waitUntilElementIsClickable(this.itemsPerPageDropdown); browser.actions().mouseMove(this.itemsPerPageDropdown).perform(); Util.waitUntilElementIsVisible(this.itemsPerPageDropdown); - Util.waitUntilElementIsClickable(this.itemsPerPageDropdown).then(() => { - browser.driver.sleep(2000); - this.itemsPerPageDropdown.click(); - }); + Util.waitUntilElementIsClickable(this.itemsPerPageDropdown); + this.itemsPerPageDropdown.click(); Util.waitUntilElementIsVisible(this.pageSelectorDropDown); let itemsPerPage = element.all(by.cssContainingText('.mat-menu-item', numberOfItem)).first(); @@ -93,9 +91,7 @@ export class PaginationPage { Util.waitUntilElementIsClickable(this.nextPageButton); browser.actions().mouseMove(this.nextPageButton).perform(); Util.waitUntilElementIsVisible(this.nextPageButton); - Util.waitUntilElementIsClickable(this.nextPageButton).then(() => { - browser.driver.sleep(2000); - }); + Util.waitUntilElementIsClickable(this.nextPageButton); return this.nextPageButton.click(); } diff --git a/e2e/pages/adf/permissionsPage.ts b/e2e/pages/adf/permissionsPage.ts index bc7f8a97d0..46348ca147 100644 --- a/e2e/pages/adf/permissionsPage.ts +++ b/e2e/pages/adf/permissionsPage.ts @@ -18,7 +18,7 @@ import { element, by } from 'protractor'; import { Util } from '../../util/util'; -import { DataTablePage } from './dataTablePage'; +import { DataTableComponentPage } from './dataTableComponentPage'; let column = { role: 'Role' @@ -39,6 +39,12 @@ export class PermissionsPage { assignPermissionError = element(by.css('simple-snack-bar')); deletePermissionButton = element(by.css(`button[data-automation-id='adf-delete-permission-button']`)); permissionDisplayContainer = element(by.css(`div[id='adf-permission-display-container']`)); + closeButton = element(by.id('add-permission-dialog-close-button')); + + clickCloseButton() { + Util.waitUntilElementIsClickable(this.closeButton); + this.closeButton.click(); + } checkAddPermissionButtonIsDisplayed() { Util.waitUntilElementIsVisible(this.addPermissionButton); @@ -108,11 +114,11 @@ export class PermissionsPage { } checkPermissionsDatatableIsDisplayed() { - return new DataTablePage(element(by.css('[class*="adf-datatable-permission"]'))); + return new DataTableComponentPage(element(by.css('[class*="adf-datatable-permission"]'))); } getRoleCellValue(rowName) { - let locator = new DataTablePage().getCellByNameAndColumn(rowName, column.role); + let locator = new DataTableComponentPage().getCellByRowAndColumn('Authority ID', rowName, column.role); Util.waitUntilElementIsVisible(locator); return locator.getText(); } diff --git a/e2e/pages/adf/process-cloud/editProcessFilterCloudComponent.ts b/e2e/pages/adf/process-cloud/editProcessFilterCloudComponent.ts index fad6f9167e..2c666979d7 100644 --- a/e2e/pages/adf/process-cloud/editProcessFilterCloudComponent.ts +++ b/e2e/pages/adf/process-cloud/editProcessFilterCloudComponent.ts @@ -21,8 +21,7 @@ import { EditProcessFilterDialog } from '../dialog/editProcessFilterDialog'; export class EditProcessFilterCloudComponent { customiseFilter = element(by.id('adf-edit-process-filter-title-id')); - selectedOption = element(by.css('mat-option[class*="mat-selected"]')); - + selectedOption = element.all(by.css('mat-option[class*="mat-selected"]')).first(); saveButton = element(by.css('button[id="adf-save-id"]')); saveAsButton = element(by.css('button[id="adf-save-as-id"]')); deleteButton = element(by.css('button[id="adf-delete-id"]')); diff --git a/e2e/pages/adf/process-cloud/editTaskFilterCloudComponent.ts b/e2e/pages/adf/process-cloud/editTaskFilterCloudComponent.ts index 75326cec82..53c6ff159a 100644 --- a/e2e/pages/adf/process-cloud/editTaskFilterCloudComponent.ts +++ b/e2e/pages/adf/process-cloud/editTaskFilterCloudComponent.ts @@ -22,7 +22,7 @@ import { EditTaskFilterDialog } from '../dialog/editTaskFilterDialog'; export class EditTaskFilterCloudComponent { customiseFilter = element(by.id('adf-edit-task-filter-title-id')); - selectedOption = element(by.css('mat-option[class*="mat-selected"]')); + selectedOption = element.all(by.css('mat-option[class*="mat-selected"]')).first(); assignment = element(by.css('input[data-automation-id="adf-cloud-edit-task-property-assignment"]')); priority = element(by.css('input[data-automation-id="adf-cloud-edit-task-property-priority"]')); taskName = element(by.css('input[data-automation-id="adf-cloud-edit-task-property-taskName"]')); @@ -52,8 +52,8 @@ export class EditTaskFilterCloudComponent { this.clickOnDropDownArrow('state'); let stateElement = element.all(by.cssContainingText('mat-option span', option)).first(); - Util.waitUntilElementIsClickable(stateElement); Util.waitUntilElementIsVisible(stateElement); + Util.waitUntilElementIsClickable(stateElement); stateElement.click(); return this; } @@ -223,7 +223,7 @@ export class EditTaskFilterCloudComponent { } getAppNameDropDownValue() { - let locator = element(by.css("mat-select[data-automation-id='adf-cloud-edit-task-property-appName'] span")); + let locator = element.all(by.css("mat-select[data-automation-id='adf-cloud-edit-task-property-appName'] span")).first(); Util.waitUntilElementIsVisible(locator); return locator.getText(); } diff --git a/e2e/pages/adf/process-cloud/processListCloudComponent.ts b/e2e/pages/adf/process-cloud/processListCloudComponent.ts index 089b613955..35ffc44063 100644 --- a/e2e/pages/adf/process-cloud/processListCloudComponent.ts +++ b/e2e/pages/adf/process-cloud/processListCloudComponent.ts @@ -16,7 +16,7 @@ */ import { Util } from '../../../util/util'; -import { DataTablePage } from '../dataTablePage'; +import { DataTableComponentPage } from '../dataTableComponentPage'; import { element, by } from 'protractor'; export class ProcessListCloudComponent { @@ -24,12 +24,28 @@ export class ProcessListCloudComponent { processList = element(by.css('adf-cloud-process-list')); noProcessFound = element.all(by.css("p[class='adf-empty-content__title']")).first(); - dataTable = new DataTablePage(this.processList); + dataTable = new DataTableComponentPage(this.processList); getDataTable() { return this.dataTable; } + checkContentIsDisplayedByName(processName) { + return this.dataTable.checkContentIsDisplayed('Name', processName); + } + + checkContentIsDisplayedById(processId) { + return this.dataTable.checkContentIsDisplayed('Id', processId); + } + + checkContentIsNotDisplayedById(processId) { + return this.dataTable.checkContentIsNotDisplayed('Id', processId); + } + + getAllRowsNameColumn() { + return this.dataTable.getAllRowsColumnValues('Name'); + } + checkProcessListIsLoaded() { Util.waitUntilElementIsVisible(this.processList); return this; diff --git a/e2e/pages/adf/process-cloud/startTasksCloudComponent.ts b/e2e/pages/adf/process-cloud/startTasksCloudComponent.ts index 74d03d9919..79d2e09534 100644 --- a/e2e/pages/adf/process-cloud/startTasksCloudComponent.ts +++ b/e2e/pages/adf/process-cloud/startTasksCloudComponent.ts @@ -27,6 +27,12 @@ export class StartTasksCloudComponent { startButton = element(by.css('button[id="button-start"]')); startButtonEnabled = element(by.css('button[id="button-start"]:not(disabled)')); cancelButton = element(by.css('button[id="button-cancel"]')); + form = element(by.css('adf-cloud-start-task form')); + + checkFormIsDisplayed() { + Util.waitUntilElementIsVisible(this.form); + return this; + } addName(userName) { Util.waitUntilElementIsVisible(this.name); diff --git a/e2e/pages/adf/process-cloud/taskListCloudComponent.ts b/e2e/pages/adf/process-cloud/taskListCloudComponent.ts index 9f081a3231..bcdfefe8e3 100644 --- a/e2e/pages/adf/process-cloud/taskListCloudComponent.ts +++ b/e2e/pages/adf/process-cloud/taskListCloudComponent.ts @@ -16,7 +16,7 @@ */ import { Util } from '../../../util/util'; -import { DataTablePage } from '../dataTablePage'; +import { DataTableComponentPage } from '../dataTableComponentPage'; import { element, by } from 'protractor'; let column = { @@ -28,12 +28,64 @@ export class TaskListCloudComponent { taskList = element(by.css('adf-cloud-task-list')); noTasksFound = element.all(by.css("p[class='adf-empty-content__title']")).first(); - dataTable = new DataTablePage(this.taskList); + dataTable = new DataTableComponentPage(this.taskList); getDataTable() { return this.dataTable; } + clickCheckbox(taskName) { + return this.dataTable.clickCheckbox('Name', taskName); + } + + checkRowIsNotChecked(taskName) { + return this.dataTable.checkRowIsNotChecked('Name', taskName); + } + + checkRowIsChecked(taskName) { + return this.dataTable.checkRowIsChecked('Name', taskName); + } + + getRowsWithSameName(taskName) { + return this.dataTable.getRowsWithSameColumnValues('Name', taskName); + } + + checkRowIsSelected(taskName) { + return this.dataTable.checkRowIsSelected('Name', taskName); + } + + checkRowIsNotSelected(taskName) { + return this.dataTable.checkRowIsNotSelected('Name', taskName); + } + + selectRowWithKeyboard(taskName) { + return this.dataTable.selectRowWithKeyboard('Name', taskName); + } + + selectRow(taskName) { + return this.dataTable.selectRow('Name', taskName); + } + + getRow(taskName) { + return this.dataTable.getRow('Name', taskName); + } + + checkContentIsDisplayedByProcessInstanceId(taskName) { + return this.dataTable.checkContentIsDisplayed('ProcessInstanceId', taskName); + } + + checkContentIsDisplayedById(taskName) { + return this.dataTable.checkContentIsDisplayed('Id', taskName); + } + + checkContentIsDisplayedByName(taskName) { + return this.dataTable.checkContentIsDisplayed('Name', taskName); + } + + checkContentIsNotDisplayedByName(taskName) { + return this.dataTable.checkContentIsNotDisplayed('Name', taskName); + } + checkTaskListIsLoaded() { Util.waitUntilElementIsVisible(this.taskList); return this; @@ -44,12 +96,16 @@ export class TaskListCloudComponent { return this.noTasksFound.getText(); } + getAllRowsNameColumn() { + return this.dataTable.getAllRowsColumnValues('Name'); + } + getAllRowsByColumn(columnName) { return this.dataTable.getAllRowsColumnValues(columnName); } getIdCellValue(rowName) { - let locator = new DataTablePage().getCellByNameAndColumn(rowName, column.id); + let locator = new DataTableComponentPage().getCellByRowAndColumn('Name', rowName, column.id); Util.waitUntilElementIsVisible(locator); return locator.getText(); } diff --git a/e2e/pages/adf/process-services/appNavigationBarPage.ts b/e2e/pages/adf/process-services/appNavigationBarPage.ts index 90391f72d9..8b3b1e5927 100644 --- a/e2e/pages/adf/process-services/appNavigationBarPage.ts +++ b/e2e/pages/adf/process-services/appNavigationBarPage.ts @@ -16,7 +16,7 @@ */ import { Util } from '../../../util/util'; -import { element, by } from 'protractor'; +import { element, by, browser } from 'protractor'; export class AppNavigationBarPage { diff --git a/e2e/pages/adf/process-services/dialog/createChecklistDialog.ts b/e2e/pages/adf/process-services/dialog/createChecklistDialog.ts index fdd06cbced..36d167de1a 100644 --- a/e2e/pages/adf/process-services/dialog/createChecklistDialog.ts +++ b/e2e/pages/adf/process-services/dialog/createChecklistDialog.ts @@ -26,7 +26,8 @@ export class ChecklistDialog { dialogTitle = element(by.id('add-checklist-title')); addName(name) { - Util.waitUntilElementIsVisible(this.nameField); + Util.waitUntilElementIsClickable(this.nameField); + this.nameField.clear(); this.nameField.sendKeys(name); return this; } diff --git a/e2e/pages/adf/process-services/filtersPage.ts b/e2e/pages/adf/process-services/filtersPage.ts index 5639bada7a..c2fbf060f8 100644 --- a/e2e/pages/adf/process-services/filtersPage.ts +++ b/e2e/pages/adf/process-services/filtersPage.ts @@ -17,13 +17,12 @@ import { by, element } from 'protractor'; import { Util } from '../../../util/util'; -import { ContentListPage } from '../dialog/contentListPage'; +import { DataTableComponentPage } from '../dataTableComponentPage'; export class FiltersPage { activeFilter = element(by.css('mat-list-item[class*="active"]')); - nameColumn = by.css('div[class*="adf-datatable-body"] div[class*="adf-datatable-row"] div[class*="--text"] span'); - contentList = new ContentListPage(); + dataTable = new DataTableComponentPage(); getActiveFilter() { Util.waitUntilElementIsVisible(this.activeFilter); @@ -38,11 +37,11 @@ export class FiltersPage { } sortByName(sortOrder) { - this.contentList.sortByName(sortOrder); + this.dataTable.sortByColumn(sortOrder, 'name'); } getAllRowsNameColumn() { - return this.contentList.getAllRowsColumnValues(this.nameColumn); + return this.dataTable.getAllRowsColumnValues('Name'); } } diff --git a/e2e/pages/adf/process-services/formFields.ts b/e2e/pages/adf/process-services/formFields.ts index c2085852b0..85f63c1bb9 100644 --- a/e2e/pages/adf/process-services/formFields.ts +++ b/e2e/pages/adf/process-services/formFields.ts @@ -36,7 +36,8 @@ export class FormFields { setFieldValue(locator, field, value) { let fieldElement = element(locator(field)); Util.waitUntilElementIsVisible(fieldElement); - fieldElement.clear().sendKeys(value); + fieldElement.clear(); + fieldElement.sendKeys(value); return this; } @@ -158,7 +159,8 @@ export class FormFields { setValueInInputById(fieldId, value) { let input = element(by.id(fieldId)); Util.waitUntilElementIsVisible(input); - input.clear().sendKeys(value); + input.clear(); + input.sendKeys(value); return this; } diff --git a/e2e/pages/adf/process-services/processDetailsPage.ts b/e2e/pages/adf/process-services/processDetailsPage.ts index 62841c777e..82f272d19b 100644 --- a/e2e/pages/adf/process-services/processDetailsPage.ts +++ b/e2e/pages/adf/process-services/processDetailsPage.ts @@ -16,7 +16,7 @@ */ import { Util } from '../../../util/util'; -import { by, element } from 'protractor'; +import { by, element, protractor } from 'protractor'; export class ProcessDetailsPage { diff --git a/e2e/pages/adf/process-services/processFiltersPage.ts b/e2e/pages/adf/process-services/processFiltersPage.ts index e0dec9184c..5eb54c4186 100644 --- a/e2e/pages/adf/process-services/processFiltersPage.ts +++ b/e2e/pages/adf/process-services/processFiltersPage.ts @@ -16,12 +16,13 @@ */ import { Util } from '../../../util/util'; -import { ContentListPage } from '../dialog/contentListPage'; import { element, by } from 'protractor'; import { StartProcessPage } from './startProcessPage'; +import { DataTableComponentPage } from '../dataTableComponentPage'; export class ProcessFiltersPage { + dataTable = new DataTableComponentPage(); runningFilter = element(by.css('span[data-automation-id="Running_filter"]')); completedFilter = element(by.css('div[class="mat-list-text"] > span[data-automation-id="Completed_filter"]')); allFilter = element(by.css('span[data-automation-id="All_filter"]')); @@ -33,7 +34,6 @@ export class ProcessFiltersPage { noContentMessage = element.all(by.css('p[class="adf-empty-content__title"]')).first(); rows = by.css('adf-process-instance-list div[class="adf-datatable-body"] div[class*="adf-datatable-row"]'); tableBody = element.all(by.css('adf-datatable div[class="adf-datatable-body"]')).first(); - contentList = new ContentListPage(); nameColumn = by.css('div[class*="adf-datatable-body"] div[class*="adf-datatable-row"] div[title="Name"] span'); processIcon = by.xpath('ancestor::div[@class="mat-list-item-content"]/mat-icon'); @@ -106,11 +106,11 @@ export class ProcessFiltersPage { * @param sortOrder : 'true' to sort the list ascendant and 'false' for descendant */ sortByName(sortOrder) { - this.contentList.sortByName(sortOrder); + this.dataTable.sortByColumn(sortOrder, 'name'); } getAllRowsNameColumn() { - return this.contentList.getAllRowsColumnValues(this.nameColumn); + return this.dataTable.getAllRowsColumnValues('Name'); } checkFilterIsDisplayed(name) { diff --git a/e2e/pages/adf/process-services/startProcessPage.ts b/e2e/pages/adf/process-services/startProcessPage.ts index 7c762b2f02..cec499039a 100644 --- a/e2e/pages/adf/process-services/startProcessPage.ts +++ b/e2e/pages/adf/process-services/startProcessPage.ts @@ -16,7 +16,7 @@ */ import { Util } from '../../../util/util'; -import { by, element, Key } from 'protractor'; +import { by, element, Key, protractor, browser } from 'protractor'; export class StartProcessPage { diff --git a/e2e/pages/adf/process-services/tasksListPage.ts b/e2e/pages/adf/process-services/tasksListPage.ts index 2fd90cd523..801a0e03f9 100644 --- a/e2e/pages/adf/process-services/tasksListPage.ts +++ b/e2e/pages/adf/process-services/tasksListPage.ts @@ -16,19 +16,43 @@ */ import { Util } from '../../../util/util'; -import { DataTablePage } from '../dataTablePage'; +import { DataTableComponentPage } from '../dataTableComponentPage'; import { by, element } from 'protractor'; export class TasksListPage { taskList = element(by.css('adf-tasklist')); noTasksFound = element.all(by.css("p[class='adf-empty-content__title']")).first(); - dataTable = new DataTablePage(this.taskList); + dataTable = new DataTableComponentPage(this.taskList); getDataTable() { return this.dataTable; } + getRowsDisplayedWithSameName(taskName) { + return this.dataTable.getRowsWithSameColumnValues('Name', taskName); + } + + checkContentIsDisplayed(taskName) { + return this.dataTable.checkContentIsDisplayed('Name', taskName); + } + + checkContentIsNotDisplayed(taskName) { + return this.dataTable.checkContentIsNotDisplayed('Name', taskName); + } + + checkRowIsSelected(taskName) { + return this.dataTable.checkRowIsSelected('Name', taskName); + } + + selectRow(taskName) { + return this.dataTable.selectRow('Name', taskName); + } + + getAllRowsNameColumn() { + return this.dataTable.getAllRowsColumnValues('Name'); + } + checkTaskListIsLoaded() { Util.waitUntilElementIsVisible(this.taskList); return this; diff --git a/e2e/pages/adf/process-services/tasksPage.ts b/e2e/pages/adf/process-services/tasksPage.ts index 13787ec16a..8320319422 100644 --- a/e2e/pages/adf/process-services/tasksPage.ts +++ b/e2e/pages/adf/process-services/tasksPage.ts @@ -163,11 +163,11 @@ export class TasksPage { } clickSortByNameAsc() { - return this.tasksListPage().getDataTable().sortByColumn(true, this.sortByName); + return this.tasksListPage().getDataTable().sortByColumn(true, 'name'); } clickSortByNameDesc() { - return this.tasksListPage().getDataTable().sortByColumn(false, this.sortByName); + return this.tasksListPage().getDataTable().sortByColumn(false, 'name'); } } diff --git a/e2e/pages/adf/process_cloud/editTaskFilterCloudComponent.ts b/e2e/pages/adf/process_cloud/editTaskFilterCloudComponent.ts index 6c9da720c3..f4e1c680a4 100644 --- a/e2e/pages/adf/process_cloud/editTaskFilterCloudComponent.ts +++ b/e2e/pages/adf/process_cloud/editTaskFilterCloudComponent.ts @@ -22,7 +22,7 @@ import { EditTaskFilterDialog } from '../dialog/editTaskFilterDialog'; export class EditTaskFilterCloudComponent { customiseFilter = element(by.id('adf-edit-task-filter-title-id')); - selectedOption = element(by.css('mat-option[class*="mat-selected"]')); + selectedOption = element.all(by.css('mat-option[class*="mat-selected"]')).first(); assignment = element(by.css('mat-form-field[data-automation-id="assignment"] input')); saveButton = element(by.css('button[data-automation-id="Save"]')); saveAsButton = element(by.css('button[data-automation-id="Save as"]')); diff --git a/e2e/pages/adf/searchResultsPage.ts b/e2e/pages/adf/searchResultsPage.ts index daba010a5c..5b24982d62 100644 --- a/e2e/pages/adf/searchResultsPage.ts +++ b/e2e/pages/adf/searchResultsPage.ts @@ -16,8 +16,7 @@ */ import { Util } from '../../util/util'; -import { ContentListPage } from './dialog/contentListPage'; -import { DataTablePage } from './dataTablePage'; +import { DataTableComponentPage } from './dataTableComponentPage'; import { SearchSortingPickerPage } from './content-services/search/components/search-sortingPicker.page'; import { element, by, protractor } from 'protractor'; import { ContentServicesPage } from './contentServicesPage'; @@ -25,13 +24,12 @@ import { ContentServicesPage } from './contentServicesPage'; export class SearchResultsPage { noResultsMessage = element(by.css('div[class="adf-no-result-message"]')); - contentList = new ContentListPage(); - dataTable = new DataTablePage(); + dataTable = new DataTableComponentPage(); searchSortingPicker = new SearchSortingPickerPage(); contentServices = new ContentServicesPage(); tableIsLoaded() { - this.contentList.tableIsLoaded(); + this.dataTable.tableIsLoaded(); } closeActionButton() { @@ -43,16 +41,17 @@ export class SearchResultsPage { } checkContentIsDisplayed(content) { - this.contentList.checkContentIsDisplayed(content); + this.dataTable.checkContentIsDisplayed('Display name', content); return this; } numberOfResultsDisplayed() { - return this.contentList.getAllDisplayedRows(); + return this.dataTable.numberOfRows(); } checkContentIsNotDisplayed(content) { - Util.waitUntilElementIsNotOnPage(element(by.css("span[title='" + content + "']"))); + this.dataTable.checkContentIsNotDisplayed('Display name', content); + return this; } checkNoResultMessageIsDisplayed() { @@ -66,16 +65,16 @@ export class SearchResultsPage { } navigateToFolder(content) { - this.contentList.doubleClickRow(content); + this.dataTable.doubleClickRow('Display name', content); return this; } deleteContent(content) { - this.contentList.deleteContent(content); + this.contentServices.deleteContent(content); } checkDeleteIsDisabled(content) { - this.contentList.checkDeleteIsDisabled(content); + this.contentServices.checkDeleteIsDisabled(content); this.closeActionButton(); } @@ -165,7 +164,11 @@ export class SearchResultsPage { } async checkListIsOrderedByCreatedAsc() { - let list = await this.contentServices.getElementsDisplayedCreated(); + let stringList = await this.contentServices.getElementsDisplayedCreated(); + let list; + await stringList.forEach((stringDate) => { + list.push(new Date(stringDate)); + }); return this.contentServices.checkElementsSortedAsc(list); } diff --git a/e2e/pages/adf/tagPage.ts b/e2e/pages/adf/tagPage.ts index 9084b7e6f5..1cbdf0453b 100644 --- a/e2e/pages/adf/tagPage.ts +++ b/e2e/pages/adf/tagPage.ts @@ -16,7 +16,6 @@ */ import { Util } from '../../util/util'; -import { ContentListPage } from './dialog/contentListPage'; import { element, by, protractor, browser } from 'protractor'; @@ -134,7 +133,7 @@ export class TagPage { checkTagListIsOrderedAscending() { let deferred = protractor.promise.defer(); - new ContentListPage().checkListIsSorted(false, this.tagListRowLocator).then((result) => { + this.checkListIsSorted(false, this.tagListRowLocator).then((result) => { deferred.fulfill(result); }); return deferred.promise; @@ -142,7 +141,7 @@ export class TagPage { checkTagListByNodeIdIsOrderedAscending() { let deferred = protractor.promise.defer(); - new ContentListPage().checkListIsSorted(false, this.tagListByNodeIdRowLocator).then((result) => { + this.checkListIsSorted(false, this.tagListByNodeIdRowLocator).then((result) => { deferred.fulfill(result); }); return deferred.promise; @@ -150,12 +149,32 @@ export class TagPage { checkTagListContentServicesIsOrderedAscending() { let deferred = protractor.promise.defer(); - new ContentListPage().checkListIsSorted(false, this.tagListContentServicesRowLocator).then((result) => { + this.checkListIsSorted(false, this.tagListContentServicesRowLocator).then((result) => { deferred.fulfill(result); }); return deferred.promise; } + checkListIsSorted(sortOrder, locator) { + let deferred = protractor.promise.defer(); + let tagList = element.all(locator); + Util.waitUntilElementIsVisible(tagList.first()); + let initialList = []; + tagList.each(function (currentElement) { + currentElement.getText().then(function (text) { + initialList.push(text); + }); + }).then(function () { + let sortedList = initialList; + sortedList = sortedList.sort(); + if (sortOrder === false) { + sortedList = sortedList.reverse(); + } + deferred.fulfill(initialList.toString() === sortedList.toString()); + }); + return deferred.promise; + } + checkDeleteTagFromTagListByNodeIdIsDisplayed(name) { let deleteChip = element(by.id('tag_chips_delete_' + name)); return Util.waitUntilElementIsVisible(deleteChip); 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 3c43922e2a..e61dde82dd 100644 --- a/e2e/process-services-cloud/edit-task-filters-component.e2e.ts +++ b/e2e/process-services-cloud/edit-task-filters-component.e2e.ts @@ -39,7 +39,7 @@ describe('Edit task filters cloud', () => { let silentLogin; const simpleApp = 'simple-app'; const completedTaskName = Util.generateRandomString(), assignedTaskName = Util.generateRandomString(); - let assignedTask, completedTask; + let assignedTask; beforeAll(async () => { silentLogin = false; @@ -50,7 +50,7 @@ describe('Edit task filters cloud', () => { await tasksService.init(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); assignedTask = await tasksService.createStandaloneTask(assignedTaskName, simpleApp); await tasksService.claimTask(assignedTask.entry.id, simpleApp); - completedTask = await tasksService.createAndCompleteTask(completedTaskName, simpleApp); + await tasksService.createAndCompleteTask(completedTaskName, simpleApp); }); beforeEach((done) => { @@ -72,16 +72,16 @@ describe('Edit task filters cloud', () => { expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getStateFilterDropDownValue()).toEqual('ASSIGNED'); expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getSortFilterDropDownValue()).toEqual('Created Date'); expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getOrderFilterDropDownValue()).toEqual('DESC'); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(assignedTaskName); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(completedTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(assignedTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(completedTaskName); tasksCloudDemoPage.completedTasksFilter().clickTaskFilter(); expect(tasksCloudDemoPage.getActiveFilterName()).toBe('Completed Tasks'); expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getStateFilterDropDownValue()).toEqual('COMPLETED'); expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getSortFilterDropDownValue()).toEqual('Created Date'); expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getOrderFilterDropDownValue()).toEqual('DESC'); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(assignedTaskName); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(completedTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(assignedTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(completedTaskName); tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader(); }); diff --git a/e2e/process-services-cloud/process-custom-filters.e2e.ts b/e2e/process-services-cloud/process-custom-filters.e2e.ts index e14f645746..e69a09698a 100644 --- a/e2e/process-services-cloud/process-custom-filters.e2e.ts +++ b/e2e/process-services-cloud/process-custom-filters.e2e.ts @@ -92,14 +92,14 @@ describe('Process list cloud', () => { it('[C290069] Should display processes ordered by name when Name is selected from sort dropdown', async() => { processCloudDemoPage.editProcessFilterCloudComponent().clickCustomiseFilterHeader().setStateFilterDropDown('RUNNING') .setSortFilterDropDown('NAME').setOrderFilterDropDown('ASC'); - processCloudDemoPage.processListCloudComponent().getDataTable().getAllRowsNameColumn().then(function (list) { + processCloudDemoPage.processListCloudComponent().getAllRowsNameColumn().then(function (list) { let initialList = list.slice(0); list.sort(); expect(JSON.stringify(initialList) === JSON.stringify(list)).toEqual(true); }); processCloudDemoPage.editProcessFilterCloudComponent().setOrderFilterDropDown('DESC'); - processCloudDemoPage.processListCloudComponent().getDataTable().getAllRowsNameColumn().then(function (list) { + processCloudDemoPage.processListCloudComponent().getAllRowsNameColumn().then(function (list) { let initialList = list.slice(0); list.sort(); list.reverse(); @@ -137,8 +137,8 @@ describe('Process list cloud', () => { processCloudDemoPage.processListCloudComponent().getDataTable().checkSpinnerIsDisplayed().checkSpinnerIsNotDisplayed(); - expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().getAllDisplayedRows()).toBe(1); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(completedProcess.entry.id); + expect(processCloudDemoPage.processListCloudComponent().getDataTable().numberOfRows()).toBe(1); + processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedById(completedProcess.entry.id); processCloudDemoPage.editProcessFilterCloudComponent().clickSaveAsButton(); processCloudDemoPage.editProcessFilterCloudComponent().editProcessFilterDialog().setFilterName('New').clickOnSaveButton(); diff --git a/e2e/process-services-cloud/process-filters-cloud.e2e.ts b/e2e/process-services-cloud/process-filters-cloud.e2e.ts index 5ae4cda5a4..f23db7489b 100644 --- a/e2e/process-services-cloud/process-filters-cloud.e2e.ts +++ b/e2e/process-services-cloud/process-filters-cloud.e2e.ts @@ -87,34 +87,34 @@ describe('Process filters cloud', () => { processCloudDemoPage.runningProcessesFilter().clickProcessFilter(); processCloudDemoPage.runningProcessesFilter().checkProcessFilterIsDisplayed(); expect(processCloudDemoPage.getActiveFilterName()).toBe('Running Processes'); - processCloudDemoPage.processListCloudComponent().getDataTable().checkContentIsDisplayed(runningProcess.entry.id); + processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedById(runningProcess.entry.id); processCloudDemoPage.completedProcessesFilter().clickProcessFilter(); processCloudDemoPage.completedProcessesFilter().checkProcessFilterIsDisplayed(); expect(processCloudDemoPage.getActiveFilterName()).toBe('Completed Processes'); - processCloudDemoPage.processListCloudComponent().getDataTable().checkContentIsNotDisplayed(runningProcess.entry.id); + processCloudDemoPage.processListCloudComponent().checkContentIsNotDisplayedById(runningProcess.entry.id); processCloudDemoPage.allProcessesFilter().clickProcessFilter(); processCloudDemoPage.allProcessesFilter().checkProcessFilterIsDisplayed(); expect(processCloudDemoPage.getActiveFilterName()).toBe('All Processes'); - processCloudDemoPage.processListCloudComponent().getDataTable().checkContentIsDisplayed(runningProcess.entry.id); + processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedById(runningProcess.entry.id); }); it('[C290044] Should display process in Completed Processes List when process is completed', () => { processCloudDemoPage.runningProcessesFilter().clickProcessFilter(); processCloudDemoPage.runningProcessesFilter().checkProcessFilterIsDisplayed(); expect(processCloudDemoPage.getActiveFilterName()).toBe('Running Processes'); - processCloudDemoPage.processListCloudComponent().getDataTable().checkContentIsNotDisplayed(completedProcess.entry.id); + processCloudDemoPage.processListCloudComponent().checkContentIsNotDisplayedById(completedProcess.entry.id); processCloudDemoPage.completedProcessesFilter().clickProcessFilter(); processCloudDemoPage.completedProcessesFilter().checkProcessFilterIsDisplayed(); expect(processCloudDemoPage.getActiveFilterName()).toBe('Completed Processes'); - processCloudDemoPage.processListCloudComponent().getDataTable().checkContentIsDisplayed(completedProcess.entry.id); + processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedById(completedProcess.entry.id); processCloudDemoPage.allProcessesFilter().clickProcessFilter(); processCloudDemoPage.allProcessesFilter().checkProcessFilterIsDisplayed(); expect(processCloudDemoPage.getActiveFilterName()).toBe('All Processes'); - processCloudDemoPage.processListCloudComponent().getDataTable().checkContentIsDisplayed(completedProcess.entry.id); + processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedById(completedProcess.entry.id); }); }); diff --git a/e2e/process-services-cloud/processList-cloud-component.e2e.ts b/e2e/process-services-cloud/processList-cloud-component.e2e.ts index 445b0dfc5f..270d4e9f75 100644 --- a/e2e/process-services-cloud/processList-cloud-component.e2e.ts +++ b/e2e/process-services-cloud/processList-cloud-component.e2e.ts @@ -76,13 +76,13 @@ describe('Process list cloud', () => { processCloudDemoPage.runningProcessesFilter().clickProcessFilter(); expect(processCloudDemoPage.getActiveFilterName()).toBe('Running Processes'); processCloudDemoPage.processListCloudComponent().checkProcessListIsLoaded(); - processCloudDemoPage.processListCloudComponent().getDataTable().checkContentIsDisplayed(runningProcess.entry.id); + processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedById(runningProcess.entry.id); done(); }); it('[C291997] Should be able to change the default columns', async() => { - expect(processCloudDemoPage.processListCloudComponent().getDataTable().getNoOfColumns()).toBe(13); + expect(processCloudDemoPage.processListCloudComponent().getDataTable().getNumberOfColumns()).toBe(13); processCloudDemoPage.processListCloudComponent().getDataTable().checkColumnIsDisplayed('id'); processCloudDemoPage.processListCloudComponent().getDataTable().checkColumnIsDisplayed('name'); processCloudDemoPage.processListCloudComponent().getDataTable().checkColumnIsDisplayed('status'); diff --git a/e2e/process-services-cloud/start-process-cloud.e2e.ts b/e2e/process-services-cloud/start-process-cloud.e2e.ts index 047f0122b2..ce7879d1b5 100644 --- a/e2e/process-services-cloud/start-process-cloud.e2e.ts +++ b/e2e/process-services-cloud/start-process-cloud.e2e.ts @@ -99,7 +99,7 @@ describe('Start Process', () => { processCloudDemoPage.runningProcessesFilter().clickProcessFilter(); expect(processCloudDemoPage.getActiveFilterName()).toBe('Running Processes'); - processCloudDemoPage.processListCloudComponent().getDataTable().checkContentIsDisplayed(processName); + processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedByName(processName); }); @@ -122,7 +122,7 @@ describe('Start Process', () => { processCloudDemoPage.runningProcessesFilter().clickProcessFilter(); expect(processCloudDemoPage.getActiveFilterName()).toBe('Running Processes'); - processCloudDemoPage.processListCloudComponent().getDataTable().checkContentIsDisplayed(processName); + processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedByName(processName); }); 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 11c66ec980..f6c10774f6 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 @@ -62,6 +62,7 @@ describe('Start Task', () => { it('[C290166] Should be possible to cancel a task', () => { tasksCloudDemoPage.openNewTaskForm(); + startTask.checkFormIsDisplayed(); startTask.checkStartButtonIsDisabled() .blur(startTask.name) .checkValidationErrorIsDisplayed(requiredError); @@ -70,21 +71,23 @@ describe('Start Task', () => { .addDueDate('12/12/2018'); startTask.checkStartButtonIsEnabled(); startTask.clickCancelButton(); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(standaloneTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(standaloneTaskName); }); it('[C290180] Should be able to create a new standalone task', () => { tasksCloudDemoPage.openNewTaskForm(); + startTask.checkFormIsDisplayed(); startTask.addName(standaloneTaskName) .addDescription('descriptions') .addDueDate('12/12/2018') .addPriority('50') .clickStartButton(); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(standaloneTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(standaloneTaskName); }); it('[C290181] Should be displayed an error message if task name exceed 255 characters', () => { tasksCloudDemoPage.openNewTaskForm(); + startTask.checkFormIsDisplayed(); startTask.addName(taskName255Characters) .checkStartButtonIsEnabled(); startTask.addName(taskNameBiggerThen255Characters) @@ -107,50 +110,55 @@ describe('Start Task', () => { it('[C290182] Should be possible to assign the task to another user', () => { tasksCloudDemoPage.openNewTaskForm(); + startTask.checkFormIsDisplayed(); startTask.addName(standaloneTaskName); peopleCloudComponent.searchAssigneeAndSelect('Super Admin'); + startTask.checkStartButtonIsEnabled(); startTask.clickStartButton(); tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); expect(tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(standaloneTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(standaloneTaskName); }); it('[C291953] Assignee field should display the logged user as default', () => { tasksCloudDemoPage.openNewTaskForm(); + startTask.checkFormIsDisplayed(); expect(peopleCloudComponent.getAssignee()).toContain('Admin', 'does not contain Admin'); startTask.clickCancelButton(); }); it('[C291956] Should be able to create a new standalone task without assignee', () => { tasksCloudDemoPage.openNewTaskForm(); - startTask.addName(standaloneTaskName); + startTask.checkFormIsDisplayed(); startTask.clearField(peopleCloudComponent.peopleCloudSearch); + startTask.addName(unassignedTaskName); startTask.clickStartButton(); + startTask.checkStartButtonIsEnabled(); tasksCloudDemoPage.editTaskFilterCloudComponent() .clickCustomiseFilterHeader() .setStateFilterDropDown('CREATED') .clearAssignment(); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(standaloneTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(unassignedTaskName); }); it('[C297675] Should create a task unassigned when assignee field is empty in Start Task form', () => { tasksCloudDemoPage.openNewTaskForm(); + startTask.checkFormIsDisplayed(); startTask.addName(unassignedTaskName); startTask.clearField(peopleCloudComponent.peopleCloudSearch); startTask.clickStartButton(); tasksCloudDemoPage.editTaskFilterCloudComponent() .clickCustomiseFilterHeader() - .setStateFilterDropDown('CREATED') - .clearAssignment(); + .clearAssignment() + .setStateFilterDropDown('CREATED'); tasksCloudDemoPage.taskListCloudComponent().getDataTable().waitForTableBody(); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(unassignedTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(unassignedTaskName); let taskId = tasksCloudDemoPage.taskListCloudComponent().getIdCellValue(unassignedTaskName); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().selectRowByContentName(unassignedTaskName); + tasksCloudDemoPage.taskListCloudComponent().getRow(unassignedTaskName).click(); expect(taskDetailsPage.getTaskDetailsHeader()).toContain(taskId); expect(taskDetailsPage.getPropertyLabel('assignee')).toBe('Assignee'); expect(taskDetailsPage.getPropertyValue('assignee')).toBe('No assignee'); - }); }); diff --git a/e2e/process-services-cloud/task-details-cloud.e2e.ts b/e2e/process-services-cloud/task-details-cloud.e2e.ts index 4c4bae9794..ff29216c81 100644 --- a/e2e/process-services-cloud/task-details-cloud.e2e.ts +++ b/e2e/process-services-cloud/task-details-cloud.e2e.ts @@ -16,13 +16,10 @@ */ import TestConfig = require('../test.config'); -import resources = require('../util/resources'); import CONSTANTS = require('../util/constants'); -import dateFormat = require('dateformat'); import { Util } from '../util/util'; import moment = require('moment'); -import AlfrescoApi = require('alfresco-js-api-node'); import { Tasks } from '../actions/APS-cloud/tasks'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; @@ -87,8 +84,8 @@ describe('Task Header cloud component', () => { it('[C291943] Should display task details for assigned task', async () => { tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(basicCreatedTaskName); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().selectRowByContentName(basicCreatedTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(basicCreatedTaskName); + tasksCloudDemoPage.taskListCloudComponent().selectRow(basicCreatedTaskName); expect(taskDetailsCloudPage.getId()).toEqual(basicCreatedTask.entry.id); expect(taskDetailsCloudPage.getDescription()) .toEqual(basicCreatedTask.entry.description === null ? CONSTANTS.TASK_DETAILS.NO_DESCRIPTION : basicCreatedTask.entry.description); @@ -107,8 +104,8 @@ describe('Task Header cloud component', () => { it('[C291944] Should display task details for completed task', async () => { tasksCloudDemoPage.completedTasksFilter().clickTaskFilter(); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(completedTaskName); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().selectRowByContentName(completedTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(completedTaskName); + tasksCloudDemoPage.taskListCloudComponent().selectRow(completedTaskName); expect(taskDetailsCloudPage.getId()).toEqual(completedTask.entry.id); expect(taskDetailsCloudPage.getDescription()) .toEqual(completedTask.entry.description === null ? CONSTANTS.TASK_DETAILS.NO_DESCRIPTION : completedTask.entry.description); @@ -127,8 +124,8 @@ describe('Task Header cloud component', () => { it('[C291945] Should Parent Name and Parent Id not be empty in task details for sub task', async () => { tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(subTask.entry.name); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().selectRowByContentName(subTask.entry.name); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(subTask.entry.name); + tasksCloudDemoPage.taskListCloudComponent().selectRow(subTask.entry.name); expect(taskDetailsCloudPage.getId()).toEqual(subTask.entry.id); expect(taskDetailsCloudPage.getDescription()) .toEqual(subTask.entry.description === null ? CONSTANTS.TASK_DETAILS.NO_DESCRIPTION : subTask.entry.description); diff --git a/e2e/process-services-cloud/task-filters-cloud.e2e.ts b/e2e/process-services-cloud/task-filters-cloud.e2e.ts index 98834ccb26..9efce559c4 100644 --- a/e2e/process-services-cloud/task-filters-cloud.e2e.ts +++ b/e2e/process-services-cloud/task-filters-cloud.e2e.ts @@ -66,12 +66,12 @@ describe('Task filters cloud', () => { tasksCloudDemoPage.completedTasksFilter().clickTaskFilter(); expect(tasksCloudDemoPage.getActiveFilterName()).toBe('Completed Tasks'); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(newTask); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(newTask); tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); expect(tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(newTask); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(newTask); }); it('[C289955] Should display task in Complete Tasks List when task is completed', async () => { @@ -83,12 +83,12 @@ describe('Task filters cloud', () => { tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); expect(tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(completedTask); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(completedTask); tasksCloudDemoPage.completedTasksFilter().clickTaskFilter(); expect(tasksCloudDemoPage.getActiveFilterName()).toBe('Completed Tasks'); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(completedTask); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(completedTask); }); it('[C291792] Should select the first task filter from the list as default', () => { diff --git a/e2e/process-services-cloud/task-list-properties.e2e.ts b/e2e/process-services-cloud/task-list-properties.e2e.ts index fdef8b916e..df2ee6edf9 100644 --- a/e2e/process-services-cloud/task-list-properties.e2e.ts +++ b/e2e/process-services-cloud/task-list-properties.e2e.ts @@ -33,6 +33,7 @@ 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'; describe('Edit task filters and task list properties', () => { @@ -124,14 +125,14 @@ describe('Edit task filters and task list properties', () => { expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getAppNameDropDownValue()).toEqual(simpleApp); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(createdTask.entry.name); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(notDisplayedTask.entry.name); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(createdTask.entry.name); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(notDisplayedTask.entry.name); tasksCloudDemoPage.editTaskFilterCloudComponent().setAppNameDropDown(candidateUserApp); expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getAppNameDropDownValue()).toEqual(candidateUserApp); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(notDisplayedTask.entry.name); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(createdTask.entry.name); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(notDisplayedTask.entry.name); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(createdTask.entry.name); }); it('[C297476] Filter by taskName', () => { @@ -140,9 +141,10 @@ describe('Edit task filters and task list properties', () => { tasksCloudDemoPage.editTaskFilterCloudComponent().setTaskName(createdTask.entry.name); expect(tasksCloudDemoPage.editTaskFilterCloudComponent().getTaskName()).toEqual(createdTask.entry.name); - - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(createdTask.entry.name); - expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().getNumberOfRowsDisplayedByName(createdTask.entry.name)).toEqual(1); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(createdTask.entry.name); + tasksCloudDemoPage.taskListCloudComponent().getRowsWithSameName(createdTask.entry.name).then((list) => { + expect(list.length).toEqual(1); + }); }); it('[C297613] Should be able to see No tasks found when typing a task name that does not exist', () => { @@ -164,8 +166,8 @@ describe('Edit task filters and task list properties', () => { tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed(); - expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().getAllDisplayedRows()).toBe(1); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(processInstance.entry.id); + expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().getNumberOfRows()).toBe(1); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByProcessInstanceId(processInstance.entry.id); }); it('[C297684] Should be able to see No tasks found when typing an invalid processInstanceId', () => { @@ -183,8 +185,8 @@ describe('Edit task filters and task list properties', () => { tasksCloudDemoPage.editTaskFilterCloudComponent().setAssignment('admin.adf'); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(createdTask.entry.name); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(notAssigned.entry.name); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(createdTask.entry.name); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(notAssigned.entry.name); }); it('[C297686] Should be able to see No tasks found when typing an invalid user to assignee field', () => { @@ -202,8 +204,8 @@ describe('Edit task filters and task list properties', () => { tasksCloudDemoPage.editTaskFilterCloudComponent().setPriority(priority); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(priorityTask.entry.name); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(createdTask.entry.name); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(priorityTask.entry.name); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(createdTask.entry.name); }); it('[C297687] Should be able to see No tasks found when typing unused value for priority field', () => { @@ -221,8 +223,8 @@ describe('Edit task filters and task list properties', () => { tasksCloudDemoPage.editTaskFilterCloudComponent().setParentTaskId(subTask.entry.parentTaskId); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(subTask.entry.name); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(createdTask.entry.name); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(subTask.entry.name); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(createdTask.entry.name); }); it('[C297486] Filter by Owner', () => { @@ -231,8 +233,8 @@ describe('Edit task filters and task list properties', () => { tasksCloudDemoPage.editTaskFilterCloudComponent().setStateFilterDropDown('ALL').clearAssignment().setOwner('admin.adf'); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(notAssigned.entry.name); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(createdTask.entry.name); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(notAssigned.entry.name); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(createdTask.entry.name); tasksCloudDemoPage.editTaskFilterCloudComponent().setOwner('invalid'); @@ -244,10 +246,10 @@ describe('Edit task filters and task list properties', () => { expect(tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); tasksCloudDemoPage.editTaskFilterCloudComponent().setLastModifiedFrom(beforeDate); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(createdTask.entry.name); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(createdTask.entry.name); tasksCloudDemoPage.editTaskFilterCloudComponent().setLastModifiedFrom(afterDate); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(createdTask.entry.name); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(createdTask.entry.name); }); it('[C297689] Task is not displayed when typing into lastModifiedFrom field the same date as tasks created date', function () { @@ -255,7 +257,7 @@ describe('Edit task filters and task list properties', () => { expect(tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); tasksCloudDemoPage.editTaskFilterCloudComponent().setLastModifiedFrom(currentDate); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(createdTask.entry.name); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(createdTask.entry.name); }); it('[C297485] Task is displayed when typing into lastModifiedTo field a date after the task created date', function () { @@ -263,10 +265,10 @@ describe('Edit task filters and task list properties', () => { expect(tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); tasksCloudDemoPage.editTaskFilterCloudComponent().setLastModifiedTo(afterDate); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(createdTask.entry.name); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(createdTask.entry.name); tasksCloudDemoPage.editTaskFilterCloudComponent().setLastModifiedTo(beforeDate); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(createdTask.entry.name); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(createdTask.entry.name); }); it('[C297690] Task is not displayed when typing into lastModifiedTo field the same date as tasks created date', function () { @@ -274,7 +276,7 @@ describe('Edit task filters and task list properties', () => { expect(tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); tasksCloudDemoPage.editTaskFilterCloudComponent().setLastModifiedTo(currentDate); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(createdTask.entry.name); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(createdTask.entry.name); }); it('[C297691] Task is not displayed when typing into lastModifiedFrom field a date before the task due date ' + @@ -296,7 +298,7 @@ describe('Edit task filters and task list properties', () => { tasksCloudDemoPage.editTaskFilterCloudComponent().setLastModifiedFrom(beforeDate); tasksCloudDemoPage.editTaskFilterCloudComponent().setLastModifiedTo(afterDate); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(createdTask.entry.name); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(createdTask.entry.name); }); it('[C297693] Task is not displayed when typing into lastModifiedFrom field a date after the tasks due date ' + diff --git a/e2e/process-services-cloud/task-list-selection.e2e.ts b/e2e/process-services-cloud/task-list-selection.e2e.ts index 7a0c62b317..e6aea2d082 100644 --- a/e2e/process-services-cloud/task-list-selection.e2e.ts +++ b/e2e/process-services-cloud/task-list-selection.e2e.ts @@ -22,12 +22,12 @@ import { SettingsPage } from '../pages/adf/settingsPage'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { AppListCloudComponent } from '../pages/adf/process-cloud/appListCloudComponent'; -import { TaskListCloudConfiguration } from './taskListCloud.config'; import { Util } from '../util/util'; -import moment = require('moment'); import { Tasks } from '../actions/APS-cloud/tasks'; +import { browser } from 'protractor'; + describe('Task list cloud - selection', () => { describe('Task list cloud - selection', () => { @@ -67,60 +67,90 @@ describe('Task list cloud - selection', () => { done(); }); + afterEach(async (done) => { + await browser.refresh(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().waitForTableBody(); + done(); + }); + it('[C291914] Should not be able to select any row when selection mode is set to None', () => { tasksCloudDemoPage.clickSettingsButton().selectSelectionMode('None'); + tasksCloudDemoPage.clickSettingsButton().disableDisplayTaskDetails(); tasksCloudDemoPage.clickAppButton(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().waitForTableBody(); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().selectRowByRowName(tasks[0]); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(tasks[0]); + tasksCloudDemoPage.taskListCloudComponent().selectRow(tasks[0]); tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkNoRowIsSelected(); }); it('[C291918] Should be able to select only one row when selection mode is set to Single', () => { tasksCloudDemoPage.clickSettingsButton().selectSelectionMode('Single'); + tasksCloudDemoPage.clickSettingsButton().disableDisplayTaskDetails(); tasksCloudDemoPage.clickAppButton(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().waitForTableBody(); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().selectRowByRowName(tasks[0]); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkRowIsSelectedByName(tasks[0]); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(tasks[0]); + tasksCloudDemoPage.taskListCloudComponent().selectRow(tasks[0]); + tasksCloudDemoPage.taskListCloudComponent().checkRowIsSelected(tasks[0]); expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().getNumberOfSelectedRows()).toEqual(1); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().selectRowByRowName(tasks[1]); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkRowIsSelectedByName(tasks[1]); + + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(tasks[1]); + tasksCloudDemoPage.taskListCloudComponent().selectRow(tasks[1]); + tasksCloudDemoPage.taskListCloudComponent().checkRowIsSelected(tasks[1]); expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().getNumberOfSelectedRows()).toEqual(1); }); it('[C291919] Should be able to select only one row when selection mode is set to Multiple', () => { tasksCloudDemoPage.clickSettingsButton().selectSelectionMode('Multiple'); + tasksCloudDemoPage.clickSettingsButton().disableDisplayTaskDetails(); tasksCloudDemoPage.clickAppButton(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().waitForTableBody(); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().selectRowByRowName(tasks[0]); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkRowIsSelectedByName(tasks[0]); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().selectRowByNameWithKeyboard(tasks[1]); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkRowIsSelectedByName(tasks[0]); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkRowIsSelectedByName(tasks[1]); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkRowIsNotSelectedByName(tasks[2]); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(tasks[0]); + tasksCloudDemoPage.taskListCloudComponent().selectRow(tasks[0]); + tasksCloudDemoPage.taskListCloudComponent().checkRowIsSelected(tasks[0]); + + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(tasks[1]); + tasksCloudDemoPage.taskListCloudComponent().selectRowWithKeyboard(tasks[1]); + tasksCloudDemoPage.taskListCloudComponent().checkRowIsSelected(tasks[0]); + tasksCloudDemoPage.taskListCloudComponent().checkRowIsSelected(tasks[1]); + tasksCloudDemoPage.taskListCloudComponent().checkRowIsNotSelected(tasks[2]); }); it('[C291916] Should be able to select multiple row when multiselect is true', () => { tasksCloudDemoPage.clickSettingsButton().enableMultiSelection(); + tasksCloudDemoPage.clickSettingsButton().disableDisplayTaskDetails(); tasksCloudDemoPage.clickAppButton(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().waitForTableBody(); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().clickCheckboxByName(tasks[0]); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkRowIsCheckedByName(tasks[0]); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().clickCheckboxByName(tasks[1]); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkRowIsCheckedByName(tasks[1]); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkRowIsNotCheckedByName(tasks[2]); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().clickCheckboxByName(tasks[1]); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkRowIsNotCheckedByName(tasks[1]); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkRowIsCheckedByName(tasks[0]); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(tasks[0]); + tasksCloudDemoPage.taskListCloudComponent().clickCheckbox(tasks[0]); + tasksCloudDemoPage.taskListCloudComponent().checkRowIsChecked(tasks[0]); + + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(tasks[1]); + tasksCloudDemoPage.taskListCloudComponent().clickCheckbox(tasks[1]); + tasksCloudDemoPage.taskListCloudComponent().checkRowIsChecked(tasks[1]); + + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(tasks[2]); + tasksCloudDemoPage.taskListCloudComponent().checkRowIsNotChecked(tasks[2]); + tasksCloudDemoPage.taskListCloudComponent().clickCheckbox(tasks[1]); + tasksCloudDemoPage.taskListCloudComponent().checkRowIsNotChecked(tasks[1]); + tasksCloudDemoPage.taskListCloudComponent().checkRowIsChecked(tasks[0]); }); it('[C291915] Should be possible select all the rows when multiselect is true', () => { tasksCloudDemoPage.clickSettingsButton().enableMultiSelection(); + tasksCloudDemoPage.clickSettingsButton().disableDisplayTaskDetails(); tasksCloudDemoPage.clickAppButton(); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().waitForTableBody(); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkAllRowsButtonIsDisplayed().checkAllRows(); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkRowIsCheckedByName(tasks[0]); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().clickCheckboxByName(tasks[1]); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkRowIsCheckedByName(tasks[2]); + tasksCloudDemoPage.taskListCloudComponent().getDataTable() + .checkAllRowsButtonIsDisplayed() + .checkAllRows(); + tasksCloudDemoPage.taskListCloudComponent().checkRowIsChecked(tasks[0]); + tasksCloudDemoPage.taskListCloudComponent().clickCheckbox(tasks[1]); + tasksCloudDemoPage.taskListCloudComponent().checkRowIsChecked(tasks[2]); }); }); diff --git a/e2e/process-services-cloud/tasks-custom-filters.e2e.ts b/e2e/process-services-cloud/tasks-custom-filters.e2e.ts index acd543d49e..be79169a93 100644 --- a/e2e/process-services-cloud/tasks-custom-filters.e2e.ts +++ b/e2e/process-services-cloud/tasks-custom-filters.e2e.ts @@ -47,9 +47,8 @@ describe('Task filters cloud', () => { assignedTaskName = Util.generateRandomString(), deletedTaskName = Util.generateRandomString(); const simpleApp = 'simple-app'; const user = TestConfig.adf.adminEmail, password = TestConfig.adf.adminPassword; - let createdTask, assignedTask, completedTask, deletedTask; + let assignedTask, deletedTask, suspendedTasks; let orderByNameAndPriority = ['cCreatedTask', 'dCreatedTask', 'eCreatedTask']; - let suspendedTasks, cancelledTasks; let priority = 30, nrOfTasks = 3; beforeAll(async () => { @@ -59,11 +58,11 @@ describe('Task filters cloud', () => { loginSSOPage.loginAPS(user, password); await tasksService.init(user, password); - createdTask = await tasksService.createStandaloneTask(createdTaskName, simpleApp); + await tasksService.createStandaloneTask(createdTaskName, simpleApp); assignedTask = await tasksService.createStandaloneTask(assignedTaskName, simpleApp); await tasksService.claimTask(assignedTask.entry.id, simpleApp); - completedTask = await tasksService.createAndCompleteTask(completedTaskName, simpleApp); + await tasksService.createAndCompleteTask(completedTaskName, simpleApp); deletedTask = await tasksService.createStandaloneTask(deletedTaskName, simpleApp); await tasksService.deleteTask(deletedTask.entry.id, simpleApp); for (let i = 0; i < nrOfTasks; i++) { @@ -78,7 +77,7 @@ describe('Task filters cloud', () => { let secondProcessInstance = await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, simpleApp); await queryService.init(user, password); suspendedTasks = await queryService.getProcessInstanceTasks(processInstance.entry.id, simpleApp); - cancelledTasks = await queryService.getProcessInstanceTasks(secondProcessInstance.entry.id, simpleApp); + await queryService.getProcessInstanceTasks(secondProcessInstance.entry.id, simpleApp); await processInstancesService.suspendProcessInstance(processInstance.entry.id, simpleApp); await processInstancesService.deleteProcessInstance(secondProcessInstance.entry.id, simpleApp); await queryService.getProcessInstanceTasks(processInstance.entry.id, simpleApp); @@ -88,52 +87,56 @@ describe('Task filters cloud', () => { await navigationBarPage.navigateToProcessServicesCloudPage(); appListCloudComponent.checkApsContainer(); await appListCloudComponent.goToApp(simpleApp); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().waitForTableBody(); done(); }); it('[C290045] Should display only tasks with Assigned state when Assigned is selected from state dropdown', () => { tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader().setStateFilterDropDown('ASSIGNED'); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(assignedTaskName); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(createdTaskName); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(completedTaskName); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(deletedTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(assignedTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(createdTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(completedTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(deletedTaskName); }); it('[C290061] Should display only tasks with Completed state when Completed is selected from state dropdown', () => { - tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader().setStateFilterDropDown('COMPLETED'); + tasksCloudDemoPage.editTaskFilterCloudComponent() + .clickCustomiseFilterHeader() + .setStateFilterDropDown('COMPLETED'); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(completedTaskName); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(assignedTaskName); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(createdTaskName); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(deletedTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(completedTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(assignedTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(createdTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(deletedTaskName); }); it('[C290139] Should display only tasks with all states when All is selected from state dropdown', () => { tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader().clearAssignment() .setStateFilterDropDown('ALL'); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(deletedTaskName); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(assignedTaskName); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(createdTaskName); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(completedTaskName); + + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(deletedTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(assignedTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(createdTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(completedTaskName); }); it('[C290154] Should display only tasks with suspended states when Suspended is selected from state dropdown', () => { tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader().clearAssignment() .setStateFilterDropDown('SUSPENDED'); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(suspendedTasks.list.entries[0].entry.id); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(deletedTaskName); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(createdTaskName); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(completedTaskName); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(assignedTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedById(suspendedTasks.list.entries[0].entry.id); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(deletedTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(createdTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(completedTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(assignedTaskName); }); it('[C290060] Should display only tasks with Created state when Created is selected from state dropdown', () => { tasksCloudDemoPage.editTaskFilterCloudComponent().clickCustomiseFilterHeader().clearAssignment().setStateFilterDropDown('CREATED'); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(createdTaskName); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(assignedTaskName); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(completedTaskName); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsNotDisplayed(deletedTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(createdTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(assignedTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(completedTaskName); + tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(deletedTaskName); }); it('[C290069] Should display tasks ordered by name when Name is selected from sort dropdown', () => { @@ -141,7 +144,7 @@ describe('Task filters cloud', () => { .setSortFilterDropDown('NAME').setOrderFilterDropDown('ASC'); tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed(); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().getAllRowsNameColumn().then((list) => { + tasksCloudDemoPage.taskListCloudComponent().getAllRowsNameColumn().then( (list) => { let initialList = list.slice(0); list.sort(function (firstStr, secondStr) { return firstStr.localeCompare(secondStr); @@ -152,7 +155,7 @@ describe('Task filters cloud', () => { tasksCloudDemoPage.editTaskFilterCloudComponent().setOrderFilterDropDown('DESC'); tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsDisplayed(); tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkSpinnerIsNotDisplayed(); - tasksCloudDemoPage.taskListCloudComponent().getDataTable().getAllRowsNameColumn().then((list) => { + tasksCloudDemoPage.taskListCloudComponent().getAllRowsNameColumn().then( (list) => { let initialList = list.slice(0); list.sort(function (firstStr, secondStr) { return firstStr.localeCompare(secondStr); diff --git a/e2e/process-services/attach-file-widget.e2e.ts b/e2e/process-services/attach-file-widget.e2e.ts index 6d8c07f656..344a6f4369 100644 --- a/e2e/process-services/attach-file-widget.e2e.ts +++ b/e2e/process-services/attach-file-widget.e2e.ts @@ -99,7 +99,7 @@ describe('Start Task - Task App', () => { viewerPage.checkFileContent('1', pdfFile.firstPageText); viewerPage.checkCloseButtonIsDisplayed(); viewerPage.clickCloseButton(); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed('View file'); + taskPage.tasksListPage().checkContentIsDisplayed('View file'); }); }); diff --git a/e2e/process-services/attach-form-component.e2e.ts b/e2e/process-services/attach-form-component.e2e.ts index c65e533466..43cde10a09 100644 --- a/e2e/process-services/attach-form-component.e2e.ts +++ b/e2e/process-services/attach-form-component.e2e.ts @@ -98,7 +98,7 @@ describe('Attach Form Component', () => { navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().selectRowByContentName(testNames.taskName); + taskPage.tasksListPage().selectRow(testNames.taskName); attachFormPage.checkNoFormMessageIsDisplayed(); attachFormPage.checkAttachFormButtonIsDisplayed(); @@ -109,7 +109,7 @@ describe('Attach Form Component', () => { navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().selectRowByContentName(testNames.taskName); + taskPage.tasksListPage().selectRow(testNames.taskName); attachFormPage.clickAttachFormButton(); attachFormPage.checkDefaultFormTitleIsDisplayed(testNames.formTitle); @@ -129,7 +129,7 @@ describe('Attach Form Component', () => { navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().selectRowByContentName(testNames.taskName); + taskPage.tasksListPage().selectRow(testNames.taskName); attachFormPage.clickAttachFormButton(); attachFormPage.clickAttachFormDropdown(); @@ -140,7 +140,7 @@ describe('Attach Form Component', () => { formFields.completeForm(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.COMPLETED_TASKS); - taskPage.tasksListPage().getDataTable().selectRowByContentName(testNames.taskName); + taskPage.tasksListPage().selectRow(testNames.taskName); expect(formFields.getFieldValue(formTextField)).toEqual(testNames.formFieldValue); }); diff --git a/e2e/process-services/checklist-component.e2e.ts b/e2e/process-services/checklist-component.e2e.ts index 6389465e8d..b24f0b55b6 100644 --- a/e2e/process-services/checklist-component.e2e.ts +++ b/e2e/process-services/checklist-component.e2e.ts @@ -17,7 +17,8 @@ import { LoginPage } from '../pages/adf/loginPage'; import { TasksPage } from '../pages/adf/process-services/tasksPage'; -import { NavigationBarPage } from '../pages/adf/navigationBarPage'; +import { ProcessServicesPage } from '../pages/adf/process-services/processServicesPage'; +import { ChecklistDialog } from '../pages/adf/process-services/dialog/createChecklistDialog'; import CONSTANTS = require('../util/constants'); @@ -30,14 +31,16 @@ import AlfrescoApi = require('alfresco-js-api-node'); import { UsersActions } from '../actions/users.actions'; import fs = require('fs'); import path = require('path'); +import { browser } from 'protractor'; describe('Checklist component', () => { let loginPage = new LoginPage(); - let navigationBarPage = new NavigationBarPage(); let processUserModel; let app = resources.Files.SIMPLE_APP_WITH_USER_FORM; let taskPage = new TasksPage(); + const processServices = new ProcessServicesPage(); + const checklistDialog = new ChecklistDialog(); let tasks = ['no checklist created task', 'checklist number task', 'remove running checklist', 'remove completed checklist', 'hierarchy']; let checklists = ['cancelCheckList', 'dialogChecklist', 'addFirstChecklist', 'addSecondChecklist']; @@ -74,10 +77,16 @@ describe('Checklist component', () => { done(); }); - it('[C279976] Should no checklist be created when no title is typed', () => { - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); + beforeEach(async (done) => { + await browser.get(TestConfig.adf.url + '/activiti'); + processServices.goToTaskApp().clickTasksButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[0]).selectRowByContentName(tasks[0]); + done(); + }); + + it('[C279976] Should no checklist be created when no title is typed', () => { + taskPage.tasksListPage().checkContentIsDisplayed(tasks[0]); + taskPage.tasksListPage().selectRow(tasks[0]); taskPage.clickOnAddChecklistButton().clickCreateChecklistButton(); taskPage.checkChecklistDialogIsNotDisplayed().checkNoChecklistIsDisplayed(); @@ -85,9 +94,8 @@ describe('Checklist component', () => { }); it('[C279975] Should no checklist be created when clicking on Cancel button on checklist dialog', () => { - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); - taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[0]).selectRowByContentName(tasks[0]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[0]); + taskPage.tasksListPage().selectRow(tasks[0]); taskPage.clickOnAddChecklistButton().addName(checklists[0]).clickCancelButton(); taskPage.checkChecklistDialogIsNotDisplayed().checkNoChecklistIsDisplayed(); @@ -95,9 +103,8 @@ describe('Checklist component', () => { }); it('[C261025] Should Checklist dialog be displayed when clicking on add checklist button', () => { - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); - taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[0]).selectRowByContentName(tasks[0]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[0]); + taskPage.tasksListPage().selectRow(tasks[0]); taskPage.clickOnAddChecklistButton(); taskPage.checkChecklistDialogIsDisplayed(); @@ -108,9 +115,8 @@ describe('Checklist component', () => { }); it('[C261026] Should Checklist number increase when a new checklist is added', () => { - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); - taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[1]).selectRowByContentName(tasks[1]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[1]); + taskPage.tasksListPage().selectRow(tasks[1]); taskPage.clickOnAddChecklistButton().addName(checklists[2]).clickCreateChecklistButton(); taskPage.checkChecklistIsDisplayed(checklists[2]); @@ -123,13 +129,15 @@ describe('Checklist component', () => { }); it('[C279980] Should checklist be removed when clicking on remove button', () => { - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); - taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[2]).selectRowByContentName(tasks[2]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[2]); + taskPage.tasksListPage().selectRow(tasks[2]); - taskPage.clickOnAddChecklistButton().addName(removeChecklist[0]).clickCreateChecklistButton(); - taskPage.clickOnAddChecklistButton().addName(removeChecklist[1]).clickCreateChecklistButton(); + taskPage.clickOnAddChecklistButton(); + taskPage.checkChecklistDialogIsDisplayed(); + checklistDialog.addName(removeChecklist[0]).clickCreateChecklistButton(); taskPage.checkChecklistIsDisplayed(removeChecklist[0]); + + taskPage.clickOnAddChecklistButton().addName(removeChecklist[1]).clickCreateChecklistButton(); taskPage.checkChecklistIsDisplayed(removeChecklist[1]); taskPage.removeChecklists(removeChecklist[1]); @@ -139,20 +147,20 @@ describe('Checklist component', () => { }); it('[C261027] Should not be able to remove a completed Checklist when clicking on remove button', () => { - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); - taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[3]).selectRowByContentName(tasks[3]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[3]); + taskPage.tasksListPage().selectRow(tasks[3]); taskPage.clickOnAddChecklistButton().addName(removeChecklist[2]).clickCreateChecklistButton(); - taskPage.clickOnAddChecklistButton().addName(removeChecklist[3]).clickCreateChecklistButton(); taskPage.checkChecklistIsDisplayed(removeChecklist[2]); + + taskPage.clickOnAddChecklistButton().addName(removeChecklist[3]).clickCreateChecklistButton(); taskPage.checkChecklistIsDisplayed(removeChecklist[3]); - taskPage.tasksListPage().getDataTable().selectRowByContentName(removeChecklist[3]); + taskPage.tasksListPage().selectRow(removeChecklist[3]); taskPage.completeTaskNoForm(); - taskPage.tasksListPage().getDataTable().checkContentIsNotDisplayed(removeChecklist[3]); + taskPage.tasksListPage().checkContentIsNotDisplayed(removeChecklist[3]); - taskPage.tasksListPage().getDataTable().selectRowByContentName(tasks[3]); + taskPage.tasksListPage().selectRow(tasks[3]); taskPage.checkChecklistIsDisplayed(removeChecklist[2]); taskPage.checkChecklistIsDisplayed(removeChecklist[3]); expect(taskPage.getNumberOfChecklists()).toEqual('2'); @@ -161,30 +169,29 @@ describe('Checklist component', () => { }); it('[C261028] Should all checklists of a task be completed when the task is completed', () => { - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); - taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[4]).selectRowByContentName(tasks[4]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[4]); + taskPage.tasksListPage().selectRow(tasks[4]); taskPage.clickOnAddChecklistButton().addName(hierarchyChecklist[0]).clickCreateChecklistButton(); taskPage.clickOnAddChecklistButton().addName(hierarchyChecklist[1]).clickCreateChecklistButton(); - taskPage.tasksListPage().getDataTable().selectRowByContentName(hierarchyChecklist[0]); + taskPage.tasksListPage().selectRow(hierarchyChecklist[0]); taskPage.clickOnAddChecklistButton().addName(hierarchyChecklist[2]).clickCreateChecklistButton(); taskPage.checkChecklistIsDisplayed(hierarchyChecklist[2]); - taskPage.tasksListPage().getDataTable().selectRowByContentName(hierarchyChecklist[1]); + taskPage.tasksListPage().selectRow(hierarchyChecklist[1]); taskPage.clickOnAddChecklistButton().addName(hierarchyChecklist[3]).clickCreateChecklistButton(); taskPage.checkChecklistIsDisplayed(hierarchyChecklist[3]); - taskPage.tasksListPage().getDataTable().selectRowByContentName(tasks[4]); + taskPage.tasksListPage().selectRow(tasks[4]); taskPage.completeTaskNoForm(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.COMPLETED_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[4]); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(hierarchyChecklist[0]); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(hierarchyChecklist[1]); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(hierarchyChecklist[2]); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(hierarchyChecklist[3]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[4]); + taskPage.tasksListPage().checkContentIsDisplayed(hierarchyChecklist[0]); + taskPage.tasksListPage().checkContentIsDisplayed(hierarchyChecklist[1]); + taskPage.tasksListPage().checkContentIsDisplayed(hierarchyChecklist[2]); + taskPage.tasksListPage().checkContentIsDisplayed(hierarchyChecklist[3]); }); }); diff --git a/e2e/process-services/comment-component-tasks.e2e.ts b/e2e/process-services/comment-component-tasks.e2e.ts index 3754e7335d..78270003f6 100644 --- a/e2e/process-services/comment-component-tasks.e2e.ts +++ b/e2e/process-services/comment-component-tasks.e2e.ts @@ -96,7 +96,7 @@ describe('Comment component for Processes', () => { navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.COMPLETED_TASKS); - taskPage.tasksListPage().getDataTable().selectRowByContentName(taskName.completed_task); + taskPage.tasksListPage().selectRow(taskName.completed_task); commentsPage.checkCommentInputIsNotDisplayed(); }); @@ -119,7 +119,7 @@ describe('Comment component for Processes', () => { navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().selectRowByContentName(taskName.multiple_users); + taskPage.tasksListPage().selectRow(taskName.multiple_users); taskPage.taskDetails().selectActivityTab(); browser.controlFlow().execute(async() => { @@ -149,7 +149,7 @@ describe('Comment component for Processes', () => { navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.INV_TASKS); - taskPage.tasksListPage().getDataTable().selectRowByContentName(taskName.multiple_users); + taskPage.tasksListPage().selectRow(taskName.multiple_users); taskPage.taskDetails().selectActivityTab(); browser.controlFlow().execute(async() => { diff --git a/e2e/process-services/custom-tasks-filters.e2e.ts b/e2e/process-services/custom-tasks-filters.e2e.ts index d203cd2a17..af583ac982 100644 --- a/e2e/process-services/custom-tasks-filters.e2e.ts +++ b/e2e/process-services/custom-tasks-filters.e2e.ts @@ -129,8 +129,8 @@ describe('Start Task - Custom App', () => { expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.twenty); expect(paginationPage.getPaginationRange()).toEqual('Showing 1-' + nrOfTasks + ' of ' + nrOfTasks); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(nrOfTasks); - taskListSinglePage.taskList().getDataTable().getAllRowsNameColumn().then(function (list) { + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(nrOfTasks); + taskListSinglePage.taskList().getAllRowsNameColumn().then(function (list) { expect(Util.arrayContainsArray(list, allTasksName)).toEqual(true); }); expect(paginationPage.getCurrentPage()).toEqual('Page 1'); @@ -148,8 +148,8 @@ describe('Start Task - Custom App', () => { taskListSinglePage.taskList().getDataTable().waitForTableBody(); expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.twenty); expect(paginationPage.getPaginationRange()).toEqual('Showing 1-' + nrOfTasks + ' of ' + nrOfTasks); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(nrOfTasks); - taskListSinglePage.taskList().getDataTable().getAllRowsNameColumn().then(function (list) { + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(nrOfTasks); + taskListSinglePage.taskList().getAllRowsNameColumn().then(function (list) { expect(Util.arrayContainsArray(list, allTasksName)).toEqual(true); }); paginationPage.checkNextPageButtonIsDisabled(); @@ -164,8 +164,8 @@ describe('Start Task - Custom App', () => { taskListSinglePage.taskList().getDataTable().waitForTableBody(); expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.five); expect(paginationPage.getPaginationRange()).toEqual('Showing 1-' + itemsPerPage.fiveValue * currentPage + ' of ' + nrOfTasks); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(itemsPerPage.fiveValue); - taskListSinglePage.taskList().getDataTable().getAllRowsNameColumn().then(function (list) { + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(itemsPerPage.fiveValue); + taskListSinglePage.taskList().getAllRowsNameColumn().then(function (list) { expect(Util.arrayContainsArray(list, allTasksName.slice(0, 5))).toEqual(true); }); @@ -174,8 +174,8 @@ describe('Start Task - Custom App', () => { taskListSinglePage.taskList().getDataTable().waitForTableBody(); expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.five); expect(paginationPage.getPaginationRange()).toEqual('Showing 6-' + itemsPerPage.fiveValue * currentPage + ' of ' + nrOfTasks); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(itemsPerPage.fiveValue); - taskListSinglePage.taskList().getDataTable().getAllRowsNameColumn().then(function (list) { + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(itemsPerPage.fiveValue); + taskListSinglePage.taskList().getAllRowsNameColumn().then(function (list) { expect(Util.arrayContainsArray(list, allTasksName.slice(5, 10))).toEqual(true); }); @@ -184,8 +184,8 @@ describe('Start Task - Custom App', () => { taskListSinglePage.taskList().getDataTable().waitForTableBody(); expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.five); expect(paginationPage.getPaginationRange()).toEqual('Showing 11-' + itemsPerPage.fiveValue * currentPage + ' of ' + nrOfTasks); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(itemsPerPage.fiveValue); - taskListSinglePage.taskList().getDataTable().getAllRowsNameColumn().then(function (list) { + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(itemsPerPage.fiveValue); + taskListSinglePage.taskList().getAllRowsNameColumn().then(function (list) { expect(Util.arrayContainsArray(list, allTasksName.slice(10, 15))).toEqual(true); }); @@ -194,8 +194,8 @@ describe('Start Task - Custom App', () => { taskListSinglePage.taskList().getDataTable().waitForTableBody(); expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.five); expect(paginationPage.getPaginationRange()).toEqual('Showing 16-' + itemsPerPage.fiveValue * currentPage + ' of ' + nrOfTasks); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(itemsPerPage.fiveValue); - taskListSinglePage.taskList().getDataTable().getAllRowsNameColumn().then(function (list) { + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(itemsPerPage.fiveValue); + taskListSinglePage.taskList().getAllRowsNameColumn().then(function (list) { expect(Util.arrayContainsArray(list, allTasksName.slice(15, 20))).toEqual(true); }); }); @@ -209,8 +209,8 @@ describe('Start Task - Custom App', () => { taskListSinglePage.taskList().getDataTable().waitForTableBody(); expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.ten); expect(paginationPage.getPaginationRange()).toEqual('Showing 1-' + itemsPerPage.tenValue * currentPage + ' of ' + nrOfTasks); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(itemsPerPage.tenValue); - taskListSinglePage.taskList().getDataTable().getAllRowsNameColumn().then(function (list) { + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(itemsPerPage.tenValue); + taskListSinglePage.taskList().getAllRowsNameColumn().then(function (list) { expect(Util.arrayContainsArray(list, allTasksName.slice(0, 10))).toEqual(true); }); paginationPage.clickOnNextPage(); @@ -218,8 +218,8 @@ describe('Start Task - Custom App', () => { taskListSinglePage.taskList().getDataTable().waitForTableBody(); expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.ten); expect(paginationPage.getPaginationRange()).toEqual('Showing 11-' + itemsPerPage.tenValue * currentPage + ' of ' + nrOfTasks); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(itemsPerPage.tenValue); - taskListSinglePage.taskList().getDataTable().getAllRowsNameColumn().then(function (list) { + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(itemsPerPage.tenValue); + taskListSinglePage.taskList().getAllRowsNameColumn().then(function (list) { expect(Util.arrayContainsArray(list, allTasksName.slice(10, 20))).toEqual(true); }); }); @@ -233,8 +233,8 @@ describe('Start Task - Custom App', () => { taskListSinglePage.taskList().getDataTable().waitForTableBody(); expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.fifteen); expect(paginationPage.getPaginationRange()).toEqual('Showing 1-' + itemsPerPage.fifteenValue * currentPage + ' of ' + nrOfTasks); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(itemsPerPage.fifteenValue); - taskListSinglePage.taskList().getDataTable().getAllRowsNameColumn().then(function (list) { + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(itemsPerPage.fifteenValue); + taskListSinglePage.taskList().getAllRowsNameColumn().then(function (list) { expect(Util.arrayContainsArray(list, allTasksName.slice(0, 15))).toEqual(true); }); currentPage++; @@ -242,8 +242,8 @@ describe('Start Task - Custom App', () => { taskListSinglePage.taskList().getDataTable().waitForTableBody(); expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.fifteen); expect(paginationPage.getPaginationRange()).toEqual('Showing 16-' + nrOfTasks + ' of ' + nrOfTasks); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(nrOfTasks - itemsPerPage.fifteenValue); - taskListSinglePage.taskList().getDataTable().getAllRowsNameColumn().then(function (list) { + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(nrOfTasks - itemsPerPage.fifteenValue); + taskListSinglePage.taskList().getAllRowsNameColumn().then(function (list) { expect(Util.arrayContainsArray(list, allTasksName.slice(15, 20))).toEqual(true); }); }); @@ -277,8 +277,8 @@ describe('Start Task - Custom App', () => { expect(paginationPage.getCurrentPage()).toEqual('Page ' + currentPage); expect(paginationPage.getTotalPages()).toEqual(totalNrOfPages); paginationPage.checkPageSelectorIsDisplayed(); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(itemsPerPage.fiveValue); - taskListSinglePage.taskList().getDataTable().getAllRowsNameColumn().then(function (list) { + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(itemsPerPage.fiveValue); + taskListSinglePage.taskList().getAllRowsNameColumn().then(function (list) { expect(Util.arrayContainsArray(list, allTasksName.slice(0, 5))).toEqual(true); }); @@ -288,8 +288,8 @@ describe('Start Task - Custom App', () => { expect(paginationPage.getCurrentPage()).toEqual('Page ' + currentPage); expect(paginationPage.getTotalPages()).toEqual(totalNrOfPages); paginationPage.checkPageSelectorIsDisplayed(); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(itemsPerPage.fiveValue); - taskListSinglePage.taskList().getDataTable().getAllRowsNameColumn().then(function (list) { + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(itemsPerPage.fiveValue); + taskListSinglePage.taskList().getAllRowsNameColumn().then(function (list) { expect(Util.arrayContainsArray(list, allTasksName.slice(5, 10))).toEqual(true); }); @@ -299,8 +299,8 @@ describe('Start Task - Custom App', () => { expect(paginationPage.getCurrentPage()).toEqual('Page ' + currentPage); expect(paginationPage.getTotalPages()).toEqual(totalNrOfPages); paginationPage.checkPageSelectorIsDisplayed(); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(itemsPerPage.fiveValue); - taskListSinglePage.taskList().getDataTable().getAllRowsNameColumn().then(function (list) { + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(itemsPerPage.fiveValue); + taskListSinglePage.taskList().getAllRowsNameColumn().then(function (list) { expect(Util.arrayContainsArray(list, allTasksName.slice(10, 15))).toEqual(true); }); @@ -310,8 +310,8 @@ describe('Start Task - Custom App', () => { expect(paginationPage.getCurrentPage()).toEqual('Page ' + currentPage); expect(paginationPage.getTotalPages()).toEqual(totalNrOfPages); paginationPage.checkPageSelectorIsDisplayed(); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(itemsPerPage.fiveValue); - taskListSinglePage.taskList().getDataTable().getAllRowsNameColumn().then(function (list) { + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(itemsPerPage.fiveValue); + taskListSinglePage.taskList().getAllRowsNameColumn().then(function (list) { expect(Util.arrayContainsArray(list, allTasksName.slice(15, 20))).toEqual(true); }); }); @@ -333,8 +333,8 @@ describe('Start Task - Custom App', () => { taskListSinglePage.clickResetButton(); taskListSinglePage.typeDueAfter(beforeDate); - taskListSinglePage.taskList().getDataTable().checkRowIsDisplayedByName(paginationTasksName[0]); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(1); + taskListSinglePage.taskList().checkContentIsDisplayed(paginationTasksName[0]); + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(1); }); it('[C286414] Task is not displayed when typing into dueAfter field a date after the task due date', function () { @@ -366,8 +366,8 @@ describe('Start Task - Custom App', () => { taskListSinglePage.clickResetButton(); taskListSinglePage.typeDueBefore(afterDate); - taskListSinglePage.taskList().getDataTable().checkRowIsDisplayedByName(paginationTasksName[0]); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(1); + taskListSinglePage.taskList().checkContentIsDisplayed(paginationTasksName[0]); + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(1); }); it('[C286426] Task is not displayed when typing into dueBefore field the same date as tasks due date', function () { @@ -393,8 +393,8 @@ describe('Start Task - Custom App', () => { taskListSinglePage.typeDueBefore(afterDate); taskListSinglePage.typeDueAfter(beforeDate); - taskListSinglePage.taskList().getDataTable().checkRowIsDisplayedByName(paginationTasksName[0]); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(1); + taskListSinglePage.taskList().checkContentIsDisplayed(paginationTasksName[0]); + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(1); }); it('[C286429] Task is not displayed when typing into dueAfter field a date after the tasks due date and into dueBefore a date after', function () { @@ -413,9 +413,9 @@ describe('Start Task - Custom App', () => { taskListSinglePage.typeAppId(appRuntime.id); expect(taskListSinglePage.getAppId()).toEqual(appRuntime.id.toString()); - taskListSinglePage.taskList().getDataTable().checkRowIsDisplayedByName(app.taskName); - taskListSinglePage.taskList().getDataTable().checkRowIsDisplayedByName(app.taskName); - taskListSinglePage.taskList().getDataTable().checkRowIsNotDisplayedByName(paginationTasksName[13]); + taskListSinglePage.taskList().checkContentIsDisplayed(app.taskName); + taskListSinglePage.taskList().checkContentIsDisplayed(app.taskName); + taskListSinglePage.taskList().checkContentIsNotDisplayed(paginationTasksName[13]); }); it('[C280569] Should be able to see No tasks found when typing an invalid appId', () => { @@ -435,8 +435,10 @@ describe('Start Task - Custom App', () => { taskListSinglePage.typeTaskName(paginationTasksName[13]); expect(taskListSinglePage.getTaskName()).toEqual(paginationTasksName[13]); - taskListSinglePage.taskList().getDataTable().checkRowIsDisplayedByName(paginationTasksName[13]); - expect(taskListSinglePage.taskList().getDataTable().getNumberOfRowsDisplayedWithSameName(paginationTasksName[13])).toEqual(2); + taskListSinglePage.taskList().checkContentIsDisplayed(paginationTasksName[13]); + taskListSinglePage.taskList().getRowsDisplayedWithSameName(paginationTasksName[13]).then((list) => { + expect(list.count()).toEqual(2); + }); }); it('[C280571] Should be able to see No tasks found when typing a task name that does not exist', () => { @@ -456,8 +458,8 @@ describe('Start Task - Custom App', () => { taskListSinglePage.typeTaskId(taskWithDueDate.id); expect(taskListSinglePage.getTaskId()).toEqual(taskWithDueDate.id); - taskListSinglePage.taskList().getDataTable().checkRowIsDisplayedByName(taskWithDueDate.name); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(1); + taskListSinglePage.taskList().checkContentIsDisplayed(taskWithDueDate.name); + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(1); }); it('[C280630] Should be able to see No tasks found when typing an invalid taskId', () => { @@ -476,10 +478,10 @@ describe('Start Task - Custom App', () => { taskListSinglePage.selectState('Completed'); - taskListSinglePage.taskList().getDataTable().checkRowIsDisplayedByName(completedTasks[0].name); - taskListSinglePage.taskList().getDataTable().checkRowIsDisplayedByName(completedTasks[1].name); - taskListSinglePage.taskList().getDataTable().checkRowIsDisplayedByName(completedTasks[2].name); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(3); + taskListSinglePage.taskList().checkContentIsDisplayed(completedTasks[0].name); + taskListSinglePage.taskList().checkContentIsDisplayed(completedTasks[1].name); + taskListSinglePage.taskList().checkContentIsDisplayed(completedTasks[2].name); + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(3); }); it('[C286597] Should be able to see only running tasks when choosing Active from state drop down', () => { @@ -488,13 +490,13 @@ describe('Start Task - Custom App', () => { taskListSinglePage.selectState('Active'); - taskListSinglePage.taskList().getDataTable().checkRowIsNotDisplayedByName(completedTasks[0].name); - taskListSinglePage.taskList().getDataTable().checkRowIsNotDisplayedByName(completedTasks[1].name); - taskListSinglePage.taskList().getDataTable().checkRowIsNotDisplayedByName(completedTasks[2].name); - taskListSinglePage.taskList().getDataTable().getAllRowsNameColumn().then(function (list) { + taskListSinglePage.taskList().checkContentIsNotDisplayed(completedTasks[0].name); + taskListSinglePage.taskList().checkContentIsNotDisplayed(completedTasks[1].name); + taskListSinglePage.taskList().checkContentIsNotDisplayed(completedTasks[2].name); + taskListSinglePage.taskList().getAllRowsNameColumn().then(function (list) { expect(Util.arrayContainsArray(list, allTasksName)).toEqual(true); }); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(20); + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(20); }); it('[C286598] Should be able to see all tasks when choosing All from state drop down', () => { @@ -503,13 +505,13 @@ describe('Start Task - Custom App', () => { taskListSinglePage.selectState('All'); - taskListSinglePage.taskList().getDataTable().checkRowIsDisplayedByName(completedTasks[0].name); - taskListSinglePage.taskList().getDataTable().checkRowIsDisplayedByName(completedTasks[1].name); - taskListSinglePage.taskList().getDataTable().checkRowIsDisplayedByName(completedTasks[2].name); - taskListSinglePage.taskList().getDataTable().getAllRowsNameColumn().then(function (list) { + taskListSinglePage.taskList().checkContentIsDisplayed(completedTasks[0].name); + taskListSinglePage.taskList().checkContentIsDisplayed(completedTasks[1].name); + taskListSinglePage.taskList().checkContentIsDisplayed(completedTasks[2].name); + taskListSinglePage.taskList().getAllRowsNameColumn().then(function (list) { expect(Util.arrayContainsArray(list, allTasksName)).toEqual(true); }); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(23); + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(23); }); // failing due to ADF-3667, blocked by ACTIVITI-1975 @@ -523,16 +525,16 @@ describe('Start Task - Custom App', () => { taskListSinglePage.selectState('All'); taskListSinglePage.selectSort('Due (asc)'); - taskListSinglePage.taskList().getDataTable().getAllRowsNameColumn().then(function (list) { + taskListSinglePage.taskList().getAllRowsNameColumn().then(function (list) { expect(Util.arrayContainsArray(list, sortAscByDueDate)).toEqual(true); }); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(4); + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(4); taskListSinglePage.clickResetButton(); taskListSinglePage.selectState('All'); taskListSinglePage.selectSort('Due (asc)'); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(23); - taskListSinglePage.taskList().getDataTable().getAllRowsNameColumn().then(function (list) { + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(23); + taskListSinglePage.taskList().getAllRowsNameColumn().then(function (list) { expect(Util.arrayContainsArray(list.slice(0, 4), sortAscByDueDate)).toEqual(true); expect(Util.arrayContainsArray(list.slice(4, list.length), allTasksName)).toEqual(true); }); @@ -549,16 +551,16 @@ describe('Start Task - Custom App', () => { taskListSinglePage.selectState('All'); taskListSinglePage.selectSort('Due (desc)'); - taskListSinglePage.taskList().getDataTable().getAllRowsNameColumn().then(function (list) { + taskListSinglePage.taskList().getAllRowsNameColumn().then(function (list) { expect(Util.arrayContainsArray(list, sortDescByDueDate)).toEqual(true); }); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(4); + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(4); taskListSinglePage.clickResetButton(); taskListSinglePage.selectState('All'); taskListSinglePage.selectSort('Due (asc)'); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(23); - taskListSinglePage.taskList().getDataTable().getAllRowsNameColumn().then(function (list) { + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(23); + taskListSinglePage.taskList().getAllRowsNameColumn().then(function (list) { expect(Util.arrayContainsArray(list.slice(0, 4), sortDescByDueDate)).toEqual(true); expect(Util.arrayContainsArray(list.slice(4, list.length), allTasksName)).toEqual(true); }); @@ -573,7 +575,7 @@ describe('Start Task - Custom App', () => { taskListSinglePage.typeProcessDefinitionId(processDefinitionId.processDefinitionId); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(4); + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(4); taskListSinglePage.getAllProcessDefinitionIds().then(function (list) { expect(Util.arrayContainsArray(list, processDefinitionIds)).toEqual(true); }); @@ -597,7 +599,7 @@ describe('Start Task - Custom App', () => { taskListSinglePage.typeProcessInstanceId(processDefinitionId.id); expect(taskListSinglePage.getProcessInstanceId()).toEqual(processDefinitionId.id); - expect(taskListSinglePage.taskList().getDataTable().getAllDisplayedRows()).toBe(1); + expect(taskListSinglePage.taskList().getDataTable().numberOfRows()).toBe(1); taskListSinglePage.getAllProcessInstanceIds().then(function (list) { expect(Util.arrayContainsArray(list, processInstanceIds)).toEqual(true); }); diff --git a/e2e/process-services/form-widgets-component.e2e.ts b/e2e/process-services/form-widgets-component.e2e.ts index c201aed864..be1239312b 100644 --- a/e2e/process-services/form-widgets-component.e2e.ts +++ b/e2e/process-services/form-widgets-component.e2e.ts @@ -84,7 +84,7 @@ describe('Form widgets', () => { taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); taskPage.createNewTask().addName(newTask).addDescription('Description').addForm(app.formName).clickStartButton() .then(() => { - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(newTask); + taskPage.tasksListPage().checkContentIsDisplayed(newTask); taskPage.formFields().checkFormIsDisplayed(); expect(taskPage.taskDetails().getTitle()).toEqual('Activities'); }) diff --git a/e2e/process-services/pagination-tasklist-addingTasks.e2e.ts b/e2e/process-services/pagination-tasklist-addingTasks.e2e.ts index 3d6b9aa77d..36f2d1465a 100644 --- a/e2e/process-services/pagination-tasklist-addingTasks.e2e.ts +++ b/e2e/process-services/pagination-tasklist-addingTasks.e2e.ts @@ -80,7 +80,7 @@ describe('Items per page set to 15 and adding of tasks', () => { expect(paginationPage.getCurrentPage()).toEqual('Page ' + currentPage); expect(paginationPage.getTotalPages()).toEqual('of ' + totalPages); expect(paginationPage.getPaginationRange()).toEqual('Showing 1-' + itemsPerPage.fifteenValue + ' of ' + (nrOfTasks - 5)); - expect(taskPage.tasksListPage().getDataTable().getNumberOfRows()).toBe(itemsPerPage.fifteenValue); + expect(taskPage.tasksListPage().getDataTable().numberOfRows()).toBe(itemsPerPage.fifteenValue); browser.controlFlow().execute(async () => { for (i; i < nrOfTasks; i++) { @@ -94,7 +94,7 @@ describe('Items per page set to 15 and adding of tasks', () => { expect(paginationPage.getCurrentPage()).toEqual('Page ' + currentPage); expect(paginationPage.getTotalPages()).toEqual('of ' + totalPages); expect(paginationPage.getPaginationRange()).toEqual('Showing 16-' + nrOfTasks + ' of ' + nrOfTasks); - expect(taskPage.tasksListPage().getDataTable().getNumberOfRows()).toBe(nrOfTasks - itemsPerPage.fifteenValue); + expect(taskPage.tasksListPage().getDataTable().numberOfRows()).toBe(nrOfTasks - itemsPerPage.fifteenValue); paginationPage.checkNextPageButtonIsDisabled(); paginationPage.checkPreviousPageButtonIsEnabled(); }); diff --git a/e2e/process-services/people-component.e2e.ts b/e2e/process-services/people-component.e2e.ts index 9fd5d76397..9e38f000e8 100644 --- a/e2e/process-services/people-component.e2e.ts +++ b/e2e/process-services/people-component.e2e.ts @@ -18,6 +18,7 @@ import { LoginPage } from '../pages/adf/loginPage'; import { TasksPage } from '../pages/adf/process-services/tasksPage'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; +import { ProcessServicesPage } from '../pages/adf/process-services/processServicesPage'; import CONSTANTS = require('../util/constants'); @@ -30,6 +31,7 @@ import AlfrescoApi = require('alfresco-js-api-node'); import { UsersActions } from '../actions/users.actions'; import fs = require('fs'); import path = require('path'); +import { browser } from 'protractor'; describe('People component', () => { @@ -39,6 +41,7 @@ describe('People component', () => { let app = resources.Files.SIMPLE_APP_WITH_USER_FORM; let taskPage = new TasksPage(); let peopleTitle = 'People this task is shared with '; + const processServices = new ProcessServicesPage(); let tasks = ['no people involved task', 'remove people task', 'can not complete task', 'multiple users', 'completed filter']; @@ -68,7 +71,7 @@ describe('People component', () => { await this.alfrescoJsApi.activiti.appsApi.importAppDefinition(file); for (let i = 0; i < tasks.length; i++) { - this.alfrescoJsApi.activiti.taskApi.createNewTask({name: tasks[i]}); + await this.alfrescoJsApi.activiti.taskApi.createNewTask({name: tasks[i]}); } loginPage.loginToProcessServicesUsingUserModel(processUserModel); @@ -76,10 +79,17 @@ describe('People component', () => { done(); }); - it('[C279989] Should no people be involved when no user is typed', () => { - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); + beforeEach(async (done) => { + loginPage.loginToProcessServicesUsingUserModel(processUserModel); + await browser.get(TestConfig.adf.url + '/activiti'); + processServices.goToTaskApp().clickTasksButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[0]).selectRowByContentName(tasks[0]); + done(); + }); + + it('[C279989] Should no people be involved when no user is typed', () => { + taskPage.tasksListPage().checkContentIsDisplayed(tasks[0]); + taskPage.tasksListPage().selectRow(tasks[0]); taskPage.taskDetails().clickInvolvePeopleButton(); taskPage.taskDetails().clickAddInvolvedUserButton(); @@ -87,9 +97,8 @@ describe('People component', () => { }); it('[C279990] Should no people be involved when clicking on Cancel button', () => { - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); - taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[0]).selectRowByContentName(tasks[0]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[0]); + taskPage.tasksListPage().selectRow(tasks[0]); taskPage.taskDetails().clickInvolvePeopleButton() .typeUser(assigneeUserModel.firstName + ' ' + assigneeUserModel.lastName) @@ -100,9 +109,8 @@ describe('People component', () => { }); it('[C261029] Should People dialog be displayed when clicking on add people button', () => { - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); - taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[0]).selectRowByContentName(tasks[0]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[0]); + taskPage.tasksListPage().selectRow(tasks[0]); taskPage.taskDetails().clickInvolvePeopleButton(); expect(taskPage.taskDetails().getInvolvePeopleHeader()).toEqual('Add people and groups'); @@ -112,9 +120,8 @@ describe('People component', () => { }); it('[C279991] Should not be able to involve a user when is the creator of the task', () => { - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); - taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[0]).selectRowByContentName(tasks[0]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[0]); + taskPage.tasksListPage().selectRow(tasks[0]); taskPage.taskDetails().clickInvolvePeopleButton() .typeUser(processUserModel.firstName + ' ' + processUserModel.lastName) @@ -124,9 +131,8 @@ describe('People component', () => { }); it('[C261030] Should involved user be removed when clicking on remove button', () => { - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); - taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[0]).selectRowByContentName(tasks[0]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[0]); + taskPage.tasksListPage().selectRow(tasks[0]); taskPage.taskDetails().clickInvolvePeopleButton() .typeUser(assigneeUserModel.firstName + ' ' + assigneeUserModel.lastName) @@ -141,9 +147,8 @@ describe('People component', () => { }); it('[C280013] Should not be able to complete a task by a involved user', () => { - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); - taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[1]).selectRowByContentName(tasks[1]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[1]); + taskPage.tasksListPage().selectRow(tasks[1]); taskPage.taskDetails().clickInvolvePeopleButton() .typeUser(assigneeUserModel.firstName + ' ' + assigneeUserModel.lastName) @@ -157,16 +162,15 @@ describe('People component', () => { loginPage.loginToProcessServicesUsingUserModel(assigneeUserModel); navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.INV_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[1]).selectRowByContentName(tasks[1]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[1]); + taskPage.tasksListPage().selectRow(tasks[1]); taskPage.completeTaskNoFormNotDisplayed(); }); it('[C261031] Should be able to involve multiple users to a task', () => { - loginPage.loginToProcessServicesUsingUserModel(processUserModel); - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); - taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[2]).selectRowByContentName(tasks[2]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[2]); + taskPage.tasksListPage().selectRow(tasks[2]); taskPage.taskDetails().clickInvolvePeopleButton() .typeUser(assigneeUserModel.firstName + ' ' + assigneeUserModel.lastName) @@ -195,9 +199,8 @@ describe('People component', () => { }); it('[C280014] Should involved user see the task in completed filters when the task is completed', () => { - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); - taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[3]).selectRowByContentName(tasks[3]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[3]); + taskPage.tasksListPage().selectRow(tasks[3]); taskPage.taskDetails().clickInvolvePeopleButton() .typeUser(assigneeUserModel.firstName + ' ' + assigneeUserModel.lastName) @@ -210,17 +213,18 @@ describe('People component', () => { taskPage.completeTaskNoForm(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.COMPLETED_TASKS); - taskPage.tasksListPage().getDataTable().selectRowByContentName(tasks[3]); + taskPage.tasksListPage().selectRow(tasks[3]); expect(taskPage.taskDetails().getInvolvedUserEmail(assigneeUserModel.firstName + ' ' + assigneeUserModel.lastName)) .toEqual(assigneeUserModel.email); loginPage.loginToProcessServicesUsingUserModel(assigneeUserModel); navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.COMPLETED_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[3]).selectRowByContentName(tasks[3]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[3]); + taskPage.tasksListPage().selectRow(tasks[3]); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.INV_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsNotDisplayed(tasks[3]); + taskPage.tasksListPage().checkContentIsNotDisplayed(tasks[3]); }); }); diff --git a/e2e/process-services/processlist-pagination.e2e.ts b/e2e/process-services/processlist-pagination.e2e.ts index b92835b2b6..21f204a0b7 100644 --- a/e2e/process-services/processlist-pagination.e2e.ts +++ b/e2e/process-services/processlist-pagination.e2e.ts @@ -105,12 +105,14 @@ describe('Process List - Pagination', function () { done(); }); - it('[C261042] Should display default pagination', function () { - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickProcessButton(); + beforeEach(async (done) => { + await navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickProcessButton(); + done(); + }); + it('[C261042] Should display default pagination', function () { page = 1; totalPages = 1; - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickProcessButton(); processFiltersPage.clickRunningFilterButton(); processFiltersPage.checkFilterIsHighlighted(processFilterRunning); processDetailsPage.checkProcessTitleIsDisplayed(); @@ -128,7 +130,6 @@ describe('Process List - Pagination', function () { it('[C261043] Should be possible to Items per page to 15', function () { page = 1; totalPages = 2; - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickProcessButton(); processFiltersPage.clickRunningFilterButton(); processFiltersPage.checkFilterIsHighlighted(processFilterRunning); processDetailsPage.checkProcessTitleIsDisplayed(); @@ -170,7 +171,6 @@ describe('Process List - Pagination', function () { it('[C261044] Should be possible to Items per page to 10', function () { page = 1; totalPages = 2; - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickProcessButton(); processFiltersPage.clickRunningFilterButton(); processFiltersPage.checkFilterIsHighlighted(processFilterRunning); processDetailsPage.checkProcessTitleIsDisplayed(); @@ -212,7 +212,6 @@ describe('Process List - Pagination', function () { it('[C261047] Should be possible to Items per page to 20', function () { page = 1; totalPages = 1; - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickProcessButton(); processFiltersPage.clickRunningFilterButton(); processFiltersPage.checkFilterIsHighlighted(processFilterRunning); processDetailsPage.checkProcessTitleIsDisplayed(); @@ -242,7 +241,6 @@ describe('Process List - Pagination', function () { let showing; page = 1; totalPages = 4; - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickProcessButton(); processFiltersPage.clickRunningFilterButton(); processFiltersPage.checkFilterIsHighlighted(processFilterRunning); processDetailsPage.checkProcessTitleIsDisplayed(); @@ -317,7 +315,6 @@ describe('Process List - Pagination', function () { let showing; page = 1; totalPages = 2; - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickProcessButton(); processFiltersPage.clickRunningFilterButton(); processDetailsPage.checkProcessTitleIsDisplayed(); processFiltersPage.waitForTableBody(); @@ -368,7 +365,6 @@ describe('Process List - Pagination', function () { }); it('[C261048] Should be possible to sort processes by name', function () { - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickProcessButton(); processFiltersPage.clickRunningFilterButton(); processFiltersPage.checkFilterIsHighlighted(processFilterRunning); processDetailsPage.checkProcessTitleIsDisplayed(); @@ -388,7 +384,6 @@ describe('Process List - Pagination', function () { }); it('[C286260] Should keep sorting when changing \'Items per page\'', function () { - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickProcessButton(); processFiltersPage.clickRunningFilterButton(); processFiltersPage.checkFilterIsHighlighted(processFilterRunning); processDetailsPage.checkProcessTitleIsDisplayed(); diff --git a/e2e/process-services/standalone-task.e2e.ts b/e2e/process-services/standalone-task.e2e.ts index 80fa563849..1d81966318 100644 --- a/e2e/process-services/standalone-task.e2e.ts +++ b/e2e/process-services/standalone-task.e2e.ts @@ -75,7 +75,7 @@ describe('Start Task - Task App', () => { taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); taskPage.createNewTask().addName(tasks[0]).clickStartButton() .then(() => { - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[0]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[0]); taskPage.taskDetails().noFormIsDisplayed(); taskPage.taskDetails().checkCompleteTaskButtonIsDisplayed().checkCompleteTaskButtonIsEnabled(); taskPage.taskDetails().checkAttachFormButtonIsDisplayed(); @@ -90,12 +90,12 @@ describe('Start Task - Task App', () => { taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); taskPage.createNewTask().addName(tasks[1]).clickStartButton() .then(() => { - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[1]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[1]); taskPage.formFields().noFormIsDisplayed(); taskPage.completeTaskNoForm(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.COMPLETED_TASKS); - taskPage.tasksListPage().getDataTable().selectRowByContentName(tasks[1]); + taskPage.tasksListPage().selectRow(tasks[1]); expect(taskPage.formFields().getCompletedTaskNoFormMessage()).toEqual('Task ' + tasks[1] + ' completed'); taskPage.formFields().noFormIsDisplayed(); @@ -108,7 +108,7 @@ describe('Start Task - Task App', () => { taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); taskPage.createNewTask().addName(tasks[2]).clickStartButton() .then(() => { - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[2]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[2]); taskPage.formFields().noFormIsDisplayed(); taskPage.formFields().clickOnAttachFormButton().selectForm(app.formName).clickOnAttachFormButton(); @@ -121,7 +121,7 @@ describe('Start Task - Task App', () => { taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); taskPage.createNewTask().addName(tasks[3]).addForm(app.formName).clickStartButton(); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[3]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[3]); expect(taskPage.taskDetails().getFormName()).toEqual(app.formName); browser.controlFlow().execute(async () => { @@ -130,7 +130,7 @@ describe('Start Task - Task App', () => { }); browser.refresh(); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[3]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[3]); taskPage.checkTaskTitle(tasks[3]); taskPage.formFields().noFormIsDisplayed(); diff --git a/e2e/process-services/start-task-custom-app.e2e.ts b/e2e/process-services/start-task-custom-app.e2e.ts index 0446a90373..4cff2cce93 100644 --- a/e2e/process-services/start-task-custom-app.e2e.ts +++ b/e2e/process-services/start-task-custom-app.e2e.ts @@ -99,7 +99,7 @@ describe('Start Task - Custom App', () => { .then(() => { taskPage .tasksListPage() - .getDataTable().checkContentIsDisplayed(tasks[0]); + .checkContentIsDisplayed(tasks[0]); taskPage .taskDetails() @@ -150,7 +150,7 @@ describe('Start Task - Custom App', () => { taskPage .tasksListPage() - .getDataTable().checkContentIsDisplayed(tasks[2]); + .checkContentIsDisplayed(tasks[2]); taskPage .formFields() @@ -176,7 +176,7 @@ describe('Start Task - Custom App', () => { .clickCancelButton(); taskPage.tasksListPage() - .getDataTable().checkContentIsNotDisplayed(tasks[3]); + .checkContentIsNotDisplayed(tasks[3]); expect(taskPage.filtersPage().getActiveFilter()).toEqual(CONSTANTS.TASK_FILTERS.MY_TASKS); }); @@ -193,7 +193,7 @@ describe('Start Task - Custom App', () => { taskPage .tasksListPage() - .getDataTable().checkContentIsDisplayed(tasks[4]); + .checkContentIsDisplayed(tasks[4]); expect(taskPage.formFields() .setFieldValue(by.id, formTextField, formFieldValue) @@ -206,7 +206,7 @@ describe('Start Task - Custom App', () => { taskPage .tasksListPage() - .getDataTable().checkContentIsDisplayed(tasks[4]); + .checkContentIsDisplayed(tasks[4]); taskPage .formFields() @@ -244,8 +244,8 @@ describe('Start Task - Custom App', () => { .goToFilter(CONSTANTS.TASK_FILTERS.INV_TASKS); taskPage.tasksListPage() - .getDataTable().checkContentIsDisplayed(tasks[5]) - .selectRowByContentName(tasks[5]); + .checkContentIsDisplayed(tasks[5]); + taskPage.tasksListPage().selectRow(tasks[5]); taskPage.checkTaskTitle(tasks[5]); @@ -268,7 +268,7 @@ describe('Start Task - Custom App', () => { navigationBarPage.navigateToProcessServicesPage().goToApp(appModel.name).clickTasksButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); taskPage.createNewTask().addName(showHeaderTask).clickStartButton(); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(showHeaderTask); + taskPage.tasksListPage().checkContentIsDisplayed(showHeaderTask); appNavigationBarPage.clickSettingsButton(); taskPage.taskDetails().appSettingsToggles().disableShowHeader(); diff --git a/e2e/process-services/start-task-task-app.e2e.ts b/e2e/process-services/start-task-task-app.e2e.ts index 844e57838f..80f15f9a01 100644 --- a/e2e/process-services/start-task-task-app.e2e.ts +++ b/e2e/process-services/start-task-task-app.e2e.ts @@ -96,7 +96,7 @@ describe('Start Task - Task App', () => { taskPage.createNewTask().addName(tasks[0]) .addForm(app.formName).clickStartButton() .then(() => { - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[0]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[0]); taskPage.taskDetails().clickInvolvePeopleButton() .typeUser(assigneeUserModel.firstName + ' ' + assigneeUserModel.lastName) .selectUserToInvolve(assigneeUserModel.firstName + ' ' + assigneeUserModel.lastName) @@ -118,7 +118,7 @@ describe('Start Task - Task App', () => { taskPage.createNewTask().checkStartButtonIsDisabled().addName(tasks[3]) .checkStartButtonIsEnabled().clickCancelButton() .then(() => { - taskPage.tasksListPage().getDataTable().checkContentIsNotDisplayed(tasks[3]); + taskPage.tasksListPage().checkContentIsNotDisplayed(tasks[3]); expect(taskPage.filtersPage().getActiveFilter()).toEqual(CONSTANTS.TASK_FILTERS.MY_TASKS); }); }); @@ -129,11 +129,11 @@ describe('Start Task - Task App', () => { taskPage.createNewTask() .addForm(app.formName).addName(tasks[4]).clickStartButton() .then(() => { - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[4]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[4]); expect(taskPage.formFields().setFieldValue(by.id, formTextField, formFieldValue) .getFieldValue(formTextField)).toEqual(formFieldValue); taskPage.formFields().refreshForm().checkFieldValue(by.id, formTextField, ''); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[4]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[4]); taskPage.formFields().setFieldValue(by.id, formTextField, formFieldValue) .checkFieldValue(by.id, formTextField, formFieldValue); taskPage.formFields().saveForm().checkFieldValue(by.id, formTextField, formFieldValue); @@ -149,7 +149,8 @@ describe('Start Task - Task App', () => { taskPage.tasksListPage().checkTaskListIsLoaded(); taskPage.tasksListPage().getDataTable().waitForTableBody(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.INV_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(tasks[5]).selectRowByContentName(tasks[5]); + taskPage.tasksListPage().checkContentIsDisplayed(tasks[5]); + taskPage.tasksListPage().selectRow(tasks[5]); taskPage.checkTaskTitle(tasks[5]); expect(taskPage.taskDetails().getAssignee()).toEqual(assigneeUserModel.firstName + ' ' + assigneeUserModel.lastName); }); @@ -168,7 +169,7 @@ describe('Start Task - Task App', () => { it('[C260420] Should Information box be hidden when showHeaderContent property is set on false', () => { navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(showHeaderTask); + taskPage.tasksListPage().checkContentIsDisplayed(showHeaderTask); appNavigationBarPage.clickSettingsButton(); taskPage.taskDetails().appSettingsToggles().disableShowHeader(); diff --git a/e2e/process-services/task-attachmentList-actionMenu.e2e.ts b/e2e/process-services/task-attachmentList-actionMenu.e2e.ts index 847d50d7c3..4aa35759e9 100644 --- a/e2e/process-services/task-attachmentList-actionMenu.e2e.ts +++ b/e2e/process-services/task-attachmentList-actionMenu.e2e.ts @@ -132,7 +132,7 @@ describe('Attachment list action menu for tasks', () => { taskPage.completeTaskNoForm(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.COMPLETED_TASKS); - taskPage.tasksListPage().getDataTable().selectRowByContentName(taskName.completed); + taskPage.tasksListPage().selectRow(taskName.completed); attachmentListPage.checkAttachFileButtonIsNotDisplayed(); attachmentListPage.viewFile(pngFile.name); @@ -141,7 +141,7 @@ describe('Attachment list action menu for tasks', () => { viewerPage.clickCloseButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.COMPLETED_TASKS); - taskPage.tasksListPage().getDataTable().selectRowByContentName(taskName.completed); + taskPage.tasksListPage().selectRow(taskName.completed); attachmentListPage.downloadFile(pngFile.name); @@ -194,7 +194,7 @@ describe('Attachment list action menu for tasks', () => { navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().selectRowByContentName('SHARE KNOWLEDGE'); + taskPage.tasksListPage().selectRow('SHARE KNOWLEDGE'); attachmentListPage.checkFileIsAttached(pngFile.name); @@ -205,7 +205,7 @@ describe('Attachment list action menu for tasks', () => { navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().selectRowByContentName('SHARE KNOWLEDGE'); + taskPage.tasksListPage().selectRow('SHARE KNOWLEDGE'); attachmentListPage.checkEmptyAttachmentList(); }); diff --git a/e2e/process-services/task-audit.e2e.ts b/e2e/process-services/task-audit.e2e.ts index 5e83d78c77..10c5879708 100644 --- a/e2e/process-services/task-audit.e2e.ts +++ b/e2e/process-services/task-audit.e2e.ts @@ -16,8 +16,8 @@ */ import { LoginPage } from '../pages/adf/loginPage'; -import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { TasksPage } from '../pages/adf/process-services/tasksPage'; +import { ProcessServicesPage } from '../pages/adf/process-services/processServicesPage'; import CONSTANTS = require('../util/constants'); @@ -32,14 +32,15 @@ import { AppsActions } from '../actions/APS/apps.actions'; import path = require('path'); import { Util } from '../util/util'; +import { browser } from 'protractor'; describe('Task Audit', () => { let loginPage = new LoginPage(); - let navigationBarPage = new NavigationBarPage(); let processUserModel; let app = resources.Files.SIMPLE_APP_WITH_USER_FORM; let taskPage = new TasksPage(); + const processServices = new ProcessServicesPage(); let taskTaskApp = 'Audit task task app'; let taskCustomApp = 'Audit task custom app'; let taskCompleteCustomApp = 'Audit completed task custom app'; @@ -72,23 +73,28 @@ describe('Task Audit', () => { done(); }); + beforeEach(async (done) => { + await browser.get(TestConfig.adf.url + '/activiti'); + done(); + }); + it('[C260386] Should Audit file be downloaded when clicking on Task Audit log icon on a standalone running task', () => { - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); + processServices.goToTaskApp().clickTasksButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(taskTaskApp); + taskPage.tasksListPage().checkContentIsDisplayed(taskTaskApp); taskPage.taskDetails().clickAuditLogButton(); expect(Util.fileExists(auditLogFile, 10)).toBe(true); }); it('[C260389] Should Audit file be downloaded when clicking on Task Audit log icon on a standalone completed task', () => { - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); + processServices.goToTaskApp().clickTasksButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(taskTaskApp); + taskPage.tasksListPage().checkContentIsDisplayed(taskTaskApp); taskPage.completeTaskNoForm(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.COMPLETED_TASKS); - taskPage.tasksListPage().getDataTable().selectRowByContentName(taskTaskApp); + taskPage.tasksListPage().selectRow(taskTaskApp); expect(taskPage.formFields().getCompletedTaskNoFormMessage()).toEqual('Task ' + taskTaskApp + ' completed'); taskPage.taskDetails().clickAuditLogButton(); @@ -96,16 +102,16 @@ describe('Task Audit', () => { }); it('[C263944] Should Audit file be downloaded when clicking on Task Audit log icon on a custom app standalone completed task', () => { - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); + processServices.goToTaskApp().clickTasksButton(); taskPage.createNewTask().addName(taskCompleteCustomApp).clickStartButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(taskCompleteCustomApp); + taskPage.tasksListPage().checkContentIsDisplayed(taskCompleteCustomApp); taskPage.completeTaskNoForm(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.COMPLETED_TASKS); - taskPage.tasksListPage().getDataTable().selectRowByContentName(taskCompleteCustomApp); + taskPage.tasksListPage().selectRow(taskCompleteCustomApp); expect(taskPage.formFields().getCompletedTaskNoFormMessage()).toEqual('Task ' + taskCompleteCustomApp + ' completed'); taskPage.taskDetails().clickAuditLogButton(); @@ -113,12 +119,12 @@ describe('Task Audit', () => { }); it('[C263943] Should Audit file be downloaded when clicking on Task Audit log icon on a custom app standalone running task', () => { - navigationBarPage.navigateToProcessServicesPage().goToApp(appModel.name).clickTasksButton(); + processServices.goToApp(appModel.name).clickTasksButton(); taskPage.createNewTask().addName(taskCustomApp).clickStartButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(taskCustomApp); + taskPage.tasksListPage().checkContentIsDisplayed(taskCustomApp); taskPage.taskDetails().clickAuditLogButton(); expect(Util.fileExists(auditLogFile, 10)).toBe(true); diff --git a/e2e/process-services/task-details-form.e2e.ts b/e2e/process-services/task-details-form.e2e.ts index df7e863d5e..1c57495e29 100644 --- a/e2e/process-services/task-details-form.e2e.ts +++ b/e2e/process-services/task-details-form.e2e.ts @@ -101,7 +101,7 @@ describe('Task Details - Form', () => { }); it('[C280018] Should be able to change the form in a task', () => { - tasksListPage.getDataTable().selectRowByContentName(task.name); + tasksListPage.selectRow(task.name); taskDetailsPage.checkEditFormButtonIsDisplayed(); taskDetailsPage.clickEditFormButton(); @@ -135,7 +135,7 @@ describe('Task Details - Form', () => { }); it('[C280019] Should be able to remove the form form a task', () => { - tasksListPage.getDataTable().selectRowByContentName(task.name); + tasksListPage.selectRow(task.name); taskDetailsPage.checkEditFormButtonIsDisplayed(); taskDetailsPage.clickEditFormButton(); @@ -149,14 +149,14 @@ describe('Task Details - Form', () => { }); it('[C280557] Should display task details when selecting another task while the Attach Form dialog is displayed', () => { - tasksListPage.getDataTable().selectRowByContentName(task.name); + tasksListPage.selectRow(task.name); taskDetailsPage.checkEditFormButtonIsDisplayed(); taskDetailsPage.clickEditFormButton(); taskDetailsPage.checkRemoveAttachFormIsDisplayed(); - tasksListPage.getDataTable().selectRowByContentName(otherTask.name); + tasksListPage.selectRow(otherTask.name); taskDetailsPage.checkFormIsAttached(otherAttachedForm.name); }); }); diff --git a/e2e/process-services/task-details-no-form.e2e.ts b/e2e/process-services/task-details-no-form.e2e.ts index ec8d38e1b5..3b13d1dbab 100644 --- a/e2e/process-services/task-details-no-form.e2e.ts +++ b/e2e/process-services/task-details-no-form.e2e.ts @@ -70,8 +70,8 @@ describe('Task Details - No form', () => { navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(app.taskName); - taskPage.tasksListPage().getDataTable().selectRowByContentName(app.taskName); + taskPage.tasksListPage().checkContentIsDisplayed(app.taskName); + taskPage.tasksListPage().selectRow(app.taskName); taskPage.taskDetails().noFormIsDisplayed(); taskPage.taskDetails().checkCompleteTaskButtonIsDisplayed().checkCompleteTaskButtonIsEnabled(); taskPage.taskDetails().checkAttachFormButtonIsNotDisplayed(); diff --git a/e2e/process-services/task-details.e2e.ts b/e2e/process-services/task-details.e2e.ts index d79a5d97a8..9dc418c4cc 100644 --- a/e2e/process-services/task-details.e2e.ts +++ b/e2e/process-services/task-details.e2e.ts @@ -24,18 +24,19 @@ import Task = require('../models/APS/Task'); import TaskModel = require('../models/APS/TaskModel'); import FormModel = require('../models/APS/FormModel'); import { AppsActions } from '../actions/APS/apps.actions'; +import { ProcessServicesPage } from '../pages/adf/process-services/processServicesPage'; import resources = require('../util/resources'); import CONSTANTS = require('../util/constants'); import dateFormat = require('dateformat'); import { LoginPage } from '../pages/adf/loginPage'; -import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { TasksPage } from '../pages/adf/process-services/tasksPage'; import { browser } from 'protractor'; describe('Task Details component', () => { + const processServices = new ProcessServicesPage(); let processUserModel, appModel; let app = resources.Files.SIMPLE_APP_WITH_USER_FORM; let tasks = ['Modifying task', 'Information box', 'No form', 'Not Created', 'Refreshing form', 'Assignee task', 'Attach File']; @@ -45,7 +46,6 @@ describe('Task Details component', () => { let loginPage = new LoginPage(); let taskPage = new TasksPage(); - let navigationBarPage = new NavigationBarPage(); beforeAll(async (done) => { let users = new UsersActions(); @@ -71,8 +71,13 @@ describe('Task Details component', () => { done(); }); + beforeEach(async (done) => { + await browser.get(TestConfig.adf.url + '/activiti'); + done(); + }); + it('[C260506] Should display task details for standalone task - Task App', async () => { - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); + processServices.goToTaskApp().clickTasksButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); taskPage.createNewTask().addName(tasks[1]).addDescription('Description') .addForm(app.formName).clickStartButton(); @@ -83,7 +88,7 @@ describe('Task Details component', () => { }); let taskModel = new TaskModel(allTasks.data[0]); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(taskModel.getName()); + taskPage.tasksListPage().checkContentIsDisplayed(taskModel.getName()); expect(taskPage.taskDetails().getCreated()).toEqual(dateFormat(taskModel.getCreated(), TASK_DATA_FORMAT)); expect(taskPage.taskDetails().getId()).toEqual(taskModel.getId()); expect(taskPage.taskDetails().getDescription()) @@ -114,7 +119,7 @@ describe('Task Details component', () => { }); it('[C263946] Should display task details for standalone task - Custom App', async () => { - navigationBarPage.navigateToProcessServicesPage().goToApp(appModel.name).clickTasksButton(); + processServices.goToApp(appModel.name).clickTasksButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); taskPage.createNewTask().addName(tasks[1]).addDescription('Description') .addForm(app.formName).clickStartButton(); @@ -125,7 +130,7 @@ describe('Task Details component', () => { }); let taskModel = new TaskModel(allTasks.data[0]); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(taskModel.getName()); + taskPage.tasksListPage().checkContentIsDisplayed(taskModel.getName()); expect(taskPage.taskDetails().getCreated()).toEqual(dateFormat(taskModel.getCreated(), TASK_DATA_FORMAT)); expect(taskPage.taskDetails().getId()).toEqual(taskModel.getId()); @@ -161,7 +166,7 @@ describe('Task Details component', () => { await apps.startProcess(this.alfrescoJsApi, appModel); }); - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); + processServices.goToTaskApp().clickTasksButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); expect(taskPage.taskDetails().getTitle()).toEqual('Activities'); @@ -172,7 +177,7 @@ describe('Task Details component', () => { let taskModel = new TaskModel(allTasks.data[0]); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(taskModel.getName()); + taskPage.tasksListPage().checkContentIsDisplayed(taskModel.getName()); expect(taskPage.taskDetails().getCreated()).toEqual(dateFormat(taskModel.getCreated(), TASK_DATA_FORMAT)); expect(taskPage.taskDetails().getId()).toEqual(taskModel.getId()); expect(taskPage.taskDetails().getDescription()) @@ -207,7 +212,7 @@ describe('Task Details component', () => { await apps.startProcess(this.alfrescoJsApi, appModel); }); - navigationBarPage.navigateToProcessServicesPage().goToApp(appModel.name).clickTasksButton(); + processServices.goToApp(appModel.name).clickTasksButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); expect(taskPage.taskDetails().getTitle()).toEqual('Activities'); @@ -218,7 +223,7 @@ describe('Task Details component', () => { let taskModel = new TaskModel(allTasks.data[0]); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(taskModel.getName()); + taskPage.tasksListPage().checkContentIsDisplayed(taskModel.getName()); expect(taskPage.taskDetails().getCreated()).toEqual(dateFormat(taskModel.getCreated(), TASK_DATA_FORMAT)); expect(taskPage.taskDetails().getId()).toEqual(taskModel.getId()); expect(taskPage.taskDetails().getDescription()) @@ -255,14 +260,16 @@ describe('Task Details component', () => { await this.alfrescoJsApi.activiti.taskApi.createNewTask({'name': taskName}); }); - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); + processServices.goToTaskApp().clickTasksButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(taskName).selectRowByContentName(taskName); + taskPage.tasksListPage().checkContentIsDisplayed(taskName); + taskPage.tasksListPage().selectRow(taskName); taskPage.clickOnAddChecklistButton().addName(checklistName).clickCreateChecklistButton(); taskPage.checkChecklistIsDisplayed(checklistName); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(checklistName).selectRowByContentName(checklistName); + taskPage.tasksListPage().checkContentIsDisplayed(checklistName); + taskPage.tasksListPage().selectRow(checklistName); let allTasks = await browser.controlFlow().execute(async () => { return this.alfrescoJsApi.activiti.taskApi.listTasks(new Task({ sort: 'created-desc' })); @@ -270,7 +277,7 @@ describe('Task Details component', () => { let checklistTask = new TaskModel(allTasks.data[0]); let taskModel = new TaskModel(allTasks.data[0]); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(checklistTask.getName()); + taskPage.tasksListPage().checkContentIsDisplayed(checklistTask.getName()); expect(taskPage.taskDetails().getCreated()).toEqual(dateFormat(checklistTask.getCreated(), TASK_DATA_FORMAT)); expect(taskPage.taskDetails().getId()).toEqual(checklistTask.getId()); expect(taskPage.taskDetails().getDescription()) @@ -298,7 +305,7 @@ describe('Task Details component', () => { await apps.startProcess(this.alfrescoJsApi, appModel); }); - navigationBarPage.navigateToProcessServicesPage().goToApp(appModel.name).clickTasksButton(); + processServices.goToApp(appModel.name).clickTasksButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); expect(taskPage.taskDetails().getTitle()).toEqual('Activities'); @@ -306,7 +313,8 @@ describe('Task Details component', () => { taskPage.clickOnAddChecklistButton().addName(checklistName).clickCreateChecklistButton(); taskPage.checkChecklistIsDisplayed(checklistName); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(checklistName).selectRowByContentName(checklistName); + taskPage.tasksListPage().checkContentIsDisplayed(checklistName); + taskPage.tasksListPage().selectRow(checklistName); let allTasks = await browser.controlFlow().execute(async () => { return this.alfrescoJsApi.activiti.taskApi.listTasks(new Task({ sort: 'created-desc' })); @@ -314,7 +322,7 @@ describe('Task Details component', () => { let checklistTask = new TaskModel(allTasks.data[0]); let taskModel = new TaskModel(allTasks.data[0]); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(checklistTask.getName()); + taskPage.tasksListPage().checkContentIsDisplayed(checklistTask.getName()); expect(taskPage.taskDetails().getCreated()).toEqual(dateFormat(checklistTask.getCreated(), TASK_DATA_FORMAT)); expect(taskPage.taskDetails().getId()).toEqual(checklistTask.getId()); expect(taskPage.taskDetails().getDescription()) @@ -341,20 +349,20 @@ describe('Task Details component', () => { return this.alfrescoJsApi.activiti.taskApi.createNewTask({'name': taskName}); }); - navigationBarPage.navigateToProcessServicesPage().goToTaskApp().clickTasksButton(); + processServices.goToTaskApp().clickTasksButton(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(taskName).selectRowByContentName(taskName); + taskPage.tasksListPage().checkContentIsDisplayed(taskName).selectRow('Name', taskName); taskPage.completeTaskNoForm(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.COMPLETED_TASKS); - taskPage.tasksListPage().getDataTable().selectRowByContentName(taskName); + taskPage.tasksListPage().selectRow(taskName); let getTaskResponse = await browser.controlFlow().execute(async () => { return this.alfrescoJsApi.activiti.taskApi.getTask(taskId.id); }); let completedTask = new TaskModel(getTaskResponse); - taskPage.tasksListPage().getDataTable().checkContentIsDisplayed(completedTask.getName()); + taskPage.tasksListPage().checkContentIsDisplayed(completedTask.getName()); expect(taskPage.taskDetails().getCreated()).toEqual(dateFormat(completedTask.getCreated(), TASK_DATA_FORMAT)); expect(taskPage.taskDetails().getId()).toEqual(completedTask.getId()); expect(taskPage.taskDetails().getDescription()) diff --git a/e2e/process-services/task-filters-component.e2e.ts b/e2e/process-services/task-filters-component.e2e.ts index 6740130fef..639c89b02c 100644 --- a/e2e/process-services/task-filters-component.e2e.ts +++ b/e2e/process-services/task-filters-component.e2e.ts @@ -106,23 +106,23 @@ describe('Task', () => { it('[C260330] Should display Task Filter List when app is in Task Tab', () => { tasksPage.createNewTask().addName('Test').clickStartButton(); taskFiltersDemoPage.myTasksFilter().clickTaskFilter(); - tasksListPage.getDataTable().checkContentIsDisplayed('Test'); + tasksListPage.checkContentIsDisplayed('Test'); expect(taskFiltersDemoPage.checkActiveFilterActive()).toBe('My Tasks'); expect(taskDetailsPage.checkTaskDetailsDisplayed()).toBeDefined(); taskFiltersDemoPage.queuedTasksFilter().clickTaskFilter(); expect(taskFiltersDemoPage.checkActiveFilterActive()).toBe('Queued Tasks'); - tasksListPage.getDataTable().checkContentIsNotDisplayed('Test'); + tasksListPage.checkContentIsNotDisplayed('Test'); expect(taskDetailsPage.checkTaskDetailsEmpty()).toBeDefined(); taskFiltersDemoPage.involvedTasksFilter().clickTaskFilter(); expect(taskFiltersDemoPage.checkActiveFilterActive()).toBe('Involved Tasks'); - tasksListPage.getDataTable().checkContentIsDisplayed('Test'); + tasksListPage.checkContentIsDisplayed('Test'); expect(taskDetailsPage.checkTaskDetailsDisplayed()).toBeDefined(); taskFiltersDemoPage.completedTasksFilter().clickTaskFilter(); expect(taskFiltersDemoPage.checkActiveFilterActive()).toBe('Completed Tasks'); - tasksListPage.getDataTable().checkContentIsNotDisplayed('Test'); + tasksListPage.checkContentIsNotDisplayed('Test'); expect(taskDetailsPage.checkTaskDetailsEmpty()).toBeDefined(); }); @@ -139,7 +139,7 @@ describe('Task', () => { tasksPage.createNewTask().addName('Test').clickStartButton(); taskFiltersDemoPage.myTasksFilter().clickTaskFilter(); - tasksListPage.getDataTable().checkContentIsDisplayed('Test'); + tasksListPage.checkContentIsDisplayed('Test'); expect(taskFiltersDemoPage.checkActiveFilterActive()).toBe('My Tasks'); expect(taskDetailsPage.checkTaskDetailsDisplayed()).toBeDefined(); @@ -150,7 +150,7 @@ describe('Task', () => { taskFiltersDemoPage.involvedTasksFilter().clickTaskFilter(); expect(taskFiltersDemoPage.checkActiveFilterActive()).toBe('Involved Tasks'); - tasksListPage.getDataTable().checkContentIsDisplayed('Test'); + tasksListPage.checkContentIsDisplayed('Test'); expect(taskDetailsPage.checkTaskDetailsDisplayed()).toBeDefined(); taskFiltersDemoPage.completedTasksFilter().clickTaskFilter(); @@ -167,9 +167,9 @@ describe('Task', () => { tasksPage.createNewTask().addName('Test3').clickStartButton(); tasksPage.createNewTask().addName('Test4').clickStartButton(); - tasksListPage.getDataTable().checkContentIsDisplayed('Test4'); - tasksListPage.getDataTable().checkRowIsSelected('Test4'); - tasksListPage.getDataTable().checkContentIsDisplayed('Test3'); + tasksListPage.checkContentIsDisplayed('Test4'); + tasksListPage.checkRowIsSelected('Test4'); + tasksListPage.checkContentIsDisplayed('Test3'); taskDetailsPage.checkTaskDetailsDisplayed(); tasksPage.clickSortByNameAsc(); @@ -178,23 +178,23 @@ describe('Task', () => { expect(tasksListPage.getDataTable().contentInPosition(1)).toBe('Test4'); taskFiltersDemoPage.completedTasksFilter().clickTaskFilter(); - tasksListPage.getDataTable().checkContentIsDisplayed('Test1'); - tasksListPage.getDataTable().checkContentIsDisplayed('Test2'); + tasksListPage.checkContentIsDisplayed('Test1'); + tasksListPage.checkContentIsDisplayed('Test2'); expect(tasksListPage.getDataTable().contentInPosition(1)).toBe('Test2'); tasksPage.clickSortByNameAsc(); expect(tasksListPage.getDataTable().contentInPosition(1)).toBe('Test1'); taskFiltersDemoPage.involvedTasksFilter().clickTaskFilter(); - tasksListPage.getDataTable().checkContentIsDisplayed('Test3'); - tasksListPage.getDataTable().checkContentIsDisplayed('Test4'); + tasksListPage.checkContentIsDisplayed('Test3'); + tasksListPage.checkContentIsDisplayed('Test4'); }); it('[C277264] Should display task filter results when task filter is selected', () => { tasksPage.createNewTask().addName('Test').clickStartButton(); taskFiltersDemoPage.myTasksFilter().clickTaskFilter(); - tasksListPage.getDataTable().checkContentIsDisplayed('Test'); + tasksListPage.checkContentIsDisplayed('Test'); expect(taskDetailsPage.getTaskDetailsTitle()).toBe('Test'); }); }); diff --git a/e2e/process-services/task-list-pagination.e2e.ts b/e2e/process-services/task-list-pagination.e2e.ts index 5527bfbefe..7cb929de01 100644 --- a/e2e/process-services/task-list-pagination.e2e.ts +++ b/e2e/process-services/task-list-pagination.e2e.ts @@ -83,7 +83,7 @@ describe('Task List Pagination', () => { navigationBarPage.navigateToProcessServicesPage().goToTaskApp(); expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.default); expect(paginationPage.getPaginationRange()).toEqual('Showing 1-' + nrOfTasks + ' of ' + nrOfTasks); - expect(taskPage.tasksListPage().getDataTable().getNumberOfRows()).toBe(nrOfTasks); + expect(taskPage.tasksListPage().getDataTable().numberOfRows()).toBe(nrOfTasks); paginationPage.checkNextPageButtonIsDisabled(); paginationPage.checkPreviousPageButtonIsDisabled(); paginationPage.selectItemsPerPage(itemsPerPage.twenty); @@ -97,22 +97,22 @@ describe('Task List Pagination', () => { paginationPage.selectItemsPerPage(itemsPerPage.five); expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.five); expect(paginationPage.getPaginationRange()).toEqual('Showing 1-' + itemsPerPage.fiveValue + ' of ' + nrOfTasks); - expect(taskPage.tasksListPage().getDataTable().getNumberOfRows()).toBe(itemsPerPage.fiveValue); + expect(taskPage.tasksListPage().getDataTable().numberOfRows()).toBe(itemsPerPage.fiveValue); paginationPage.clickOnNextPage(); currentPage++; expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.five); expect(paginationPage.getPaginationRange()).toEqual('Showing 6-' + itemsPerPage.fiveValue * currentPage + ' of ' + nrOfTasks); - expect(taskPage.tasksListPage().getDataTable().getNumberOfRows()).toBe(itemsPerPage.fiveValue); + expect(taskPage.tasksListPage().getDataTable().numberOfRows()).toBe(itemsPerPage.fiveValue); paginationPage.clickOnNextPage(); currentPage++; expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.five); expect(paginationPage.getPaginationRange()).toEqual('Showing 11-' + itemsPerPage.fiveValue * currentPage + ' of ' + nrOfTasks); - expect(taskPage.tasksListPage().getDataTable().getNumberOfRows()).toBe(itemsPerPage.fiveValue); + expect(taskPage.tasksListPage().getDataTable().numberOfRows()).toBe(itemsPerPage.fiveValue); paginationPage.clickOnNextPage(); currentPage++; expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.five); expect(paginationPage.getPaginationRange()).toEqual('Showing 16-' + itemsPerPage.fiveValue * currentPage + ' of ' + nrOfTasks); - expect(taskPage.tasksListPage().getDataTable().getNumberOfRows()).toBe(itemsPerPage.fiveValue); + expect(taskPage.tasksListPage().getDataTable().numberOfRows()).toBe(itemsPerPage.fiveValue); navigationBarPage.navigateToProcessServicesPage().goToTaskApp(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.INV_TASKS); @@ -125,11 +125,11 @@ describe('Task List Pagination', () => { paginationPage.selectItemsPerPage(itemsPerPage.ten); expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.ten); expect(paginationPage.getPaginationRange()).toEqual('Showing 1-' + itemsPerPage.tenValue + ' of ' + nrOfTasks); - expect(taskPage.tasksListPage().getDataTable().getNumberOfRows()).toBe(itemsPerPage.tenValue); + expect(taskPage.tasksListPage().getDataTable().numberOfRows()).toBe(itemsPerPage.tenValue); paginationPage.clickOnNextPage(); expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.ten); expect(paginationPage.getPaginationRange()).toEqual('Showing 11-' + itemsPerPage.twentyValue + ' of ' + nrOfTasks); - expect(taskPage.tasksListPage().getDataTable().getNumberOfRows()).toBe(itemsPerPage.tenValue); + expect(taskPage.tasksListPage().getDataTable().numberOfRows()).toBe(itemsPerPage.tenValue); navigationBarPage.navigateToProcessServicesPage().goToTaskApp(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.INV_TASKS); @@ -142,11 +142,11 @@ describe('Task List Pagination', () => { paginationPage.selectItemsPerPage(itemsPerPage.fifteen); expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.fifteen); expect(paginationPage.getPaginationRange()).toEqual('Showing 1-' + itemsPerPage.fifteenValue + ' of ' + nrOfTasks); - expect(taskPage.tasksListPage().getDataTable().getNumberOfRows()).toBe(itemsPerPage.fifteenValue); + expect(taskPage.tasksListPage().getDataTable().numberOfRows()).toBe(itemsPerPage.fifteenValue); paginationPage.clickOnNextPage(); expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.fifteen); expect(paginationPage.getPaginationRange()).toEqual('Showing 16-' + itemsPerPage.twentyValue + ' of ' + nrOfTasks); - expect(taskPage.tasksListPage().getDataTable().getNumberOfRows()).toBe(itemsPerPage.fiveValue); + expect(taskPage.tasksListPage().getDataTable().numberOfRows()).toBe(itemsPerPage.fiveValue); navigationBarPage.navigateToProcessServicesPage().goToTaskApp(); taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.INV_TASKS); @@ -165,7 +165,7 @@ describe('Task List Pagination', () => { expect(paginationPage.getTotalPages()).toEqual('of ' + totalPages); expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.ten); expect(paginationPage.getPaginationRange()).toEqual('Showing 1-' + itemsPerPage.tenValue * currentPage + ' of ' + nrOfTasks); - expect(taskPage.tasksListPage().getDataTable().getNumberOfRows()).toBe(itemsPerPage.tenValue); + expect(taskPage.tasksListPage().getDataTable().numberOfRows()).toBe(itemsPerPage.tenValue); paginationPage.checkNextPageButtonIsEnabled(); paginationPage.checkPreviousPageButtonIsDisabled(); @@ -178,7 +178,7 @@ describe('Task List Pagination', () => { expect(paginationPage.getTotalPages()).toEqual('of ' + totalPages); expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.ten); expect(paginationPage.getPaginationRange()).toEqual('Showing 11-' + itemsPerPage.tenValue * currentPage + ' of ' + nrOfTasks); - expect(taskPage.tasksListPage().getDataTable().getNumberOfRows()).toBe(itemsPerPage.tenValue); + expect(taskPage.tasksListPage().getDataTable().numberOfRows()).toBe(itemsPerPage.tenValue); paginationPage.checkNextPageButtonIsDisabled(); paginationPage.checkPreviousPageButtonIsEnabled(); @@ -191,7 +191,7 @@ describe('Task List Pagination', () => { expect(paginationPage.getTotalPages()).toEqual('of ' + totalPages); expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.ten); expect(paginationPage.getPaginationRange()).toEqual('Showing 1-' + itemsPerPage.tenValue * currentPage + ' of ' + nrOfTasks); - expect(taskPage.tasksListPage().getDataTable().getNumberOfRows()).toBe(itemsPerPage.tenValue); + expect(taskPage.tasksListPage().getDataTable().numberOfRows()).toBe(itemsPerPage.tenValue); paginationPage.checkNextPageButtonIsEnabled(); paginationPage.checkPreviousPageButtonIsDisabled(); }); diff --git a/e2e/search/components/search-checkList.e2e.ts b/e2e/search/components/search-checkList.e2e.ts index 73d1aa7259..d99db09ac2 100644 --- a/e2e/search/components/search-checkList.e2e.ts +++ b/e2e/search/components/search-checkList.e2e.ts @@ -16,8 +16,8 @@ */ import { LoginPage } from '../../pages/adf/loginPage'; +import { SearchResultsPage } from '../../pages/adf/searchResultsPage'; import { SearchFiltersPage } from '../../pages/adf/searchFiltersPage'; -import { ContentListPage } from '../../pages/adf/dialog/contentListPage'; import { ConfigEditorPage } from '../../pages/adf/configEditorPage'; import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; import { SearchDialog } from '../../pages/adf/dialog/searchDialog'; @@ -33,14 +33,14 @@ import { UploadActions } from '../../actions/ACS/upload.actions'; import { browser } from 'protractor'; import { Util } from '../../util/util'; -describe('Search Radio Component', () => { +describe('Search Checklist Component', () => { const loginPage = new LoginPage(); const searchFiltersPage = new SearchFiltersPage(); - const contentList = new ContentListPage(); const configEditorPage = new ConfigEditorPage(); const navigationBarPage = new NavigationBarPage(); const searchDialog = new SearchDialog(); + const searchResults = new SearchResultsPage(); let acsUser = new AcsUserModel(); let uploadActions = new UploadActions(); @@ -54,7 +54,7 @@ describe('Search Radio Component', () => { let randomName = Util.generateRandomString(); let nodeNames = { document: `${randomName}.txt`, - folder: randomName + folder: `${randomName}Folder` }; let createdFile, createdFolder; @@ -79,7 +79,7 @@ describe('Search Radio Component', () => { loginPage.loginToContentServicesUsingUserModel(acsUser); - browser.get(TestConfig.adf.url + '/search;q=' + nodeNames.folder + ''); + browser.get(TestConfig.adf.url + '/search;q=' + randomName + ''); done(); }); @@ -106,29 +106,29 @@ describe('Search Radio Component', () => { searchFiltersPage.checkListFiltersPage().clickCheckListOption(filterType.folder); searchFiltersPage.checkListFiltersPage().checkCheckListOptionIsSelected(filterType.folder); - contentList.checkContentIsDisplayed(nodeNames.folder); - contentList.checkContentIsNotDisplayed(nodeNames.document); + searchResults.checkContentIsDisplayed(nodeNames.folder); + searchResults.checkContentIsNotDisplayed(nodeNames.document); searchFiltersPage.checkListFiltersPage().clickClearAllButton(); searchFiltersPage.checkListFiltersPage().checkCheckListOptionIsNotSelected(filterType.folder); - contentList.checkContentIsDisplayed(nodeNames.folder); - contentList.checkContentIsDisplayed(nodeNames.document); + searchResults.checkContentIsDisplayed(nodeNames.folder); + searchResults.checkContentIsDisplayed(nodeNames.document); searchFiltersPage.checkListFiltersPage().clickCheckListOption(filterType.folder); searchFiltersPage.checkListFiltersPage().clickCheckListOption(filterType.document); searchFiltersPage.checkListFiltersPage().checkCheckListOptionIsSelected(filterType.folder); searchFiltersPage.checkListFiltersPage().checkCheckListOptionIsSelected(filterType.document); - contentList.checkContentIsDisplayed(nodeNames.folder); - contentList.checkContentIsDisplayed(nodeNames.document); + searchResults.checkContentIsDisplayed(nodeNames.folder); + searchResults.checkContentIsDisplayed(nodeNames.document); searchFiltersPage.checkListFiltersPage().clickCheckListOption(filterType.folder); searchFiltersPage.checkListFiltersPage().checkCheckListOptionIsSelected(filterType.document); searchFiltersPage.checkListFiltersPage().checkCheckListOptionIsNotSelected(filterType.folder); - contentList.checkContentIsDisplayed(nodeNames.document); - contentList.checkContentIsNotDisplayed(nodeNames.folder); + searchResults.checkContentIsDisplayed(nodeNames.document); + searchResults.checkContentIsNotDisplayed(nodeNames.folder); }); describe('configuration change', () => { @@ -151,7 +151,7 @@ describe('Search Radio Component', () => { configEditorPage.enterBigConfigurationText(JSON.stringify(jsonFile)); configEditorPage.clickSaveButton(); - searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(nodeNames.folder); + searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(randomName); searchFiltersPage.clickCheckListFilter(); expect(searchFiltersPage.checkListFiltersPage().getCheckListOptionsNumberOnPage()).toBe(5); @@ -190,7 +190,7 @@ describe('Search Radio Component', () => { configEditorPage.enterBigConfigurationText(JSON.stringify(jsonFile)); configEditorPage.clickSaveButton(); - searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(nodeNames.folder); + searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(randomName); searchFiltersPage.clickCheckListFilter(); expect(searchFiltersPage.checkListFiltersPage().getCheckListOptionsNumberOnPage()).toBe(10); @@ -208,7 +208,7 @@ describe('Search Radio Component', () => { configEditorPage.enterBigConfigurationText(JSON.stringify(jsonFile)); configEditorPage.clickSaveButton(); - searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(nodeNames.folder); + searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(randomName); searchFiltersPage.clickCheckListFilter(); expect(searchFiltersPage.checkListFiltersPage().getCheckListOptionsNumberOnPage()).toBe(10); @@ -226,7 +226,7 @@ describe('Search Radio Component', () => { configEditorPage.enterBigConfigurationText(JSON.stringify(jsonFile)); configEditorPage.clickSaveButton(); - searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(nodeNames.folder); + searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(randomName); searchFiltersPage.clickCheckListFilter(); expect(searchFiltersPage.checkListFiltersPage().getCheckListOptionsNumberOnPage()).toBe(9); @@ -250,7 +250,7 @@ describe('Search Radio Component', () => { configEditorPage.enterBigConfigurationText(JSON.stringify(jsonFile)); configEditorPage.clickSaveButton(); - searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(nodeNames.folder); + searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(randomName); searchFiltersPage.clickCheckListFilter(); expect(searchFiltersPage.checkListFiltersPage().getCheckListOptionsNumberOnPage()).toBe(5); @@ -276,7 +276,7 @@ describe('Search Radio Component', () => { configEditorPage.enterBigConfigurationText(JSON.stringify(jsonFile)); configEditorPage.clickSaveButton(); - searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(nodeNames.folder); + searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(randomName); searchFiltersPage.clickCheckListFilter(); expect(searchFiltersPage.checkListFiltersPage().getCheckListOptionsNumberOnPage()).toBe(5); @@ -319,19 +319,19 @@ describe('Search Radio Component', () => { configEditorPage.enterBigConfigurationText(JSON.stringify(jsonFile)); configEditorPage.clickSaveButton(); - searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(nodeNames.folder); + searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(randomName); searchFiltersPage.clickCheckListFilter(); searchFiltersPage.checkListFiltersPage().clickCheckListOption(filterType.folder); searchFiltersPage.checkListFiltersPage().checkCheckListOptionIsSelected(filterType.folder); - contentList.checkContentIsDisplayed(nodeNames.folder); - contentList.checkContentIsNotDisplayed(nodeNames.document); + searchResults.checkContentIsDisplayed(nodeNames.folder); + searchResults.checkContentIsNotDisplayed(nodeNames.document); searchFiltersPage.checkListFiltersPage().clickCheckListOption(filterType.document); - contentList.checkContentIsNotDisplayed(nodeNames.folder); - contentList.checkContentIsNotDisplayed(nodeNames.document); + searchResults.checkContentIsNotDisplayed(nodeNames.folder); + searchResults.checkContentIsNotDisplayed(nodeNames.document); browser.refresh(); }); @@ -346,7 +346,7 @@ describe('Search Radio Component', () => { configEditorPage.enterBigConfigurationText(JSON.stringify(jsonFile)); configEditorPage.clickSaveButton(); - searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(nodeNames.folder); + searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(randomName); searchFiltersPage.clickCheckListFilter(); searchFiltersPage.checkListFiltersPage().checkCheckListOptionIsDisplayed(filterType.folder); @@ -355,14 +355,14 @@ describe('Search Radio Component', () => { searchFiltersPage.checkListFiltersPage().clickCheckListOption(filterType.custom); - contentList.checkContentIsNotDisplayed(nodeNames.folder); - contentList.checkContentIsNotDisplayed(nodeNames.document); + searchResults.checkContentIsNotDisplayed(nodeNames.folder); + searchResults.checkContentIsNotDisplayed(nodeNames.document); searchFiltersPage.checkListFiltersPage().clickCheckListOption(filterType.document); searchFiltersPage.checkListFiltersPage().clickCheckListOption(filterType.folder); - contentList.checkContentIsDisplayed(nodeNames.folder); - contentList.checkContentIsDisplayed(nodeNames.document); + searchResults.checkContentIsDisplayed(nodeNames.folder); + searchResults.checkContentIsDisplayed(nodeNames.document); }); }); diff --git a/e2e/search/components/search-date-range.e2e.ts b/e2e/search/components/search-date-range.e2e.ts index cafdba6145..dc4c346a2d 100644 --- a/e2e/search/components/search-date-range.e2e.ts +++ b/e2e/search/components/search-date-range.e2e.ts @@ -17,7 +17,7 @@ import { LoginPage } from '../../pages/adf/loginPage'; import { SearchDialog } from '../../pages/adf/dialog/searchDialog'; -import { DataTablePage } from '../../pages/adf/dataTablePage'; +import { DataTableComponentPage } from '../../pages/adf/dataTableComponentPage'; import { SearchResultsPage } from '../../pages/adf/searchResultsPage'; import { DatePickerPage } from '../../pages/adf/material/datePickerPage'; import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; @@ -41,7 +41,7 @@ describe('Search Date Range Filter', () => { let datePicker = new DatePickerPage(); let navigationBar = new NavigationBarPage(); let configEditor = new ConfigEditorPage(); - let dataTable = new DataTablePage(); + let dataTable = new DataTableComponentPage(); beforeAll(async (done) => { @@ -137,7 +137,7 @@ describe('Search Date Range Filter', () => { searchResults.sortByCreated(true); browser.controlFlow().execute(async () => { - let firstResult = await dataTable.getNodeIdFirstElement(); + let firstResult = await dataTable.getFirstElementDetail('Node id'); await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); await this.alfrescoJsApi.core.nodesApi.getNode(firstResult).then(async (node) => { let nodeCreation = new Date(node.entry.createdAt); @@ -149,7 +149,7 @@ describe('Search Date Range Filter', () => { searchResults.sortByCreated(false); browser.controlFlow().execute(async () => { - let firstResult = await dataTable.getNodeIdFirstElement(); + let firstResult = await dataTable.getFirstElementDetail('Node id'); await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); await this.alfrescoJsApi.core.nodesApi.getNode(firstResult).then(async (node) => { let nodeCreation = new Date(node.entry.createdAt); diff --git a/e2e/search/components/search-number-range.e2e.ts b/e2e/search/components/search-number-range.e2e.ts index 4f67ae33d5..d68c3d9a6f 100644 --- a/e2e/search/components/search-number-range.e2e.ts +++ b/e2e/search/components/search-number-range.e2e.ts @@ -17,7 +17,7 @@ import { LoginPage } from '../../pages/adf/loginPage'; import { SearchDialog } from '../../pages/adf/dialog/searchDialog'; -import { DataTablePage } from '../../pages/adf/dataTablePage'; +import { DataTableComponentPage } from '../../pages/adf/dataTableComponentPage'; import { SearchResultsPage } from '../../pages/adf/searchResultsPage'; import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; import { ConfigEditorPage } from '../../pages/adf/configEditorPage'; @@ -42,7 +42,7 @@ describe('Search Number Range Filter', () => { const searchResults = new SearchResultsPage(); const navigationBar = new NavigationBarPage(); const configEditor = new ConfigEditorPage(); - const dataTable = new DataTablePage(); + const dataTable = new DataTableComponentPage(); const acsUser = new AcsUserModel(); @@ -171,7 +171,7 @@ describe('Search Number Range Filter', () => { searchResults.sortBySize(false); browser.controlFlow().execute(async () => { - let firstResult = await dataTable.getNodeIdFirstElement(); + let firstResult = await dataTable.getFirstElementDetail('Node id'); await this.alfrescoJsApi.core.nodesApi.getNode(firstResult).then(async (node) => { await expect(node.entry.content.sizeInBytes <= toSize).toBe(true); }); @@ -196,7 +196,7 @@ describe('Search Number Range Filter', () => { searchResults.sortBySize(false); browser.controlFlow().execute(async () => { - let firstResult = await dataTable.getNodeIdFirstElement(); + let firstResult = await dataTable.getFirstElementDetail('Node id'); await this.alfrescoJsApi.core.nodesApi.getNode(firstResult).then(async (node) => { await expect(node.entry.content.sizeInBytes <= toSize).toBe(true); }); @@ -208,7 +208,7 @@ describe('Search Number Range Filter', () => { searchResults.sortBySize(false); browser.controlFlow().execute(async () => { - let firstResult = await dataTable.getNodeIdFirstElement(); + let firstResult = await dataTable.getFirstElementDetail('Node id'); await this.alfrescoJsApi.core.nodesApi.getNode(firstResult).then(async (node) => { await expect(node.entry.content.sizeInBytes <= toSize).toBe(true); let name = node.entry.name; @@ -237,7 +237,7 @@ describe('Search Number Range Filter', () => { searchResults.tableIsLoaded(); browser.controlFlow().execute(async () => { - let firstResult = await dataTable.getNodeIdFirstElement(); + let firstResult = await dataTable.getFirstElementDetail('Node id'); await this.alfrescoJsApi.core.nodesApi.getNode(firstResult).then(async (node) => { await expect(node.entry.content.sizeInBytes <= sliderSize).toBe(true); }); @@ -252,7 +252,7 @@ describe('Search Number Range Filter', () => { searchResults.tableIsLoaded(); browser.controlFlow().execute(async () => { - let firstResult = await dataTable.getNodeIdFirstElement(); + let firstResult = await dataTable.getFirstElementDetail('Node id'); await this.alfrescoJsApi.core.nodesApi.getNode(firstResult).then(async (node) => { await expect(node.entry.content.sizeInBytes >= 1).toBe(true); await expect(node.entry.content.sizeInBytes <= sliderSize).toBe(true); @@ -297,7 +297,7 @@ describe('Search Number Range Filter', () => { searchResults.sortBySize(false); browser.controlFlow().execute(async () => { - let firstResult = await dataTable.getNodeIdFirstElement(); + let firstResult = await dataTable.getFirstElementDetail('Node id'); await this.alfrescoJsApi.core.nodesApi.getNode(firstResult).then(async (node) => { await expect(node.entry.content.sizeInBytes).toEqual(0); }); @@ -328,7 +328,7 @@ describe('Search Number Range Filter', () => { searchResults.sortBySize(false); browser.controlFlow().execute(async () => { - let firstResult = await dataTable.getNodeIdFirstElement(); + let firstResult = await dataTable.getFirstElementDetail('Node id'); await this.alfrescoJsApi.core.nodesApi.getNode(firstResult).then(async (node) => { await expect(node.entry.content.sizeInBytes <= 1).toBe(true); }); @@ -340,7 +340,7 @@ describe('Search Number Range Filter', () => { expect(sizeRangeFilter.getToNumber()).toEqual(''); browser.controlFlow().execute(async () => { - let firstResult = await dataTable.getNodeIdFirstElement(); + let firstResult = await dataTable.getFirstElementDetail('Node id'); await this.alfrescoJsApi.core.nodesApi.getNode(firstResult).then(async (node) => { await expect(node.entry.content.sizeInBytes >= 1).toBe(true); }); @@ -426,7 +426,7 @@ describe('Search Number Range Filter', () => { searchResults.sortByCreated(false); browser.controlFlow().execute(async () => { - let firstResult = await dataTable.getNodeIdFirstElement(); + let firstResult = await dataTable.getFirstElementDetail('Node id'); await this.alfrescoJsApi.core.nodesApi.getNode(firstResult).then(async (node) => { await expect((node.entry.createdAt.getFullYear()) <= toYear).toBe(true); }); @@ -435,7 +435,7 @@ describe('Search Number Range Filter', () => { searchResults.sortByCreated(true); browser.controlFlow().execute(async () => { - let firstResult = await dataTable.getNodeIdFirstElement(); + let firstResult = await dataTable.getFirstElementDetail('Node id'); await this.alfrescoJsApi.core.nodesApi.getNode(firstResult).then(async (node) => { await expect((node.entry.createdAt.getFullYear()) >= fromYear).toBe(true); }); diff --git a/e2e/search/components/search-radio.e2e.ts b/e2e/search/components/search-radio.e2e.ts index 6c2598129d..7464a7bc23 100644 --- a/e2e/search/components/search-radio.e2e.ts +++ b/e2e/search/components/search-radio.e2e.ts @@ -17,7 +17,7 @@ import { LoginPage } from '../../pages/adf/loginPage'; import { SearchFiltersPage } from '../../pages/adf/searchFiltersPage'; -import { ContentListPage } from '../../pages/adf/dialog/contentListPage'; +import { SearchResultsPage } from '../../pages/adf/searchResultsPage'; import { ConfigEditorPage } from '../../pages/adf/configEditorPage'; import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; import { SearchDialog } from '../../pages/adf/dialog/searchDialog'; @@ -37,10 +37,10 @@ describe('Search Radio Component', () => { const loginPage = new LoginPage(); const searchFiltersPage = new SearchFiltersPage(); - const contentList = new ContentListPage(); const configEditorPage = new ConfigEditorPage(); const navigationBarPage = new NavigationBarPage(); const searchDialog = new SearchDialog(); + const searchResults = new SearchResultsPage(); let acsUser = new AcsUserModel(); let uploadActions = new UploadActions(); @@ -56,7 +56,7 @@ describe('Search Radio Component', () => { let randomName = Util.generateRandomString(); let nodeNames = { document: `${randomName}.txt`, - folder: randomName + folder: `${randomName}Folder` }; let createdFile, createdFolder; @@ -84,7 +84,7 @@ describe('Search Radio Component', () => { loginPage.loginToContentServicesUsingUserModel(acsUser); - browser.get(TestConfig.adf.url + '/search;q=' + nodeNames.folder + ''); + browser.get(TestConfig.adf.url + '/search;q=' + randomName); done(); }); @@ -110,26 +110,26 @@ describe('Search Radio Component', () => { searchFiltersPage.typeFiltersPage().checkFilterRadioButtonIsChecked(filterType.none); - contentList.checkContentIsDisplayed(nodeNames.folder); - contentList.checkContentIsDisplayed(nodeNames.document); + searchResults.checkContentIsDisplayed(nodeNames.folder); + searchResults.checkContentIsDisplayed(nodeNames.document); searchFiltersPage.typeFiltersPage().clickFilterRadioButton(filterType.folder); searchFiltersPage.typeFiltersPage().checkFilterRadioButtonIsChecked(filterType.folder); - contentList.checkContentIsDisplayed(nodeNames.folder); - contentList.checkContentIsNotDisplayed(nodeNames.document); + searchResults.checkContentIsDisplayed(nodeNames.folder); + searchResults.checkContentIsNotDisplayed(nodeNames.document); searchFiltersPage.typeFiltersPage().clickFilterRadioButton(filterType.document); searchFiltersPage.typeFiltersPage().checkFilterRadioButtonIsChecked(filterType.document); - contentList.checkContentIsDisplayed(nodeNames.document); - contentList.checkContentIsNotDisplayed(nodeNames.folder); + searchResults.checkContentIsDisplayed(nodeNames.document); + searchResults.checkContentIsNotDisplayed(nodeNames.folder); searchFiltersPage.typeFiltersPage().clickFilterRadioButton(filterType.all); searchFiltersPage.typeFiltersPage().checkFilterRadioButtonIsChecked(filterType.all); - contentList.checkContentIsDisplayed(nodeNames.folder); - contentList.checkContentIsDisplayed(nodeNames.document); + searchResults.checkContentIsDisplayed(nodeNames.folder); + searchResults.checkContentIsDisplayed(nodeNames.document); }); describe('configuration change', () => { @@ -158,7 +158,7 @@ describe('Search Radio Component', () => { configEditorPage.enterBigConfigurationText(JSON.stringify(jsonFile)); configEditorPage.clickSaveButton(); - searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(nodeNames.folder); + searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(randomName); searchFiltersPage.clickTypeFilterHeader(); expect(searchFiltersPage.typeFiltersPage().getRadioButtonsNumberOnPage()).toBe(10); @@ -174,7 +174,7 @@ describe('Search Radio Component', () => { configEditorPage.enterBigConfigurationText(JSON.stringify(jsonFile)); configEditorPage.clickSaveButton(); - searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(nodeNames.folder); + searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(randomName); searchFiltersPage.clickTypeFilterHeader(); expect(searchFiltersPage.typeFiltersPage().getRadioButtonsNumberOnPage()).toBe(10); @@ -190,7 +190,7 @@ describe('Search Radio Component', () => { configEditorPage.enterBigConfigurationText(JSON.stringify(jsonFile)); configEditorPage.clickSaveButton(); - searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(nodeNames.folder); + searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(randomName); searchFiltersPage.clickTypeFilterHeader(); expect(searchFiltersPage.typeFiltersPage().getRadioButtonsNumberOnPage()).toBe(9); @@ -218,7 +218,7 @@ describe('Search Radio Component', () => { configEditorPage.enterBigConfigurationText(JSON.stringify(jsonFile)); configEditorPage.clickSaveButton(); - searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(nodeNames.folder); + searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(randomName); searchFiltersPage.clickTypeFilterHeader(); expect(searchFiltersPage.typeFiltersPage().getRadioButtonsNumberOnPage()).toBe(5); @@ -251,7 +251,7 @@ describe('Search Radio Component', () => { configEditorPage.enterBigConfigurationText(JSON.stringify(jsonFile)); configEditorPage.clickSaveButton(); - searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(nodeNames.folder); + searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(randomName); searchFiltersPage.clickTypeFilterHeader(); expect(searchFiltersPage.typeFiltersPage().getRadioButtonsNumberOnPage()).toBe(5); @@ -304,7 +304,7 @@ describe('Search Radio Component', () => { configEditorPage.enterBigConfigurationText(JSON.stringify(jsonFile)); configEditorPage.clickSaveButton(); - searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(nodeNames.folder); + searchDialog.clickOnSearchIcon().checkSearchBarIsVisible().enterTextAndPressEnter(randomName); searchFiltersPage.clickTypeFilterHeader(); searchFiltersPage.typeFiltersPage().checkFilterRadioButtonIsDisplayed(filterType.none); @@ -316,8 +316,8 @@ describe('Search Radio Component', () => { searchFiltersPage.typeFiltersPage().clickFilterRadioButton(filterType.custom); - contentList.checkContentIsDisplayed(nodeNames.document); - contentList.checkContentIsNotDisplayed(nodeNames.folder); + searchResults.checkContentIsDisplayed(nodeNames.document); + searchResults.checkContentIsNotDisplayed(nodeNames.folder); }); }); diff --git a/e2e/search/components/search-slider.e2e.ts b/e2e/search/components/search-slider.e2e.ts index 5d3b19352b..4b3b0e9767 100644 --- a/e2e/search/components/search-slider.e2e.ts +++ b/e2e/search/components/search-slider.e2e.ts @@ -17,7 +17,7 @@ import { LoginPage } from '../../pages/adf/loginPage'; import { SearchDialog } from '../../pages/adf/dialog/searchDialog'; -import { DataTablePage } from '../../pages/adf/dataTablePage'; +import { DataTableComponentPage } from '../../pages/adf/dataTableComponentPage'; import { SearchResultsPage } from '../../pages/adf/searchResultsPage'; import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; import { ConfigEditorPage } from '../../pages/adf/configEditorPage'; @@ -42,7 +42,7 @@ describe('Search Number Range Filter', () => { const searchResults = new SearchResultsPage(); const navigationBar = new NavigationBarPage(); const configEditor = new ConfigEditorPage(); - const dataTable = new DataTablePage(); + const dataTable = new DataTableComponentPage(); const acsUser = new AcsUserModel(); @@ -123,7 +123,7 @@ describe('Search Number Range Filter', () => { .tableIsLoaded(); browser.controlFlow().execute(async () => { - let firstResult = await dataTable.getNodeIdFirstElement(); + let firstResult = await dataTable.getFirstElementDetail('Node id'); await this.alfrescoJsApi.core.nodesApi.getNode(firstResult).then(async (node) => { await expect(node.entry.content.sizeInBytes <= size).toBe(true); }); @@ -136,7 +136,7 @@ describe('Search Number Range Filter', () => { .tableIsLoaded(); browser.controlFlow().execute(async () => { - let firstResult = await dataTable.getNodeIdFirstElement(); + let firstResult = await dataTable.getFirstElementDetail('Node id'); await this.alfrescoJsApi.core.nodesApi.getNode(firstResult).then(async (node) => { await expect(node.entry.content.sizeInBytes >= size).toBe(true); }); diff --git a/e2e/search/components/search-sorting-picker.e2e.ts b/e2e/search/components/search-sorting-picker.e2e.ts index 49cfb9a87b..72ecc48a35 100644 --- a/e2e/search/components/search-sorting-picker.e2e.ts +++ b/e2e/search/components/search-sorting-picker.e2e.ts @@ -254,11 +254,33 @@ describe('Search Sorting Picker', () => { }); it('[C277286] Should be able to sort the search results by "Created Date" ASC', () => { - expect(searchResults.sortAndCheckListIsOrderedByCreated(true)).toBe(true); + searchResults.sortByCreated(true); + browser.controlFlow().execute(async () => { + let idList = await contentServices.getElementsDisplayedId(); + let numberOfElements = await contentServices.numberOfResultsDisplayed(); + + let nodeList = await nodeActions.getNodesDisplayed(this.alfrescoJsApi, idList, numberOfElements); + let dateList = []; + for (let i = 0; i < nodeList.length; i++) { + dateList.push(new Date(nodeList[i].entry.createdAt)); + } + expect(contentServices.checkElementsSortedAsc(dateList)).toBe(true); + }); }); it('[C277287] Should be able to sort the search results by "Created Date" DESC', () => { - expect(searchResults.sortAndCheckListIsOrderedByCreated(false)).toBe(true); + searchResults.sortByCreated(false); + browser.controlFlow().execute(async () => { + let idList = await contentServices.getElementsDisplayedId(); + let numberOfElements = await contentServices.numberOfResultsDisplayed(); + + let nodeList = await nodeActions.getNodesDisplayed(this.alfrescoJsApi, idList, numberOfElements); + let dateList = []; + for (let i = 0; i < nodeList.length; i++) { + dateList.push(new Date(nodeList[i].entry.createdAt)); + } + expect(contentServices.checkElementsSortedDesc(dateList)).toBe(true); + }); }); it('[C277288] Should be able to sort the search results by "Modified Date" ASC', () => { diff --git a/e2e/search/search-filters.e2e.ts b/e2e/search/search-filters.e2e.ts index e3ebc388e4..261971f9fa 100644 --- a/e2e/search/search-filters.e2e.ts +++ b/e2e/search/search-filters.e2e.ts @@ -19,7 +19,7 @@ import { LoginPage } from '../pages/adf/loginPage'; import { SearchDialog } from '../pages/adf/dialog/searchDialog'; import { SearchFiltersPage } from '../pages/adf/searchFiltersPage'; import { PaginationPage } from '../pages/adf/paginationPage'; -import { ContentListPage } from '../pages/adf/dialog/contentListPage'; +import { DocumentListPage } from '../pages/adf/content-services/documentListPage'; import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { ConfigEditorPage } from '../pages/adf/configEditorPage'; import { SearchResultsPage } from '../pages/adf/searchResultsPage'; @@ -43,7 +43,7 @@ describe('Search Filters', () => { let searchFiltersPage = new SearchFiltersPage(); let uploadActions = new UploadActions(); let paginationPage = new PaginationPage(); - let contentList = new ContentListPage(); + let contentList = new DocumentListPage(); let navigationBar = new NavigationBarPage(); let configEditor = new ConfigEditorPage(); let searchResults = new SearchResultsPage(); @@ -149,7 +149,7 @@ describe('Search Filters', () => { let bucketNumberForFilter = searchFiltersPage.fileTypeCheckListFiltersPage().getBucketNumberOfFilterType(filter.type); - let resultFileNames = contentList.getAllRowsNameColumn(); + let resultFileNames = contentList.getAllRowsColumnValues('Display name'); expect(bucketNumberForFilter).not.toEqual('0'); diff --git a/package-lock.json b/package-lock.json index 42710dfe8a..336dcd2e13 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,61 +1,61 @@ { "name": "alfresco-components", - "version": "3.0.0", + "version": "3.1.0-beta4", "lockfileVersion": 1, "requires": true, "dependencies": { "@alfresco/adf-content-services": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@alfresco/adf-content-services/-/adf-content-services-3.0.0.tgz", - "integrity": "sha512-fslg/adVczwvrDJV4i/9zWgsrYv+zvqhmiFXubS+vORDvl48fqf3575OIfDSoeRblPrINzyoupH61DHWzAKa/w==", + "version": "3.1.0-beta4", + "resolved": "https://registry.npmjs.org/@alfresco/adf-content-services/-/adf-content-services-3.1.0-beta4.tgz", + "integrity": "sha512-OWvLAUudGQ8ONi/OUdD70zQqncn2ZpQtqwsdc6oh1eamfAy5ADp72fm4x+8VUBXOBB1WTfedOeX9jOg0DXFg9w==", "requires": { "tslib": "^1.9.0" } }, "@alfresco/adf-core": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@alfresco/adf-core/-/adf-core-3.0.0.tgz", - "integrity": "sha512-3WbOGNPDM1YIG0fSQC2NiEwoNVoBU555yiW6jcNIMI6tSMVw13zuDyA9+wOmo6KY4FZlABah3hGcD/DfqBfNLg==", + "version": "3.1.0-beta4", + "resolved": "https://registry.npmjs.org/@alfresco/adf-core/-/adf-core-3.1.0-beta4.tgz", + "integrity": "sha512-JWWznxds8UYKVokJ+hllg7SxiGoHBFhDFkgZh5fpjEDs0NdP1nKJAo2nZr0jIyK2HZ3mYACIehp0+NywsxC+jg==", "requires": { "tslib": "^1.9.0" } }, "@alfresco/adf-extensions": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@alfresco/adf-extensions/-/adf-extensions-3.0.0.tgz", - "integrity": "sha512-piQvPQbG6Zx6J+M8U4Qv6m42gUOOOy9W3Zwgq+DdVCjP60RfhXcS+HW8wUMUxFOTgjonFOIyNA26BddIOoUhEQ==", + "version": "3.1.0-beta4", + "resolved": "https://registry.npmjs.org/@alfresco/adf-extensions/-/adf-extensions-3.1.0-beta4.tgz", + "integrity": "sha512-2S3DE9NISxGysPg/zp1uZJhFEbe+d0yZsmJFO1sarAQq4C7ZeZCEmT2FYCkyKZU/iQayj+a7C8IlyvGv+r2wKw==", "requires": { "tslib": "^1.9.0" } }, "@alfresco/adf-insights": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@alfresco/adf-insights/-/adf-insights-3.0.0.tgz", - "integrity": "sha512-rjdESqKT+BFeJXLGqN+LyWUEIujocKOmH+mWaRIY8oeWFnUPrb3vguc3YGoC0eCN6fhNJSGq6v4LUpKcT/M3Eg==", + "version": "3.1.0-beta4", + "resolved": "https://registry.npmjs.org/@alfresco/adf-insights/-/adf-insights-3.1.0-beta4.tgz", + "integrity": "sha512-HwV2Xxzh2Ei4u0Sx8FjVpGogpsHhgwzomyCAcb2n9o7YgqOcbtJBtefm9sLpC1nz5fVx1gi4qatmFjU2oNaS2w==", "requires": { "tslib": "^1.9.0" } }, "@alfresco/adf-process-services": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@alfresco/adf-process-services/-/adf-process-services-3.0.0.tgz", - "integrity": "sha512-PqHXne7tERofGAVxzQyNmZKqepOwtNeC4V/ZTcEib3qL44E/LGQJoy+ega3XlrXCqJ3s7eeMtjg6BN7PiarW0A==", + "version": "3.1.0-beta4", + "resolved": "https://registry.npmjs.org/@alfresco/adf-process-services/-/adf-process-services-3.1.0-beta4.tgz", + "integrity": "sha512-Kd5R1HV4k6sUtVS0vRBksrW6lByQiMARnm70hFtANfCGCwBXKsw0jMaheVBSVtT+O0dTfpVfVTNcGJp3NinJKQ==", "requires": { "tslib": "^1.9.0" } }, "@alfresco/adf-process-services-cloud": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@alfresco/adf-process-services-cloud/-/adf-process-services-cloud-3.0.0.tgz", - "integrity": "sha512-gYPhtzWVpML4IAYdlRKo4DPR+yorRF8KQdyKq5beH9pakjgKsJbaF0KN3cbpuQ+fz8wE2d6bnSBK7QRNB1f4Mw==", + "version": "3.1.0-beta4", + "resolved": "https://registry.npmjs.org/@alfresco/adf-process-services-cloud/-/adf-process-services-cloud-3.1.0-beta4.tgz", + "integrity": "sha512-IJKPHMpPK7sw91GmBVbzyaUDlE4XJufhgFRpLkYIB1vlt8n83qOQMVJDrSiYxnaiDE0EOP5L9FZ0f0/WQBc3vQ==", "requires": { "tslib": "^1.9.0" } }, "@alfresco/js-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@alfresco/js-api/-/js-api-3.0.0.tgz", - "integrity": "sha512-eiJQRJH+GHw9OszNoHWyGrc/llcI5qQBult5G3TfmRDK3c1YcCLHXbQmaN7hgoOuk0i88oPziXC6ZFS/rfi+fA==", + "version": "3.1.0-beta4", + "resolved": "https://registry.npmjs.org/@alfresco/js-api/-/js-api-3.1.0-beta4.tgz", + "integrity": "sha512-rvmha2bYGvVv228G4FJxmwIsIt2a9rTBKT/9GOcrnDxnsI4ZZoyHzdBS0U+WuCdWlRphmG7u0OIs5vs3rk4Rww==", "requires": { "event-emitter": "0.3.4", "superagent": "3.8.2" @@ -72,64 +72,85 @@ } }, "@angular-devkit/build-angular": { - "version": "0.10.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.10.7.tgz", - "integrity": "sha512-wjhlMWWkGSSkdwd9elKfeeEgyig/eZGyF2wY5kZmWPBdeK/GfdBLyO15qh4ppRYI2SjyRvzl0tWDOA2Y0hKL0w==", + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.13.4.tgz", + "integrity": "sha512-7yJzgNk3ToiAHd8vnYonqiswvVNYzOUKg2xZfpx+SD5m7mVE+CSUp+P4YzUrI0Vm9WitZOYaCv1I6G1NguJHqA==", "dev": true, "requires": { - "@angular-devkit/architect": "0.10.7", - "@angular-devkit/build-optimizer": "0.10.7", - "@angular-devkit/build-webpack": "0.10.7", - "@angular-devkit/core": "7.0.7", - "@ngtools/webpack": "7.0.7", - "ajv": "6.5.3", - "autoprefixer": "9.1.5", + "@angular-devkit/architect": "0.13.4", + "@angular-devkit/build-optimizer": "0.13.4", + "@angular-devkit/build-webpack": "0.13.4", + "@angular-devkit/core": "7.3.4", + "@ngtools/webpack": "7.3.4", + "ajv": "6.9.1", + "autoprefixer": "9.4.6", "circular-dependency-plugin": "5.0.2", "clean-css": "4.2.1", - "copy-webpack-plugin": "4.5.4", - "file-loader": "2.0.0", + "copy-webpack-plugin": "4.6.0", + "file-loader": "3.0.1", "glob": "7.1.3", - "istanbul": "0.4.5", "istanbul-instrumenter-loader": "3.0.1", "karma-source-map-support": "1.3.0", - "less": "3.8.1", + "less": "3.9.0", "less-loader": "4.1.0", - "license-webpack-plugin": "2.0.2", - "loader-utils": "1.1.0", - "mini-css-extract-plugin": "0.4.3", + "license-webpack-plugin": "2.1.0", + "loader-utils": "1.2.3", + "mini-css-extract-plugin": "0.5.0", "minimatch": "3.0.4", - "node-sass": "4.9.3", - "opn": "5.3.0", + "node-sass": "4.11.0", + "opn": "5.4.0", "parse5": "4.0.0", - "portfinder": "1.0.17", - "postcss": "7.0.5", - "postcss-import": "12.0.0", + "postcss": "7.0.14", + "postcss-import": "12.0.1", "postcss-loader": "3.0.0", - "raw-loader": "0.5.1", + "raw-loader": "1.0.0", "rxjs": "6.3.3", "sass-loader": "7.1.0", - "semver": "5.5.1", + "semver": "5.6.0", "source-map-loader": "0.2.4", - "source-map-support": "0.5.9", - "speed-measure-webpack-plugin": "^1.2.3", + "source-map-support": "0.5.10", + "speed-measure-webpack-plugin": "1.3.0", "stats-webpack-plugin": "0.7.0", - "style-loader": "0.23.0", + "style-loader": "0.23.1", "stylus": "0.54.5", "stylus-loader": "3.0.2", - "terser-webpack-plugin": "1.1.0", - "tree-kill": "1.2.0", - "webpack": "4.19.1", - "webpack-dev-middleware": "3.3.0", - "webpack-dev-server": "3.1.8", - "webpack-merge": "4.1.4", - "webpack-sources": "1.2.0", + "terser-webpack-plugin": "1.2.2", + "tree-kill": "1.2.1", + "webpack": "4.29.0", + "webpack-dev-middleware": "3.5.1", + "webpack-dev-server": "3.1.14", + "webpack-merge": "4.2.1", + "webpack-sources": "1.3.0", "webpack-subresource-integrity": "1.1.0-rc.6" }, "dependencies": { + "@angular-devkit/architect": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.13.4.tgz", + "integrity": "sha512-wJF8oz8MurtpFi0ik42bkI2F5gEnuOe79KHPO1i3SYfdhEp5NY8igVKZ6chB/eq4Ml50aHxas8Hh9ke12K+Pxw==", + "dev": true, + "requires": { + "@angular-devkit/core": "7.3.4", + "rxjs": "6.3.3" + } + }, + "@angular-devkit/core": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.3.4.tgz", + "integrity": "sha512-MBfen51iOBKfK4tlg5KwmPxePsF1QoFNUMGLuvUUwPkteonrGcupX1Q7NWTpf+HA+i08mOnZGuepeuQkD12IQw==", + "dev": true, + "requires": { + "ajv": "6.9.1", + "chokidar": "2.0.4", + "fast-json-stable-stringify": "2.0.0", + "rxjs": "6.3.3", + "source-map": "0.7.3" + } + }, "ajv": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", - "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz", + "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", @@ -152,18 +173,24 @@ "dev": true, "optional": true }, - "autoprefixer": { - "version": "9.1.5", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.1.5.tgz", - "integrity": "sha512-kk4Zb6RUc58ld7gdosERHMF3DzIYJc2fp5sX46qEsGXQQy5bXsu8qyLjoxuY1NuQ/cJuCYnx99BfjwnRggrYIw==", + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, + "optional": true, "requires": { - "browserslist": "^4.1.0", - "caniuse-lite": "^1.0.30000884", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.2", - "postcss-value-parser": "^3.2.3" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "cross-spawn": { @@ -177,50 +204,62 @@ "which": "^1.2.9" } }, - "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, - "optional": true, "requires": { - "ajv": "^5.1.0", - "har-schema": "^2.0.0" + "minimist": "^1.2.0" + } + }, + "less": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/less/-/less-3.9.0.tgz", + "integrity": "sha512-31CmtPEZraNUtuUREYjSqRkeETFdyEHSEPAGq4erDlUXtda7pzNmctdljdIagSb589d/qXGWiiP31R5JVf+v0w==", + "dev": true, + "requires": { + "clone": "^2.1.2", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "mime": "^1.4.1", + "mkdirp": "^0.5.0", + "promise": "^7.1.1", + "request": "^2.83.0", + "source-map": "~0.6.0" }, "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "optional": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true, - "optional": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "optional": true } } }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, "node-sass": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.3.tgz", - "integrity": "sha512-XzXyGjO+84wxyH7fV6IwBOTrEBe2f0a6SBze9QWWYR/cL74AcQUks2AsqcCZenl/Fp/JVbuEaLpgrLtocwBUww==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.11.0.tgz", + "integrity": "sha512-bHUdHTphgQJZaF1LASx0kAviPH7sGlcyNhWade4eVIpFp6tsn7SV8xNMTbsQFpEV9VXpnwTTnNYlfsZXgGgmkA==", "dev": true, "optional": true, "requires": { @@ -239,49 +278,10 @@ "nan": "^2.10.0", "node-gyp": "^3.8.0", "npmlog": "^4.0.0", - "request": "2.87.0", + "request": "^2.88.0", "sass-graph": "^2.2.4", "stdout-stream": "^1.4.0", "true-case-path": "^1.0.2" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "optional": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true, - "optional": true - } - } - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true, - "optional": true - }, - "opn": { - "version": "5.3.0", - "resolved": "http://registry.npmjs.org/opn/-/opn-5.3.0.tgz", - "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" } }, "parse5": { @@ -290,82 +290,54 @@ "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", "dev": true }, - "postcss": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.5.tgz", - "integrity": "sha512-HBNpviAUFCKvEh7NZhw1e8MBPivRszIiUnhrJ+sBFVSYSqubrzwX3KG51mYgcRHX8j/cAgZJedONZcm5jTBdgQ==", + "raw-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-1.0.0.tgz", + "integrity": "sha512-Uqy5AqELpytJTRxYT4fhltcKPj0TyaEpzJDcGz7DFJi+pQOOi3GjR/DOdxTkTsF+NzhnldIoG6TORaBlInUuqA==", "dev": true, "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.5.0" + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" } }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true, - "optional": true - }, - "request": { - "version": "2.87.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", - "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", - "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", - "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "tough-cookie": "~2.3.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" - } - }, - "sass-loader": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz", - "integrity": "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==", + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, "requires": { - "clone-deep": "^2.0.1", - "loader-utils": "^1.0.1", - "lodash.tail": "^4.1.1", - "neo-async": "^2.5.0", - "pify": "^3.0.0", - "semver": "^5.5.0" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" } }, - "semver": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", - "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", - "dev": true - }, "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true }, + "source-map-support": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz", + "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "optional": true, @@ -373,34 +345,27 @@ "ansi-regex": "^2.0.0" } }, - "tough-cookie": { - "version": "2.3.4", - "resolved": "http://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true, - "optional": true, - "requires": { - "punycode": "^1.4.1" - } + "optional": true + }, + "tree-kill": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz", + "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==", + "dev": true }, "webpack-merge": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.4.tgz", - "integrity": "sha512-TmSe1HZKeOPey3oy1Ov2iS3guIZjWvMT2BBJDzzT5jScHTjVC3mpjJofgueEzaEd6ibhxRDD6MIblDr8tzh8iQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz", + "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==", "dev": true, "requires": { "lodash": "^4.17.5" } - }, - "webpack-sources": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.2.0.tgz", - "integrity": "sha512-9BZwxR85dNsjWz3blyxdOhTgtnQvv3OEs5xofI0wPYTwu5kaWxS08UuD1oI7WLBLpRO+ylf0ofnXLXWmGb2WMw==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } } } }, @@ -425,52 +390,109 @@ } }, "@angular-devkit/build-optimizer": { - "version": "0.10.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.10.7.tgz", - "integrity": "sha512-Ztj2U21B8zRO2csQS8mLv/+WKPPLePzaqJDk53Ou2r2HV+kh9GzYvgu1UFeGf/RyEeJi+9KnJGG2wPaeNqDNxg==", + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.13.4.tgz", + "integrity": "sha512-YTpiE4F2GnFc4jbXZkmFUMHOvo3kWcMPAInVbjXNSIWMqW8Ibs7d6MAcualQX4NCvcn45+mVXLfY/8hWZ/b7lw==", "dev": true, "requires": { - "loader-utils": "1.1.0", + "loader-utils": "1.2.3", "source-map": "0.5.6", - "typescript": "3.1.6", - "webpack-sources": "1.2.0" + "typescript": "3.2.4", + "webpack-sources": "1.3.0" }, "dependencies": { - "typescript": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.6.tgz", - "integrity": "sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA==", + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true }, - "webpack-sources": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.2.0.tgz", - "integrity": "sha512-9BZwxR85dNsjWz3blyxdOhTgtnQvv3OEs5xofI0wPYTwu5kaWxS08UuD1oI7WLBLpRO+ylf0ofnXLXWmGb2WMw==", + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "minimist": "^1.2.0" } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "typescript": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.4.tgz", + "integrity": "sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg==", + "dev": true } } }, "@angular-devkit/build-webpack": { - "version": "0.10.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.10.7.tgz", - "integrity": "sha512-sUzgIhm5yWHvRo3GF6mc1J58PCuY5nJDF2vlE8Jhlwkq+/VbJ/NVfTDYRQCeqI1jLcdMaVrVQXnXAWc4KpFNig==", + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.13.4.tgz", + "integrity": "sha512-W5baPrsNUUyeD5K9ZjiTfiDsytBoqDvGDMKRUO9XWV8xF8LYF2ttsBQxlJK7SKkMyJXcjmiHhdkMq5wgRE7n0A==", "dev": true, "requires": { - "@angular-devkit/architect": "0.10.7", - "@angular-devkit/core": "7.0.7", + "@angular-devkit/architect": "0.13.4", + "@angular-devkit/core": "7.3.4", "rxjs": "6.3.3" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.13.4.tgz", + "integrity": "sha512-wJF8oz8MurtpFi0ik42bkI2F5gEnuOe79KHPO1i3SYfdhEp5NY8igVKZ6chB/eq4Ml50aHxas8Hh9ke12K+Pxw==", + "dev": true, + "requires": { + "@angular-devkit/core": "7.3.4", + "rxjs": "6.3.3" + } + }, + "@angular-devkit/core": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.3.4.tgz", + "integrity": "sha512-MBfen51iOBKfK4tlg5KwmPxePsF1QoFNUMGLuvUUwPkteonrGcupX1Q7NWTpf+HA+i08mOnZGuepeuQkD12IQw==", + "dev": true, + "requires": { + "ajv": "6.9.1", + "chokidar": "2.0.4", + "fast-json-stable-stringify": "2.0.0", + "rxjs": "6.3.3", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz", + "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } } }, "@angular-devkit/core": { @@ -673,7 +695,7 @@ }, "opn": { "version": "5.3.0", - "resolved": "http://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", "dev": true, "requires": { @@ -720,13 +742,13 @@ } }, "@angular/compiler-cli": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-7.0.3.tgz", - "integrity": "sha512-8/SNgyce0Eqhfn8N/XkwSDSxTJryA+/EVLA68D2IopOSg/95u6GgYv3mVNNQnclSzC4g1FuK0zt4z0zRIWZ6JA==", + "version": "7.2.7", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-7.2.7.tgz", + "integrity": "sha512-UPWROJzBLejgNf+aqgEUXYts8UiFOl2IavDhS/olA9irszv2lNFj9Yqr8OKdy0jK/lKaipZog3VZEx8g5dNeBA==", "dev": true, "requires": { "canonical-path": "1.0.0", - "chokidar": "^1.4.2", + "chokidar": "^2.1.1", "convert-source-map": "^1.5.1", "dependency-graph": "^0.7.2", "magic-string": "^0.25.0", @@ -734,6 +756,7 @@ "reflect-metadata": "^0.1.2", "shelljs": "^0.8.1", "source-map": "^0.6.1", + "tslib": "^1.9.0", "yargs": "9.0.1" }, "dependencies": { @@ -743,57 +766,24 @@ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true, - "requires": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" - } - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.2.tgz", + "integrity": "sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg==", "dev": true, "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" + "readdirp": "^2.2.1", + "upath": "^1.1.0" } }, "cliui": { @@ -820,39 +810,535 @@ } } }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "fsevents": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", + "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", "dev": true, + "optional": true, "requires": { - "is-posix-bracket": "^0.1.0" + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true + } } }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -862,27 +1348,9 @@ "number-is-nan": "^1.0.0" } }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, "load-json-file": { "version": "2.0.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { @@ -892,33 +1360,18 @@ "strip-bom": "^3.0.0" } }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, "minimist": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, "path-type": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", @@ -930,7 +1383,7 @@ }, "pify": { "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, @@ -963,7 +1416,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -1329,33 +1782,54 @@ "dev": true }, "@ngtools/webpack": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-7.0.7.tgz", - "integrity": "sha512-ukZv/8vhiVWLsEEWF1uena8GHRVUpwbPJ+8AupW25d2nNpwfsDtTIXKzTzRYeIQFFCnHJxr04lK18CVsn1lFaQ==", + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-7.3.4.tgz", + "integrity": "sha512-qTfw/LGZ3kDZAgqb6gMVr36E0W3M+bnS/xAxNTxshxmJOCQr9AcKtX4sP65QweKS60KoBBR1a7nR6SOi1NJkxA==", "dev": true, "requires": { - "@angular-devkit/core": "7.0.7", + "@angular-devkit/core": "7.3.4", "enhanced-resolve": "4.1.0", "rxjs": "6.3.3", - "tree-kill": "1.2.0", - "webpack-sources": "1.2.0" + "tree-kill": "1.2.1", + "webpack-sources": "1.3.0" }, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "webpack-sources": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.2.0.tgz", - "integrity": "sha512-9BZwxR85dNsjWz3blyxdOhTgtnQvv3OEs5xofI0wPYTwu5kaWxS08UuD1oI7WLBLpRO+ylf0ofnXLXWmGb2WMw==", + "@angular-devkit/core": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.3.4.tgz", + "integrity": "sha512-MBfen51iOBKfK4tlg5KwmPxePsF1QoFNUMGLuvUUwPkteonrGcupX1Q7NWTpf+HA+i08mOnZGuepeuQkD12IQw==", "dev": true, "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" + "ajv": "6.9.1", + "chokidar": "2.0.4", + "fast-json-stable-stringify": "2.0.0", + "rxjs": "6.3.3", + "source-map": "0.7.3" } + }, + "ajv": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz", + "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, + "tree-kill": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz", + "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==", + "dev": true } } }, @@ -1376,12 +1850,14 @@ "@nrwl/nx": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/@nrwl/nx/-/nx-7.1.1.tgz", - "integrity": "sha512-2K9WuS8MSdX/PCtUFE6ged2mnwSE1g6iS7ViGJSNAvLje7RzBDUH+9LTKYa3RKOTVO3R4kOJjKRhXed2HDAucA==" + "integrity": "sha512-2K9WuS8MSdX/PCtUFE6ged2mnwSE1g6iS7ViGJSNAvLje7RzBDUH+9LTKYa3RKOTVO3R4kOJjKRhXed2HDAucA==", + "dev": true }, "@nrwl/schematics": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/@nrwl/schematics/-/schematics-7.1.1.tgz", "integrity": "sha512-w44kAAFkomcZgmscQqI0/TbN/rF0ZX2SncJjQE70cLnomWfNpD18oqVzU+8PHtbhmd2TyWZ7tcDQAn6zdioUlQ==", + "dev": true, "requires": { "@types/yargs": "^11.0.0", "app-root-path": "^2.0.1", @@ -1402,6 +1878,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.0.tgz", "integrity": "sha512-lk2cUCo8QzbiEWEbt7Cw3m27WMiRG321xsssbcIpfMhpRjrlC08WBOVQqj1/nQYYNnPtyIhP1oqLO3QwT2tPCw==", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -1411,12 +1888,14 @@ "semver": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, "requires": { "os-tmpdir": "~1.0.2" } @@ -1425,6 +1904,7 @@ "version": "10.0.0", "resolved": "http://registry.npmjs.org/yargs-parser/-/yargs-parser-10.0.0.tgz", "integrity": "sha512-+DHejWujTVYeMHLff8U96rLc4uE4Emncoftvn5AjhB1Jw1pWxLzgBUT/WYbPrHmy6YPEBTZQx5myHhVcuuu64g==", + "dev": true, "requires": { "camelcase": "^4.1.0" } @@ -1553,13 +2033,13 @@ }, "@types/events": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==", "dev": true }, "@types/fs-extra": { "version": "5.0.1", - "resolved": "http://registry.npmjs.org/@types/fs-extra/-/fs-extra-5.0.1.tgz", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-5.0.1.tgz", "integrity": "sha512-h3wnflb+jMTipvbbZnClgA2BexrT4w0GcfoCz5qyxd0IRsbqhLSyesM6mqZTAnhbVmhyTm5tuxfRu9R+8l+lGw==", "dev": true, "requires": { @@ -1612,7 +2092,7 @@ }, "@types/lodash": { "version": "4.14.104", - "resolved": "http://registry.npmjs.org/@types/lodash/-/lodash-4.14.104.tgz", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.104.tgz", "integrity": "sha512-ufQcVg4daO8xQ5kopxRHanqFdL4AI7ondQkV+2f+7mz3gvp0LkBx2zBRC6hfs3T87mzQFmf5Fck7Fi145Ul6NQ==", "dev": true }, @@ -1636,7 +2116,7 @@ }, "@types/q": { "version": "0.0.32", - "resolved": "http://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", "dev": true }, @@ -1662,9 +2142,15 @@ "@types/node": "*" } }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, "@types/strip-bom": { "version": "3.0.0", - "resolved": "http://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=", "dev": true }, @@ -1674,185 +2160,200 @@ "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", "dev": true }, + "@types/webpack-sources": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.5.tgz", + "integrity": "sha512-zfvjpp7jiafSmrzJ2/i3LqOyTYTuJ7u1KOXlKgDlvsj9Rr0x7ZiYu5lZbXwobL7lmsRNtPXlBfmaUD8eU2Hu8w==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "@types/yargs": { "version": "11.1.2", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-11.1.2.tgz", - "integrity": "sha512-zG61PAp2OcoIBjRV44wftJj6AJgzJrOc32LCYOBqk9bdgcdzK5DCJHV9QZJ60+Fu+fOn79g8Ks3Gixm4CfkZ+w==" + "integrity": "sha512-zG61PAp2OcoIBjRV44wftJj6AJgzJrOc32LCYOBqk9bdgcdzK5DCJHV9QZJ60+Fu+fOn79g8Ks3Gixm4CfkZ+w==", + "dev": true }, "@webassemblyjs/ast": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.6.tgz", - "integrity": "sha512-8nkZS48EVsMUU0v6F1LCIOw4RYWLm2plMtbhFTjNgeXmsTNLuU3xTRtnljt9BFQB+iPbLRobkNrCWftWnNC7wQ==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", + "integrity": "sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.7.6", - "@webassemblyjs/helper-wasm-bytecode": "1.7.6", - "@webassemblyjs/wast-parser": "1.7.6", - "mamacro": "^0.0.3" + "@webassemblyjs/helper-module-context": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/wast-parser": "1.7.11" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.6.tgz", - "integrity": "sha512-VBOZvaOyBSkPZdIt5VBMg3vPWxouuM13dPXGWI1cBh3oFLNcFJ8s9YA7S9l4mPI7+Q950QqOmqj06oa83hNWBA==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz", + "integrity": "sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.6.tgz", - "integrity": "sha512-SCzhcQWHXfrfMSKcj8zHg1/kL9kb3aa5TN4plc/EREOs5Xop0ci5bdVBApbk2yfVi8aL+Ly4Qpp3/TRAUInjrg==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz", + "integrity": "sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.6.tgz", - "integrity": "sha512-1/gW5NaGsEOZ02fjnFiU8/OEEXU1uVbv2um0pQ9YVL3IHSkyk6xOwokzyqqO1qDZQUAllb+V8irtClPWntbVqw==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz", + "integrity": "sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==", "dev": true }, "@webassemblyjs/helper-code-frame": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.6.tgz", - "integrity": "sha512-+suMJOkSn9+vEvDvgyWyrJo5vJsWSDXZmJAjtoUq4zS4eqHyXImpktvHOZwXp1XQjO5H+YQwsBgqTQEc0J/5zg==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz", + "integrity": "sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.7.6" + "@webassemblyjs/wast-printer": "1.7.11" } }, "@webassemblyjs/helper-fsm": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.6.tgz", - "integrity": "sha512-HCS6KN3wgxUihGBW7WFzEC/o8Eyvk0d56uazusnxXthDPnkWiMv+kGi9xXswL2cvfYfeK5yiM17z2K5BVlwypw==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz", + "integrity": "sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==", "dev": true }, "@webassemblyjs/helper-module-context": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.6.tgz", - "integrity": "sha512-e8/6GbY7OjLM+6OsN7f2krC2qYVNaSr0B0oe4lWdmq5sL++8dYDD1TFbD1TdAdWMRTYNr/Qq7ovXWzia2EbSjw==", - "dev": true, - "requires": { - "mamacro": "^0.0.3" - } + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz", + "integrity": "sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==", + "dev": true }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.6.tgz", - "integrity": "sha512-PzYFCb7RjjSdAOljyvLWVqd6adAOabJW+8yRT+NWhXuf1nNZWH+igFZCUK9k7Cx7CsBbzIfXjJc7u56zZgFj9Q==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz", + "integrity": "sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.6.tgz", - "integrity": "sha512-3GS628ppDPSuwcYlQ7cDCGr4W2n9c4hLzvnRKeuz+lGsJSmc/ADVoYpm1ts2vlB1tGHkjtQMni+yu8mHoMlKlA==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz", + "integrity": "sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.6", - "@webassemblyjs/helper-buffer": "1.7.6", - "@webassemblyjs/helper-wasm-bytecode": "1.7.6", - "@webassemblyjs/wasm-gen": "1.7.6" + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11" } }, "@webassemblyjs/ieee754": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.6.tgz", - "integrity": "sha512-V4cIp0ruyw+hawUHwQLn6o2mFEw4t50tk530oKsYXQhEzKR+xNGDxs/SFFuyTO7X3NzEu4usA3w5jzhl2RYyzQ==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz", + "integrity": "sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.6.tgz", - "integrity": "sha512-ojdlG8WpM394lBow4ncTGJoIVZ4aAtNOWHhfAM7m7zprmkVcKK+2kK5YJ9Bmj6/ketTtOn7wGSHCtMt+LzqgYQ==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.11.tgz", + "integrity": "sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==", "dev": true, "requires": { "@xtuc/long": "4.2.1" } }, "@webassemblyjs/utf8": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.6.tgz", - "integrity": "sha512-oId+tLxQ+AeDC34ELRYNSqJRaScB0TClUU6KQfpB8rNT6oelYlz8axsPhf6yPTg7PBJ/Z5WcXmUYiHEWgbbHJw==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.11.tgz", + "integrity": "sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.6.tgz", - "integrity": "sha512-pTNjLO3o41v/Vz9VFLl+I3YLImpCSpodFW77pNoH4agn5I6GgSxXHXtvWDTvYJFty0jSeXZWLEmbaSIRUDlekg==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz", + "integrity": "sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.6", - "@webassemblyjs/helper-buffer": "1.7.6", - "@webassemblyjs/helper-wasm-bytecode": "1.7.6", - "@webassemblyjs/helper-wasm-section": "1.7.6", - "@webassemblyjs/wasm-gen": "1.7.6", - "@webassemblyjs/wasm-opt": "1.7.6", - "@webassemblyjs/wasm-parser": "1.7.6", - "@webassemblyjs/wast-printer": "1.7.6" + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/helper-wasm-section": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11", + "@webassemblyjs/wasm-opt": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11", + "@webassemblyjs/wast-printer": "1.7.11" } }, "@webassemblyjs/wasm-gen": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.6.tgz", - "integrity": "sha512-mQvFJVumtmRKEUXMohwn8nSrtjJJl6oXwF3FotC5t6e2hlKMh8sIaW03Sck2MDzw9xPogZD7tdP5kjPlbH9EcQ==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz", + "integrity": "sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.6", - "@webassemblyjs/helper-wasm-bytecode": "1.7.6", - "@webassemblyjs/ieee754": "1.7.6", - "@webassemblyjs/leb128": "1.7.6", - "@webassemblyjs/utf8": "1.7.6" + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/ieee754": "1.7.11", + "@webassemblyjs/leb128": "1.7.11", + "@webassemblyjs/utf8": "1.7.11" } }, "@webassemblyjs/wasm-opt": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.6.tgz", - "integrity": "sha512-go44K90fSIsDwRgtHhX14VtbdDPdK2sZQtZqUcMRvTojdozj5tLI0VVJAzLCfz51NOkFXezPeVTAYFqrZ6rI8Q==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz", + "integrity": "sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.6", - "@webassemblyjs/helper-buffer": "1.7.6", - "@webassemblyjs/wasm-gen": "1.7.6", - "@webassemblyjs/wasm-parser": "1.7.6" + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11" } }, "@webassemblyjs/wasm-parser": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.6.tgz", - "integrity": "sha512-t1T6TfwNY85pDA/HWPA8kB9xA4sp9ajlRg5W7EKikqrynTyFo+/qDzIpvdkOkOGjlS6d4n4SX59SPuIayR22Yg==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz", + "integrity": "sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.6", - "@webassemblyjs/helper-api-error": "1.7.6", - "@webassemblyjs/helper-wasm-bytecode": "1.7.6", - "@webassemblyjs/ieee754": "1.7.6", - "@webassemblyjs/leb128": "1.7.6", - "@webassemblyjs/utf8": "1.7.6" + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-api-error": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/ieee754": "1.7.11", + "@webassemblyjs/leb128": "1.7.11", + "@webassemblyjs/utf8": "1.7.11" } }, "@webassemblyjs/wast-parser": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.6.tgz", - "integrity": "sha512-1MaWTErN0ziOsNUlLdvwS+NS1QWuI/kgJaAGAMHX8+fMJFgOJDmN/xsG4h/A1Gtf/tz5VyXQciaqHZqp2q0vfg==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz", + "integrity": "sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.6", - "@webassemblyjs/floating-point-hex-parser": "1.7.6", - "@webassemblyjs/helper-api-error": "1.7.6", - "@webassemblyjs/helper-code-frame": "1.7.6", - "@webassemblyjs/helper-fsm": "1.7.6", - "@xtuc/long": "4.2.1", - "mamacro": "^0.0.3" + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/floating-point-hex-parser": "1.7.11", + "@webassemblyjs/helper-api-error": "1.7.11", + "@webassemblyjs/helper-code-frame": "1.7.11", + "@webassemblyjs/helper-fsm": "1.7.11", + "@xtuc/long": "4.2.1" } }, "@webassemblyjs/wast-printer": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.6.tgz", - "integrity": "sha512-vHdHSK1tOetvDcl1IV1OdDeGNe/NDDQ+KzuZHMtqTVP1xO/tZ/IKNpj5BaGk1OYFdsDWQqb31PIwdEyPntOWRQ==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz", + "integrity": "sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.6", - "@webassemblyjs/wast-parser": "1.7.6", + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/wast-parser": "1.7.11", "@xtuc/long": "4.2.1" } }, @@ -1907,13 +2408,10 @@ "dev": true }, "acorn-dynamic-import": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", - "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", - "dev": true, - "requires": { - "acorn": "^5.0.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "dev": true }, "addressparser": { "version": "1.0.1", @@ -2007,9 +2505,9 @@ } }, "ajv-errors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.0.tgz", - "integrity": "sha1-7PAh+hCP0X37Xms4Py3SM+Mf/Fk=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", "dev": true }, "ajv-keywords": { @@ -2044,28 +2542,6 @@ "superagent": "3.8.2" } }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", @@ -2095,7 +2571,7 @@ }, "readable-stream": { "version": "1.1.14", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "optional": true, @@ -2115,29 +2591,6 @@ } } }, - "angular2-template-loader": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/angular2-template-loader/-/angular2-template-loader-0.6.2.tgz", - "integrity": "sha1-wNROkP/w+sleiyPwQ6zaf9HFHXw=", - "dev": true, - "requires": { - "loader-utils": "^0.2.15" - }, - "dependencies": { - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - } - } - }, "ansi-align": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", @@ -2148,20 +2601,11 @@ } }, "ansi-colors": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.2.tgz", - "integrity": "sha512-kJmcp4PrviBBEx95fC3dYRiC/QSN3EBd0GU1XoNEk/IuUa92rsB6o90zP3w5VAyNznR38Vkc9i8vk5zK6T7TxA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", "dev": true }, - "ansi-cyan": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", - "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, "ansi-escapes": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", @@ -2183,24 +2627,17 @@ "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", "dev": true }, - "ansi-red": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", - "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" }, @@ -2209,6 +2646,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -2216,7 +2654,8 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true } } }, @@ -2276,6 +2715,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -2307,7 +2747,8 @@ "array-filter": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=" + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "dev": true }, "array-find-index": { "version": "1.0.2", @@ -2324,12 +2765,14 @@ "array-map": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=" + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "dev": true }, "array-reduce": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=" + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "dev": true }, "array-slice": { "version": "0.2.3", @@ -2355,7 +2798,8 @@ "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true }, "arraybuffer.slice": { "version": "0.0.7", @@ -2430,7 +2874,8 @@ "assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true }, "assign-symbols": { "version": "1.0.0", @@ -2445,20 +2890,9 @@ "dev": true, "optional": true }, - "astrolabe": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/astrolabe/-/astrolabe-0.3.6.tgz", - "integrity": "sha1-bT8cztp4DEw88FDvMtfHRFBFewE=", - "dev": true, - "requires": { - "exceptions": "~0.1.1", - "protractor": "*", - "underscore": "*" - } - }, "async": { "version": "1.5.2", - "resolved": "http://registry.npmjs.org/async/-/async-1.5.2.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, @@ -2497,103 +2931,36 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, - "autolinker": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-0.15.3.tgz", - "integrity": "sha1-NCQX2PLzRhsUzwkIjV7fh5HcmDI=", - "dev": true - }, "autoprefixer": { - "version": "6.5.4", - "resolved": "http://registry.npmjs.org/autoprefixer/-/autoprefixer-6.5.4.tgz", - "integrity": "sha1-E4brZwjM/zau//cK3GlOz9YK8bA=", + "version": "9.4.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.4.6.tgz", + "integrity": "sha512-Yp51mevbOEdxDUy5WjiKtpQaecqYq9OqZSL04rSoCiry7Tc5I9FEyo3bfxiTJc1DfHeKwSFCUYbBAiOQ2VGfiw==", "dev": true, "requires": { - "browserslist": "~1.4.0", - "caniuse-db": "^1.0.30000597", + "browserslist": "^4.4.1", + "caniuse-lite": "^1.0.30000929", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^5.2.6", - "postcss-value-parser": "^3.2.3" + "postcss": "^7.0.13", + "postcss-value-parser": "^3.3.1" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, "browserslist": { - "version": "1.4.0", - "resolved": "http://registry.npmjs.org/browserslist/-/browserslist-1.4.0.tgz", - "integrity": "sha1-nP3PU4TZFY9bcNoqoAsw6P8BkEk=", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.4.2.tgz", + "integrity": "sha512-ISS/AIAiHERJ3d45Fz0AVYKkgcy+F/eJHzKEvv1j0wwKGKD9T3BrwKr/5g45L+Y4XIK5PlTqefHciRFcfE1Jxg==", "dev": true, "requires": { - "caniuse-db": "^1.0.30000539" + "caniuse-lite": "^1.0.30000939", + "electron-to-chromium": "^1.3.113", + "node-releases": "^1.1.8" } }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "caniuse-lite": { + "version": "1.0.30000941", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000941.tgz", + "integrity": "sha512-4vzGb2MfZcO20VMPj1j6nRAixhmtlhkypM4fL4zhgzEucQIYiRzSqPcWIu1OF8i0FETD93FMIPWfUJCAcFvrqA==", "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } } } }, @@ -2644,7 +3011,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -2657,7 +3024,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -2672,56 +3039,6 @@ } } }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, "babel-generator": { "version": "6.26.1", "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", @@ -2752,26 +3069,6 @@ } } }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, "babel-messages": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", @@ -2781,48 +3078,6 @@ "babel-runtime": "^6.22.0" } }, - "babel-plugin-transform-cjs-system-require": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-cjs-system-require/-/babel-plugin-transform-cjs-system-require-0.1.1.tgz", - "integrity": "sha1-/+8m0xvCcOgr271DfbJ3foUWKik=", - "dev": true - }, - "babel-plugin-transform-cjs-system-wrapper": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-cjs-system-wrapper/-/babel-plugin-transform-cjs-system-wrapper-0.2.1.tgz", - "integrity": "sha1-6FUHiHe1bU0bkrn5Gzf1mdsCAOM=", - "dev": true, - "requires": { - "babel-plugin-transform-cjs-system-require": "^0.1.1", - "babel-template": "^6.9.0" - } - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-global-system-wrapper": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-global-system-wrapper/-/babel-plugin-transform-global-system-wrapper-0.0.1.tgz", - "integrity": "sha1-r7RpzsDgRom5/n6LH9KA/JSm2PI=", - "dev": true, - "requires": { - "babel-template": "^6.9.0" - } - }, - "babel-plugin-transform-system-register": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-system-register/-/babel-plugin-transform-system-register-0.0.1.tgz", - "integrity": "sha1-nf9AOQwnY6xRjwsq18XqT2WlviU=", - "dev": true - }, "babel-polyfill": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", @@ -2842,32 +3097,6 @@ } } }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - }, - "dependencies": { - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - } - } - }, "babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", @@ -3428,7 +3657,7 @@ }, "http-proxy": { "version": "1.15.2", - "resolved": "http://registry.npmjs.org/http-proxy/-/http-proxy-1.15.2.tgz", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.15.2.tgz", "integrity": "sha1-ZC/cr/5S00SNK9o7AHnpQJBk2jE=", "dev": true, "requires": { @@ -3513,7 +3742,7 @@ }, "opn": { "version": "5.3.0", - "resolved": "http://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", "dev": true, "requires": { @@ -3522,7 +3751,7 @@ }, "os-locale": { "version": "1.4.0", - "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { @@ -3595,7 +3824,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -3610,7 +3839,7 @@ }, "yargs": { "version": "6.4.0", - "resolved": "http://registry.npmjs.org/yargs/-/yargs-6.4.0.tgz", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.4.0.tgz", "integrity": "sha1-gW4ahm1VmMzzTlWW3c4i2S2kkNQ=", "dev": true, "requires": { @@ -3632,7 +3861,7 @@ }, "yargs-parser": { "version": "4.2.1", - "resolved": "http://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", "dev": true, "requires": { @@ -3686,7 +3915,7 @@ }, "browserify-aes": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "requires": { @@ -3723,7 +3952,7 @@ }, "browserify-rsa": { "version": "4.0.1", - "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { @@ -3812,7 +4041,7 @@ }, "buffer": { "version": "4.9.1", - "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { @@ -3895,7 +4124,8 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, "builtin-status-codes": { "version": "3.0.0", @@ -3929,7 +4159,7 @@ "dependencies": { "load-json-file": { "version": "2.0.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { @@ -3950,7 +4180,7 @@ }, "pify": { "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, @@ -4067,18 +4297,19 @@ }, "callsites": { "version": "2.0.0", - "resolved": "http://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", "dev": true }, "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true }, "camelcase-keys": { "version": "2.1.0", - "resolved": "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "dev": true, "requires": { @@ -4094,12 +4325,6 @@ } } }, - "caniuse-db": { - "version": "1.0.30000898", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000898.tgz", - "integrity": "sha512-i8WfgaYakyxHs5kmITs/XHjrdm7QsuuFmI5cE43I0pJ0NIJpe52t2Rz6mliG8yyu1NMXjNceC7udWdiQuA5hUA==", - "dev": true - }, "caniuse-lite": { "version": "1.0.30000898", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000898.tgz", @@ -4130,28 +4355,11 @@ "integrity": "sha512-Jt9tIBkRc9POUof7QA/VwWd+58fKkEEfI+/t1/eOlxKM7ZhrczNzMFefge7Ai+39y1pR/pP6cI19guHy3FSLmw==", "dev": true }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - }, - "dependencies": { - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true - } - } - }, "chai": { "version": "3.5.0", - "resolved": "http://registry.npmjs.org/chai/-/chai-3.5.0.tgz", + "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", + "dev": true, "requires": { "assertion-error": "^1.0.1", "deep-eql": "^0.1.3", @@ -4161,12 +4369,14 @@ "chai-as-promised": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-5.3.0.tgz", - "integrity": "sha1-CdekApCKpw39vq1T5YU/x50+8hw=" + "integrity": "sha1-CdekApCKpw39vq1T5YU/x50+8hw=", + "dev": true }, "chalk": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -4375,6 +4585,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, "requires": { "string-width": "^2.1.1", "strip-ansi": "^4.0.0", @@ -4424,7 +4635,8 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "codelyzer": { "version": "4.5.0", @@ -4460,12 +4672,6 @@ } } }, - "coffee-script": { - "version": "1.12.7", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz", - "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==", - "dev": true - }, "collapse-white-space": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz", @@ -4560,12 +4766,20 @@ "dev": true }, "compressible": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz", - "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.16.tgz", + "integrity": "sha512-JQfEOdnI7dASwCuSPWIeVYwc/zMsu/+tRhoUvEfXz2gxOA2DNjmG5vhtFdBlhWPPGo+RdT9S3tgc/uH5qgDiiA==", "dev": true, "requires": { - "mime-db": ">= 1.36.0 < 2" + "mime-db": ">= 1.38.0 < 2" + }, + "dependencies": { + "mime-db": { + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "dev": true + } } }, "compression": { @@ -4636,7 +4850,7 @@ "dependencies": { "commander": { "version": "2.6.0", - "resolved": "http://registry.npmjs.org/commander/-/commander-2.6.0.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz", "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0=", "dev": true }, @@ -4885,9 +5099,9 @@ "dev": true }, "copy-webpack-plugin": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.5.4.tgz", - "integrity": "sha512-0lstlEyj74OAtYMrDxlNZsU7cwFijAI3Ofz2fD6Mpo9r4xCv4yegfa3uHIKvZY1NSuOtE9nvG6TAhJ+uz9gDaQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz", + "integrity": "sha512-Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA==", "dev": true, "requires": { "cacache": "^10.0.4", @@ -4914,6 +5128,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", + "dev": true, "requires": { "is-directory": "^0.3.1", "js-yaml": "^3.9.0", @@ -4925,6 +5140,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, "requires": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" @@ -4953,7 +5169,7 @@ }, "create-hash": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, "requires": { @@ -4966,7 +5182,7 @@ }, "create-hmac": { "version": "1.1.7", - "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, "requires": { @@ -4982,6 +5198,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, "requires": { "lru-cache": "^4.0.1", "shebang-command": "^1.2.0", @@ -5311,7 +5528,7 @@ }, "d": { "version": "0.1.1", - "resolved": "http://registry.npmjs.org/d/-/d-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz", "integrity": "sha1-2hhMU10Y2O57oqoim5FACfrhEwk=", "requires": { "es5-ext": "~0.10.2" @@ -5378,7 +5595,8 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "decamelize-keys": { "version": "1.1.0", @@ -5398,8 +5616,9 @@ }, "deep-eql": { "version": "0.1.3", - "resolved": "http://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "dev": true, "requires": { "type-detect": "0.1.1" }, @@ -5407,7 +5626,8 @@ "type-detect": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=" + "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", + "dev": true } } }, @@ -5482,6 +5702,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -5577,7 +5798,7 @@ "dependencies": { "pify": { "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true } @@ -5661,27 +5882,15 @@ "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", "dev": true }, - "diacritics-map": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/diacritics-map/-/diacritics-map-0.1.0.tgz", - "integrity": "sha1-bfwP+dAQAKLt8oZTccrDFulJd68=", - "dev": true - }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true }, - "diff_match_patch": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/diff_match_patch/-/diff_match_patch-0.1.1.tgz", - "integrity": "sha1-0/FNW3b7S1qc9EcGJh2ttb2X7bw=", - "dev": true - }, "diffie-hellman": { "version": "5.0.3", - "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, "requires": { @@ -5749,7 +5958,7 @@ "dependencies": { "domelementtype": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", "dev": true } @@ -5795,7 +6004,7 @@ }, "duplexer": { "version": "0.1.1", - "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, @@ -5816,7 +6025,7 @@ }, "readable-stream": { "version": "1.1.14", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { @@ -6093,6 +6302,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, "requires": { "is-arrayish": "^0.2.1" } @@ -6101,6 +6311,7 @@ "version": "1.12.0", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", + "dev": true, "requires": { "es-to-primitive": "^1.1.1", "function-bind": "^1.1.1", @@ -6113,6 +6324,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -6157,7 +6369,7 @@ }, "es6-promisify": { "version": "5.0.0", - "resolved": "http://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "dev": true, "requires": { @@ -6183,16 +6395,6 @@ } } }, - "es6-template-strings": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es6-template-strings/-/es6-template-strings-2.0.1.tgz", - "integrity": "sha1-sWbGpiVi9Hi7d3X2ypYQOlmbSyw=", - "dev": true, - "requires": { - "es5-ext": "^0.10.12", - "esniff": "^1.1" - } - }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -6202,7 +6404,8 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "escodegen": { "version": "1.8.1", @@ -6230,9 +6433,9 @@ } }, "eslint-scope": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", - "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.2.tgz", + "integrity": "sha512-5q1+B/ogmHl8+paxtOKx38Z8LtWkVGuNt3+GQNErqwLl6ViNp/gdJGMCjZNxZ8j/VYjDNZ2Fo+eQc1TAVPIzbg==", "dev": true, "requires": { "esrecurse": "^4.1.0", @@ -6247,27 +6450,6 @@ } } }, - "esniff": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/esniff/-/esniff-1.1.0.tgz", - "integrity": "sha1-xmhJIp+RRk3t4uDUAgHtar9l8qw=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.12" - }, - "dependencies": { - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "dev": true, - "requires": { - "es5-ext": "^0.10.9" - } - } - } - }, "esprima": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", @@ -6353,18 +6535,18 @@ "dev": true }, "events": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", + "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", "dev": true }, "eventsource": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", - "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", "dev": true, "requires": { - "original": ">=0.0.5" + "original": "^1.0.0" } }, "evp_bytestokey": { @@ -6377,19 +6559,11 @@ "safe-buffer": "^5.1.1" } }, - "exceptions": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/exceptions/-/exceptions-0.1.1.tgz", - "integrity": "sha1-twOQB5XCjwetadusX2h4b5RWIbI=", - "dev": true, - "requires": { - "formaterrors": "0.1.1" - } - }, "execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, "requires": { "cross-spawn": "^5.0.1", "get-stream": "^3.0.0", @@ -6810,7 +6984,7 @@ }, "fast-json-patch": { "version": "0.5.7", - "resolved": "http://registry.npmjs.org/fast-json-patch/-/fast-json-patch-0.5.7.tgz", + "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-0.5.7.tgz", "integrity": "sha1-taj0nSWWJFlu+YuHLz/aiVtNhmU=", "dev": true }, @@ -6874,9 +7048,9 @@ } }, "file-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-2.0.0.tgz", - "integrity": "sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz", + "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==", "dev": true, "requires": { "loader-utils": "^1.0.2", @@ -6950,7 +7124,7 @@ }, "finalhandler": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", "dev": true, "requires": { @@ -7001,6 +7175,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, "requires": { "locate-path": "^2.0.0" } @@ -7098,16 +7273,6 @@ "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", "dev": true }, - "formaterrors": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/formaterrors/-/formaterrors-0.1.1.tgz", - "integrity": "sha1-fjZz5HTfeoOXE5KBgpNito/ODes=", - "dev": true, - "requires": { - "diff_match_patch": "0.1.1", - "stack-trace": "0.0.6" - } - }, "formidable": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", @@ -7173,7 +7338,7 @@ "fs-minipass": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", - "integrity": "sha1-BsJ3IYRU7CiN93raVKA7hwKqy50=", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "dev": true, "requires": { "minipass": "^2.2.1" @@ -7824,7 +7989,7 @@ }, "readable-stream": { "version": "1.1.14", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "optional": true, @@ -7854,7 +8019,8 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "gauge": { "version": "2.7.4", @@ -7900,7 +8066,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -7953,7 +8119,8 @@ "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true }, "get-stdin": { "version": "4.0.1", @@ -7963,8 +8130,9 @@ }, "get-stream": { "version": "3.0.0", - "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true }, "get-uri": { "version": "2.0.2", @@ -8026,7 +8194,7 @@ "dependencies": { "axios": { "version": "0.15.3", - "resolved": "http://registry.npmjs.org/axios/-/axios-0.15.3.tgz", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.15.3.tgz", "integrity": "sha1-LJ1jiy4ZGgjqHWzJiOrda6W9wFM=", "dev": true, "requires": { @@ -8044,7 +8212,7 @@ }, "follow-redirects": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/follow-redirects/-/follow-redirects-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.0.0.tgz", "integrity": "sha1-jjQpjL0uF28lTv/sdaHHjMhJ/Tc=", "dev": true, "requires": { @@ -8250,7 +8418,7 @@ "dependencies": { "minimist": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz", "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=", "dev": true } @@ -8278,7 +8446,8 @@ "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true }, "graceful-readlink": { "version": "1.0.1", @@ -8290,32 +8459,9 @@ "version": "0.0.8", "resolved": "https://registry.npmjs.org/graphviz/-/graphviz-0.0.8.tgz", "integrity": "sha1-5ZnkBzPvgOFlO/6JpfAx7PKqSqo=", - "requires": { - "temp": "~0.4.0" - } - }, - "gray-matter": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-2.1.1.tgz", - "integrity": "sha1-MELZrewqHe1qdwep7SOA+KF6Qw4=", "dev": true, "requires": { - "ansi-red": "^0.1.1", - "coffee-script": "^1.12.4", - "extend-shallow": "^2.0.1", - "js-yaml": "^3.8.1", - "toml": "^2.3.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "temp": "~0.4.0" } }, "gulp-util": { @@ -8358,7 +8504,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -8383,7 +8529,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -8423,15 +8569,15 @@ "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" }, "handle-thing": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", - "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", + "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", "dev": true }, "handlebars": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz", - "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.0.tgz", + "integrity": "sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w==", "dev": true, "requires": { "async": "^2.5.0", @@ -8441,12 +8587,12 @@ }, "dependencies": { "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", "dev": true, "requires": { - "lodash": "^4.17.10" + "lodash": "^4.17.11" } }, "source-map": { @@ -8503,6 +8649,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -8550,7 +8697,8 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "has-gulplog": { "version": "0.1.0", @@ -8564,7 +8712,8 @@ "has-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true }, "has-unicode": { "version": "2.0.1", @@ -8671,16 +8820,6 @@ "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", "dev": true }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } - }, "homedir-polyfill": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", @@ -8693,7 +8832,8 @@ "hosted-git-info": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true }, "hpack.js": { "version": "2.1.6", @@ -8733,7 +8873,7 @@ }, "http-errors": { "version": "1.6.3", - "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "dev": true, "requires": { @@ -9080,7 +9220,7 @@ "ignore-walk": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", - "integrity": "sha1-qD5i59JyrA47VRqqgoMaGbafgvg=", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "dev": true, "requires": { "minimatch": "^3.0.4" @@ -9361,7 +9501,8 @@ "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true }, "ip": { "version": "1.1.5", @@ -9426,7 +9567,8 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true }, "is-binary-path": { "version": "1.0.1", @@ -9445,8 +9587,9 @@ }, "is-builtin-module": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, "requires": { "builtin-modules": "^1.0.0" } @@ -9454,7 +9597,8 @@ "is-callable": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true }, "is-ci": { "version": "1.2.1", @@ -9488,7 +9632,8 @@ "is-date-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true }, "is-decimal": { "version": "1.0.2", @@ -9518,7 +9663,8 @@ "is-directory": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true }, "is-dotfile": { "version": "1.0.3", @@ -9559,7 +9705,8 @@ "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-glob": { "version": "4.0.0", @@ -9650,7 +9797,7 @@ }, "is-obj": { "version": "1.0.1", - "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, @@ -9727,6 +9874,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, "requires": { "has": "^1.0.1" } @@ -9746,7 +9894,8 @@ "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "is-supported-regexp-flag": { "version": "1.0.1", @@ -9758,6 +9907,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, "requires": { "has-symbols": "^1.0.0" } @@ -9795,7 +9945,8 @@ "is-wsl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true }, "isarray": { "version": "1.0.0", @@ -9814,7 +9965,8 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isobject": { "version": "3.0.1", @@ -10136,6 +10288,7 @@ "version": "3.12.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -10144,7 +10297,8 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true } } }, @@ -10162,7 +10316,8 @@ "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true }, "json-parser": { "version": "1.1.5", @@ -10240,6 +10395,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -10247,7 +10403,8 @@ "jsonify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true }, "jsonparse": { "version": "1.3.1", @@ -10295,7 +10452,7 @@ }, "es6-promise": { "version": "3.0.2", - "resolved": "http://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=", "dev": true }, @@ -10307,7 +10464,7 @@ }, "readable-stream": { "version": "2.0.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", "dev": true, "requires": { @@ -10474,7 +10631,7 @@ }, "readable-stream": { "version": "2.0.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", "dev": true, "requires": { @@ -10579,19 +10736,11 @@ "package-json": "^4.0.0" } }, - "lazy-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", - "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", - "dev": true, - "requires": { - "set-getter": "^0.1.0" - } - }, "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, "requires": { "invert-kv": "^1.0.0" } @@ -10689,7 +10838,7 @@ "dependencies": { "iconv-lite": { "version": "0.4.15", - "resolved": "http://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=", "dev": true } @@ -10732,11 +10881,12 @@ } }, "license-webpack-plugin": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.0.2.tgz", - "integrity": "sha512-GsomZw5VoT20ST8qH2tOjBgbyhn6Pgs9M94g0mbvfBIV1VXufm1iKY+4dbgfTObj1Mp6nSRE3Zf74deOZr0KwA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.0.tgz", + "integrity": "sha512-vDiBeMWxjE9n6TabQ9J4FH8urFdsRK0Nvxn1cit9biCiR9aq1zBR0X2BlAkEiIG6qPamLeU0GzvIgLkrFc398A==", "dev": true, "requires": { + "@types/webpack-sources": "^0.1.5", "webpack-sources": "^1.2.0" } }, @@ -10764,47 +10914,6 @@ "uc.micro": "^1.0.1" } }, - "list-item": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/list-item/-/list-item-1.1.1.tgz", - "integrity": "sha1-DGXQDih8tmPMs8s4Sad+iewmilY=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "extend-shallow": "^2.0.1", - "is-number": "^2.1.0", - "repeat-string": "^1.5.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "lite-server": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/lite-server/-/lite-server-2.4.0.tgz", @@ -10848,9 +10957,9 @@ } }, "loader-runner": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.1.tgz", - "integrity": "sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", "dev": true }, "loader-utils": { @@ -10934,7 +11043,7 @@ }, "os-locale": { "version": "1.4.0", - "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { @@ -10954,7 +11063,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -10969,7 +11078,7 @@ }, "yargs": { "version": "6.6.0", - "resolved": "http://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", "dev": true, "requires": { @@ -10990,7 +11099,7 @@ }, "yargs-parser": { "version": "4.2.1", - "resolved": "http://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", "dev": true, "requires": { @@ -11003,6 +11112,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, "requires": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" @@ -11011,7 +11121,8 @@ "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true }, "lodash._basecopy": { "version": "3.0.1", @@ -11212,7 +11323,7 @@ "dependencies": { "axios": { "version": "0.15.3", - "resolved": "http://registry.npmjs.org/axios/-/axios-0.15.3.tgz", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.15.3.tgz", "integrity": "sha1-LJ1jiy4ZGgjqHWzJiOrda6W9wFM=", "dev": true, "optional": true, @@ -11222,7 +11333,7 @@ }, "follow-redirects": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/follow-redirects/-/follow-redirects-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.0.0.tgz", "integrity": "sha1-jjQpjL0uF28lTv/sdaHHjMhJ/Tc=", "dev": true, "optional": true, @@ -11310,7 +11421,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "optional": true, @@ -11324,7 +11435,7 @@ }, "form-data": { "version": "2.0.0", - "resolved": "http://registry.npmjs.org/form-data/-/form-data-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.0.0.tgz", "integrity": "sha1-bwrrrcxdoWwT4ezBETfYX5uIOyU=", "dev": true, "optional": true, @@ -11411,7 +11522,7 @@ }, "request": { "version": "2.75.0", - "resolved": "http://registry.npmjs.org/request/-/request-2.75.0.tgz", + "resolved": "https://registry.npmjs.org/request/-/request-2.75.0.tgz", "integrity": "sha1-0rgmiihtoT6qXQGt9dGMyQ9lfZM=", "dev": true, "optional": true, @@ -11448,7 +11559,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "optional": true, @@ -11488,12 +11599,6 @@ "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", "dev": true }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, "longest-streak": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.2.tgz", @@ -11529,6 +11634,7 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, "requires": { "pseudomap": "^1.0.2", "yallist": "^2.1.2" @@ -11702,12 +11808,6 @@ } } }, - "mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", - "dev": true - }, "map-age-cleaner": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz", @@ -11757,46 +11857,12 @@ "uc.micro": "^1.0.5" } }, - "markdown-link": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/markdown-link/-/markdown-link-0.1.1.tgz", - "integrity": "sha1-MsXGUZmmRXMWMi0eQinRNAfIx88=", - "dev": true - }, "markdown-table": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.2.tgz", "integrity": "sha512-NcWuJFHDA8V3wkDgR/j4+gZx+YQwstPgfQDV8ndUeWWzta3dnDTBxpVzqS9lkmJAuV5YX35lmyojl6HO5JXAgw==", "dev": true }, - "markdown-toc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/markdown-toc/-/markdown-toc-1.2.0.tgz", - "integrity": "sha512-eOsq7EGd3asV0oBfmyqngeEIhrbkc7XVP63OwcJBIhH2EpG2PzFcbZdhy1jutXSlRBBVMNXHvMtSr5LAxSUvUg==", - "dev": true, - "requires": { - "concat-stream": "^1.5.2", - "diacritics-map": "^0.1.0", - "gray-matter": "^2.1.0", - "lazy-cache": "^2.0.2", - "list-item": "^1.1.1", - "markdown-link": "^0.1.1", - "minimist": "^1.2.0", - "mixin-deep": "^1.1.3", - "object.pick": "^1.2.0", - "remarkable": "^1.7.1", - "repeat-string": "^1.6.1", - "strip-color": "^0.1.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, "markdownlint": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.11.0.tgz", @@ -11825,7 +11891,7 @@ "dependencies": { "commander": { "version": "2.9.0", - "resolved": "http://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "dev": true, "requires": { @@ -11872,7 +11938,7 @@ }, "marked": { "version": "0.3.19", - "resolved": "http://registry.npmjs.org/marked/-/marked-0.3.19.tgz", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz", "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==", "dev": true }, @@ -11958,7 +12024,7 @@ }, "media-typer": { "version": "0.3.0", - "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, @@ -11966,6 +12032,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, "requires": { "mimic-fn": "^1.0.0" } @@ -11983,11 +12050,12 @@ "memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=" + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "dev": true }, "meow": { "version": "3.7.0", - "resolved": "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", "dev": true, "requires": { @@ -12017,15 +12085,6 @@ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, - "merge-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", - "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, "merge2": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz", @@ -12089,12 +12148,13 @@ "mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true }, "mini-css-extract-plugin": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.3.tgz", - "integrity": "sha512-Mxs0nxzF1kxPv4TRi2NimewgXlJqh0rGE30vviCU2WHrpbta6wklnUV9dr9FUtoAHmB3p3LeXEC+ZjgHvB0Dzg==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz", + "integrity": "sha512-IuaLjruM0vMKhUUT51fQdQzBYTX49dLj8w68ALEAe2A4iYNpIC4eMac67mt3NzycvjOlf07/kYxJDc0RTl1Wqw==", "dev": true, "requires": { "loader-utils": "^1.1.0", @@ -12131,6 +12191,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -12146,7 +12207,8 @@ "minimist": { "version": "0.0.8", "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true }, "minimist-options": { "version": "3.0.2", @@ -12161,7 +12223,7 @@ "minipass": { "version": "2.3.5", "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", - "integrity": "sha1-ys6+SSAiSX9law8PUeJoKp7S2Eg=", + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", "dev": true, "requires": { "safe-buffer": "^5.1.2", @@ -12171,7 +12233,7 @@ "yallist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha1-tLBJ4xS+VF486AIjbWzSLNkcPek=", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", "dev": true } } @@ -12250,8 +12312,9 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, "requires": { "minimist": "0.0.8" } @@ -12390,7 +12453,7 @@ }, "os-locale": { "version": "1.4.0", - "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { @@ -12410,7 +12473,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -12425,7 +12488,7 @@ }, "yargs": { "version": "3.32.0", - "resolved": "http://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", "dev": true, "requires": { @@ -12442,7 +12505,7 @@ }, "ncp": { "version": "2.0.0", - "resolved": "http://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", "dev": true }, @@ -12750,7 +12813,8 @@ "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "node-ensure": { "version": "0.0.0", @@ -12759,7 +12823,7 @@ }, "node-fetch": { "version": "1.6.3", - "resolved": "http://registry.npmjs.org/node-fetch/-/node-fetch-1.6.3.tgz", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.6.3.tgz", "integrity": "sha1-3CNO3WSJmC1Y6PDbT2lQKavNjAQ=", "dev": true, "requires": { @@ -12806,16 +12870,16 @@ "dependencies": { "semver": { "version": "5.3.0", - "resolved": "http://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", "dev": true } } }, "node-libs-browser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", - "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", + "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", "dev": true, "requires": { "assert": "^1.1.1", @@ -12825,7 +12889,7 @@ "constants-browserify": "^1.0.0", "crypto-browserify": "^3.11.0", "domain-browser": "^1.1.1", - "events": "^1.0.0", + "events": "^3.0.0", "https-browserify": "^1.0.0", "os-browserify": "^0.3.0", "path-browserify": "0.0.0", @@ -12839,7 +12903,7 @@ "timers-browserify": "^2.0.4", "tty-browserify": "0.0.0", "url": "^0.11.0", - "util": "^0.10.3", + "util": "^0.11.0", "vm-browserify": "0.0.4" }, "dependencies": { @@ -12848,6 +12912,15 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } } } }, @@ -12913,7 +12986,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -12998,7 +13071,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -13136,6 +13209,7 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, "requires": { "hosted-git-info": "^2.1.4", "is-builtin-module": "^1.0.0", @@ -13173,7 +13247,7 @@ "npm-bundled": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.5.tgz", - "integrity": "sha1-PBcyt7qTazoQMlrvYWRnwMy8yXk=", + "integrity": "sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==", "dev": true }, "npm-package-arg": { @@ -13227,6 +13301,7 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "chalk": "^2.4.1", @@ -13243,6 +13318,7 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -13255,6 +13331,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "parse-json": "^4.0.0", @@ -13266,6 +13343,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, "requires": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" @@ -13275,6 +13353,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, "requires": { "load-json-file": "^4.0.0", "normalize-package-data": "^2.3.2", @@ -13284,7 +13363,8 @@ "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true } } }, @@ -13292,6 +13372,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, "requires": { "path-key": "^2.0.0" } @@ -13332,7 +13413,8 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true }, "oauth-sign": { "version": "0.9.0", @@ -13386,7 +13468,8 @@ "object-keys": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==" + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "dev": true }, "object-path": { "version": "0.9.2", @@ -13449,9 +13532,9 @@ } }, "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "dev": true }, "once": { @@ -13500,7 +13583,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -13519,7 +13602,7 @@ }, "opn": { "version": "4.0.2", - "resolved": "http://registry.npmjs.org/opn/-/opn-4.0.2.tgz", + "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", "dev": true, "requires": { @@ -13529,7 +13612,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -13566,6 +13649,7 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", + "dev": true, "requires": { "is-wsl": "^1.1.0" } @@ -13627,6 +13711,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, "requires": { "execa": "^0.7.0", "lcid": "^1.0.0", @@ -13636,7 +13721,8 @@ "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true }, "osenv": { "version": "0.1.5", @@ -13657,11 +13743,12 @@ "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true }, "p-is-promise": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", "dev": true }, @@ -13669,6 +13756,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, "requires": { "p-try": "^1.0.0" } @@ -13677,6 +13765,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, "requires": { "p-limit": "^1.1.0" } @@ -13690,7 +13779,8 @@ "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true }, "pac-proxy-agent": { "version": "3.0.0", @@ -13885,16 +13975,17 @@ } }, "parse-asn1": { - "version": "5.1.1", - "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", - "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", + "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", "dev": true, "requires": { "asn1.js": "^4.0.0", "browserify-aes": "^1.0.0", "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3" + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" } }, "parse-entities": { @@ -14016,7 +14107,8 @@ "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", @@ -14033,7 +14125,8 @@ "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.6", @@ -14070,6 +14163,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, "requires": { "pify": "^3.0.0" } @@ -14105,12 +14199,14 @@ "pidtree": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.0.tgz", - "integrity": "sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg==" + "integrity": "sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg==", + "dev": true }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true }, "pinkie": { "version": "2.0.4", @@ -14145,56 +14241,10 @@ "semver-compare": "^1.0.0" } }, - "plugin-error": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", - "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", - "dev": true, - "requires": { - "ansi-cyan": "^0.1.1", - "ansi-red": "^0.1.1", - "arr-diff": "^1.0.1", - "arr-union": "^2.0.1", - "extend-shallow": "^1.1.2" - }, - "dependencies": { - "arr-diff": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", - "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1", - "array-slice": "^0.2.3" - } - }, - "arr-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", - "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", - "dev": true - }, - "extend-shallow": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", - "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", - "dev": true, - "requires": { - "kind-of": "^1.1.0" - } - }, - "kind-of": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", - "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", - "dev": true - } - } - }, "portfinder": { - "version": "1.0.17", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.17.tgz", - "integrity": "sha512-syFcRIRzVI1BoEFOCaAiizwDolh1S1YXSodsVhncbhjzjZQulhczNRbqnUl9N31Q4dKGOXsNDqxC2BWBgSMqeQ==", + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz", + "integrity": "sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==", "dev": true, "requires": { "async": "^1.5.2", @@ -14337,34 +14387,15 @@ } }, "postcss-import": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-12.0.0.tgz", - "integrity": "sha512-3KqKRZcaZAvxbY8DVLdd81tG5uKzbUQuiWIvy0o0fzEC42bKacqPYFWbfCQyw6L4LWUaqPz/idvIdbhpgQ32eQ==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-12.0.1.tgz", + "integrity": "sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw==", "dev": true, "requires": { "postcss": "^7.0.1", "postcss-value-parser": "^3.2.3", "read-cache": "^1.0.0", "resolve": "^1.1.7" - }, - "dependencies": { - "postcss": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.6.tgz", - "integrity": "sha512-Nq/rNjnHFcKgCDDZYO0lNsl6YWe6U7tTy+ESN+PnLxebL8uBtYX59HZqvrj7YLK5UCyll2hqDsJOo3ndzEW8Ug==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.5.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, "postcss-jsx": { @@ -14427,17 +14458,6 @@ "schema-utils": "^1.0.0" }, "dependencies": { - "postcss": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.6.tgz", - "integrity": "sha512-Nq/rNjnHFcKgCDDZYO0lNsl6YWe6U7tTy+ESN+PnLxebL8uBtYX59HZqvrj7YLK5UCyll2hqDsJOo3ndzEW8Ug==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.5.0" - } - }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -14448,12 +14468,6 @@ "ajv-errors": "^1.0.0", "ajv-keywords": "^3.1.0" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true } } }, @@ -14706,12 +14720,6 @@ } } }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -14818,7 +14826,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -14866,7 +14874,7 @@ }, "pify": { "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, @@ -14887,7 +14895,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -14948,7 +14956,7 @@ }, "jsonfile": { "version": "2.4.0", - "resolved": "http://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "dev": true, "requires": { @@ -14961,6 +14969,7 @@ "version": "1.2.6", "resolved": "https://registry.npmjs.org/protractor-retry/-/protractor-retry-1.2.6.tgz", "integrity": "sha512-lO9lGgM1Hj0K4N7JxmsW70vkgHY3deaeIgbRb9hw5CJB1LRPpjj7Jo1e3guORSxdbHeS7ykR/CW+1hD3+Oql/Q==", + "dev": true, "requires": { "array-unique": "~0.3.2", "chai": "3.x", @@ -14977,6 +14986,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -14984,7 +14994,8 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, @@ -15031,7 +15042,8 @@ "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true }, "psl": { "version": "1.1.29", @@ -15082,7 +15094,8 @@ "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true }, "qjobs": { "version": "1.2.0", @@ -15139,9 +15152,9 @@ } }, "randombytes": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "requires": { "safe-buffer": "^5.1.0" @@ -15226,7 +15239,7 @@ "dependencies": { "pify": { "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true } @@ -15323,7 +15336,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", @@ -15480,64 +15493,6 @@ "jsesc": "~0.5.0" } }, - "remap-istanbul": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/remap-istanbul/-/remap-istanbul-0.11.1.tgz", - "integrity": "sha512-Itv3XvYjD6G+9xDzAeFohx4GUwbFjfqFt0UXlC826jHR18E49fEiEGqZUxUASwMq4z7wwUv2H9/XF2d6qj0iaQ==", - "dev": true, - "requires": { - "amdefine": "^1.0.0", - "istanbul": "0.4.5", - "minimatch": "^3.0.3", - "plugin-error": "^0.1.2", - "source-map": "^0.6.1", - "through2": "2.0.1" - }, - "dependencies": { - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true - }, - "readable-stream": { - "version": "2.0.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "through2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz", - "integrity": "sha1-OE51MU1J8y3hLuu4E2uOtrXVnak=", - "dev": true, - "requires": { - "readable-stream": "~2.0.0", - "xtend": "~4.0.0" - } - } - } - }, "remark": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/remark/-/remark-9.0.0.tgz", @@ -15604,34 +15559,6 @@ "xtend": "^4.0.1" } }, - "remarkable": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/remarkable/-/remarkable-1.7.1.tgz", - "integrity": "sha1-qspJchALZqZCpjoQIcpLrBvjv/Y=", - "dev": true, - "requires": { - "argparse": "~0.1.15", - "autolinker": "~0.15.0" - }, - "dependencies": { - "argparse": { - "version": "0.1.16", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", - "integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=", - "dev": true, - "requires": { - "underscore": "~1.7.0", - "underscore.string": "~2.4.0" - } - }, - "underscore": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", - "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=", - "dev": true - } - } - }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -15709,17 +15636,20 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true }, "requires-port": { "version": "1.0.0", @@ -15813,15 +15743,6 @@ "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", "dev": true }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, - "requires": { - "align-text": "^0.1.1" - } - }, "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", @@ -15939,12 +15860,6 @@ } } }, - "rsvp": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", - "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==", - "dev": true - }, "run-async": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", @@ -15969,16 +15884,6 @@ "aproba": "^1.1.1" } }, - "run-sequence": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/run-sequence/-/run-sequence-1.2.2.tgz", - "integrity": "sha1-UJWgvr6YczsBQL0I3YDsAw3azes=", - "dev": true, - "requires": { - "chalk": "*", - "gulp-util": "*" - } - }, "rx": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", @@ -16098,7 +16003,7 @@ }, "os-locale": { "version": "1.4.0", - "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { @@ -16118,7 +16023,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -16189,7 +16094,8 @@ "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true }, "schema-utils": { "version": "0.4.7", @@ -16373,9 +16279,9 @@ } }, "serialize-javascript": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", - "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz", + "integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==", "dev": true }, "serve-index": { @@ -16431,16 +16337,8 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "set-getter": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", - "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", - "dev": true, - "requires": { - "to-object-path": "^0.3.0" - } + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "set-value": { "version": "2.0.0", @@ -16479,7 +16377,7 @@ }, "sha.js": { "version": "2.4.11", - "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, "requires": { @@ -16510,6 +16408,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -16517,12 +16416,14 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "shell-quote": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "dev": true, "requires": { "array-filter": "~0.0.0", "array-map": "~0.0.0", @@ -16550,7 +16451,8 @@ "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "slack-node": { "version": "0.2.0", @@ -16851,28 +16753,19 @@ } }, "sockjs-client": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.5.tgz", - "integrity": "sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", + "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", "dev": true, "requires": { - "debug": "^2.6.6", - "eventsource": "0.1.6", - "faye-websocket": "~0.11.0", - "inherits": "^2.0.1", + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", "json3": "^3.3.2", - "url-parse": "^1.1.8" + "url-parse": "^1.4.3" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, "faye-websocket": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", @@ -16881,12 +16774,6 @@ "requires": { "websocket-driver": ">=0.5.1" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true } } }, @@ -16932,12 +16819,12 @@ }, "dependencies": { "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", "dev": true, "requires": { - "lodash": "^4.17.10" + "lodash": "^4.17.11" } } } @@ -17012,6 +16899,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", + "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -17020,12 +16908,14 @@ "spdx-exceptions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true }, "spdx-expression-parse": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, "requires": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -17034,7 +16924,8 @@ "spdx-license-ids": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz", - "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==" + "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==", + "dev": true }, "spdx-license-list": { "version": "5.0.0", @@ -17060,65 +16951,62 @@ } }, "spdy": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", - "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.0.tgz", + "integrity": "sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q==", "dev": true, "requires": { - "debug": "^2.6.8", - "handle-thing": "^1.2.5", + "debug": "^4.1.0", + "handle-thing": "^2.0.0", "http-deceiver": "^1.2.7", - "safe-buffer": "^5.0.1", "select-hose": "^2.0.0", - "spdy-transport": "^2.0.18" + "spdy-transport": "^3.0.0" }, "dependencies": { "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true } } }, "spdy-transport": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.1.tgz", - "integrity": "sha512-q7D8c148escoB3Z7ySCASadkegMmUZW8Wb/Q1u0/XBgDKMO880rLQDj8Twiew/tYi7ghemKUi/whSYOwE17f5Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, "requires": { - "debug": "^2.6.8", - "detect-node": "^2.0.3", + "debug": "^4.1.0", + "detect-node": "^2.0.4", "hpack.js": "^2.1.6", - "obuf": "^1.1.1", - "readable-stream": "^2.2.9", - "safe-buffer": "^5.0.1", - "wbuf": "^1.7.2" + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" }, "dependencies": { "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "readable-stream": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.2.0.tgz", + "integrity": "sha512-RV20kLjdmpZuTF1INEb9IA3L68Nmi+Ri7ppZqo78wj//Pn62fCoJyV9zalccNzDD/OuJpMG4f+pfMl8+L6QdGw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } } } }, @@ -17129,9 +17017,9 @@ "dev": true }, "speed-measure-webpack-plugin": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.2.3.tgz", - "integrity": "sha512-p+taQ69VkRUXYMoZOx2nxV/Tz8tt79ahctoZJyJDHWP7fEYvwFNf5Pd73k5kZ6auu0pTsPNLEUwWpM8mCk85Zw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.0.tgz", + "integrity": "sha512-b9Yd0TrzceMVYSbuamM1sFsGM1oVfyFTM22gOoyLhymNvBVApuYpkdFOgYkKJpN/KhTpcCYcTGHg7X+FJ33Vvw==", "dev": true, "requires": { "chalk": "^2.0.1" @@ -17177,12 +17065,6 @@ "safe-buffer": "^5.1.1" } }, - "stack-trace": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.6.tgz", - "integrity": "sha1-HnGb1qJin/CcGJ4Xqe+QKpT8XbA=", - "dev": true - }, "state-toggle": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.1.tgz", @@ -17235,9 +17117,9 @@ } }, "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", "dev": true, "requires": { "inherits": "~2.0.1", @@ -17299,6 +17181,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -17308,6 +17191,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz", "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", + "dev": true, "requires": { "define-properties": "^1.1.2", "es-abstract": "^1.4.3", @@ -17345,6 +17229,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -17358,16 +17243,11 @@ "is-utf8": "^0.2.0" } }, - "strip-color": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/strip-color/-/strip-color-0.1.0.tgz", - "integrity": "sha1-EG9l09PmotlAHKwOsM6LinArT3s=", - "dev": true - }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-indent": { "version": "1.0.1", @@ -17381,16 +17261,30 @@ "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "style-loader": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.0.tgz", - "integrity": "sha512-uCcN7XWHkqwGVt7skpInW6IGO1tG6ReyFQ1Cseh0VcN6VdcFQi62aG/2F3Y9ueA8x4IVlfaSUxpmQXQD9QrEuQ==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", + "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", "dev": true, "requires": { "loader-utils": "^1.1.0", - "schema-utils": "^0.4.5" + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } } }, "style-search": { @@ -17772,7 +17666,7 @@ }, "sax": { "version": "0.5.8", - "resolved": "http://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", "dev": true }, @@ -17855,6 +17749,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -17873,183 +17768,12 @@ }, "systemjs": { "version": "0.19.27", - "resolved": "http://registry.npmjs.org/systemjs/-/systemjs-0.19.27.tgz", + "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-0.19.27.tgz", "integrity": "sha1-8XQNVlzmQ3GsDecHKk0eVHG6e6I=", "requires": { "when": "^3.7.5" } }, - "systemjs-builder": { - "version": "0.15.34", - "resolved": "https://registry.npmjs.org/systemjs-builder/-/systemjs-builder-0.15.34.tgz", - "integrity": "sha1-bxt0N+aB45W72tsuC51L/YbxzlY=", - "dev": true, - "requires": { - "babel-core": "^6.9.0", - "babel-plugin-transform-cjs-system-wrapper": "^0.2.1", - "babel-plugin-transform-es2015-modules-systemjs": "^6.6.5", - "babel-plugin-transform-global-system-wrapper": "0.0.1", - "babel-plugin-transform-system-register": "0.0.1", - "bluebird": "^3.3.4", - "data-uri-to-buffer": "0.0.4", - "es6-template-strings": "^2.0.0", - "glob": "^7.0.3", - "mkdirp": "^0.5.1", - "rollup": "^0.36.3", - "source-map": "^0.5.3", - "systemjs": "^0.19.41", - "traceur": "0.0.105", - "uglify-js": "^2.6.1" - }, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - } - }, - "commander": { - "version": "2.9.0", - "resolved": "http://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true, - "requires": { - "graceful-readlink": ">= 1.0.0" - } - }, - "data-uri-to-buffer": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-0.0.4.tgz", - "integrity": "sha1-RuE6udqOMJdFyNAc5UchPr2y/j8=", - "dev": true - }, - "rollup": { - "version": "0.36.4", - "resolved": "http://registry.npmjs.org/rollup/-/rollup-0.36.4.tgz", - "integrity": "sha1-oiRJTFOGwdc9OPe7hvafXrARo9I=", - "dev": true, - "requires": { - "source-map-support": "^0.4.0" - } - }, - "semver": { - "version": "4.3.6", - "resolved": "http://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", - "dev": true - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - }, - "systemjs": { - "version": "0.19.47", - "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-0.19.47.tgz", - "integrity": "sha1-yMk5NxgPP1SBx2nNJyB2P7SjHG8=", - "dev": true, - "requires": { - "when": "^3.7.5" - } - }, - "traceur": { - "version": "0.0.105", - "resolved": "https://registry.npmjs.org/traceur/-/traceur-0.0.105.tgz", - "integrity": "sha1-XPne6D1rd4YcPWxE1ThZrterBHk=", - "dev": true, - "requires": { - "commander": "2.9.x", - "glob": "5.0.x", - "rsvp": "^3.0.13", - "semver": "^4.3.3", - "source-map-support": "~0.2.8" - }, - "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "source-map": { - "version": "0.1.32", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", - "integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - }, - "source-map-support": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", - "integrity": "sha1-6lo5AKHByyUJagrozFwrSxDe09w=", - "dev": true, - "requires": { - "source-map": "0.1.32" - } - } - } - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - } - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true - }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true - }, - "yargs": { - "version": "3.10.0", - "resolved": "http://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - } - }, "table": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/table/-/table-5.1.0.tgz", @@ -18082,7 +17806,8 @@ "temp": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/temp/-/temp-0.4.0.tgz", - "integrity": "sha1-ZxrWPVe+D+nXKUZks/xABjZnimA=" + "integrity": "sha1-ZxrWPVe+D+nXKUZks/xABjZnimA=", + "dev": true }, "term-size": { "version": "1.2.0", @@ -18094,14 +17819,14 @@ } }, "terser": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.11.0.tgz", - "integrity": "sha512-5iLMdhEPIq3zFWskpmbzmKwMQixKmTYwY3Ox9pjtSklBLnHiuQ0GKJLhL1HSYtyffHM3/lDIFBnb82m9D7ewwQ==", + "version": "3.16.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.16.1.tgz", + "integrity": "sha512-JDJjgleBROeek2iBcSNzOHLKsB/MdDf+E/BOAJ0Tk9r7p9/fVobfv7LMJ/g/k3v9SXdmjZnIlFd5nfn/Rt0Xow==", "dev": true, "requires": { "commander": "~2.17.1", "source-map": "~0.6.1", - "source-map-support": "~0.5.6" + "source-map-support": "~0.5.9" }, "dependencies": { "commander": { @@ -18119,9 +17844,9 @@ } }, "terser-webpack-plugin": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.1.0.tgz", - "integrity": "sha512-61lV0DSxMAZ8AyZG7/A4a3UPlrbOBo8NIQ4tJzLPAdGOQ+yoNC7l5ijEow27lBAL2humer01KLS6bGIMYQxKoA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.2.tgz", + "integrity": "sha512-1DMkTk286BzmfylAvLXwpJrI7dWa5BnFmscV/2dCr8+c56egFcbaeFAl7+sujAjdmpLam21XRdhA4oifLyiWWg==", "dev": true, "requires": { "cacache": "^11.0.2", @@ -18129,30 +17854,36 @@ "schema-utils": "^1.0.0", "serialize-javascript": "^1.4.0", "source-map": "^0.6.1", - "terser": "^3.8.1", + "terser": "^3.16.1", "webpack-sources": "^1.1.0", "worker-farm": "^1.5.2" }, "dependencies": { + "bluebird": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", + "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", + "dev": true + }, "cacache": { - "version": "11.3.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.1.tgz", - "integrity": "sha512-2PEw4cRRDu+iQvBTTuttQifacYjLPhET+SYO/gEFMy8uhi+jlJREDAjSF5FWSdV/Aw5h18caHA7vMTw2c+wDzA==", + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", + "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", "dev": true, "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "figgy-pudding": "^3.1.0", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.3", + "bluebird": "^3.5.3", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", "mississippi": "^3.0.0", "mkdirp": "^0.5.1", "move-concurrently": "^1.0.1", "promise-inflight": "^1.0.1", "rimraf": "^2.6.2", - "ssri": "^6.0.0", - "unique-filename": "^1.1.0", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", "y18n": "^4.0.0" } }, @@ -18176,6 +17907,12 @@ "locate-path": "^3.0.0" } }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true + }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -18186,6 +17923,15 @@ "path-exists": "^3.0.0" } }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, "mississippi": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", @@ -18205,9 +17951,9 @@ } }, "p-limit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", - "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -18278,6 +18024,12 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true } } }, @@ -18305,7 +18057,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -18318,7 +18070,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -18335,7 +18087,7 @@ }, "through": { "version": "2.3.8", - "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "through2": { @@ -18458,12 +18210,6 @@ "repeat-string": "^1.6.1" } }, - "toml": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/toml/-/toml-2.3.3.tgz", - "integrity": "sha512-O7L5hhSQHxuufWUdcTRPfuTh3phKfAZ/dqfxZFoxPCj2RYmpaSGLEIs016FCXItQwNr08yefUB5TSjzRYnajTA==", - "dev": true - }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", @@ -18482,67 +18228,6 @@ } } }, - "traceur": { - "version": "0.0.111", - "resolved": "https://registry.npmjs.org/traceur/-/traceur-0.0.111.tgz", - "integrity": "sha1-wE3nTRRpbDNzQn3k/Ajsr5E/w6E=", - "dev": true, - "requires": { - "commander": "2.9.x", - "glob": "5.0.x", - "rsvp": "^3.0.13", - "semver": "^4.3.3", - "source-map-support": "~0.2.8" - }, - "dependencies": { - "commander": { - "version": "2.9.0", - "resolved": "http://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true, - "requires": { - "graceful-readlink": ">= 1.0.0" - } - }, - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "semver": { - "version": "4.3.6", - "resolved": "http://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", - "dev": true - }, - "source-map": { - "version": "0.1.32", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", - "integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - }, - "source-map-support": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", - "integrity": "sha1-6lo5AKHByyUJagrozFwrSxDe09w=", - "dev": true, - "requires": { - "source-map": "0.1.32" - } - } - } - }, "tree-kill": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.0.tgz", @@ -18765,7 +18450,8 @@ "type-detect": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", - "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=" + "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", + "dev": true }, "type-is": { "version": "1.6.16", @@ -18785,7 +18471,7 @@ }, "typedoc": { "version": "0.11.1", - "resolved": "http://registry.npmjs.org/typedoc/-/typedoc-0.11.1.tgz", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.11.1.tgz", "integrity": "sha512-jdNIoHm5wkZqxQTe/g9AQ3LKnZyrzHXqu6A/c9GUOeJyBWLxNr7/Dm3rwFvLksuxRNwTvY/0HRDU9sJTa9WQSg==", "dev": true, "requires": { @@ -18821,7 +18507,7 @@ }, "typescript": { "version": "2.7.2", - "resolved": "http://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz", "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==", "dev": true } @@ -18875,71 +18561,12 @@ } } }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true, - "optional": true - }, - "uglifyjs-webpack-plugin": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz", - "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==", - "dev": true, - "requires": { - "cacache": "^10.0.4", - "find-cache-dir": "^1.0.0", - "schema-utils": "^0.4.5", - "serialize-javascript": "^1.4.0", - "source-map": "^0.6.1", - "uglify-es": "^3.3.4", - "webpack-sources": "^1.1.0", - "worker-farm": "^1.5.2" - }, - "dependencies": { - "commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "uglify-es": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", - "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", - "dev": true, - "requires": { - "commander": "~2.13.0", - "source-map": "~0.6.1" - } - } - } - }, "ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", "dev": true }, - "underscore": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", - "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==", - "dev": true - }, - "underscore.string": { - "version": "2.4.0", - "resolved": "http://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz", - "integrity": "sha1-jN2PusTi0uoefi6Al8QvRCKA+Fs=", - "dev": true - }, "unherit": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.1.tgz", @@ -19097,7 +18724,8 @@ "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true }, "unpipe": { "version": "1.0.0", @@ -19314,6 +18942,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, "requires": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -19402,7 +19031,8 @@ "viz.js": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/viz.js/-/viz.js-1.8.2.tgz", - "integrity": "sha512-W+1+N/hdzLpQZEcvz79n2IgUE9pfx6JLdHh3Kh8RGvLL8P1LdJVQmi2OsDcLdY4QVID4OUy+FPelyerX0nJxIQ==" + "integrity": "sha512-W+1+N/hdzLpQZEcvz79n2IgUE9pfx6JLdHh3Kh8RGvLL8P1LdJVQmi2OsDcLdY4QVID4OUy+FPelyerX0nJxIQ==", + "dev": true }, "vm-browserify": { "version": "0.0.4", @@ -19461,17 +19091,17 @@ } }, "webpack": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.19.1.tgz", - "integrity": "sha512-j7Q/5QqZRqIFXJvC0E59ipLV5Hf6lAnS3ezC3I4HMUybwEDikQBVad5d+IpPtmaQPQArvgUZLXIN6lWijHBn4g==", + "version": "4.29.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.29.0.tgz", + "integrity": "sha512-pxdGG0keDBtamE1mNvT5zyBdx+7wkh6mh7uzMOo/uRQ/fhsdj5FXkh/j5mapzs060forql1oXqXN9HJGju+y7w==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.6", - "@webassemblyjs/helper-module-context": "1.7.6", - "@webassemblyjs/wasm-edit": "1.7.6", - "@webassemblyjs/wasm-parser": "1.7.6", - "acorn": "^5.6.2", - "acorn-dynamic-import": "^3.0.0", + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-module-context": "1.7.11", + "@webassemblyjs/wasm-edit": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11", + "acorn": "^6.0.5", + "acorn-dynamic-import": "^4.0.0", "ajv": "^6.1.0", "ajv-keywords": "^3.1.0", "chrome-trace-event": "^1.0.0", @@ -19487,9 +19117,17 @@ "node-libs-browser": "^2.0.0", "schema-utils": "^0.4.4", "tapable": "^1.1.0", - "uglifyjs-webpack-plugin": "^1.2.4", + "terser-webpack-plugin": "^1.1.0", "watchpack": "^1.5.0", - "webpack-sources": "^1.2.0" + "webpack-sources": "^1.3.0" + }, + "dependencies": { + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "dev": true + } } }, "webpack-bundle-analyzer": { @@ -19514,7 +19152,7 @@ "dependencies": { "ws": { "version": "4.1.0", - "resolved": "http://registry.npmjs.org/ws/-/ws-4.1.0.tgz", + "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", "dev": true, "requires": { @@ -19708,7 +19346,7 @@ }, "source-map": { "version": "0.4.4", - "resolved": "http://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { @@ -19718,16 +19356,14 @@ } }, "webpack-dev-middleware": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.3.0.tgz", - "integrity": "sha512-5C5gXtOo1I6+0AEg4UPglYEtu3Rai6l5IiO6aUu65scHXz29dc3oIWMiRwvcNLXgL0HwRkRxa9N02ZjFt4hY8w==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.5.1.tgz", + "integrity": "sha512-4dwCh/AyMOYAybggUr8fiCkRnjVDp+Cqlr9c+aaNB3GJYgRGYQWJ1YX/WAKUNA9dPNHZ6QSN2lYDKqjKSI8Vqw==", "dev": true, "requires": { - "loud-rejection": "^1.6.0", "memory-fs": "~0.4.1", "mime": "^2.3.1", "range-parser": "^1.0.3", - "url-join": "^4.0.0", "webpack-log": "^2.0.0" }, "dependencies": { @@ -19740,9 +19376,9 @@ } }, "webpack-dev-server": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.8.tgz", - "integrity": "sha512-c+tcJtDqnPdxCAzEEZKdIPmg3i5i7cAHe+B+0xFNK0BlCc2HF/unYccbU7xTgfGc5xxhCztCQzFmsqim+KhI+A==", + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.14.tgz", + "integrity": "sha512-mGXDgz5SlTxcF3hUpfC8hrQ11yhAttuUQWf1Wmb+6zo3x6rb7b9mIfuQvAPLdfDRCGRGvakBWHdHOa0I9p/EVQ==", "dev": true, "requires": { "ansi-html": "0.0.7", @@ -19764,13 +19400,15 @@ "portfinder": "^1.0.9", "schema-utils": "^1.0.0", "selfsigned": "^1.9.1", + "semver": "^5.6.0", "serve-index": "^1.7.2", "sockjs": "0.3.19", - "sockjs-client": "1.1.5", - "spdy": "^3.4.1", + "sockjs-client": "1.3.0", + "spdy": "^4.0.0", "strip-ansi": "^3.0.0", "supports-color": "^5.1.0", - "webpack-dev-middleware": "3.2.0", + "url": "^0.11.0", + "webpack-dev-middleware": "3.4.0", "webpack-log": "^2.0.0", "yargs": "12.0.2" }, @@ -19804,13 +19442,13 @@ } }, "execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, "requires": { "cross-spawn": "^6.0.0", - "get-stream": "^3.0.0", + "get-stream": "^4.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", @@ -19827,9 +19465,18 @@ "locate-path": "^3.0.0" } }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, "http-proxy-middleware": { "version": "0.18.0", - "resolved": "http://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", "dev": true, "requires": { @@ -19865,14 +19512,14 @@ } }, "mem": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", - "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", + "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", "dev": true, "requires": { "map-age-cleaner": "^0.1.1", "mimic-fn": "^1.0.0", - "p-is-promise": "^1.1.0" + "p-is-promise": "^2.0.0" } }, "mime": { @@ -19882,20 +19529,26 @@ "dev": true }, "os-locale": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", - "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", "dev": true, "requires": { - "execa": "^0.10.0", + "execa": "^1.0.0", "lcid": "^2.0.0", "mem": "^4.0.0" } }, - "p-limit": { + "p-is-promise": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", - "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "dev": true + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -19916,6 +19569,16 @@ "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", "dev": true }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -19929,7 +19592,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -19937,17 +19600,14 @@ } }, "webpack-dev-middleware": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.2.0.tgz", - "integrity": "sha512-YJLMF/96TpKXaEQwaLEo+Z4NDK8aV133ROF6xp9pe3gQoS7sxfpXh4Rv9eC+8vCvWfmDjRQaMSlRPbO+9G6jgA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz", + "integrity": "sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA==", "dev": true, "requires": { - "loud-rejection": "^1.6.0", "memory-fs": "~0.4.1", "mime": "^2.3.1", - "path-is-absolute": "^1.0.0", "range-parser": "^1.0.3", - "url-join": "^4.0.0", "webpack-log": "^2.0.0" } }, @@ -20053,6 +19713,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -20060,7 +19721,8 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "wide-align": { "version": "1.1.3", @@ -20119,8 +19781,9 @@ }, "wrap-ansi": { "version": "2.1.0", - "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" @@ -20129,12 +19792,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -20143,6 +19808,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -20151,8 +19817,9 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -20212,6 +19879,7 @@ "version": "0.4.19", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "dev": true, "requires": { "sax": ">=0.6.0", "xmlbuilder": "~9.0.1" @@ -20219,8 +19887,9 @@ }, "xmlbuilder": { "version": "9.0.7", - "resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true }, "xmldoc": { "version": "0.5.1", @@ -20233,7 +19902,7 @@ "dependencies": { "sax": { "version": "1.1.6", - "resolved": "http://registry.npmjs.org/sax/-/sax-1.1.6.tgz", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.6.tgz", "integrity": "sha1-XWFr6KXmB9VOEUr65Vt+ry/MMkA=", "dev": true } @@ -20275,17 +19944,20 @@ "y18n": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true }, "yargs": { "version": "11.1.0", - "resolved": "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", + "dev": true, "requires": { "cliui": "^4.0.0", "decamelize": "^1.1.1", @@ -20305,6 +19977,7 @@ "version": "9.0.2", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, "requires": { "camelcase": "^4.1.0" } diff --git a/package.json b/package.json index b48807ba02..1745d85c5e 100644 --- a/package.json +++ b/package.json @@ -101,16 +101,16 @@ "zone.js": "~0.8.26" }, "devDependencies": { - "@angular-devkit/build-angular": "~0.10.0", + "@angular-devkit/build-angular": "^0.13.4", "@angular-devkit/build-ng-packagr": "~0.10.0", "@angular/cli": "^7.0.5", - "@angular/compiler-cli": "7.0.3", + "@angular/compiler-cli": "^7.2.7", + "@nrwl/nx": "7.1.1", + "@nrwl/schematics": "7.1.1", "@types/hammerjs": "2.0.35", "@types/jasmine": "~2.8.3", "@types/jasminewd2": "~2.0.2", "@types/node": "6.0.90", - "@nrwl/nx": "7.1.1", - "@nrwl/schematics": "7.1.1", "ajv-cli": "^3.0.0", "bundlesize": "^0.15.3", "chalk": "^2.3.2", @@ -164,8 +164,8 @@ "scss-bundle": "2.3.2", "spdx-license-list": "^5.0.0", "stylelint": "^9.7.1", - "tsickle": "^0.34.0", "ts-node": "~4.1.0", + "tsickle": "^0.34.0", "tslib": "^1.9.0", "tslint": "5.9.1", "typedoc": "^0.11.1",