[ACS-259] refactor login page (#5733)

* refator login page

* refator login page

* remove obsolete classes and move what is needed in the test pck

* fix const

* revert modify

* remove duplicate browser property

* fix build

* fix

* fix

* fix lint

* move drop action in testing
remove not necessary space
js-api centralize content

* first refactor use js-api

* fix protractor

* refactor test config

* simplify properties
fix namings

* ps cloud simplify
remove unused js files

* id fix

* fix search test
simplify environment var step 1

* fix lint

* first user iteration fix

* fix model

* unify use of apiService

* first step automatic user creation Identity

* refactor creation user content-services

* refactor creation user search

* refactor creation user core

* process service refactoring 1

* process service refactoring 1

* process service refactoring 2

* fix process

* appconfig

* fix process util

* fix gallery

* fix "this" reference issues

* fix incorrect import paths

* fix core

* some fixes

* allign

* fix some test
remove structure folder and move in actions

* fixes

* move folders in the right place

* fix

* fix rebase

* solve build issue

* fix e2e

* change init aae

* order api and some fixes

* fix possible not valid password

* fix some ps test

* replace host port also in objects

* Update app-config.service.ts

* fix process

* fix process test

* process service cloud fix

* fiexs

* modify init script

* fix two test

* remove unused property

* host issue

* not use npx

* fix ps cloud test

Co-authored-by: Denys Vuika <denys.vuika@gmail.com>
This commit is contained in:
Eugenio Romano
2020-06-04 14:41:30 +01:00
committed by GitHub
parent f0df6b3a5f
commit a78f24ada1
297 changed files with 5130 additions and 9622 deletions

View File

@@ -15,30 +15,36 @@
* limitations under the License.
*/
import { LoginPage, BrowserActions, UploadActions, StringUtil, LocalStorageUtil } from '@alfresco/adf-testing';
import {
LoginSSOPage,
BrowserActions,
UploadActions,
StringUtil,
LocalStorageUtil,
ApiService,
UserModel
} from '@alfresco/adf-testing';
import { SearchResultsPage } from '../../pages/adf/search-results.page';
import { SearchFiltersPage } from '../../pages/adf/search-filters.page';
import { SearchDialogPage } from '../../pages/adf/dialog/search-dialog.page';
import { NavigationBarPage } from '../../pages/adf/navigation-bar.page';
import { AcsUserModel } from '../../models/ACS/acs-user.model';
import { SearchConfiguration } from '../search.config';
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
import { browser } from 'protractor';
import { UsersActions } from '../../actions/users.actions';
describe('Search Checklist Component', () => {
const loginPage = new LoginPage();
const loginPage = new LoginSSOPage();
const searchFiltersPage = new SearchFiltersPage();
const searchDialog = new SearchDialogPage();
const searchResults = new SearchResultsPage();
const navigationBarPage = new NavigationBarPage();
const acsUser = new AcsUserModel();
this.alfrescoJsApi = new AlfrescoApi({
provider: 'ECM',
hostEcm: browser.params.testConfig.adf_acs.host
});
const uploadActions = new UploadActions(this.alfrescoJsApi);
const acsUser = new UserModel();
const apiService = new ApiService();
const uploadActions = new UploadActions(apiService);
const usersActions = new UsersActions(apiService);
const filterType = {
folder: 'Folder',
@@ -55,19 +61,25 @@ describe('Search Checklist Component', () => {
let createdFile, createdFolder;
beforeAll(async () => {
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
await apiService.getInstance().login(browser.params.testConfig.admin.email, browser.params.testConfig.admin.password);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
await usersActions.createUser(acsUser);
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
await apiService.getInstance().login(acsUser.email, acsUser.password);
createdFolder = await this.alfrescoJsApi.nodes.addNode('-my-', { name: nodeNames.folder, nodeType: 'cm:folder' });
createdFile = await this.alfrescoJsApi.nodes.addNode('-my-', { name: nodeNames.document, nodeType: 'cm:content' });
createdFolder = await apiService.getInstance().nodes.addNode('-my-', {
name: nodeNames.folder,
nodeType: 'cm:folder'
});
createdFile = await apiService.getInstance().nodes.addNode('-my-', {
name: nodeNames.document,
nodeType: 'cm:content'
});
await browser.sleep(15000);
await loginPage.loginToContentServicesUsingUserModel(acsUser);
});
await loginPage.login(acsUser.email, acsUser.password);
});
beforeEach(async () => {
await navigationBarPage.clickContentServicesButton();
@@ -75,15 +87,15 @@ describe('Search Checklist Component', () => {
});
afterAll(async () => {
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
await apiService.getInstance().login(browser.params.testConfig.admin.email, browser.params.testConfig.admin.password);
await uploadActions.deleteFileOrFolder(createdFile.entry.id);
await uploadActions.deleteFileOrFolder(createdFolder.entry.id);
await navigationBarPage.clickLogoutButton();
});
});
it('[C276991] Should be able to click between options and Clear All button', async() => {
it('[C276991] Should be able to click between options and Clear All button', async () => {
await searchFiltersPage.checkCheckListFilterIsDisplayed();
await searchFiltersPage.checkCheckListFilterIsCollapsed();
await searchFiltersPage.clickCheckListFilter();
@@ -271,10 +283,9 @@ describe('Search Checklist Component', () => {
await searchFiltersPage.checkListFiltersPage().checkShowMoreButtonIsNotDisplayed();
await searchFiltersPage.checkListFiltersPage().checkShowLessButtonIsDisplayed();
});
});
});
describe('Properties', () => {
let jsonFile;
beforeEach(() => {
@@ -282,7 +293,7 @@ describe('Search Checklist Component', () => {
});
beforeAll(async () => {
await loginPage.loginToContentServicesUsingUserModel(acsUser);
await loginPage.login(acsUser.email, acsUser.password);
});
it('[C277018] Should be able to change the operator', async () => {

View File

@@ -15,8 +15,7 @@
* limitations under the License.
*/
import { DataTableComponentPage, DatePickerCalendarPage, DateUtil, LocalStorageUtil, LoginPage } from '@alfresco/adf-testing';
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
import { DataTableComponentPage, DatePickerCalendarPage, DateUtil, LocalStorageUtil, LoginSSOPage } from '@alfresco/adf-testing';
import { browser } from 'protractor';
import { SearchDialogPage } from '../../pages/adf/dialog/search-dialog.page';
import { NavigationBarPage } from '../../pages/adf/navigation-bar.page';
@@ -26,7 +25,7 @@ import { SearchConfiguration } from '../search.config';
describe('Search Date Range Filter', () => {
const loginPage = new LoginPage();
const loginPage = new LoginSSOPage();
const searchDialog = new SearchDialogPage();
const searchFilters = new SearchFiltersPage();
const dateRangeFilter = searchFilters.createdDateRangeFilterPage();
@@ -36,13 +35,7 @@ describe('Search Date Range Filter', () => {
const dataTable = new DataTableComponentPage();
beforeAll(async () => {
this.alfrescoJsApi = new AlfrescoApi({
provider: 'ECM',
hostEcm: browser.params.testConfig.adf_acs.host
});
await loginPage.loginToContentServices(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
await loginPage.login(browser.params.testConfig.admin.email, browser.params.testConfig.admin.password);
await searchDialog.checkSearchIconIsVisible();
await searchDialog.clickOnSearchIcon();
@@ -130,12 +123,11 @@ describe('Search Date Range Filter', () => {
const results: any = dataTable.geCellElementDetail('Created');
for (const currentResult of results) {
const currentDate = currentResult.getAttribute('title');
const currentDateFormatted = DateUtil.parse(currentDate, 'MMM DD, YYYY, h:mm:ss a');
const currentDate = currentResult.getAttribute('title');
const currentDateFormatted = DateUtil.parse(currentDate, 'MMM DD, YYYY, h:mm:ss a');
await expect(currentDateFormatted <= DateUtil.parse(toDate, 'DD-MM-YY')).toBe(true);
await expect(currentDateFormatted >= DateUtil.parse(fromDate, 'DD-MM-YY')).toBe(true);
await expect(currentDateFormatted <= DateUtil.parse(toDate, 'DD-MM-YY')).toBe(true);
await expect(currentDateFormatted >= DateUtil.parse(fromDate, 'DD-MM-YY')).toBe(true);
}
});
@@ -176,7 +168,6 @@ describe('Search Date Range Filter', () => {
});
describe('configuration change', () => {
let jsonFile;
beforeAll(async () => {

View File

@@ -15,20 +15,27 @@
* limitations under the License.
*/
import { LoginPage, LocalStorageUtil, UploadActions, DataTableComponentPage, DateUtil } from '@alfresco/adf-testing';
import {
LoginSSOPage,
LocalStorageUtil,
UploadActions,
DataTableComponentPage,
DateUtil,
ApiService,
UserModel
} from '@alfresco/adf-testing';
import { SearchDialogPage } from '../../pages/adf/dialog/search-dialog.page';
import { SearchResultsPage } from '../../pages/adf/search-results.page';
import { NavigationBarPage } from '../../pages/adf/navigation-bar.page';
import { SearchFiltersPage } from '../../pages/adf/search-filters.page';
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
import { AcsUserModel } from '../../models/ACS/acs-user.model';
import { FileModel } from '../../models/ACS/file.model';
import { browser } from 'protractor';
import { SearchConfiguration } from '../search.config';
import { UsersActions } from '../../actions/users.actions';
describe('Search Number Range Filter', () => {
const loginPage = new LoginPage();
const loginPage = new LoginSSOPage();
const searchDialog = new SearchDialogPage();
const searchFilters = new SearchFiltersPage();
const sizeRangeFilter = searchFilters.sizeRangeFilterPage();
@@ -36,7 +43,7 @@ describe('Search Number Range Filter', () => {
const navigationBarPage = new NavigationBarPage();
const dataTable = new DataTableComponentPage();
const acsUser = new AcsUserModel();
const acsUser = new UserModel();
const file2BytesModel = new FileModel({
'name': browser.params.resources.Files.ADF_DOCUMENTS.UNSUPPORTED.file_name,
@@ -49,25 +56,23 @@ describe('Search Number Range Filter', () => {
});
let file2Bytes, file0Bytes;
this.alfrescoJsApi = new AlfrescoApi({
provider: 'ECM',
hostEcm: browser.params.testConfig.adf_acs.host
});
const uploadActions = new UploadActions(this.alfrescoJsApi);
const apiService = new ApiService();
const usersActions = new UsersActions(apiService);
const uploadActions = new UploadActions(apiService);
beforeAll(async () => {
await apiService.getInstance().login(browser.params.testConfig.admin.email, browser.params.testConfig.admin.password);
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
await usersActions.createUser(acsUser);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
await apiService.getInstance().login(acsUser.email, acsUser.password);
file2Bytes = await uploadActions.uploadFile(file2BytesModel.location, file2BytesModel.name, '-my-');
file0Bytes = await uploadActions.uploadFile(file0BytesModel.location, file0BytesModel.name, '-my-');
await browser.sleep(15000);
await loginPage.loginToContentServices(acsUser.id, acsUser.password);
await loginPage.login(acsUser.email, acsUser.password);
await searchDialog.checkSearchIconIsVisible();
await searchDialog.clickOnSearchIcon();
@@ -75,7 +80,7 @@ describe('Search Number Range Filter', () => {
});
afterAll(async () => {
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
await apiService.getInstance().login(acsUser.email, acsUser.password);
await uploadActions.deleteFileOrFolder(file2Bytes.entry.id);
await uploadActions.deleteFileOrFolder(file0Bytes.entry.id);
@@ -418,8 +423,7 @@ describe('Search Number Range Filter', () => {
await expect(currentDateFormatted.getFullYear() <= toYear).toBe(true);
await expect(currentDateFormatted.getFullYear() >= fromYear).toBe(true);
}
});
});
it('[C277139] Should be able to set To field to be exclusive', async () => {
await navigationBarPage.clickContentServicesButton();

View File

@@ -15,30 +15,36 @@
* limitations under the License.
*/
import { LoginPage, BrowserActions, StringUtil, LocalStorageUtil, UploadActions } from '@alfresco/adf-testing';
import {
LoginSSOPage,
BrowserActions,
StringUtil,
LocalStorageUtil,
UploadActions,
ApiService,
UserModel
} from '@alfresco/adf-testing';
import { SearchFiltersPage } from '../../pages/adf/search-filters.page';
import { SearchResultsPage } from '../../pages/adf/search-results.page';
import { NavigationBarPage } from '../../pages/adf/navigation-bar.page';
import { SearchDialogPage } from '../../pages/adf/dialog/search-dialog.page';
import { AcsUserModel } from '../../models/ACS/acs-user.model';
import { SearchConfiguration } from '../search.config';
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
import { browser } from 'protractor';
import { UsersActions } from '../../actions/users.actions';
describe('Search Radio Component', () => {
const loginPage = new LoginPage();
const loginPage = new LoginSSOPage();
const searchFiltersPage = new SearchFiltersPage();
const navigationBarPage = new NavigationBarPage();
const searchDialog = new SearchDialogPage();
const searchResults = new SearchResultsPage();
const acsUser = new AcsUserModel();
this.alfrescoJsApi = new AlfrescoApi({
provider: 'ECM',
hostEcm: browser.params.testConfig.adf_acs.host
});
const uploadActions = new UploadActions(this.alfrescoJsApi);
const acsUser = new UserModel();
const apiService = new ApiService();
const uploadActions = new UploadActions(apiService);
const usersActions = new UsersActions(apiService);
const filterType = {
none: 'None',
@@ -57,29 +63,29 @@ describe('Search Radio Component', () => {
let createdFile, createdFolder;
beforeAll(async () => {
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
await apiService.getInstance().login(browser.params.testConfig.admin.email, browser.params.testConfig.admin.password);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
await usersActions.createUser(acsUser);
await apiService.getInstance().login(acsUser.email, acsUser.password);
createdFolder = await this.alfrescoJsApi.nodes.addNode('-my-', {
createdFolder = await apiService.getInstance().nodes.addNode('-my-', {
name: nodeNames.folder,
nodeType: 'cm:folder'
});
createdFile = await this.alfrescoJsApi.nodes.addNode('-my-', {
createdFile = await apiService.getInstance().nodes.addNode('-my-', {
name: nodeNames.document,
nodeType: 'cm:content'
});
await browser.sleep(15000);
await loginPage.loginToContentServicesUsingUserModel(acsUser);
await loginPage.login(acsUser.email, acsUser.password);
await BrowserActions.getUrl(browser.params.testConfig.adf.url + '/search;q=' + randomName);
});
afterAll(async () => {
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
await apiService.getInstance().login(browser.params.testConfig.admin.email, browser.params.testConfig.admin.password);
await uploadActions.deleteFileOrFolder(createdFile.entry.id);
await uploadActions.deleteFileOrFolder(createdFolder.entry.id);
@@ -122,7 +128,6 @@ describe('Search Radio Component', () => {
});
describe('configuration change', () => {
let jsonFile;
beforeEach(() => {
@@ -251,7 +256,6 @@ describe('Search Radio Component', () => {
});
describe('Properties', () => {
let jsonFile;
beforeEach(() => {
@@ -259,7 +263,7 @@ describe('Search Radio Component', () => {
});
beforeAll(async () => {
await loginPage.loginToContentServicesUsingUserModel(acsUser);
await loginPage.login(acsUser.email, acsUser.password);
});
it('[C277033] Should be able to add a new option', async () => {

View File

@@ -15,20 +15,26 @@
* limitations under the License.
*/
import { LoginPage, LocalStorageUtil, UploadActions, DataTableComponentPage } from '@alfresco/adf-testing';
import {
LoginSSOPage,
LocalStorageUtil,
UploadActions,
DataTableComponentPage,
ApiService,
UserModel
} from '@alfresco/adf-testing';
import { SearchDialogPage } from '../../pages/adf/dialog/search-dialog.page';
import { SearchResultsPage } from '../../pages/adf/search-results.page';
import { NavigationBarPage } from '../../pages/adf/navigation-bar.page';
import { SearchFiltersPage } from '../../pages/adf/search-filters.page';
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
import { AcsUserModel } from '../../models/ACS/acs-user.model';
import { FileModel } from '../../models/ACS/file.model';
import { browser } from 'protractor';
import { SearchConfiguration } from '../search.config';
import { UsersActions } from '../../actions/users.actions';
describe('Search Slider Filter', () => {
const loginPage = new LoginPage();
const loginPage = new LoginSSOPage();
const searchDialog = new SearchDialogPage();
const searchFilters = new SearchFiltersPage();
const sizeSliderFilter = searchFilters.sizeSliderFilterPage();
@@ -36,7 +42,7 @@ describe('Search Slider Filter', () => {
const navigationBarPage = new NavigationBarPage();
const dataTable = new DataTableComponentPage();
const acsUser = new AcsUserModel();
const acsUser = new UserModel();
const file2BytesModel = new FileModel({
'name': browser.params.resources.Files.ADF_DOCUMENTS.UNSUPPORTED.file_name,
@@ -44,24 +50,22 @@ describe('Search Slider Filter', () => {
});
let file2Bytes;
this.alfrescoJsApi = new AlfrescoApi({
provider: 'ECM',
hostEcm: browser.params.testConfig.adf_acs.host
});
const uploadActions = new UploadActions(this.alfrescoJsApi);
const apiService = new ApiService();
const uploadActions = new UploadActions(apiService);
const usersActions = new UsersActions(apiService);
beforeAll(async () => {
await apiService.getInstance().login(browser.params.testConfig.admin.email, browser.params.testConfig.admin.password);
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
await usersActions.createUser(acsUser);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
await apiService.getInstance().login(acsUser.email, acsUser.password);
file2Bytes = await uploadActions.uploadFile(file2BytesModel.location, file2BytesModel.name, '-my-');
await browser.sleep(15000);
await loginPage.loginToContentServices(acsUser.id, acsUser.password);
await loginPage.login(acsUser.email, acsUser.password);
await searchDialog.checkSearchIconIsVisible();
await searchDialog.clickOnSearchIcon();
@@ -70,7 +74,7 @@ describe('Search Slider Filter', () => {
afterAll(async () => {
try {
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
await apiService.getInstance().login(acsUser.email, acsUser.password);
await uploadActions.deleteFileOrFolder(file2Bytes.entry.id);
} catch (error) {
}

View File

@@ -16,33 +16,32 @@
*/
import {
LoginPage,
LoginSSOPage,
LocalStorageUtil,
SearchSortingPickerPage,
UploadActions
UploadActions,
ApiService,
UserModel
} from '@alfresco/adf-testing';
import { SearchDialogPage } from '../../pages/adf/dialog/search-dialog.page';
import { SearchResultsPage } from '../../pages/adf/search-results.page';
import { NavigationBarPage } from '../../pages/adf/navigation-bar.page';
import { SearchFiltersPage } from '../../pages/adf/search-filters.page';
import { ContentServicesPage } from '../../pages/adf/content-services.page';
import { NodeActions } from '../../actions/ACS/node.actions';
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
import { AcsUserModel } from '../../models/ACS/acs-user.model';
import { browser } from 'protractor';
import { SearchConfiguration } from '../search.config';
import { UsersActions } from '../../actions/users.actions';
describe('Search Sorting Picker', () => {
const loginPage = new LoginPage();
const loginPage = new LoginSSOPage();
const searchDialog = new SearchDialogPage();
const searchFilters = new SearchFiltersPage();
const searchResults = new SearchResultsPage();
const navigationBarPage = new NavigationBarPage();
const searchSortingPicker = new SearchSortingPickerPage();
const contentServices = new ContentServicesPage();
const nodeActions = new NodeActions();
const acsUser = new AcsUserModel();
const acsUser = new UserModel();
const pngAModel = {
'name': browser.params.resources.Files.ADF_DOCUMENTS.PNG.file_name,
@@ -55,33 +54,33 @@ describe('Search Sorting Picker', () => {
};
let pngA, pngD;
this.alfrescoJsApi = new AlfrescoApi({
provider: 'ECM',
hostEcm: browser.params.testConfig.adf_acs.host
});
const uploadActions = new UploadActions(this.alfrescoJsApi);
const apiService = new ApiService();
const uploadActions = new UploadActions(apiService);
const usersActions = new UsersActions(apiService);
const search = '_png_file.png';
let jsonFile;
beforeAll(async () => {
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
await apiService.getInstance().login(browser.params.testConfig.admin.email, browser.params.testConfig.admin.password);
await usersActions.createUser(acsUser);
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
await apiService.getInstance().login(acsUser.email, acsUser.password);
pngA = await uploadActions.uploadFile(pngAModel.location, pngAModel.name, '-my-');
pngD = await uploadActions.uploadFile(pngDModel.location, pngDModel.name, '-my-');
await browser.sleep(12000);
await loginPage.loginToContentServices(acsUser.id, acsUser.password);
});
await loginPage.login(acsUser.email, acsUser.password);
});
afterAll(async () => {
await uploadActions.deleteFileOrFolder(pngA.entry.id);
await uploadActions.deleteFileOrFolder(pngD.entry.id);
await navigationBarPage.clickLogoutButton();
});
});
beforeEach(async () => {
await searchDialog.clickOnSearchIcon();
@@ -214,11 +213,26 @@ describe('Search Sorting Picker', () => {
const idList = await contentServices.getElementsDisplayedId();
const numberOfElements = await contentServices.numberOfResultsDisplayed();
const nodeList = await nodeActions.getNodesDisplayed(this.alfrescoJsApi, idList, numberOfElements);
const nodeList = await getNodesDisplayed(numberOfElements, idList);
const modifiedDateList = [];
for (let i = 0; i < nodeList.length; i++) {
modifiedDateList.push(new Date(nodeList[i].entry.modifiedAt));
}
await expect(contentServices.checkElementsDateSortedAsc(modifiedDateList)).toBe(true);
});
const getNodesDisplayed = async function (numberOfElements: number, idList: string[]) {
const promises = [];
let nodeList;
for (let i = 0; i < (numberOfElements - 1); i++) {
if (idList[i] && idList[i].trim() !== '') {
promises.push(apiService.getInstance().core.nodesApi.getNode(idList[i]));
}
}
nodeList = await Promise.all(promises);
return nodeList;
};
});

View File

@@ -17,57 +17,52 @@
import { browser } from 'protractor';
import { AcsUserModel } from '../../models/ACS/acs-user.model';
import { FolderModel } from '../../models/ACS/folder.model';
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
import { LoginPage, LocalStorageUtil, BrowserActions } from '@alfresco/adf-testing';
import { LoginSSOPage, LocalStorageUtil, BrowserActions, ApiService, UserModel } from '@alfresco/adf-testing';
import { SearchDialogPage } from '../../pages/adf/dialog/search-dialog.page';
import { SearchResultsPage } from '../../pages/adf/search-results.page';
import { SearchFiltersPage } from '../../pages/adf/search-filters.page';
import { NavigationBarPage } from '../../pages/adf/navigation-bar.page';
import { SearchConfiguration } from '../search.config';
import { UsersActions } from '../../actions/users.actions';
describe('Search component - Text widget', () => {
const navigationBarPage = new NavigationBarPage();
const searchFiltersPage = new SearchFiltersPage();
const loginPage = new LoginPage();
const loginPage = new LoginSSOPage();
const searchDialog = new SearchDialogPage();
const searchResultPage = new SearchResultsPage();
const acsUser = new AcsUserModel();
const newFolderModel = new FolderModel({ 'name': 'newFolder', 'description': 'newDescription' });
const apiService = new ApiService();
const usersActions = new UsersActions(apiService);
const acsUser = new UserModel();
const newFolderModel = new FolderModel({ 'description': 'newDescription' });
beforeAll(async () => {
await apiService.getInstance().login(browser.params.testConfig.admin.email, browser.params.testConfig.admin.password);
this.alfrescoJsApi = new AlfrescoApi({
provider: 'ECM',
hostEcm: browser.params.testConfig.adf_acs.host
});
await usersActions.createUser(acsUser);
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
await apiService.getInstance().login(acsUser.email, acsUser.password);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
await this.alfrescoJsApi.nodes.addNode('-my-', {
await apiService.getInstance().nodes.addNode('-my-', {
'name': newFolderModel.name,
'nodeType': 'cm:folder',
'properties':
{
'cm:description': newFolderModel.description
}
}, {}, {});
}, {});
await browser.sleep(15000);
await loginPage.loginToContentServicesUsingUserModel(acsUser);
});
await loginPage.login(acsUser.email, acsUser.password);
});
afterAll(async () => {
await navigationBarPage.clickLogoutButton();
@@ -82,7 +77,6 @@ describe('Search component - Text widget', () => {
});
describe('configuration change', () => {
let jsonFile;
beforeAll(async () => {

View File

@@ -17,16 +17,24 @@
import { browser } from 'protractor';
import { LoginPage, UploadActions, StringUtil, LocalStorageUtil, BrowserActions, ViewerPage } from '@alfresco/adf-testing';
import {
LoginSSOPage,
UploadActions,
StringUtil,
LocalStorageUtil,
BrowserActions,
ViewerPage,
ApiService,
UserModel
} from '@alfresco/adf-testing';
import { SearchDialogPage } from '../pages/adf/dialog/search-dialog.page';
import { ContentServicesPage } from '../pages/adf/content-services.page';
import { SearchResultsPage } from '../pages/adf/search-results.page';
import { AcsUserModel } from '../models/ACS/acs-user.model';
import { FileModel } from '../models/ACS/file.model';
import { FolderModel } from '../models/ACS/folder.model';
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
import { NavigationBarPage } from '../pages/adf/navigation-bar.page';
import { SearchConfiguration } from './search.config';
import { UsersActions } from '../actions/users.actions';
describe('Search component - Search Bar', () => {
@@ -39,7 +47,7 @@ describe('Search component - Search Bar', () => {
}
};
const loginPage = new LoginPage();
const loginPage = new LoginSSOPage();
const contentServicesPage = new ContentServicesPage();
const navigationBarPage = new NavigationBarPage();
@@ -47,12 +55,11 @@ describe('Search component - Search Bar', () => {
const searchResultPage = new SearchResultsPage();
const viewerPage = new ViewerPage();
const acsUser = new AcsUserModel();
this.alfrescoJsApi = new AlfrescoApi({
provider: 'ECM',
hostEcm: browser.params.testConfig.adf_acs.host
});
const uploadActions = new UploadActions(this.alfrescoJsApi);
const acsUser = new UserModel();
const apiService = new ApiService();
const usersActions = new UsersActions(apiService);
const uploadActions = new UploadActions(apiService);
const filename = StringUtil.generateRandomString(16);
const firstFolderName = StringUtil.generateRandomString(16);
@@ -79,15 +86,14 @@ describe('Search component - Search Bar', () => {
let fileHighlightUploaded;
beforeAll(async () => {
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
await apiService.getInstance().login(browser.params.testConfig.admin.email, browser.params.testConfig.admin.password);
await usersActions.createUser(acsUser);
await apiService.getInstance().login(acsUser.email, acsUser.password);
const firstFileUploaded = await uploadActions.uploadFile(firstFileModel.location, firstFileModel.name, '-my-');
Object.assign(firstFileModel, firstFileUploaded.entry);
fileHighlightUploaded = await this.alfrescoJsApi.nodes.addNode('-my-', {
fileHighlightUploaded = await apiService.getInstance().nodes.addNode('-my-', {
'name': StringUtil.generateRandomString(16),
'nodeType': 'cm:content',
'properties': {
@@ -104,7 +110,7 @@ describe('Search component - Search Bar', () => {
await browser.sleep(15000); // wait search index previous file/folder uploaded
await loginPage.loginToContentServicesUsingUserModel(acsUser);
await loginPage.login(acsUser.email, acsUser.password);
});
afterAll(async () => {
@@ -258,7 +264,6 @@ describe('Search component - Search Bar', () => {
});
describe('Highlight', () => {
const searchConfiguration = SearchConfiguration.getConfiguration();
beforeAll(async () => {

View File

@@ -18,38 +18,38 @@
import { SearchDialogPage } from '../pages/adf/dialog/search-dialog.page';
import { SearchFiltersPage } from '../pages/adf/search-filters.page';
import { SearchResultsPage } from '../pages/adf/search-results.page';
import { AcsUserModel } from '../models/ACS/acs-user.model';
import { FileModel } from '../models/ACS/file.model';
import { NavigationBarPage } from '../pages/adf/navigation-bar.page';
import {
StringUtil,
DocumentListPage,
PaginationPage,
LoginPage,
LoginSSOPage,
LocalStorageUtil,
UploadActions,
BrowserActions
BrowserActions,
ApiService,
UserModel
} from '@alfresco/adf-testing';
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
import { browser } from 'protractor';
import { SearchConfiguration } from './search.config';
import { UsersActions } from '../actions/users.actions';
describe('Search Filters', () => {
const loginPage = new LoginPage();
const loginPage = new LoginSSOPage();
const searchDialog = new SearchDialogPage();
const searchFiltersPage = new SearchFiltersPage();
this.alfrescoJsApi = new AlfrescoApi({
provider: 'ECM',
hostEcm: browser.params.testConfig.adf_acs.host
});
const uploadActions = new UploadActions(this.alfrescoJsApi);
const paginationPage = new PaginationPage();
const contentList = new DocumentListPage();
const searchResults = new SearchResultsPage();
const navigationBarPage = new NavigationBarPage();
const acsUser = new AcsUserModel();
const apiService = new ApiService();
const uploadActions = new UploadActions(apiService);
const usersActions = new UsersActions(apiService);
const acsUser = new UserModel();
const filename = StringUtil.generateRandomString(16);
const fileNamePrefix = StringUtil.generateRandomString(5);
@@ -88,11 +88,11 @@ describe('Search Filters', () => {
let jsonFile;
beforeAll(async () => {
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
await apiService.getInstance().login(browser.params.testConfig.admin.email, browser.params.testConfig.admin.password);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
await usersActions.createUser(acsUser);
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
await apiService.getInstance().login(acsUser.email, acsUser.password);
fileUploaded = await uploadActions.uploadFile(fileModel.location, fileModel.name, '-my-');
fileTypePng = await uploadActions.uploadFile(pngFileModel.location, pngFileModel.name, '-my-');
@@ -100,7 +100,7 @@ describe('Search Filters', () => {
fileTypeJpg = await uploadActions.uploadFile(jpgFileModel.location, jpgFileModel.name, '-my-');
fileTypeTxt2 = await uploadActions.uploadFile(txtFileModel2.location, txtFileModel2.name, '-my-');
await loginPage.loginToContentServicesUsingUserModel(acsUser);
await loginPage.login(acsUser.email, acsUser.password);
await browser.sleep(15000); // wait search index previous file/folder uploaded
@@ -108,7 +108,7 @@ describe('Search Filters', () => {
});
afterAll(async () => {
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
await apiService.getInstance().login(acsUser.email, acsUser.password);
await uploadActions.deleteFileOrFolder(fileUploaded.entry.id);
await uploadActions.deleteFileOrFolder(fileTypePng.entry.id);
@@ -121,6 +121,7 @@ describe('Search Filters', () => {
it('[C286298] Should be able to cancel a filter using "x" button from the toolbar', async () => {
await searchDialog.checkSearchIconIsVisible();
await searchDialog.clickOnSearchIcon();
await searchDialog.enterTextAndPressEnter(fileUploaded.entry.name);
await searchFiltersPage.checkSearchFiltersIsDisplayed();

View File

@@ -15,34 +15,32 @@
* limitations under the License.
*/
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
import { StringUtil, UploadActions, LoginPage } from '@alfresco/adf-testing';
import { StringUtil, UploadActions, LoginSSOPage, ApiService, UserModel } from '@alfresco/adf-testing';
import CONSTANTS = require('../util/constants');
import { browser } from 'protractor';
import { SearchDialogPage } from '../pages/adf/dialog/search-dialog.page';
import { SearchResultsPage } from '../pages/adf/search-results.page';
import { SearchFiltersPage } from '../pages/adf/search-filters.page';
import { AcsUserModel } from '../models/ACS/acs-user.model';
import { FileModel } from '../models/ACS/file.model';
import { NavigationBarPage } from '../pages/adf/navigation-bar.page';
import { UsersActions } from '../actions/users.actions';
describe('Search Component - Multi-Select Facet', () => {
const loginPage = new LoginPage();
const loginPage = new LoginSSOPage();
const searchDialog = new SearchDialogPage();
const searchResultsPage = new SearchResultsPage();
this.alfrescoJsApi = new AlfrescoApi({
provider: 'ECM',
hostEcm: browser.params.testConfig.adf_acs.host
});
const uploadActions = new UploadActions(this.alfrescoJsApi);
const searchFiltersPage = new SearchFiltersPage();
const navigationBarPage = new NavigationBarPage();
const apiService = new ApiService();
const uploadActions = new UploadActions(apiService);
const usersActions = new UsersActions(apiService);
let site, userOption;
describe('', () => {
let jpgFile, jpgFileSite, txtFile, txtFileSite;
const acsUser = new AcsUserModel();
const acsUser = new UserModel();
const randomName = StringUtil.generateRandomString();
const jpgFileInfo = new FileModel({
@@ -55,13 +53,13 @@ describe('Search Component - Multi-Select Facet', () => {
});
beforeAll(async () => {
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
await apiService.getInstance().login(browser.params.testConfig.admin.email, browser.params.testConfig.admin.password);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
await usersActions.createUser(acsUser);
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
await apiService.getInstance().login(acsUser.email, acsUser.password);
site = await this.alfrescoJsApi.core.sitesApi.createSite({
site = await apiService.getInstance().core.sitesApi.createSite({
title: StringUtil.generateRandomString(8),
visibility: 'PUBLIC'
});
@@ -76,7 +74,7 @@ describe('Search Component - Multi-Select Facet', () => {
await browser.sleep(15000);
await loginPage.loginToContentServicesUsingUserModel(acsUser);
await loginPage.login(acsUser.email, acsUser.password);
await searchDialog.checkSearchIconIsVisible();
await searchDialog.clickOnSearchIcon();
@@ -96,12 +94,12 @@ describe('Search Component - Multi-Select Facet', () => {
uploadActions.deleteFileOrFolder(txtFileSite.entry.id)
]);
await this.alfrescoJsApi.core.sitesApi.deleteSite(site.entry.id, { permanent: true });
await apiService.getInstance().core.sitesApi.deleteSite(site.entry.id, { permanent: true });
await navigationBarPage.clickLogoutButton();
});
it('[C280054] Should be able to select multiple items from a search facet filter', async () => {
await loginPage.loginToContentServicesUsingUserModel(acsUser);
await loginPage.login(acsUser.email, acsUser.password);
await searchDialog.checkSearchIconIsVisible();
await searchDialog.clickOnSearchIcon();
@@ -129,8 +127,8 @@ describe('Search Component - Multi-Select Facet', () => {
describe('', () => {
let jpgFile, txtFile;
const userUploadingTxt = new AcsUserModel();
const userUploadingImg = new AcsUserModel();
const userUploadingTxt = new UserModel();
const userUploadingImg = new UserModel();
const randomName = StringUtil.generateRandomString();
const jpgFileInfo = new FileModel({
@@ -143,32 +141,32 @@ describe('Search Component - Multi-Select Facet', () => {
});
beforeAll(async () => {
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
await apiService.getInstance().login(browser.params.testConfig.admin.email, browser.params.testConfig.admin.password);
await this.alfrescoJsApi.core.peopleApi.addPerson(userUploadingTxt);
await this.alfrescoJsApi.core.peopleApi.addPerson(userUploadingImg);
await usersActions.createUser(userUploadingTxt);
await usersActions.createUser(userUploadingImg);
await this.alfrescoJsApi.login(userUploadingTxt.id, userUploadingTxt.password);
await apiService.getInstance().login(userUploadingTxt.email, userUploadingTxt.password);
site = await this.alfrescoJsApi.core.sitesApi.createSite({
site = await apiService.getInstance().core.sitesApi.createSite({
title: StringUtil.generateRandomString(8),
visibility: 'PUBLIC'
});
await this.alfrescoJsApi.core.sitesApi.addSiteMember(site.entry.id, {
id: userUploadingImg.id,
await apiService.getInstance().core.sitesApi.addSiteMember(site.entry.id, {
id: userUploadingImg.email,
role: CONSTANTS.CS_USER_ROLES.MANAGER
});
txtFile = await uploadActions.uploadFile(txtFileInfo.location, txtFileInfo.name, site.entry.guid);
await this.alfrescoJsApi.login(userUploadingImg.id, userUploadingImg.password);
await apiService.getInstance().login(userUploadingImg.email, userUploadingImg.password);
jpgFile = await uploadActions.uploadFile(jpgFileInfo.location, jpgFileInfo.name, site.entry.guid);
await browser.sleep(15000);
await loginPage.loginToContentServicesUsingUserModel(userUploadingImg);
await loginPage.login(userUploadingImg.email, userUploadingImg.password);
await searchDialog.checkSearchIconIsVisible();
await searchDialog.clickOnSearchIcon();
@@ -192,7 +190,7 @@ describe('Search Component - Multi-Select Facet', () => {
describe('', () => {
let txtFile;
const acsUser = new AcsUserModel();
const acsUser = new UserModel();
const randomName = StringUtil.generateRandomString();
const txtFileInfo = new FileModel({
@@ -201,13 +199,13 @@ describe('Search Component - Multi-Select Facet', () => {
});
beforeAll(async () => {
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
await apiService.getInstance().login(browser.params.testConfig.admin.email, browser.params.testConfig.admin.password);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
await usersActions.createUser(acsUser);
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
await apiService.getInstance().login(acsUser.email, acsUser.password);
site = await this.alfrescoJsApi.core.sitesApi.createSite({
site = await apiService.getInstance().core.sitesApi.createSite({
title: StringUtil.generateRandomString(8),
visibility: 'PUBLIC'
});
@@ -215,7 +213,7 @@ describe('Search Component - Multi-Select Facet', () => {
txtFile = await uploadActions.uploadFile(txtFileInfo.location, txtFileInfo.name, '-my-');
await browser.sleep(15000);
await loginPage.loginToContentServicesUsingUserModel(acsUser);
await loginPage.login(acsUser.email, acsUser.password);
await searchDialog.checkSearchIconIsVisible();
await searchDialog.clickOnSearchIcon();
@@ -226,11 +224,11 @@ describe('Search Component - Multi-Select Facet', () => {
afterAll(async () => {
await uploadActions.deleteFileOrFolder(txtFile.entry.id);
await this.alfrescoJsApi.core.sitesApi.deleteSite(site.entry.id, { permanent: true });
await apiService.getInstance().core.sitesApi.deleteSite(site.entry.id, { permanent: true });
});
it('[C280058] Should update filter facets items number when another filter facet item is selected', async () => {
await loginPage.loginToContentServicesUsingUserModel(acsUser);
await loginPage.login(acsUser.email, acsUser.password);
await searchDialog.checkSearchIconIsVisible();
await searchDialog.clickOnSearchIcon();

View File

@@ -17,17 +17,15 @@
import { browser } from 'protractor';
import { LoginPage, UploadActions, StringUtil } from '@alfresco/adf-testing';
import { LoginSSOPage, UploadActions, StringUtil, ApiService, UserModel } from '@alfresco/adf-testing';
import { SearchDialogPage } from '../pages/adf/dialog/search-dialog.page';
import { ContentServicesPage } from '../pages/adf/content-services.page';
import { SearchResultsPage } from '../pages/adf/search-results.page';
import { AcsUserModel } from '../models/ACS/acs-user.model';
import { FolderModel } from '../models/ACS/folder.model';
import { FileModel } from '../models/ACS/file.model';
import { Util } from '../util/util';
import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api';
import { NavigationBarPage } from '../pages/adf/navigation-bar.page';
import { UsersActions } from '../actions/users.actions';
describe('Search component - Search Page', () => {
const search = {
@@ -43,28 +41,27 @@ describe('Search component - Search Page', () => {
}
};
const loginPage = new LoginPage();
const loginPage = new LoginSSOPage();
const contentServicesPage = new ContentServicesPage();
const searchDialog = new SearchDialogPage();
const searchResultPage = new SearchResultsPage();
const navigationBarPage = new NavigationBarPage();
const acsUser = new AcsUserModel();
const apiService = new ApiService();
const uploadActions = new UploadActions(apiService);
const usersActions = new UsersActions(apiService);
const acsUser = new UserModel();
const emptyFolderModel = new FolderModel({ 'name': 'search' + StringUtil.generateRandomString() });
let firstFileModel;
const newFolderModel = new FolderModel({ 'name': 'newFolder' });
const newFolderModel = new FolderModel();
let fileNames = [];
const nrOfFiles = 15;
const adminNrOfFiles = 5;
this.alfrescoJsApi = new AlfrescoApi({
provider: 'ECM',
hostEcm: browser.params.testConfig.adf_acs.host
});
const uploadActions = new UploadActions(this.alfrescoJsApi);
beforeAll(async () => {
fileNames = Util.generateSequenceFiles(1, nrOfFiles, search.active.base, search.active.extension);
const adminFileNames = Util.generateSequenceFiles(nrOfFiles + 1, nrOfFiles + adminNrOfFiles, search.active.base, search.active.extension);
fileNames = StringUtil.generateFilesNames(1, nrOfFiles, search.active.base, search.active.extension);
const adminFileNames = StringUtil.generateFilesNames(nrOfFiles + 1, nrOfFiles + adminNrOfFiles, search.active.base, search.active.extension);
search.active.firstFile = fileNames[0];
search.active.secondFile = fileNames[1];
fileNames.splice(0, 1);
@@ -74,10 +71,10 @@ describe('Search component - Search Page', () => {
'location': browser.params.resources.Files.ADF_DOCUMENTS.TXT.file_path
});
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
await apiService.getInstance().login(browser.params.testConfig.admin.email, browser.params.testConfig.admin.password);
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
await usersActions.createUser(acsUser);
await apiService.getInstance().login(acsUser.email, acsUser.password);
await uploadActions.createFolder(emptyFolderModel.name, '-my-');
const newFolderModelUploaded = await uploadActions.createFolder(newFolderModel.name, '-my-');
@@ -86,13 +83,13 @@ describe('Search component - Search Page', () => {
await uploadActions.uploadFile(firstFileModel.location, firstFileModel.name, '-my-');
await this.alfrescoJsApi.login(browser.params.testConfig.adf.adminEmail, browser.params.testConfig.adf.adminPassword);
await apiService.getInstance().login(browser.params.testConfig.admin.email, browser.params.testConfig.admin.password);
await uploadActions.createEmptyFiles(adminFileNames, newFolderModelUploaded.entry.id);
await browser.sleep(15000);
await loginPage.loginToContentServicesUsingUserModel(acsUser);
await loginPage.login(acsUser.email, acsUser.password);
});
afterAll(async () => {