mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[ADF-3259] [ADF-3363] e2e login and card metadata (#3612)
* remember me * add login component e2e test * add success route test * add change logo check * redirect url after logout e2e * move redirection test in a separate file * login component tslint * cardview e2e * fix login test * add test case number * move version test in a separate file * clean unused elements * metadata part 1 * tslint fix * fix metadata test * remove fit * fix formatting file viewerPage * multi propety test * metadata and login improvements * fix data automation fix * metadata permission e2e * fix tslint problems * improve selector * stabilize search component test * stabilize test step 1 * fix tag test add config timeout * tentative * delay after download * change meatdata test * stabilize metadata * use smaller file for not extension related test * stabilize test step 2 * exclude failing test * timeout fix * split in multiple task e2e * trick travis * trigger build * fix command issue * fix save screenshot * fix run subfolder * test timeout increase
This commit is contained in:
committed by
Eugenio Romano
parent
66f534b32c
commit
b2cb93468d
305
e2e/core/card-view/aspect-oriented-config.e2e.ts
Normal file
305
e2e/core/card-view/aspect-oriented-config.e2e.ts
Normal file
@@ -0,0 +1,305 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2016 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import LoginPage = require('../../pages/adf/loginPage');
|
||||
import ContentServicesPage = require('../../pages/adf/contentServicesPage');
|
||||
import ViewerPage = require('../../pages/adf/viewerPage');
|
||||
import CardViewPage = require('../../pages/adf/metadataViewPage');
|
||||
import ContentListPage = require('../../pages/adf/dialog/contentList');
|
||||
import NavigationBarPage = require('../../pages/adf/navigationBarPage');
|
||||
import { ConfigEditorPage } from '../../pages/adf/configEditorPage';
|
||||
|
||||
import AcsUserModel = require('../../models/ACS/acsUserModel');
|
||||
import FileModel = require('../../models/ACS/fileModel');
|
||||
|
||||
import TestConfig = require('../../test.config');
|
||||
import resources = require('../../util/resources');
|
||||
import dateFormat = require('dateformat');
|
||||
|
||||
import AlfrescoApi = require('alfresco-js-api-node');
|
||||
import { UploadActions } from '../../actions/ACS/upload.actions';
|
||||
|
||||
describe('Aspect oriented config', () => {
|
||||
|
||||
const METADATA = {
|
||||
DATAFORMAT: 'mmm dd yyyy',
|
||||
TITLE: 'Details',
|
||||
COMMENTS_TAB: 'COMMENTS',
|
||||
PROPERTY_TAB: 'PROPERTIES',
|
||||
DEFAULT_ASPECT: 'Properties',
|
||||
MORE_INFO_BUTTON: 'More information',
|
||||
LESS_INFO_BUTTON: 'Less information',
|
||||
ARROW_DOWN: 'keyboard_arrow_down',
|
||||
ARROW_UP: 'keyboard_arrow_up',
|
||||
EDIT_BUTTON_TOOLTIP: 'Edit'
|
||||
};
|
||||
|
||||
const loginPage = new LoginPage();
|
||||
const contentServicesPage = new ContentServicesPage();
|
||||
const viewerPage = new ViewerPage();
|
||||
const metadataViewPage = new CardViewPage();
|
||||
const contentListPage = new ContentListPage();
|
||||
const navigationBarPage = new NavigationBarPage();
|
||||
const configEditorPage = new ConfigEditorPage();
|
||||
|
||||
let acsUser = new AcsUserModel();
|
||||
|
||||
let pngFileModel = new FileModel({
|
||||
'name': resources.Files.ADF_DOCUMENTS.PNG.file_name,
|
||||
'location': resources.Files.ADF_DOCUMENTS.PNG.file_location
|
||||
});
|
||||
|
||||
beforeAll(async (done) => {
|
||||
|
||||
let uploadActions = new UploadActions();
|
||||
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: TestConfig.adf.url
|
||||
});
|
||||
|
||||
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
|
||||
|
||||
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
|
||||
|
||||
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
|
||||
|
||||
await uploadActions.uploadFile(this.alfrescoJsApi, pngFileModel.location, pngFileModel.name, '-my-');
|
||||
|
||||
loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
viewerPage.clickCloseButton();
|
||||
browser.refresh();
|
||||
});
|
||||
|
||||
it('[C261117] Should be possible restrict the display properties of one an aspect', () => {
|
||||
navigationBarPage.clickConfigEditorButton();
|
||||
|
||||
configEditorPage.clickClearMetadataButton();
|
||||
|
||||
configEditorPage.enterMetadataConfiguration('{ "presets": {' +
|
||||
' "default": [{' +
|
||||
' "title": "IMAGE",' +
|
||||
' "items": [' +
|
||||
' {' +
|
||||
' "aspect": "exif:exif", "properties": [ "exif:pixelXDimension", "exif:pixelYDimension", "exif:isoSpeedRatings"]' +
|
||||
' }' +
|
||||
' ]' +
|
||||
' }]' +
|
||||
' }');
|
||||
|
||||
configEditorPage.clickSaveMetadataButton();
|
||||
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
|
||||
viewerPage.viewFile(pngFileModel.name);
|
||||
viewerPage.clickInfoButton();
|
||||
viewerPage.checkInfoSideBarIsDisplayed();
|
||||
metadataViewPage.clickOnPropertiesTab();
|
||||
|
||||
metadataViewPage.clickOnInformationButton();
|
||||
|
||||
metadataViewPage.clickMetadatGroup('IMAGE');
|
||||
|
||||
metadataViewPage.checkPopertyIsVisible('properties.exif:pixelXDimension', 'textitem');
|
||||
metadataViewPage.checkPopertyIsVisible('properties.exif:pixelYDimension', 'textitem');
|
||||
metadataViewPage.checkPopertyIsNotVisible('properties.exif:isoSpeedRatings', 'textitem');
|
||||
|
||||
metadataViewPage.editIconClick();
|
||||
|
||||
metadataViewPage.checkPopertyIsVisible('properties.exif:isoSpeedRatings', 'textitem');
|
||||
});
|
||||
|
||||
it('[C260185] Should ignore not existing aspect when present in the configuration', () => {
|
||||
navigationBarPage.clickConfigEditorButton();
|
||||
|
||||
configEditorPage.clickClearMetadataButton();
|
||||
|
||||
configEditorPage.enterMetadataConfiguration(' {' +
|
||||
' "presets": {' +
|
||||
' "default": {' +
|
||||
' "exif:exif": "*",' +
|
||||
' "cm:versionable": "*",' +
|
||||
' "not:exists": "*"' +
|
||||
' }' +
|
||||
' }' +
|
||||
' }');
|
||||
|
||||
configEditorPage.clickSaveMetadataButton();
|
||||
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
|
||||
viewerPage.viewFile(pngFileModel.name);
|
||||
viewerPage.clickInfoButton();
|
||||
viewerPage.checkInfoSideBarIsDisplayed();
|
||||
metadataViewPage.clickOnPropertiesTab();
|
||||
|
||||
metadataViewPage.clickOnInformationButton();
|
||||
|
||||
metadataViewPage.checkkMetadatGroupIsPresent('EXIF');
|
||||
metadataViewPage.checkkMetadatGroupIsPresent('properties');
|
||||
metadataViewPage.checkkMetadatGroupIsPresent('Versionable');
|
||||
metadataViewPage.checkkMetadatGroupIsNotPresent('exists');
|
||||
});
|
||||
|
||||
it('[C260183] Should show all the aspect if the content-metadata configuration is NOT provided' , () => {
|
||||
navigationBarPage.clickConfigEditorButton();
|
||||
|
||||
configEditorPage.clickClearMetadataButton();
|
||||
|
||||
configEditorPage.enterMetadataConfiguration('{ }');
|
||||
|
||||
configEditorPage.clickSaveMetadataButton();
|
||||
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
|
||||
viewerPage.viewFile(pngFileModel.name);
|
||||
viewerPage.clickInfoButton();
|
||||
viewerPage.checkInfoSideBarIsDisplayed();
|
||||
metadataViewPage.clickOnPropertiesTab();
|
||||
|
||||
metadataViewPage.clickOnInformationButton();
|
||||
|
||||
metadataViewPage.checkkMetadatGroupIsPresent('EXIF');
|
||||
metadataViewPage.checkkMetadatGroupIsPresent('properties');
|
||||
metadataViewPage.checkkMetadatGroupIsPresent('Versionable');
|
||||
metadataViewPage.checkkMetadatGroupIsPresent('Titled');
|
||||
metadataViewPage.checkkMetadatGroupIsPresent('Auditable');
|
||||
metadataViewPage.checkkMetadatGroupIsPresent('Author');
|
||||
metadataViewPage.checkkMetadatGroupIsPresent('Content');
|
||||
});
|
||||
|
||||
it('[C260182] Should show all the aspects if the default configuration contains the * symbol' , () => {
|
||||
navigationBarPage.clickConfigEditorButton();
|
||||
|
||||
configEditorPage.clickClearMetadataButton();
|
||||
|
||||
configEditorPage.enterMetadataConfiguration('{' +
|
||||
' "presets": {' +
|
||||
' "default": "*"' +
|
||||
' }' +
|
||||
'}');
|
||||
|
||||
configEditorPage.clickSaveMetadataButton();
|
||||
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
|
||||
viewerPage.viewFile(pngFileModel.name);
|
||||
viewerPage.clickInfoButton();
|
||||
viewerPage.checkInfoSideBarIsDisplayed();
|
||||
metadataViewPage.clickOnPropertiesTab();
|
||||
|
||||
metadataViewPage.clickOnInformationButton();
|
||||
|
||||
metadataViewPage.checkkMetadatGroupIsPresent('EXIF');
|
||||
metadataViewPage.checkkMetadatGroupIsPresent('properties');
|
||||
metadataViewPage.checkkMetadatGroupIsPresent('Versionable');
|
||||
metadataViewPage.checkkMetadatGroupIsPresent('Titled');
|
||||
metadataViewPage.checkkMetadatGroupIsPresent('Auditable');
|
||||
metadataViewPage.checkkMetadatGroupIsPresent('Author');
|
||||
metadataViewPage.checkkMetadatGroupIsPresent('Content');
|
||||
});
|
||||
|
||||
it('[C268899] Should be possible use a Translation key as Title of a metadata group' , () => {
|
||||
navigationBarPage.clickConfigEditorButton();
|
||||
|
||||
configEditorPage.clickClearMetadataButton();
|
||||
|
||||
configEditorPage.enterMetadataConfiguration('{' +
|
||||
' "presets": {' +
|
||||
' "default": [' +
|
||||
' {' +
|
||||
' "title": "GROUP-TITLE1-TRANSLATION-KEY",' +
|
||||
' "items": [' +
|
||||
' {' +
|
||||
' "aspect": "exif:exif",' +
|
||||
' "properties": "*"' +
|
||||
' }' +
|
||||
' ]' +
|
||||
' },' +
|
||||
' {' +
|
||||
' "title": "GROUP-TITLE2-TRANSLATION-KEY",' +
|
||||
' "items": [' +
|
||||
' {' +
|
||||
' "aspect": "kitten:food",' +
|
||||
' "properties": [' +
|
||||
' "kitten:favourite-food",' +
|
||||
' "kitten:recommended-food"' +
|
||||
' ]' +
|
||||
' }' +
|
||||
' ]' +
|
||||
' }' +
|
||||
' ]' +
|
||||
' }' +
|
||||
'}');
|
||||
|
||||
configEditorPage.clickSaveMetadataButton();
|
||||
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
|
||||
viewerPage.viewFile(pngFileModel.name);
|
||||
viewerPage.clickInfoButton();
|
||||
viewerPage.checkInfoSideBarIsDisplayed();
|
||||
metadataViewPage.clickOnPropertiesTab();
|
||||
|
||||
metadataViewPage.clickOnInformationButton();
|
||||
|
||||
metadataViewPage.checkkMetadatGroupIsPresent('GROUP-TITLE1-TRANSLATION-KEY');
|
||||
metadataViewPage.checkkMetadatGroupIsPresent('GROUP-TITLE2-TRANSLATION-KEY');
|
||||
|
||||
expect(metadataViewPage.getkMetadatGroupTitle('GROUP-TITLE1-TRANSLATION-KEY')).toBe('CUSTOM TITLE TRANSLATION ONE');
|
||||
expect(metadataViewPage.getkMetadatGroupTitle('GROUP-TITLE2-TRANSLATION-KEY')).toBe('CUSTOM TITLE TRANSLATION TWO');
|
||||
|
||||
});
|
||||
|
||||
it('[C268899] Should be possible use a custom preset' , () => {
|
||||
navigationBarPage.clickConfigEditorButton();
|
||||
|
||||
configEditorPage.clickClearMetadataButton();
|
||||
|
||||
configEditorPage.enterMetadataConfiguration('{' +
|
||||
' "presets": {' +
|
||||
' "custom-preset": {' +
|
||||
' "exif:exif": "*",' +
|
||||
' "cm:versionable": "*"' +
|
||||
' }' +
|
||||
' }' +
|
||||
'}');
|
||||
|
||||
configEditorPage.clickSaveMetadataButton();
|
||||
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
|
||||
viewerPage.viewFile(pngFileModel.name);
|
||||
viewerPage.clickInfoButton();
|
||||
viewerPage.checkInfoSideBarIsDisplayed();
|
||||
metadataViewPage.clickOnPropertiesTab();
|
||||
|
||||
metadataViewPage.enablePreset();
|
||||
metadataViewPage.enterPresetText('custom-preset');
|
||||
|
||||
metadataViewPage.clickOnInformationButton();
|
||||
|
||||
metadataViewPage.checkkMetadatGroupIsPresent('properties');
|
||||
metadataViewPage.checkkMetadatGroupIsPresent('EXIF');
|
||||
metadataViewPage.checkkMetadatGroupIsPresent('Versionable');
|
||||
});
|
||||
});
|
313
e2e/core/card-view/card-view-component.e2e.ts
Normal file
313
e2e/core/card-view/card-view-component.e2e.ts
Normal file
@@ -0,0 +1,313 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2016 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import LoginPage = require('../../pages/adf/loginPage');
|
||||
import NavigationBarPage = require('../../pages/adf/navigationBarPage');
|
||||
import CardViewPage = require('../../pages/adf/metadataViewPage');
|
||||
|
||||
import TestConfig = require('../../test.config');
|
||||
import resources = require('../../util/resources');
|
||||
import AlfrescoApi = require('alfresco-js-api-node');
|
||||
import { UsersActions } from '../../actions/users.actions';
|
||||
import { AppsActions } from '../../actions/APS/apps.actions';
|
||||
import CardViewPageComponent = require('../../pages/adf/cardViewPageComponent');
|
||||
import Util = require('../../util/util');
|
||||
|
||||
describe('CardView Component', () => {
|
||||
const loginPage = new LoginPage();
|
||||
const navigationBarPage = new NavigationBarPage();
|
||||
const cardViewPageComponent = new CardViewPageComponent();
|
||||
const metadataViewPage = new CardViewPage();
|
||||
|
||||
const app = resources.Files.APP_WITH_PROCESSES;
|
||||
|
||||
beforeAll(async (done) => {
|
||||
const apps = new AppsActions();
|
||||
const users = new UsersActions();
|
||||
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'BPM',
|
||||
hostBpm: TestConfig.adf.url
|
||||
});
|
||||
|
||||
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
|
||||
|
||||
let user = await users.createTenantAndUser(this.alfrescoJsApi);
|
||||
|
||||
await this.alfrescoJsApi.login(user.email, user.password);
|
||||
|
||||
await apps.importPublishDeployApp(this.alfrescoJsApi, app.file_location);
|
||||
|
||||
loginPage.loginToProcessServicesUsingUserModel(user);
|
||||
|
||||
navigationBarPage.clickCardViewButton();
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
cardViewPageComponent.clickOnResetButton();
|
||||
});
|
||||
|
||||
describe('key-value pair ', () => {
|
||||
|
||||
it('[C279937] Should the label be present', () => {
|
||||
let label = element(by.xpath('div[data-automation-id="card-key-value-pairs-label-key-value-pairs"]'));
|
||||
|
||||
Util.waitUntilElementIsPresent(label);
|
||||
});
|
||||
|
||||
it('[C279898] Should be possible edit key-value pair properties', () => {
|
||||
cardViewPageComponent.clickOnAddButton();
|
||||
cardViewPageComponent.setName('testName');
|
||||
cardViewPageComponent.setValue('testValue');
|
||||
cardViewPageComponent.clickOnAddButton();
|
||||
cardViewPageComponent.waitForOutput();
|
||||
expect(cardViewPageComponent.getOutputText(0)).toBe('[CardView Key-Value Pairs Item] - [{"name":"testName","value":"testValue"}]');
|
||||
|
||||
cardViewPageComponent.deletePairsValues();
|
||||
|
||||
expect(cardViewPageComponent.getOutputText(1)).toBe('[CardView Key-Value Pairs Item] - []');
|
||||
});
|
||||
});
|
||||
|
||||
describe('Selectbox', () => {
|
||||
|
||||
it('[C279939] Should the label be present', () => {
|
||||
let label = element(by.xpath('div[data-automation-id="card-select-label-select"]'));
|
||||
|
||||
Util.waitUntilElementIsPresent(label);
|
||||
});
|
||||
|
||||
it('[C279899] Should be possible edit selectbox item', () => {
|
||||
cardViewPageComponent.clickSelectBox();
|
||||
cardViewPageComponent.selectValueFromComboBox(1);
|
||||
|
||||
expect(cardViewPageComponent.getOutputText(0))
|
||||
.toBe('[CardView Select Item] - two');
|
||||
});
|
||||
});
|
||||
|
||||
describe('Text', () => {
|
||||
|
||||
it('[C279937] Should the label be present', () => {
|
||||
let label = element(by.xpath('div[data-automation-id="card-textitem-label-name"]'));
|
||||
|
||||
Util.waitUntilElementIsPresent(label);
|
||||
});
|
||||
|
||||
it('[C279943] Should be present a default value', () => {
|
||||
expect(cardViewPageComponent.getTextFieldText()).toBe('Spock');
|
||||
});
|
||||
|
||||
it('[C279934] Should be possible edit text item', () => {
|
||||
cardViewPageComponent
|
||||
.clickOnTextField()
|
||||
.enterTextField('example')
|
||||
.clickOnTextSaveIcon();
|
||||
|
||||
expect(cardViewPageComponent.getOutputText(0)).toBe('[CardView Text Item] - example');
|
||||
});
|
||||
|
||||
it('[C279944] Should be possible undo text item modify when click on the clear button', () => {
|
||||
cardViewPageComponent
|
||||
.clickOnTextField()
|
||||
.enterTextField('example')
|
||||
.clickOnTextClearIcon();
|
||||
|
||||
expect(cardViewPageComponent.getTextFieldText()).toBe('Spock');
|
||||
});
|
||||
});
|
||||
|
||||
describe('Int', () => {
|
||||
|
||||
it('[C279940] Should the label be present', () => {
|
||||
let label = element(by.xpath('div[data-automation-id="card-textitem-label-int"]'));
|
||||
|
||||
Util.waitUntilElementIsPresent(label);
|
||||
});
|
||||
|
||||
it('[C279945] Should be present a default value', () => {
|
||||
expect(cardViewPageComponent.getIntFieldText()).toBe('213');
|
||||
});
|
||||
|
||||
it('[C279946] Should be possible edit int item', () => {
|
||||
cardViewPageComponent
|
||||
.clickOnIntField()
|
||||
.enterIntField('99999')
|
||||
.clickOnIntSaveIcon();
|
||||
|
||||
expect(cardViewPageComponent.getOutputText(0)).toBe('[CardView Int Item] - 99999');
|
||||
});
|
||||
|
||||
it('[C279947] Should not be possible add string value to the int item', () => {
|
||||
cardViewPageComponent
|
||||
.clickOnIntField()
|
||||
.enterIntField('string value')
|
||||
.clickOnIntSaveIcon();
|
||||
|
||||
expect(cardViewPageComponent.getErrorInt()).toBe('Use an integer format');
|
||||
});
|
||||
|
||||
it('[C279948] Should not be possible add float value to the int item', () => {
|
||||
cardViewPageComponent
|
||||
.clickOnIntField()
|
||||
.enterIntField('0.22')
|
||||
.clickOnIntSaveIcon();
|
||||
|
||||
expect(cardViewPageComponent.getErrorInt()).toBe('Use an integer format');
|
||||
});
|
||||
|
||||
it('[C279949] Should not be possible have an empty value', () => {
|
||||
cardViewPageComponent
|
||||
.clickOnIntField()
|
||||
.enterIntField(' ')
|
||||
.clickOnIntSaveIcon();
|
||||
|
||||
expect(cardViewPageComponent.getErrorInt()).toBe('Use an integer format');
|
||||
});
|
||||
|
||||
it('[C279950] Should return an error when the value is > 2147483647', () => {
|
||||
cardViewPageComponent
|
||||
.clickOnIntField()
|
||||
.enterIntField('214748367')
|
||||
.clickOnIntSaveIcon();
|
||||
|
||||
expect(cardViewPageComponent.getOutputText(0)).toBe('[CardView Int Item] - 214748367');
|
||||
|
||||
cardViewPageComponent
|
||||
.clickOnIntField()
|
||||
.enterIntField('2147483648')
|
||||
.clickOnIntSaveIcon();
|
||||
|
||||
expect(cardViewPageComponent.getErrorInt()).toBe('Use an integer format');
|
||||
});
|
||||
|
||||
it('[C279951] Should be possible undo item modify when click on the clear button', () => {
|
||||
cardViewPageComponent
|
||||
.clickOnIntField()
|
||||
.enterIntField('999')
|
||||
.clickOnIntClearIcon();
|
||||
|
||||
expect(cardViewPageComponent.getIntFieldText()).toBe('213');
|
||||
});
|
||||
});
|
||||
|
||||
describe('Float', () => {
|
||||
|
||||
it('[C279941] Should the label be present', () => {
|
||||
let label = element(by.xpath('div[data-automation-id="card-textitem-label-float"]'));
|
||||
|
||||
Util.waitUntilElementIsPresent(label);
|
||||
});
|
||||
|
||||
it('[C279952] Should be present a default value', () => {
|
||||
expect(cardViewPageComponent.getFloatFieldText()).toBe('9.9');
|
||||
});
|
||||
|
||||
it('[C279953] Should be possible edit float item', () => {
|
||||
cardViewPageComponent
|
||||
.clickOnFloatField()
|
||||
.enterFloatField('77.33')
|
||||
.clickOnFloatSaveIcon();
|
||||
|
||||
expect(cardViewPageComponent.getOutputText(0)).toBe('[CardView Float Item] - 77.33');
|
||||
});
|
||||
|
||||
it('[C279954] Should not be possible add string value to the float item', () => {
|
||||
cardViewPageComponent
|
||||
.clickOnFloatField()
|
||||
.enterFloatField('string value')
|
||||
.clickOnFloatSaveIcon();
|
||||
|
||||
expect(cardViewPageComponent.getErrorFloat()).toBe('Use a number format');
|
||||
});
|
||||
|
||||
it('[C279955] Should be possible undo item item modify when click on the clear button', () => {
|
||||
cardViewPageComponent
|
||||
.clickOnFloatField()
|
||||
.enterFloatField('77.33')
|
||||
.clickOnFloatClearIcon();
|
||||
|
||||
expect(cardViewPageComponent.getFloatFieldText()).toBe('9.9');
|
||||
});
|
||||
|
||||
it('[C279956] Should not be possible have an empty value', () => {
|
||||
cardViewPageComponent
|
||||
.clickOnFloatField()
|
||||
.enterFloatField(' ')
|
||||
.clickOnFloatSaveIcon();
|
||||
|
||||
expect(cardViewPageComponent.getErrorFloat()).toBe('Use a number format');
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('Boolean', () => {
|
||||
|
||||
it('[C279942] Should the label be present', () => {
|
||||
let label = element(by.xpath('div[data-automation-id="card-boolean-label-boolean"]'));
|
||||
|
||||
Util.waitUntilElementIsPresent(label);
|
||||
});
|
||||
|
||||
it('[C279957] Should be possible edit the checkbox value when click on it', () => {
|
||||
cardViewPageComponent.checkboxClick();
|
||||
|
||||
expect(cardViewPageComponent.getOutputText(0)).toBe('[CardView Boolean Item] - false');
|
||||
|
||||
cardViewPageComponent.checkboxClick();
|
||||
|
||||
expect(cardViewPageComponent.getOutputText(1)).toBe('[CardView Boolean Item] - true');
|
||||
});
|
||||
});
|
||||
|
||||
describe('Date and DateTime', () => {
|
||||
|
||||
it('[C279961] Should the label be present', () => {
|
||||
let label = element(by.xpath('div[data-automation-id="card-dateitem-label-date"]'));
|
||||
|
||||
Util.waitUntilElementIsPresent(label);
|
||||
|
||||
let label = element(by.xpath('div[data-automation-id="card-dateitem-label-datetime"]'));
|
||||
|
||||
Util.waitUntilElementIsPresent(label);
|
||||
});
|
||||
|
||||
it('[C279962] Should be present a default value', () => {
|
||||
expect(metadataViewPage.getPropertyText('date', 'date')).toEqual('24.12.1983');
|
||||
expect(metadataViewPage.getPropertyText('datetime', 'datetime')).toEqual('Dec 24 1983 10:00');
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
it('[C279936] Should not be possible edit any parameter when editable property is false', () => {
|
||||
cardViewPageComponent.disableEdit();
|
||||
|
||||
let editIconText = element(by.xpath('mat-icon[data-automation-id="card-textitem-edit-icon-name"]'));
|
||||
let editIconInt = element(by.xpath('mat-icon[data-automation-id="card-textitem-edit-icon-int"]'));
|
||||
let editIconFloat = element(by.xpath('mat-icon[data-automation-id="card-textitem-edit-icon-float"]'));
|
||||
let editIconKey = element(by.xpath('mat-icon[data-automation-id="card-key-value-pairs-button-key-value-pairs"]'));
|
||||
let editIconData = element(by.xpath('mat-datetimepicker-toggle'));
|
||||
|
||||
Util.waitUntilElementIsNotVisible(editIconText);
|
||||
Util.waitUntilElementIsNotVisible(editIconInt);
|
||||
Util.waitUntilElementIsNotVisible(editIconFloat);
|
||||
Util.waitUntilElementIsNotVisible(editIconKey);
|
||||
Util.waitUntilElementIsNotVisible(editIconData);
|
||||
});
|
||||
});
|
158
e2e/core/card-view/metadata-properties.e2e.ts
Normal file
158
e2e/core/card-view/metadata-properties.e2e.ts
Normal file
@@ -0,0 +1,158 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2016 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import LoginPage = require('../../pages/adf/loginPage');
|
||||
import ContentServicesPage = require('../../pages/adf/contentServicesPage');
|
||||
import ViewerPage = require('../../pages/adf/viewerPage');
|
||||
import CardViewPage = require('../../pages/adf/metadataViewPage');
|
||||
|
||||
import AcsUserModel = require('../../models/ACS/acsUserModel');
|
||||
import FileModel = require('../../models/ACS/fileModel');
|
||||
|
||||
import TestConfig = require('../../test.config');
|
||||
import resources = require('../../util/resources');
|
||||
import dateFormat = require('dateformat');
|
||||
|
||||
import AlfrescoApi = require('alfresco-js-api-node');
|
||||
import { UploadActions } from '../../actions/ACS/upload.actions';
|
||||
|
||||
import fs = require('fs');
|
||||
import path = require('path');
|
||||
|
||||
describe('CardView Component - properties', () => {
|
||||
|
||||
let METADATA = {
|
||||
DATAFORMAT: 'mmm dd yyyy',
|
||||
TITLE: 'Details',
|
||||
COMMENTS_TAB: 'COMMENTS',
|
||||
PROPERTY_TAB: 'PROPERTIES',
|
||||
DEFAULT_ASPECT: 'Properties',
|
||||
MORE_INFO_BUTTON: 'More information',
|
||||
LESS_INFO_BUTTON: 'Less information',
|
||||
ARROW_DOWN: 'keyboard_arrow_down',
|
||||
ARROW_UP: 'keyboard_arrow_up',
|
||||
EDIT_BUTTON_TOOLTIP: 'Edit'
|
||||
};
|
||||
|
||||
let loginPage = new LoginPage();
|
||||
let contentServicesPage = new ContentServicesPage();
|
||||
let viewerPage = new ViewerPage();
|
||||
let metadataViewPage = new CardViewPage();
|
||||
|
||||
let acsUser = new AcsUserModel();
|
||||
|
||||
let pngFileModel = new FileModel({
|
||||
'name': resources.Files.ADF_DOCUMENTS.PNG.file_name,
|
||||
'location': resources.Files.ADF_DOCUMENTS.PNG.file_location
|
||||
});
|
||||
|
||||
beforeAll(async (done) => {
|
||||
|
||||
let uploadActions = new UploadActions();
|
||||
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: TestConfig.adf.url
|
||||
});
|
||||
|
||||
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
|
||||
|
||||
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
|
||||
|
||||
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
|
||||
|
||||
let pdfUploadedFile = await uploadActions.uploadFile(this.alfrescoJsApi, pngFileModel.location, pngFileModel.name, '-my-');
|
||||
|
||||
Object.assign(pngFileModel, pdfUploadedFile.entry);
|
||||
|
||||
pngFileModel.update(pdfUploadedFile.entry);
|
||||
|
||||
loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
|
||||
contentServicesPage.navigateToDocumentList();
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
viewerPage.clickCloseButton();
|
||||
});
|
||||
|
||||
it('[C246516] Should show/hide the empty metadata when the property displayEmpty is true/false', () => {
|
||||
viewerPage.viewFile(pngFileModel.name);
|
||||
viewerPage.clickInfoButton();
|
||||
viewerPage.checkInfoSideBarIsDisplayed();
|
||||
metadataViewPage.clickOnPropertiesTab();
|
||||
metadataViewPage.editIconIsDisplayed();
|
||||
|
||||
expect(viewerPage.getActiveTab()).toEqual(METADATA.PROPERTY_TAB);
|
||||
|
||||
metadataViewPage.clickOnInformationButton();
|
||||
|
||||
metadataViewPage.clickMetadatGroup('EXIF');
|
||||
|
||||
metadataViewPage.checkPopertyIsVisible('properties.exif:flash', 'boolean');
|
||||
metadataViewPage.checkPopertyIsNotVisible('properties.exif:model', 'textitem');
|
||||
|
||||
metadataViewPage.enableDisplayEmpty();
|
||||
|
||||
metadataViewPage.checkPopertyIsVisible('properties.exif:flash', 'boolean');
|
||||
metadataViewPage.checkPopertyIsVisible('properties.exif:model', 'textitem');
|
||||
});
|
||||
|
||||
it('[C260179] Should not be possible edit the basic property when readOnly is true', () => {
|
||||
viewerPage.viewFile(pngFileModel.name);
|
||||
viewerPage.clickInfoButton();
|
||||
viewerPage.checkInfoSideBarIsDisplayed();
|
||||
metadataViewPage.clickOnPropertiesTab();
|
||||
metadataViewPage.editIconIsDisplayed();
|
||||
|
||||
metadataViewPage.enableReadonly();
|
||||
|
||||
metadataViewPage.editIconIsNotDisplayed();
|
||||
});
|
||||
|
||||
it('[C268965] Should multi property allow expand multi accordion at the same time when set', () => {
|
||||
viewerPage.viewFile(pngFileModel.name);
|
||||
viewerPage.clickInfoButton();
|
||||
viewerPage.checkInfoSideBarIsDisplayed();
|
||||
metadataViewPage.clickOnPropertiesTab();
|
||||
|
||||
metadataViewPage.clickOnInformationButton();
|
||||
|
||||
metadataViewPage.chekMetadatGroupIsNotExpand('EXIF');
|
||||
metadataViewPage.chekMetadatGroupIsNotExpand('properties');
|
||||
|
||||
metadataViewPage.clickMetadatGroup('properties');
|
||||
|
||||
metadataViewPage.chekMetadatGroupIsNotExpand('EXIF');
|
||||
metadataViewPage.chekMetadatGroupIsExpand('properties');
|
||||
|
||||
metadataViewPage.clickMetadatGroup('EXIF');
|
||||
|
||||
metadataViewPage.chekMetadatGroupIsExpand('EXIF');
|
||||
metadataViewPage.chekMetadatGroupIsNotExpand('properties');
|
||||
|
||||
metadataViewPage.enableMulti();
|
||||
|
||||
metadataViewPage.clickMetadatGroup('properties');
|
||||
|
||||
metadataViewPage.chekMetadatGroupIsExpand('EXIF');
|
||||
metadataViewPage.chekMetadatGroupIsExpand('properties');
|
||||
|
||||
});
|
||||
});
|
330
e2e/core/card-view/metadata-smoke-tests.e2e.ts
Normal file
330
e2e/core/card-view/metadata-smoke-tests.e2e.ts
Normal file
@@ -0,0 +1,330 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2016 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import LoginPage = require('../../pages/adf/loginPage');
|
||||
import ContentServicesPage = require('../../pages/adf/contentServicesPage');
|
||||
import ViewerPage = require('../../pages/adf/viewerPage');
|
||||
import CardViewPage = require('../../pages/adf/metadataViewPage');
|
||||
import ContentListPage = require('../../pages/adf/dialog/contentList');
|
||||
import NavigationBarPage = require('../../pages/adf/navigationBarPage');
|
||||
|
||||
import AcsUserModel = require('../../models/ACS/acsUserModel');
|
||||
import FileModel = require('../../models/ACS/fileModel');
|
||||
|
||||
import TestConfig = require('../../test.config');
|
||||
import resources = require('../../util/resources');
|
||||
import dateFormat = require('dateformat');
|
||||
|
||||
import AlfrescoApi = require('alfresco-js-api-node');
|
||||
import { UploadActions } from '../../actions/ACS/upload.actions';
|
||||
|
||||
import fs = require('fs');
|
||||
import path = require('path');
|
||||
import Util = require('../../util/util');
|
||||
|
||||
describe('Metadata component', () => {
|
||||
|
||||
const METADATA = {
|
||||
DATAFORMAT: 'mmm dd yyyy',
|
||||
TITLE: 'Details',
|
||||
COMMENTS_TAB: 'COMMENTS',
|
||||
PROPERTY_TAB: 'PROPERTIES',
|
||||
DEFAULT_ASPECT: 'Properties',
|
||||
MORE_INFO_BUTTON: 'More information',
|
||||
LESS_INFO_BUTTON: 'Less information',
|
||||
ARROW_DOWN: 'keyboard_arrow_down',
|
||||
ARROW_UP: 'keyboard_arrow_up',
|
||||
EDIT_BUTTON_TOOLTIP: 'Edit'
|
||||
};
|
||||
|
||||
const loginPage = new LoginPage();
|
||||
const contentServicesPage = new ContentServicesPage();
|
||||
const viewerPage = new ViewerPage();
|
||||
const metadataViewPage = new CardViewPage();
|
||||
const contentListPage = new ContentListPage();
|
||||
const navigationBarPage = new NavigationBarPage();
|
||||
|
||||
let acsUser = new AcsUserModel();
|
||||
let consumerUser = new AcsUserModel();
|
||||
|
||||
let folderName = 'Metadata Folder';
|
||||
|
||||
let pngFileModel = new FileModel({
|
||||
'name': resources.Files.ADF_DOCUMENTS.PNG.file_name,
|
||||
'location': resources.Files.ADF_DOCUMENTS.PNG.file_location
|
||||
});
|
||||
|
||||
beforeAll(async (done) => {
|
||||
|
||||
let uploadActions = new UploadActions();
|
||||
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: TestConfig.adf.url
|
||||
});
|
||||
|
||||
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
|
||||
|
||||
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
|
||||
|
||||
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
|
||||
|
||||
await uploadActions.uploadFolder(this.alfrescoJsApi, folderName, '-my-');
|
||||
|
||||
let pngUploadedFile = await uploadActions.uploadFile(this.alfrescoJsApi, pngFileModel.location, pngFileModel.name, '-my-');
|
||||
|
||||
Object.assign(pngFileModel, pngUploadedFile.entry);
|
||||
|
||||
pngFileModel.update(pngUploadedFile.entry);
|
||||
|
||||
loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
|
||||
contentServicesPage.navigateToDocumentList();
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('[C245652] Properties', () => {
|
||||
viewerPage.viewFile(pngFileModel.name);
|
||||
|
||||
viewerPage.clickInfoButton();
|
||||
viewerPage.checkInfoSideBarIsDisplayed();
|
||||
metadataViewPage.clickOnPropertiesTab();
|
||||
|
||||
expect(metadataViewPage.getTitle()).toEqual(METADATA.TITLE);
|
||||
expect(viewerPage.getActiveTab()).toEqual(METADATA.PROPERTY_TAB);
|
||||
expect(metadataViewPage.getExpandedAspectName()).toEqual(METADATA.DEFAULT_ASPECT);
|
||||
expect(metadataViewPage.getName()).toEqual(pngFileModel.name);
|
||||
expect(metadataViewPage.getCreator()).toEqual(pngFileModel.getCreatedByUser().displayName);
|
||||
expect(metadataViewPage.getCreatedDate()).toEqual(dateFormat(pngFileModel.createdAt, METADATA.DATAFORMAT));
|
||||
expect(metadataViewPage.getModifier()).toEqual(pngFileModel.getCreatedByUser().displayName);
|
||||
expect(metadataViewPage.getModifiedDate()).toEqual(dateFormat(pngFileModel.createdAt, METADATA.DATAFORMAT));
|
||||
expect(metadataViewPage.getMimetypeName()).toEqual(pngFileModel.getContent().mimeTypeName);
|
||||
expect(metadataViewPage.getSize()).toEqual(pngFileModel.getContent().getSizeInBytes());
|
||||
|
||||
metadataViewPage.editIconIsDisplayed();
|
||||
metadataViewPage.informationButtonIsDisplayed();
|
||||
expect(metadataViewPage.getInformationButtonText()).toEqual(METADATA.MORE_INFO_BUTTON);
|
||||
expect(metadataViewPage.getInformationIconText()).toEqual(METADATA.ARROW_DOWN);
|
||||
|
||||
viewerPage.clickCloseButton();
|
||||
});
|
||||
|
||||
it('[C272769] Information button', () => {
|
||||
viewerPage.viewFile(pngFileModel.name);
|
||||
viewerPage.clickInfoButton();
|
||||
viewerPage.checkInfoSideBarIsDisplayed();
|
||||
metadataViewPage.clickOnPropertiesTab();
|
||||
metadataViewPage.informationButtonIsDisplayed();
|
||||
metadataViewPage.clickOnInformationButton();
|
||||
expect(metadataViewPage.getInformationButtonText()).toEqual(METADATA.LESS_INFO_BUTTON);
|
||||
expect(metadataViewPage.getInformationIconText()).toEqual(METADATA.ARROW_UP);
|
||||
|
||||
viewerPage.clickCloseButton();
|
||||
});
|
||||
|
||||
it('[C270952] Info icon', () => {
|
||||
viewerPage.viewFile(pngFileModel.name);
|
||||
viewerPage.clickInfoButton();
|
||||
viewerPage.checkInfoSideBarIsDisplayed();
|
||||
metadataViewPage.clickOnPropertiesTab().informationButtonIsDisplayed();
|
||||
viewerPage.clickInfoButton();
|
||||
viewerPage.checkInfoSideBarIsNotDisplayed();
|
||||
viewerPage.clickInfoButton();
|
||||
viewerPage.checkInfoSideBarIsDisplayed();
|
||||
expect(viewerPage.getActiveTab()).toEqual(METADATA.COMMENTS_TAB);
|
||||
metadataViewPage.clickOnPropertiesTab();
|
||||
expect(viewerPage.getActiveTab()).toEqual(METADATA.PROPERTY_TAB);
|
||||
expect(metadataViewPage.getEditIconTooltip()).toEqual(METADATA.EDIT_BUTTON_TOOLTIP);
|
||||
|
||||
viewerPage.clickCloseButton();
|
||||
});
|
||||
|
||||
it('[C245654] Should be possible edit the basic Metadata Info of a Document', () => {
|
||||
viewerPage.viewFile(pngFileModel.name);
|
||||
viewerPage.clickInfoButton();
|
||||
viewerPage.checkInfoSideBarIsDisplayed();
|
||||
metadataViewPage.clickOnPropertiesTab();
|
||||
metadataViewPage.editIconIsDisplayed();
|
||||
|
||||
expect(viewerPage.getActiveTab()).toEqual(METADATA.PROPERTY_TAB);
|
||||
|
||||
metadataViewPage.editIconClick();
|
||||
|
||||
metadataViewPage.editPropertyIconIsDisplayed('name');
|
||||
metadataViewPage.editPropertyIconIsDisplayed('properties.cm:title');
|
||||
metadataViewPage.editPropertyIconIsDisplayed('properties.cm:description');
|
||||
|
||||
expect(metadataViewPage.getPropertyIconTooltip('name', 'edit')).toEqual('Edit');
|
||||
expect(metadataViewPage.getPropertyIconTooltip('properties.cm:title', 'edit')).toEqual('Edit');
|
||||
expect(metadataViewPage.getPropertyIconTooltip('properties.cm:description', 'edit')).toEqual('Edit');
|
||||
|
||||
metadataViewPage.clickEditPropertyIcons('name');
|
||||
metadataViewPage.updatePropertyIconIsDisplayed('name');
|
||||
metadataViewPage.clearPropertyIconIsDisplayed('name');
|
||||
|
||||
metadataViewPage.enterPropertyText('name', 'exampleText');
|
||||
metadataViewPage.clickClearPropertyIcon('name');
|
||||
expect(metadataViewPage.getPropertyText('name')).toEqual(resources.Files.ADF_DOCUMENTS.PNG.file_name);
|
||||
|
||||
metadataViewPage.clickEditPropertyIcons('name');
|
||||
metadataViewPage.enterPropertyText('name', 'exampleText.png');
|
||||
metadataViewPage.clickUpdatePropertyIcon('name');
|
||||
expect(metadataViewPage.getPropertyText('name')).toEqual('exampleText.png');
|
||||
|
||||
metadataViewPage.clickEditPropertyIcons('properties.cm:title');
|
||||
metadataViewPage.enterPropertyText('properties.cm:title', 'example title');
|
||||
metadataViewPage.clickUpdatePropertyIcon('properties.cm:title');
|
||||
expect(metadataViewPage.getPropertyText('properties.cm:title')).toEqual('example title');
|
||||
|
||||
metadataViewPage.clickEditPropertyIcons('properties.cm:description');
|
||||
metadataViewPage.enterDescriptionText('example description');
|
||||
metadataViewPage.clickUpdatePropertyIcon('properties.cm:description');
|
||||
expect(metadataViewPage.getPropertyText('properties.cm:description')).toEqual('example description');
|
||||
|
||||
viewerPage.clickCloseButton();
|
||||
|
||||
viewerPage.viewFile('exampleText.png');
|
||||
viewerPage.clickInfoButton();
|
||||
viewerPage.checkInfoSideBarIsDisplayed();
|
||||
metadataViewPage.clickOnPropertiesTab();
|
||||
metadataViewPage.editIconIsDisplayed();
|
||||
|
||||
expect(metadataViewPage.getPropertyText('name')).toEqual('exampleText.png');
|
||||
expect(metadataViewPage.getPropertyText('properties.cm:title')).toEqual('example title');
|
||||
expect(metadataViewPage.getPropertyText('properties.cm:description')).toEqual('example description');
|
||||
|
||||
metadataViewPage.editIconClick();
|
||||
|
||||
metadataViewPage.clickEditPropertyIcons('name');
|
||||
metadataViewPage.enterPropertyText('name', resources.Files.ADF_DOCUMENTS.PNG.file_name);
|
||||
metadataViewPage.clickUpdatePropertyIcon('name');
|
||||
expect(metadataViewPage.getPropertyText('name')).toEqual(resources.Files.ADF_DOCUMENTS.PNG.file_name);
|
||||
|
||||
viewerPage.clickCloseButton();
|
||||
});
|
||||
|
||||
it('[C279960] Should show the last username modifier when modify a File', () => {
|
||||
let fileUrl;
|
||||
|
||||
viewerPage.viewFile(pngFileModel.name);
|
||||
|
||||
browser.getCurrentUrl().then((currentUrl) => {
|
||||
fileUrl = currentUrl;
|
||||
});
|
||||
|
||||
loginPage.loginToContentServices(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
|
||||
|
||||
browser.controlFlow().execute(() => {
|
||||
browser.get(fileUrl);
|
||||
});
|
||||
|
||||
viewerPage.clickInfoButton();
|
||||
viewerPage.checkInfoSideBarIsDisplayed();
|
||||
metadataViewPage.clickOnPropertiesTab();
|
||||
metadataViewPage.editIconIsDisplayed();
|
||||
|
||||
expect(viewerPage.getActiveTab()).toEqual(METADATA.PROPERTY_TAB);
|
||||
|
||||
metadataViewPage.editIconClick();
|
||||
|
||||
metadataViewPage.clickEditPropertyIcons('properties.cm:description');
|
||||
metadataViewPage.enterDescriptionText('check author example description');
|
||||
metadataViewPage.clickUpdatePropertyIcon('properties.cm:description');
|
||||
expect(metadataViewPage.getPropertyText('properties.cm:description')).toEqual('check author example description');
|
||||
|
||||
loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
|
||||
browser.controlFlow().execute(() => {
|
||||
browser.get(fileUrl);
|
||||
});
|
||||
|
||||
viewerPage.clickInfoButton();
|
||||
viewerPage.checkInfoSideBarIsDisplayed();
|
||||
metadataViewPage.clickOnPropertiesTab();
|
||||
|
||||
expect(metadataViewPage.getPropertyText('modifiedByUser.displayName')).toEqual('Administrator');
|
||||
|
||||
loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
|
||||
contentServicesPage.navigateToDocumentList();
|
||||
});
|
||||
|
||||
it('[C261157] Should be possible use the metadata component When the node is a Folder', () => {
|
||||
contentListPage.metadataContent(folderName);
|
||||
|
||||
expect(metadataViewPage.getPropertyText('name')).toEqual(folderName);
|
||||
expect(metadataViewPage.getPropertyText('createdByUser.displayName')).toEqual(acsUser.firstName + ' ' + acsUser.lastName);
|
||||
|
||||
browser.refresh();
|
||||
});
|
||||
|
||||
it('[C261158] Should be possible edit the metadata When the node is a Folder', () => {
|
||||
contentListPage.metadataContent(folderName);
|
||||
|
||||
metadataViewPage.editIconClick();
|
||||
|
||||
metadataViewPage.clickEditPropertyIcons('name');
|
||||
metadataViewPage.enterPropertyText('name', 'newnameFolder');
|
||||
metadataViewPage.clickClearPropertyIcon('name');
|
||||
expect(metadataViewPage.getPropertyText('name')).toEqual(folderName);
|
||||
|
||||
metadataViewPage.clickEditPropertyIcons('name');
|
||||
metadataViewPage.enterPropertyText('name', 'newnameFolder');
|
||||
metadataViewPage.clickUpdatePropertyIcon('name');
|
||||
expect(metadataViewPage.getPropertyText('name')).toEqual('newnameFolder');
|
||||
|
||||
metadataViewPage.clickEditPropertyIcons('name');
|
||||
metadataViewPage.enterPropertyText('name', folderName);
|
||||
metadataViewPage.clickUpdatePropertyIcon('name');
|
||||
expect(metadataViewPage.getPropertyText('name')).toEqual(folderName);
|
||||
|
||||
browser.refresh();
|
||||
});
|
||||
|
||||
it('[C260181] Should be possible edit all the metadata aspect', () => {
|
||||
viewerPage.viewFile(pngFileModel.name);
|
||||
viewerPage.clickInfoButton();
|
||||
viewerPage.checkInfoSideBarIsDisplayed();
|
||||
metadataViewPage.clickOnPropertiesTab();
|
||||
metadataViewPage.editIconIsDisplayed();
|
||||
|
||||
expect(viewerPage.getActiveTab()).toEqual(METADATA.PROPERTY_TAB);
|
||||
|
||||
metadataViewPage.clickOnInformationButton();
|
||||
|
||||
metadataViewPage.clickMetadatGroup('EXIF');
|
||||
|
||||
metadataViewPage.editIconClick();
|
||||
|
||||
metadataViewPage.clickEditPropertyIcons('properties.exif:software');
|
||||
metadataViewPage.enterPropertyText('properties.exif:software', 'test custom text software');
|
||||
metadataViewPage.clickUpdatePropertyIcon('properties.exif:software');
|
||||
expect(metadataViewPage.getPropertyText('properties.exif:software')).toEqual('test custom text software');
|
||||
|
||||
metadataViewPage.clickEditPropertyIcons('properties.exif:isoSpeedRatings');
|
||||
metadataViewPage.enterPropertyText('properties.exif:isoSpeedRatings', 'test custom text isoSpeedRatings');
|
||||
metadataViewPage.clickUpdatePropertyIcon('properties.exif:isoSpeedRatings');
|
||||
expect(metadataViewPage.getPropertyText('properties.exif:isoSpeedRatings')).toEqual('test custom text isoSpeedRatings');
|
||||
|
||||
metadataViewPage.clickEditPropertyIcons('properties.exif:fNumber');
|
||||
metadataViewPage.enterPropertyText('properties.exif:fNumber', 22);
|
||||
metadataViewPage.clickUpdatePropertyIcon('properties.exif:fNumber');
|
||||
expect(metadataViewPage.getPropertyText('properties.exif:fNumber')).toEqual('22');
|
||||
});
|
||||
|
||||
});
|
163
e2e/core/card-view/permissions.e2e.ts
Normal file
163
e2e/core/card-view/permissions.e2e.ts
Normal file
@@ -0,0 +1,163 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2016 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import LoginPage = require('../../pages/adf/loginPage');
|
||||
import ContentServicesPage = require('../../pages/adf/contentServicesPage');
|
||||
import ViewerPage = require('../../pages/adf/viewerPage');
|
||||
import CardViewPage = require('../../pages/adf/metadataViewPage');
|
||||
import ContentListPage = require('../../pages/adf/dialog/contentList');
|
||||
import NavigationBarPage = require('../../pages/adf/navigationBarPage');
|
||||
|
||||
import AcsUserModel = require('../../models/ACS/acsUserModel');
|
||||
import FileModel = require('../../models/ACS/fileModel');
|
||||
|
||||
import TestConfig = require('../../test.config');
|
||||
import resources = require('../../util/resources');
|
||||
import dateFormat = require('dateformat');
|
||||
|
||||
import AlfrescoApi = require('alfresco-js-api-node');
|
||||
import { UploadActions } from '../../actions/ACS/upload.actions';
|
||||
|
||||
import fs = require('fs');
|
||||
import path = require('path');
|
||||
import Util = require('../../util/util');
|
||||
|
||||
describe('permissions', () => {
|
||||
|
||||
const METADATA = {
|
||||
DATAFORMAT: 'mmm dd yyyy',
|
||||
TITLE: 'Details',
|
||||
COMMENTS_TAB: 'COMMENTS',
|
||||
PROPERTY_TAB: 'PROPERTIES',
|
||||
DEFAULT_ASPECT: 'Properties',
|
||||
MORE_INFO_BUTTON: 'More information',
|
||||
LESS_INFO_BUTTON: 'Less information',
|
||||
ARROW_DOWN: 'keyboard_arrow_down',
|
||||
ARROW_UP: 'keyboard_arrow_up',
|
||||
EDIT_BUTTON_TOOLTIP: 'Edit'
|
||||
};
|
||||
|
||||
const loginPage = new LoginPage();
|
||||
const contentServicesPage = new ContentServicesPage();
|
||||
const viewerPage = new ViewerPage();
|
||||
const metadataViewPage = new CardViewPage();
|
||||
const contentListPage = new ContentListPage();
|
||||
const navigationBarPage = new NavigationBarPage();
|
||||
|
||||
let acsUser = new AcsUserModel();
|
||||
let consumerUser = new AcsUserModel();
|
||||
let collaboratorUser = new AcsUserModel();
|
||||
let contributorUser = new AcsUserModel();
|
||||
let site;
|
||||
|
||||
let pngFileModel = new FileModel({
|
||||
'name': resources.Files.ADF_DOCUMENTS.PNG.file_name,
|
||||
'location': resources.Files.ADF_DOCUMENTS.PNG.file_location
|
||||
});
|
||||
|
||||
beforeAll(async (done) => {
|
||||
|
||||
let uploadActions = new UploadActions();
|
||||
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: TestConfig.adf.url
|
||||
});
|
||||
|
||||
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
|
||||
|
||||
await this.alfrescoJsApi.core.peopleApi.addPerson(consumerUser);
|
||||
await this.alfrescoJsApi.core.peopleApi.addPerson(collaboratorUser);
|
||||
await this.alfrescoJsApi.core.peopleApi.addPerson(contributorUser);
|
||||
|
||||
site = await this.alfrescoJsApi.core.sitesApi.createSite({
|
||||
title: Util.generateRandomString(),
|
||||
visibility: 'PUBLIC'
|
||||
});
|
||||
|
||||
await this.alfrescoJsApi.core.sitesApi.addSiteMember(site.entry.id, {
|
||||
id: consumerUser.id,
|
||||
role: 'SiteConsumer'
|
||||
});
|
||||
|
||||
await this.alfrescoJsApi.core.sitesApi.addSiteMember(site.entry.id, {
|
||||
id: collaboratorUser.id,
|
||||
role: 'SiteCollaborator'
|
||||
});
|
||||
|
||||
await this.alfrescoJsApi.core.sitesApi.addSiteMember(site.entry.id, {
|
||||
id: contributorUser.id,
|
||||
role: 'SiteContributor'
|
||||
});
|
||||
|
||||
await uploadActions.uploadFile(this.alfrescoJsApi, pngFileModel.location, pngFileModel.name, site.entry.guid);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('[C274692] Should not be possible edit metadata properties when the user is a consumer user', () => {
|
||||
loginPage.loginToContentServicesUsingUserModel(consumerUser);
|
||||
|
||||
navigationBarPage.openContentServicesFolder(site.entry.guid);
|
||||
|
||||
viewerPage.viewFile(pngFileModel.name);
|
||||
viewerPage.clickInfoButton();
|
||||
viewerPage.checkInfoSideBarIsDisplayed();
|
||||
metadataViewPage.clickOnPropertiesTab();
|
||||
metadataViewPage.editIconIsNotDisplayed();
|
||||
});
|
||||
|
||||
it('[C279971] Should be possible edit metadata properties when the user is a collaborator user', () => {
|
||||
loginPage.loginToContentServicesUsingUserModel(collaboratorUser);
|
||||
|
||||
navigationBarPage.openContentServicesFolder(site.entry.guid);
|
||||
|
||||
viewerPage.viewFile(pngFileModel.name);
|
||||
viewerPage.clickInfoButton();
|
||||
viewerPage.checkInfoSideBarIsDisplayed();
|
||||
metadataViewPage.clickOnPropertiesTab();
|
||||
metadataViewPage.editIconIsDisplayed();
|
||||
|
||||
expect(viewerPage.getActiveTab()).toEqual(METADATA.PROPERTY_TAB);
|
||||
|
||||
metadataViewPage.clickOnInformationButton();
|
||||
|
||||
metadataViewPage.clickMetadatGroup('EXIF');
|
||||
|
||||
metadataViewPage.editIconIsDisplayed();
|
||||
});
|
||||
|
||||
it('[C279972] Should be possible edit metadata properties when the user is a contributor user', () => {
|
||||
loginPage.loginToContentServicesUsingUserModel(collaboratorUser);
|
||||
|
||||
navigationBarPage.openContentServicesFolder(site.entry.guid);
|
||||
|
||||
viewerPage.viewFile(pngFileModel.name);
|
||||
viewerPage.clickInfoButton();
|
||||
viewerPage.checkInfoSideBarIsDisplayed();
|
||||
metadataViewPage.clickOnPropertiesTab();
|
||||
metadataViewPage.editIconIsDisplayed();
|
||||
|
||||
expect(viewerPage.getActiveTab()).toEqual(METADATA.PROPERTY_TAB);
|
||||
|
||||
metadataViewPage.clickOnInformationButton();
|
||||
|
||||
metadataViewPage.clickMetadatGroup('EXIF');
|
||||
|
||||
metadataViewPage.editIconIsDisplayed();
|
||||
});
|
||||
});
|
101
e2e/core/datatable/data-table-component-selection.e2e.ts
Normal file
101
e2e/core/datatable/data-table-component-selection.e2e.ts
Normal file
@@ -0,0 +1,101 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2016 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import LoginPage = require('../../pages/adf/loginPage');
|
||||
import DataTablePage = require('../../pages/adf/dataTablePage');
|
||||
import TestConfig = require('../../test.config');
|
||||
|
||||
import AcsUserModel = require('../../models/ACS/acsUserModel');
|
||||
import AlfrescoApi = require('alfresco-js-api-node');
|
||||
|
||||
describe('Datatable component - selection', () => {
|
||||
|
||||
let dataTablePage = new DataTablePage();
|
||||
let loginPage = new LoginPage();
|
||||
let acsUser = new AcsUserModel();
|
||||
|
||||
beforeAll(async (done) => {
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: TestConfig.adf.url
|
||||
});
|
||||
|
||||
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
|
||||
|
||||
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
|
||||
|
||||
loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
|
||||
dataTablePage.goToDatatable();
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('[C213258] Should be possible change the selection modes when change the selectionMode property', () => {
|
||||
dataTablePage.selectRow('2');
|
||||
dataTablePage.checkRowIsSelected('2');
|
||||
dataTablePage.getNumberOfSelectedRows().then((result) => {
|
||||
expect(result).toEqual(1);
|
||||
});
|
||||
dataTablePage.selectRow('3');
|
||||
dataTablePage.checkRowIsSelected('3');
|
||||
dataTablePage.getNumberOfSelectedRows().then((result) => {
|
||||
expect(result).toEqual(1);
|
||||
});
|
||||
dataTablePage.selectSelectionMode('Multiple');
|
||||
dataTablePage.selectRow('1');
|
||||
dataTablePage.checkRowIsSelected('1');
|
||||
dataTablePage.selectRowWithKeyboard('3');
|
||||
dataTablePage.checkRowIsSelected('1');
|
||||
dataTablePage.checkRowIsSelected('3');
|
||||
dataTablePage.checkRowIsNotSelected('2');
|
||||
dataTablePage.checkRowIsNotSelected('4');
|
||||
dataTablePage.selectSelectionMode('None');
|
||||
dataTablePage.selectRow('1');
|
||||
dataTablePage.checkNoRowIsSelected();
|
||||
});
|
||||
|
||||
it('[C260059] Should be possible select multiple row when multiselect is true', () => {
|
||||
dataTablePage.clickMultiSelect();
|
||||
dataTablePage.clickCheckbox('1');
|
||||
dataTablePage.checkRowIsChecked('1');
|
||||
dataTablePage.clickCheckbox('3');
|
||||
dataTablePage.checkRowIsChecked('3');
|
||||
dataTablePage.checkRowIsNotChecked('2');
|
||||
dataTablePage.checkRowIsNotChecked('4');
|
||||
dataTablePage.clickCheckbox('3');
|
||||
dataTablePage.checkRowIsNotChecked('3');
|
||||
dataTablePage.checkRowIsChecked('1');
|
||||
});
|
||||
|
||||
it('[C260058] Should be possible select all the rows when multiselect is true', () => {
|
||||
dataTablePage.checkAllRows();
|
||||
dataTablePage.checkRowIsChecked('1');
|
||||
dataTablePage.checkRowIsChecked('2');
|
||||
dataTablePage.checkRowIsChecked('3');
|
||||
dataTablePage.checkRowIsChecked('4');
|
||||
});
|
||||
|
||||
it('[C277262] Should be possible reset the selected row when click on the reset button', () => {
|
||||
dataTablePage.checkRowIsChecked('1');
|
||||
dataTablePage.checkRowIsChecked('2');
|
||||
dataTablePage.checkRowIsChecked('3');
|
||||
dataTablePage.checkRowIsChecked('4');
|
||||
dataTablePage.clickReset();
|
||||
dataTablePage.checkNoRowIsSelected();
|
||||
});
|
||||
});
|
73
e2e/core/datatable/data-table-component.e2e.ts
Normal file
73
e2e/core/datatable/data-table-component.e2e.ts
Normal file
@@ -0,0 +1,73 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2016 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import LoginPage = require('../../pages/adf/loginPage.js');
|
||||
import DataTablePage = require('../../pages/adf/dataTablePage.js');
|
||||
import AcsUserModel = require('../../models/ACS/acsUserModel.js');
|
||||
import TestConfig = require('../../test.config.js');
|
||||
|
||||
import AlfrescoApi = require('alfresco-js-api-node');
|
||||
|
||||
describe('Datatable component', () => {
|
||||
|
||||
let dataTablePage = new DataTablePage();
|
||||
let loginPage = new LoginPage();
|
||||
let acsUser = new AcsUserModel();
|
||||
|
||||
beforeAll(async (done) => {
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: TestConfig.adf.url
|
||||
});
|
||||
|
||||
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
|
||||
|
||||
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
|
||||
|
||||
loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
|
||||
dataTablePage.goToDatatable();
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('[C91314] Should be possible add new row to the table', () => {
|
||||
dataTablePage.getNumberOfRows().then((result) => {
|
||||
dataTablePage.addRow();
|
||||
expect(dataTablePage.getNumberOfRows()).toEqual(result + 1);
|
||||
dataTablePage.addRow();
|
||||
expect(dataTablePage.getNumberOfRows()).toEqual(result + 2);
|
||||
});
|
||||
});
|
||||
|
||||
it('[C260039] Should be possible replace rows', () => {
|
||||
dataTablePage.replaceRows(1);
|
||||
});
|
||||
|
||||
it('[C260041] Should be possible replace columns', () => {
|
||||
dataTablePage.replaceColumns();
|
||||
});
|
||||
|
||||
it('[C277314] Should filter the table rows when the input filter is passed', () => {
|
||||
expect(dataTablePage.getNumberOfRows()).toEqual(5);
|
||||
dataTablePage.insertFilter('Name');
|
||||
expect(dataTablePage.getNumberOfRows()).toEqual(4);
|
||||
dataTablePage.insertFilter('I');
|
||||
expect(dataTablePage.getNumberOfRows()).toEqual(2);
|
||||
});
|
||||
|
||||
});
|
81
e2e/core/infinite_scrolling.e2e.ts
Normal file
81
e2e/core/infinite_scrolling.e2e.ts
Normal file
@@ -0,0 +1,81 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2016 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import LoginPage = require('../pages/adf/loginPage');
|
||||
import ContentServicesPage = require('../pages/adf/contentServicesPage');
|
||||
|
||||
import AcsUserModel = require('../models/ACS/acsUserModel');
|
||||
import FolderModel = require('../models/ACS/folderModel');
|
||||
|
||||
import TestConfig = require('../test.config');
|
||||
import Util = require('../util/util');
|
||||
|
||||
import AlfrescoApi = require('alfresco-js-api-node');
|
||||
import { UploadActions } from '../actions/ACS/upload.actions';
|
||||
|
||||
describe('Enable infinite scrolling', () => {
|
||||
|
||||
let loginPage = new LoginPage();
|
||||
let contentServicesPage = new ContentServicesPage();
|
||||
|
||||
let acsUser = new AcsUserModel();
|
||||
let folderModel = new FolderModel({ 'name': 'folderOne' });
|
||||
|
||||
let fileNames = [], nrOfFiles = 30;
|
||||
let fileNum = 0;
|
||||
|
||||
let files = {
|
||||
base: 'newFile',
|
||||
extension: '.txt'
|
||||
};
|
||||
|
||||
beforeAll(async (done) => {
|
||||
let uploadActions = new UploadActions();
|
||||
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: TestConfig.adf.url
|
||||
});
|
||||
|
||||
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
|
||||
|
||||
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
|
||||
|
||||
loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
|
||||
contentServicesPage.goToDocumentList();
|
||||
|
||||
fileNames = Util.generateSeqeunceFiles(1, nrOfFiles, files.base, files.extension);
|
||||
|
||||
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
|
||||
|
||||
let folderUploadedModel = await uploadActions.uploadFolder(this.alfrescoJsApi, folderModel.name, '-my-');
|
||||
|
||||
await uploadActions.createEmptyFiles(this.alfrescoJsApi, fileNames, folderUploadedModel.entry.id);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('Enable infinite scrolling', () => {
|
||||
contentServicesPage.navigateToFolder(folderModel.name);
|
||||
contentServicesPage.enableInfiniteScrolling();
|
||||
contentServicesPage.clickLoadMoreButton();
|
||||
for (fileNum; fileNum < nrOfFiles; fileNum++) {
|
||||
contentServicesPage.checkContentIsDisplayed(fileNames[fileNum]);
|
||||
}
|
||||
});
|
||||
});
|
250
e2e/core/login/login_component.e2e.ts
Normal file
250
e2e/core/login/login_component.e2e.ts
Normal file
@@ -0,0 +1,250 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2016 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import LoginPage = require('../../pages/adf/loginPage');
|
||||
import ContentServicesPage = require('../../pages/adf/contentServicesPage');
|
||||
import ProcessServicesPage = require('../../pages/adf/process_services/processServicesPage');
|
||||
import NavigationBarPage = require('../../pages/adf/navigationBarPage');
|
||||
import UserInfoDialog = require('../../pages/adf/dialog/userInfoDialog');
|
||||
|
||||
import TestConfig = require('../../test.config');
|
||||
import AcsUserModel = require('../../models/ACS/acsUserModel');
|
||||
|
||||
import AdfSettingsPage = require('../../pages/adf/settingsPage');
|
||||
import AlfrescoApi = require('alfresco-js-api-node');
|
||||
|
||||
import Util = require('../../util/util');
|
||||
import { UploadActions } from '../../actions/ACS/upload.actions';
|
||||
|
||||
describe('Login component', () => {
|
||||
|
||||
let adfSettingsPage = new AdfSettingsPage();
|
||||
let processServicesPage = new ProcessServicesPage();
|
||||
let navigationBarPage = new NavigationBarPage();
|
||||
let userInfoDialog = new UserInfoDialog();
|
||||
let contentServicesPage = new ContentServicesPage();
|
||||
let loginPage = new LoginPage();
|
||||
let adminUserModel = new AcsUserModel({
|
||||
'id': TestConfig.adf.adminUser,
|
||||
'password': TestConfig.adf.adminPassword
|
||||
});
|
||||
|
||||
let userA = new AcsUserModel();
|
||||
let userB = new AcsUserModel();
|
||||
|
||||
let errorMessages = {
|
||||
username: 'Your username needs to be at least 2 characters.',
|
||||
invalid_credentials: 'You\'ve entered an unknown username or password',
|
||||
password: 'Enter your password to sign in',
|
||||
required: 'Required'
|
||||
};
|
||||
|
||||
beforeAll(async (done) => {
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ALL',
|
||||
hostEcm: TestConfig.adf.url,
|
||||
hostBpm: TestConfig.adf.url
|
||||
});
|
||||
|
||||
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
|
||||
|
||||
await this.alfrescoJsApi.core.peopleApi.addPerson(userA);
|
||||
await this.alfrescoJsApi.core.peopleApi.addPerson(userB);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('[C260036] Username Required', () => {
|
||||
loginPage.goToLoginPage();
|
||||
loginPage.checkUsernameInactive();
|
||||
loginPage.checkSignInButtonIsDisabled();
|
||||
loginPage.enterUsername('A');
|
||||
loginPage.checkUsernameTooltip(errorMessages.username);
|
||||
loginPage.clearUsername();
|
||||
loginPage.checkUsernameTooltip(errorMessages.required);
|
||||
loginPage.checkUsernameHighlighted();
|
||||
loginPage.checkSignInButtonIsDisabled();
|
||||
});
|
||||
|
||||
it('[C260043] Enter Password to sign in', () => {
|
||||
loginPage.goToLoginPage();
|
||||
loginPage.checkPasswordInactive();
|
||||
loginPage.checkSignInButtonIsDisabled();
|
||||
loginPage.enterPassword('A');
|
||||
loginPage.checkPasswordTooltipIsNotVisible();
|
||||
loginPage.clearPassword();
|
||||
loginPage.checkPasswordTooltip(errorMessages.password);
|
||||
loginPage.checkPasswordHighlighted();
|
||||
loginPage.checkSignInButtonIsDisabled();
|
||||
});
|
||||
|
||||
it('[C260044] Username must be at least 2 characters long', () => {
|
||||
loginPage.goToLoginPage();
|
||||
loginPage.checkSignInButtonIsDisabled();
|
||||
loginPage.enterUsername('A');
|
||||
loginPage.checkUsernameTooltip(errorMessages.username);
|
||||
loginPage.enterUsername('AB');
|
||||
loginPage.checkUsernameTooltipIsNotVisible();
|
||||
loginPage.checkSignInButtonIsDisabled();
|
||||
loginPage.clearUsername();
|
||||
});
|
||||
|
||||
it('[C260045] Login button is enabled', () => {
|
||||
loginPage.goToLoginPage();
|
||||
loginPage.enterUsername(adminUserModel.id);
|
||||
loginPage.checkSignInButtonIsDisabled();
|
||||
loginPage.enterPassword('a');
|
||||
loginPage.checkSignInButtonIsEnabled();
|
||||
loginPage.clearUsername(adminUserModel.id);
|
||||
loginPage.clearPassword();
|
||||
});
|
||||
|
||||
it('[C260046] You have entered an invalid username or password', () => {
|
||||
loginPage.goToLoginPage();
|
||||
loginPage.checkSignInButtonIsDisabled();
|
||||
loginPage.enterUsername('test');
|
||||
loginPage.enterPassword('test');
|
||||
loginPage.checkSignInButtonIsEnabled();
|
||||
loginPage.clickSignInButton();
|
||||
loginPage.checkLoginError(errorMessages.invalid_credentials);
|
||||
loginPage.clearUsername();
|
||||
loginPage.clearPassword();
|
||||
});
|
||||
|
||||
it('[C260047] Password field is crypted', () => {
|
||||
loginPage.goToLoginPage();
|
||||
loginPage.checkSignInButtonIsDisabled();
|
||||
loginPage.enterPassword('test');
|
||||
loginPage.showPassword();
|
||||
loginPage.checkPasswordIsShown('test');
|
||||
loginPage.hidePassword();
|
||||
loginPage.checkPasswordIsHidden();
|
||||
loginPage.clearPassword();
|
||||
});
|
||||
|
||||
it('[C260048] Remember Need Help? and Register are displayed and hidden', () => {
|
||||
loginPage.goToLoginPage();
|
||||
loginPage.enableFooter();
|
||||
loginPage.checkRememberIsDisplayed();
|
||||
loginPage.checkNeedHelpIsDisplayed();
|
||||
loginPage.checkRegisterDisplayed();
|
||||
loginPage.disableFooter();
|
||||
loginPage.checkRememberIsNotDisplayed();
|
||||
loginPage.checkNeedHelpIsNotDisplayed();
|
||||
loginPage.checkRegisterIsNotDisplayed();
|
||||
});
|
||||
|
||||
it('[C260049] Login to Process Services with Content Services disabled', () => {
|
||||
loginPage.goToLoginPage();
|
||||
loginPage.checkSignInButtonIsDisabled();
|
||||
adfSettingsPage.setProviderBpm();
|
||||
loginPage.login(adminUserModel.id, adminUserModel.password);
|
||||
navigationBarPage.clickProcessServicesButton();
|
||||
processServicesPage.checkApsContainer();
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
loginPage.waitForElements();
|
||||
});
|
||||
|
||||
it('[C260050] Login to Content Services with Process Services disabled', () => {
|
||||
loginPage.goToLoginPage();
|
||||
loginPage.checkSignInButtonIsDisabled();
|
||||
adfSettingsPage.setProviderEcm();
|
||||
loginPage.login(TestConfig.adf.adminUser, TestConfig.adf.adminPassword);
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
contentServicesPage.checkAcsContainer();
|
||||
navigationBarPage.clickProcessServicesButton();
|
||||
loginPage.waitForElements();
|
||||
});
|
||||
|
||||
it('[C260051] Able to login to both Content Services and Process Services', () => {
|
||||
adfSettingsPage.setProviderEcmBpm();
|
||||
loginPage.checkSignInButtonIsDisabled();
|
||||
adfSettingsPage.setProviderEcmBpm();
|
||||
loginPage.login(adminUserModel.id, adminUserModel.password);
|
||||
navigationBarPage.clickProcessServicesButton();
|
||||
processServicesPage.checkApsContainer();
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
contentServicesPage.checkAcsContainer();
|
||||
navigationBarPage.clickLoginButton();
|
||||
loginPage.waitForElements();
|
||||
});
|
||||
|
||||
it('[C277754] Should the user be redirect to the login page when the Content Service session expire', () => {
|
||||
adfSettingsPage.setProviderEcmBpm();
|
||||
loginPage.login(adminUserModel.id, adminUserModel.password);
|
||||
browser.executeScript('window.localStorage.removeItem("ticket-ECM");').then(() => {
|
||||
browser.get(TestConfig.adf.url + '/files');
|
||||
loginPage.waitForElements();
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
it('[C279932] Should successRoute property change the landing page when the user Login', () => {
|
||||
adfSettingsPage.setProviderEcmBpm();
|
||||
loginPage.enableSuccessRouteSwitch();
|
||||
loginPage.enterSuccessRoute('activiti');
|
||||
loginPage.login(adminUserModel.id, adminUserModel.password);
|
||||
processServicesPage.checkApsContainer();
|
||||
});
|
||||
|
||||
it('[C279931] Should the user be redirect to the login page when the Process Service session expire', () => {
|
||||
adfSettingsPage.setProviderEcmBpm();
|
||||
loginPage.login(adminUserModel.id, adminUserModel.password);
|
||||
browser.executeScript('window.localStorage.removeItem("ticket-BPM");').then(() => {
|
||||
browser.get(TestConfig.adf.url + '/activiti');
|
||||
loginPage.waitForElements();
|
||||
});
|
||||
});
|
||||
|
||||
it('[C279930] Should a user still be logged-in when open a new tab', () => {
|
||||
adfSettingsPage.setProviderEcmBpm();
|
||||
loginPage.login(adminUserModel.id, adminUserModel.password);
|
||||
|
||||
Util.openNewTabInBrowser();
|
||||
|
||||
browser.getAllWindowHandles().then((handles) => {
|
||||
|
||||
browser.ignoreSynchronization = true;
|
||||
browser.switchTo().window(handles[1]).then(() => {
|
||||
browser.get(TestConfig.adf.url + '/activiti');
|
||||
processServicesPage.checkApsContainer();
|
||||
browser.get(TestConfig.adf.url + '/files');
|
||||
contentServicesPage.checkAcsContainer();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('[C276746] Login with two different users', () => {
|
||||
loginPage.loginToContentServicesUsingUserModel(userA);
|
||||
navigationBarPage.clickUserProfile();
|
||||
expect(userInfoDialog.getContentHeaderTitle()).toEqual(userA.firstName + ' ' + userA.lastName);
|
||||
expect(userInfoDialog.getContentEmail()).toEqual(userA.email);
|
||||
|
||||
loginPage.loginToContentServicesUsingUserModel(userB);
|
||||
navigationBarPage.clickUserProfile();
|
||||
expect(userInfoDialog.getContentHeaderTitle()).toEqual(userB.firstName + ' ' + userB.lastName);
|
||||
expect(userInfoDialog.getContentEmail()).toEqual(userB.email);
|
||||
});
|
||||
|
||||
it('[C279933] Should be possible change the login component logo when logoImageUrl is changed', () => {
|
||||
adfSettingsPage.setProviderEcmBpm();
|
||||
loginPage.enableLogoSwitch();
|
||||
loginPage.enterLogo('https://rawgit.com/Alfresco/alfresco-ng2-components/master/assets/angular2.png');
|
||||
loginPage.checkLoginImgURL('https://rawgit.com/Alfresco/alfresco-ng2-components/master/assets/angular2.png');
|
||||
});
|
||||
|
||||
});
|
135
e2e/core/login/redirection.e2e.ts
Normal file
135
e2e/core/login/redirection.e2e.ts
Normal file
@@ -0,0 +1,135 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2016 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import LoginPage = require('../../pages/adf/loginPage');
|
||||
import ContentServicesPage = require('../../pages/adf/contentServicesPage');
|
||||
import ProcessServicesPage = require('../../pages/adf/process_services/processServicesPage');
|
||||
import NavigationBarPage = require('../../pages/adf/navigationBarPage');
|
||||
|
||||
import TestConfig = require('../../test.config');
|
||||
import AcsUserModel = require('../../models/ACS/acsUserModel');
|
||||
|
||||
import AdfSettingsPage = require('../../pages/adf/settingsPage');
|
||||
import AlfrescoApi = require('alfresco-js-api-node');
|
||||
|
||||
import Util = require('../../util/util');
|
||||
import { UploadActions } from '../../actions/ACS/upload.actions';
|
||||
|
||||
describe('Login component', () => {
|
||||
|
||||
let adfSettingsPage = new AdfSettingsPage();
|
||||
let processServicesPage = new ProcessServicesPage();
|
||||
let navigationBarPage = new NavigationBarPage();
|
||||
let contentServicesPage = new ContentServicesPage();
|
||||
let loginPage = new LoginPage();
|
||||
let adminUserModel = new AcsUserModel({
|
||||
'id': TestConfig.adf.adminUser,
|
||||
'password': TestConfig.adf.adminPassword
|
||||
});
|
||||
|
||||
beforeAll(async (done) => {
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ALL',
|
||||
hostEcm: TestConfig.adf.url,
|
||||
hostBpm: TestConfig.adf.url
|
||||
});
|
||||
|
||||
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('[C213838] Should after login in CS be redirect to Login page when try to access to PS', () => {
|
||||
adfSettingsPage.setProviderEcm();
|
||||
loginPage.login(adminUserModel.id, adminUserModel.password);
|
||||
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
contentServicesPage.checkAcsContainer();
|
||||
|
||||
navigationBarPage.clickProcessServicesButton();
|
||||
|
||||
loginPage.waitForElements();
|
||||
});
|
||||
|
||||
it('[C260085] Should after login in PS be redirect to Login page when try to access to CS', () => {
|
||||
adfSettingsPage.setProviderBpm();
|
||||
|
||||
loginPage.enableSuccessRouteSwitch();
|
||||
loginPage.enterSuccessRoute('activiti');
|
||||
|
||||
loginPage.login(adminUserModel.id, adminUserModel.password);
|
||||
|
||||
navigationBarPage.clickProcessServicesButton();
|
||||
processServicesPage.checkApsContainer();
|
||||
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
|
||||
loginPage.waitForElements();
|
||||
});
|
||||
|
||||
it('[C260085] Should after login in BOTH not be redirect to Login page when try to access to CS or PS', () => {
|
||||
adfSettingsPage.setProviderEcmBpm();
|
||||
|
||||
loginPage.login(adminUserModel.id, adminUserModel.password);
|
||||
|
||||
navigationBarPage.clickProcessServicesButton();
|
||||
processServicesPage.checkApsContainer();
|
||||
|
||||
navigationBarPage.clickContentServicesButton();
|
||||
contentServicesPage.checkAcsContainer();
|
||||
});
|
||||
|
||||
it('[C260088] Sould be re-redirect to the request URL after login when try to access to a protect URL ', () => {
|
||||
let uploadActions = new UploadActions();
|
||||
|
||||
let uploadedFolder;
|
||||
let folderName = Util.generateRandomString();
|
||||
|
||||
adfSettingsPage.setProviderEcmBpm();
|
||||
loginPage.login(adminUserModel.id, adminUserModel.password);
|
||||
|
||||
browser.controlFlow().execute(async () => {
|
||||
uploadedFolder = await uploadActions.uploadFolder(this.alfrescoJsApi, folderName, '-my-');
|
||||
|
||||
navigationBarPage.openContentServicesFolder(uploadedFolder.entry.id);
|
||||
|
||||
browser.getCurrentUrl().then((actualUrl) => {
|
||||
expect(actualUrl).toEqual(TestConfig.adf.url + '/files/' + uploadedFolder.entry.id);
|
||||
});
|
||||
|
||||
browser.driver.sleep(1000);
|
||||
|
||||
navigationBarPage.clickLogoutButton();
|
||||
|
||||
browser.driver.sleep(1000);
|
||||
|
||||
navigationBarPage.openContentServicesFolder(uploadedFolder.entry.id);
|
||||
|
||||
loginPage.waitForElements();
|
||||
loginPage.enterUsername(adminUserModel.id);
|
||||
loginPage.enterPassword(adminUserModel.password);
|
||||
loginPage.clickSignInButton();
|
||||
|
||||
browser.driver.sleep(1000);
|
||||
|
||||
browser.getCurrentUrl().then((actualUrl) => {
|
||||
expect(actualUrl).toEqual(TestConfig.adf.url + '/files/' + uploadedFolder.entry.id);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
});
|
39
e2e/core/login/remember_me.e2e.ts
Normal file
39
e2e/core/login/remember_me.e2e.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2016 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import LoginPage = require('../../pages/adf/loginPage');
|
||||
|
||||
import AcsUserModel = require('../../models/ACS/acsUserModel');
|
||||
|
||||
import AdfSettingsPage = require('../../pages/adf/settingsPage');
|
||||
|
||||
describe('Login component - Remember Me', () => {
|
||||
|
||||
let adfSettingsPage = new AdfSettingsPage();
|
||||
let loginPage = new LoginPage();
|
||||
|
||||
beforeAll((done) => {
|
||||
adfSettingsPage.setProviderEcmBpm();
|
||||
done();
|
||||
});
|
||||
|
||||
it('[C260036] Should Remember me checkbox not be present in the login if the property showRememberMe is false', () => {
|
||||
loginPage.checkRememberIsDisplayed();
|
||||
loginPage.disableRememberMe();
|
||||
loginPage.checkRememberIsNotDisplayed();
|
||||
});
|
||||
});
|
120
e2e/core/pagination_empty_current_page.e2e.ts
Normal file
120
e2e/core/pagination_empty_current_page.e2e.ts
Normal file
@@ -0,0 +1,120 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2016 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import LoginPage = require('../pages/adf/loginPage');
|
||||
import ContentServicesPage = require('../pages/adf/contentServicesPage');
|
||||
import PaginationPage = require('../pages/adf/paginationPage');
|
||||
|
||||
import AcsUserModel = require('../models/ACS/acsUserModel');
|
||||
import FolderModel = require('../models/ACS/folderModel');
|
||||
|
||||
import TestConfig = require('../test.config');
|
||||
import Util = require('../util/util');
|
||||
|
||||
import AlfrescoApi = require('alfresco-js-api-node');
|
||||
import { UploadActions } from '../actions/ACS/upload.actions';
|
||||
|
||||
describe('Pagination - returns to previous page when current is empty', () => {
|
||||
|
||||
let loginPage = new LoginPage();
|
||||
let contentServicesPage = new ContentServicesPage();
|
||||
let paginationPage = new PaginationPage();
|
||||
|
||||
let acsUser = new AcsUserModel();
|
||||
let folderModel = new FolderModel({ 'name': 'folderOne' });
|
||||
|
||||
let fileNames = [], nrOfFiles = 6;
|
||||
let lastFile = 'newFile6.txt';
|
||||
|
||||
let itemsPerPage = {
|
||||
five: '5',
|
||||
fiveValue: 5
|
||||
};
|
||||
|
||||
let files = {
|
||||
base: 'newFile',
|
||||
extension: '.txt'
|
||||
};
|
||||
|
||||
beforeAll(async (done) => {
|
||||
let uploadActions = new UploadActions();
|
||||
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: TestConfig.adf.url
|
||||
});
|
||||
|
||||
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
|
||||
|
||||
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
|
||||
|
||||
fileNames = Util.generateSeqeunceFiles(1, nrOfFiles, files.base, files.extension);
|
||||
|
||||
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
|
||||
|
||||
let folderUploadedModel = await uploadActions.uploadFolder(this.alfrescoJsApi, folderModel.name, '-my-');
|
||||
|
||||
await uploadActions.createEmptyFiles(this.alfrescoJsApi, fileNames, folderUploadedModel.entry.id);
|
||||
|
||||
loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
|
||||
contentServicesPage.goToDocumentList();
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
xit('Pagination - returns to previous page when current is empty', () => {
|
||||
contentServicesPage.navigateToFolder(folderModel.name);
|
||||
contentServicesPage.checkAcsContainer();
|
||||
contentServicesPage.waitForTableBody();
|
||||
|
||||
paginationPage.selectItemsPerPage(itemsPerPage.five);
|
||||
|
||||
contentServicesPage.checkAcsContainer();
|
||||
contentServicesPage.waitForTableBody();
|
||||
|
||||
expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.five);
|
||||
expect(contentServicesPage.numberOfResultsDisplayed()).toBe(itemsPerPage.fiveValue);
|
||||
|
||||
contentServicesPage.getAllRowsNameColumn().then((list) => {
|
||||
expect(Util.arrayContainsArray(list, fileNames.slice(0, 5))).toEqual(true);
|
||||
});
|
||||
|
||||
paginationPage.clickOnNextPage();
|
||||
|
||||
contentServicesPage.checkAcsContainer();
|
||||
contentServicesPage.waitForTableBody();
|
||||
|
||||
expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.five);
|
||||
|
||||
contentServicesPage.getAllRowsNameColumn().then((list) => {
|
||||
expect(Util.arrayContainsArray(list, fileNames.slice(5, 6))).toEqual(true);
|
||||
});
|
||||
|
||||
contentServicesPage.deleteContent(lastFile);
|
||||
contentServicesPage.checkContentIsNotDisplayed(lastFile);
|
||||
|
||||
expect(paginationPage.getCurrentItemsPerPage()).toEqual(itemsPerPage.five);
|
||||
expect(contentServicesPage.numberOfResultsDisplayed()).toBe(itemsPerPage.fiveValue);
|
||||
|
||||
contentServicesPage.getAllRowsNameColumn().then((list) => {
|
||||
expect(Util.arrayContainsArray(list, fileNames.slice(0, 5))).toEqual(true);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
70
e2e/core/theming_component.e2e.ts
Normal file
70
e2e/core/theming_component.e2e.ts
Normal file
@@ -0,0 +1,70 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2016 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import LoginPage = require('../pages/adf/loginPage');
|
||||
import NavigationBarPage = require('../pages/adf/navigationBarPage');
|
||||
|
||||
import TestConfig = require('../test.config');
|
||||
|
||||
import AcsUserModel = require('../models/ACS/acsUserModel');
|
||||
import CONSTANTS = require('../util/constants');
|
||||
|
||||
import AlfrescoApi = require('alfresco-js-api-node');
|
||||
|
||||
describe('Theming component', () => {
|
||||
|
||||
let navigationBarPage = new NavigationBarPage();
|
||||
let loginPage = new LoginPage();
|
||||
let acsUser = new AcsUserModel();
|
||||
|
||||
beforeAll(async (done) => {
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: TestConfig.adf.url
|
||||
});
|
||||
|
||||
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
|
||||
|
||||
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
|
||||
|
||||
loginPage.goToLoginPage();
|
||||
loginPage.waitForElements();
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
xit('Theming component', () => {
|
||||
expect(loginPage.getShowPasswordIconColor()).toEqual(CONSTANTS.THEMING.DEFAULT_PASSWORD_ICON_COLOR);
|
||||
expect(loginPage.getSignInButtonColor()).toEqual(CONSTANTS.THEMING.DEFAULT_LOGIN_BUTTON_COLOR);
|
||||
expect(loginPage.getBackgroundColor()).toEqual(CONSTANTS.THEMING.DEFAULT_BACKGROUND_COLOR);
|
||||
|
||||
loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
|
||||
navigationBarPage.clickThemeButton();
|
||||
navigationBarPage.clickOnSpecificThemeButton(CONSTANTS.THEMING.PINK_BLUE_DARK);
|
||||
navigationBarPage.clickLoginButton();
|
||||
loginPage.waitForElements();
|
||||
|
||||
loginPage.enterUsername(acsUser.email);
|
||||
loginPage.enterPassword(acsUser.password);
|
||||
|
||||
expect(loginPage.getShowPasswordIconColor()).toEqual(CONSTANTS.THEMING.PINK_BLUE_DARK_PASSWORD_ICON_COLOR);
|
||||
expect(loginPage.getSignInButtonColor()).toEqual(CONSTANTS.THEMING.PINK_BLUE_DARK_LOGIN_BUTTON_COLOR);
|
||||
expect(loginPage.getBackgroundColor()).toEqual(CONSTANTS.THEMING.PINK_BLUE_DARK_BACKGROUND_COLOR);
|
||||
});
|
||||
|
||||
});
|
188
e2e/core/user_info_component.e2e.ts
Normal file
188
e2e/core/user_info_component.e2e.ts
Normal file
@@ -0,0 +1,188 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2016 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
import AdfSettingsPage = require('../pages/adf/settingsPage');
|
||||
import LoginPage = require('../pages/adf/loginPage');
|
||||
import UserInfoDialog = require('../pages/adf/dialog/userInfoDialog');
|
||||
import NavigationBarPage = require('../pages/adf/navigationBarPage');
|
||||
|
||||
import AcsUserModel = require('../models/ACS/acsUserModel');
|
||||
import FileModel = require('../models/ACS/fileModel');
|
||||
|
||||
import PeopleAPI = require('../restAPI/ACS/PeopleAPI');
|
||||
|
||||
import TestConfig = require('../test.config');
|
||||
import resources = require('../util/resources');
|
||||
|
||||
import AlfrescoApi = require('alfresco-js-api-node');
|
||||
import { UsersActions } from '../actions/users.actions';
|
||||
|
||||
fdescribe('User Info component', () => {
|
||||
|
||||
let adfSettingsPage = new AdfSettingsPage();
|
||||
let loginPage = new LoginPage();
|
||||
let navigationBarPage = new NavigationBarPage();
|
||||
let userInfoDialog = new UserInfoDialog();
|
||||
let processUserModel, contentUserModel;
|
||||
let acsAvatarFileModel = new FileModel({
|
||||
'name': resources.Files.PROFILE_IMAGES.ECM.file_name,
|
||||
'location': resources.Files.PROFILE_IMAGES.ECM.file_location
|
||||
});
|
||||
let apsAvatarFileModel = new FileModel({
|
||||
'name': resources.Files.PROFILE_IMAGES.BPM.file_name,
|
||||
'location': resources.Files.PROFILE_IMAGES.BPM.file_location
|
||||
});
|
||||
|
||||
beforeAll(async (done) => {
|
||||
let users = new UsersActions();
|
||||
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ALL',
|
||||
hostEcm: TestConfig.adf.url,
|
||||
hostBpm: TestConfig.adf.url
|
||||
});
|
||||
|
||||
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
|
||||
|
||||
processUserModel = await users.createTenantAndUser(this.alfrescoJsApi);
|
||||
|
||||
contentUserModel = new AcsUserModel({
|
||||
'id': processUserModel.email,
|
||||
'password': processUserModel.password,
|
||||
'firstName': processUserModel.firstName,
|
||||
'lastName': processUserModel.lastName,
|
||||
'email': processUserModel.email
|
||||
});
|
||||
|
||||
await this.alfrescoJsApi.core.peopleApi.addPerson(contentUserModel);
|
||||
|
||||
loginPage.goToLoginPage();
|
||||
adfSettingsPage.setProviderEcmBpm();
|
||||
loginPage.login(contentUserModel.id, contentUserModel.password);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('1. Enable Process Services and Content Services ', () => {
|
||||
navigationBarPage.clickUserProfile();
|
||||
userInfoDialog.dialogIsDisplayed().contentServicesTabIsDisplayed().processServicesTabIsDisplayed();
|
||||
expect(userInfoDialog.getContentHeaderTitle()).toEqual(contentUserModel.firstName + ' ' + contentUserModel.lastName);
|
||||
expect(userInfoDialog.getContentTitle()).toEqual(contentUserModel.firstName + ' ' + contentUserModel.lastName);
|
||||
expect(userInfoDialog.getContentEmail()).toEqual(contentUserModel.email);
|
||||
expect(userInfoDialog.getContentJobTitle()).toEqual(contentUserModel.jobTitle);
|
||||
userInfoDialog.checkInitialImage();
|
||||
userInfoDialog.APSProfileImageNotDisplayed();
|
||||
userInfoDialog.ACSProfileImageNotDisplayed();
|
||||
userInfoDialog.clickOnContentServicesTab();
|
||||
expect(userInfoDialog.getContentHeaderTitle()).toEqual(contentUserModel.firstName + ' ' + contentUserModel.lastName);
|
||||
expect(userInfoDialog.getContentTitle()).toEqual(contentUserModel.firstName + ' ' + contentUserModel.lastName);
|
||||
expect(userInfoDialog.getContentEmail()).toEqual(contentUserModel.email);
|
||||
expect(userInfoDialog.getContentJobTitle()).toEqual(contentUserModel.jobTitle);
|
||||
userInfoDialog.checkInitialImage();
|
||||
userInfoDialog.APSProfileImageNotDisplayed();
|
||||
userInfoDialog.ACSProfileImageNotDisplayed();
|
||||
userInfoDialog.clickOnProcessServicesTab().processServicesTabIsDisplayed();
|
||||
expect(userInfoDialog.getProcessHeaderTitle()).toEqual(processUserModel.firstName + ' ' + processUserModel.lastName);
|
||||
expect(userInfoDialog.getProcessTitle()).toEqual(processUserModel.firstName + ' ' + processUserModel.lastName);
|
||||
expect(userInfoDialog.getProcessEmail()).toEqual(processUserModel.email);
|
||||
userInfoDialog.checkInitialImage();
|
||||
userInfoDialog.APSProfileImageNotDisplayed();
|
||||
userInfoDialog.ACSProfileImageNotDisplayed();
|
||||
userInfoDialog.closeUserProfile();
|
||||
});
|
||||
|
||||
it('2. Enable Content Services and disable Process Services ', () => {
|
||||
navigationBarPage.clickLoginButton();
|
||||
adfSettingsPage.setProviderEcm();
|
||||
loginPage.login(contentUserModel.id, contentUserModel.password);
|
||||
navigationBarPage.clickUserProfile();
|
||||
userInfoDialog.dialogIsDisplayed().contentServicesTabIsNotDisplayed().processServicesTabIsNotDisplayed();
|
||||
expect(userInfoDialog.getContentHeaderTitle()).toEqual(contentUserModel.firstName + ' ' + contentUserModel.lastName);
|
||||
expect(userInfoDialog.getContentTitle()).toEqual(contentUserModel.firstName + ' ' + contentUserModel.lastName);
|
||||
expect(userInfoDialog.getContentEmail()).toEqual(contentUserModel.email);
|
||||
expect(userInfoDialog.getContentJobTitle()).toEqual(contentUserModel.jobTitle);
|
||||
userInfoDialog.checkInitialImage();
|
||||
userInfoDialog.APSProfileImageNotDisplayed();
|
||||
userInfoDialog.ACSProfileImageNotDisplayed();
|
||||
userInfoDialog.closeUserProfile();
|
||||
});
|
||||
|
||||
it('3. Enable Process Services and disable Content Services ', () => {
|
||||
navigationBarPage.clickLoginButton();
|
||||
|
||||
adfSettingsPage.setProviderBpm();
|
||||
|
||||
loginPage.login(processUserModel.email, processUserModel.password);
|
||||
|
||||
navigationBarPage.clickUserProfile();
|
||||
|
||||
userInfoDialog.dialogIsDisplayed().contentServicesTabIsNotDisplayed().processServicesTabIsNotDisplayed();
|
||||
|
||||
expect(userInfoDialog.getProcessHeaderTitle()).toEqual(processUserModel.firstName + ' ' + processUserModel.lastName);
|
||||
expect(userInfoDialog.getProcessTitle()).toEqual(processUserModel.firstName + ' ' + processUserModel.lastName);
|
||||
expect(userInfoDialog.getProcessEmail()).toEqual(processUserModel.email);
|
||||
|
||||
userInfoDialog.checkInitialImage();
|
||||
userInfoDialog.APSProfileImageNotDisplayed();
|
||||
userInfoDialog.ACSProfileImageNotDisplayed();
|
||||
userInfoDialog.closeUserProfile();
|
||||
});
|
||||
|
||||
it('4. Enable Process Services and Content Services ', () => {
|
||||
let flow = protractor.promise.controlFlow();
|
||||
flow.execute(() => {
|
||||
PeopleAPI.updateAvatarViaAPI(contentUserModel, acsAvatarFileModel, '-me-');
|
||||
PeopleAPI.getAvatarViaAPI(4, contentUserModel, '-me-', function (result) {
|
||||
});
|
||||
});
|
||||
|
||||
navigationBarPage.clickLoginButton();
|
||||
adfSettingsPage.setProviderEcm();
|
||||
loginPage.login(contentUserModel.id, contentUserModel.password);
|
||||
navigationBarPage.clickUserProfile();
|
||||
userInfoDialog.checkACSProfileImage();
|
||||
userInfoDialog.APSProfileImageNotDisplayed();
|
||||
userInfoDialog.closeUserProfile();
|
||||
});
|
||||
|
||||
it('5. The profile picture is changed from APS', async () => {
|
||||
let users = new UsersActions();
|
||||
navigationBarPage.clickLoginButton();
|
||||
|
||||
await this.alfrescoJsApi.login(contentUserModel.email, contentUserModel.password);
|
||||
await users.changeProfilePictureAps(this.alfrescoJsApi, apsAvatarFileModel.getLocation());
|
||||
|
||||
adfSettingsPage.setProviderBpm();
|
||||
loginPage.login(processUserModel.email, processUserModel.password);
|
||||
navigationBarPage.clickUserProfile();
|
||||
userInfoDialog.checkAPSProfileImage();
|
||||
userInfoDialog.ACSProfileImageNotDisplayed();
|
||||
userInfoDialog.initialImageNotDisplayed();
|
||||
userInfoDialog.closeUserProfile();
|
||||
});
|
||||
|
||||
it('6. Delete the profile picture from ACS', () => {
|
||||
navigationBarPage.clickLoginButton();
|
||||
PeopleAPI.deleteAvatarViaAPI(contentUserModel, '-me-');
|
||||
adfSettingsPage.setProviderEcm();
|
||||
loginPage.login(contentUserModel.id, contentUserModel.password);
|
||||
navigationBarPage.clickUserProfile();
|
||||
userInfoDialog.checkInitialImage();
|
||||
userInfoDialog.APSProfileImageNotDisplayed();
|
||||
userInfoDialog.ACSProfileImageNotDisplayed();
|
||||
userInfoDialog.closeUserProfile();
|
||||
});
|
||||
});
|
372
e2e/core/viewer_content_services_component.e2e.ts
Normal file
372
e2e/core/viewer_content_services_component.e2e.ts
Normal file
@@ -0,0 +1,372 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2016 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import TestConfig = require('../test.config');
|
||||
|
||||
import LoginPage = require('../pages/adf/loginPage');
|
||||
import ContentServicesPage = require('../pages/adf/contentServicesPage');
|
||||
import ViewerPage = require('../pages/adf/viewerPage');
|
||||
|
||||
import resources = require('../util/resources');
|
||||
|
||||
import FileModel = require('../models/ACS/fileModel');
|
||||
import AcsUserModel = require('../models/ACS/acsUserModel');
|
||||
|
||||
import AlfrescoApi = require('alfresco-js-api-node');
|
||||
import { UploadActions } from '../actions/ACS/upload.actions';
|
||||
|
||||
describe('Content Services Viewer', () => {
|
||||
|
||||
let acsUser = new AcsUserModel();
|
||||
let viewerPage = new ViewerPage();
|
||||
let contentServicesPage = new ContentServicesPage();
|
||||
let loginPage = new LoginPage();
|
||||
let zoom;
|
||||
|
||||
let pdfFile = new FileModel({
|
||||
'name': resources.Files.ADF_DOCUMENTS.PDF.file_name,
|
||||
'firstPageText': resources.Files.ADF_DOCUMENTS.PDF.first_page_text,
|
||||
'secondPageText': resources.Files.ADF_DOCUMENTS.PDF.second_page_text,
|
||||
'lastPageNumber': resources.Files.ADF_DOCUMENTS.PDF.last_page_number
|
||||
});
|
||||
let protectedFile = new FileModel({
|
||||
'name': resources.Files.ADF_DOCUMENTS.PDF_PROTECTED.file_name,
|
||||
'firstPageText': resources.Files.ADF_DOCUMENTS.PDF_PROTECTED.first_page_text,
|
||||
'secondPageText': resources.Files.ADF_DOCUMENTS.PDF_PROTECTED.second_page_text,
|
||||
'lastPageNumber': resources.Files.ADF_DOCUMENTS.PDF_PROTECTED.last_page_number,
|
||||
'password': resources.Files.ADF_DOCUMENTS.PDF_PROTECTED.password,
|
||||
'location': resources.Files.ADF_DOCUMENTS.PDF_PROTECTED.file_location
|
||||
});
|
||||
let docxFile = new FileModel({
|
||||
'location': resources.Files.ADF_DOCUMENTS.DOCX_SUPPORTED.file_location,
|
||||
'name': resources.Files.ADF_DOCUMENTS.DOCX_SUPPORTED.file_name,
|
||||
'firstPageText': resources.Files.ADF_DOCUMENTS.DOCX_SUPPORTED.first_page_text
|
||||
});
|
||||
let jpgFile = new FileModel({
|
||||
'location': resources.Files.ADF_DOCUMENTS.JPG.file_location,
|
||||
'name': resources.Files.ADF_DOCUMENTS.JPG.file_name
|
||||
});
|
||||
let mp4File = new FileModel({
|
||||
'location': resources.Files.ADF_DOCUMENTS.MP4.file_location,
|
||||
'name': resources.Files.ADF_DOCUMENTS.MP4.file_name
|
||||
});
|
||||
let unsupportedFile = new FileModel({
|
||||
'location': resources.Files.ADF_DOCUMENTS.UNSUPPORTED.file_location,
|
||||
'name': resources.Files.ADF_DOCUMENTS.UNSUPPORTED.file_name
|
||||
});
|
||||
let pptFile = new FileModel({
|
||||
'location': resources.Files.ADF_DOCUMENTS.PPT.file_location,
|
||||
'name': resources.Files.ADF_DOCUMENTS.PPT.file_name,
|
||||
'firstPageText': resources.Files.ADF_DOCUMENTS.PPT.first_page_text
|
||||
});
|
||||
|
||||
beforeAll(async (done) => {
|
||||
let uploadActions = new UploadActions();
|
||||
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: TestConfig.adf.url
|
||||
});
|
||||
|
||||
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
|
||||
|
||||
await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser);
|
||||
|
||||
await this.alfrescoJsApi.login(acsUser.id, acsUser.password);
|
||||
|
||||
let pdfFileUploaded = await uploadActions.uploadFile(this.alfrescoJsApi, pdfFile.location, pdfFile.name, '-my-');
|
||||
Object.assign(pdfFile, pdfFileUploaded.entry);
|
||||
|
||||
let protectedFileUploaded = await uploadActions.uploadFile(this.alfrescoJsApi, protectedFile.location, protectedFile.name, '-my-');
|
||||
Object.assign(protectedFile, protectedFileUploaded.entry);
|
||||
|
||||
let docxFileUploaded = await uploadActions.uploadFile(this.alfrescoJsApi, docxFile.location, docxFile.name, '-my-');
|
||||
Object.assign(docxFile, docxFileUploaded.entry);
|
||||
|
||||
let jpgFileUploaded = await uploadActions.uploadFile(this.alfrescoJsApi, jpgFile.location, jpgFile.name, '-my-');
|
||||
Object.assign(jpgFile, jpgFileUploaded.entry);
|
||||
|
||||
let mp4FileUploaded = await uploadActions.uploadFile(this.alfrescoJsApi, mp4File.location, mp4File.name, '-my-');
|
||||
Object.assign(mp4File, mp4FileUploaded.entry);
|
||||
|
||||
let pptFileUploaded = await uploadActions.uploadFile(this.alfrescoJsApi, pptFile.location, pptFile.name, '-my-');
|
||||
Object.assign(pptFile, pptFileUploaded.entry);
|
||||
|
||||
let unsupportedFileUploaded = await uploadActions.uploadFile(this.alfrescoJsApi, unsupportedFile.location, unsupportedFile.name, '-my-');
|
||||
Object.assign(unsupportedFile, unsupportedFileUploaded.entry);
|
||||
|
||||
loginPage.loginToContentServicesUsingUserModel(acsUser);
|
||||
|
||||
contentServicesPage.goToDocumentList();
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
/*afterAll((done) => {
|
||||
NodesAPI.deleteContent(acsUser, pdfFile.getId(), () => {
|
||||
done();
|
||||
});
|
||||
NodesAPI.deleteContent(acsUser, jpgFile.getId(), () => {
|
||||
done();
|
||||
});
|
||||
NodesAPI.deleteContent(acsUser, mp4File.getId(), () => {
|
||||
done();
|
||||
});
|
||||
NodesAPI.deleteContent(acsUser, pagesFile.getId(), () => {
|
||||
done();
|
||||
});
|
||||
NodesAPI.deleteContent(acsUser, pptFile.getId(), () => {
|
||||
done();
|
||||
});
|
||||
});*/
|
||||
|
||||
it('[C260038] Should display first page, toolbar and pagination when opening a .pdf file', () => {
|
||||
contentServicesPage.checkAcsContainer();
|
||||
|
||||
viewerPage.viewFile(pdfFile.name);
|
||||
|
||||
browser.driver.sleep(3000); //wait open file
|
||||
|
||||
viewerPage.checkFileContent('1', pdfFile.firstPageText);
|
||||
viewerPage.checkCloseButtonIsDisplayed();
|
||||
viewerPage.checkFileNameIsDisplayed(pdfFile.name);
|
||||
viewerPage.checkFileThumbnailIsDisplayed();
|
||||
viewerPage.checkDownloadButtonIsDisplayed();
|
||||
viewerPage.checkFullScreenButtonIsDisplayed();
|
||||
viewerPage.checkInfoButtonIsDisplayed();
|
||||
viewerPage.checkPreviousPageButtonIsDisplayed();
|
||||
viewerPage.checkNextPageButtonIsDisplayed();
|
||||
viewerPage.checkPageSelectorInputIsDisplayed('1');
|
||||
viewerPage.checkPercentageIsDisplayed();
|
||||
viewerPage.checkZoomInButtonIsDisplayed();
|
||||
viewerPage.checkZoomOutButtonIsDisplayed();
|
||||
viewerPage.checkScalePageButtonIsDisplayed();
|
||||
});
|
||||
|
||||
it('[C260040] Should be able to change pages and zoom when .pdf file is open', () => {
|
||||
viewerPage.clickNextPageButton();
|
||||
viewerPage.checkFileContent('2', pdfFile.secondPageText);
|
||||
viewerPage.checkPageSelectorInputIsDisplayed('2');
|
||||
|
||||
viewerPage.clickPreviousPageButton();
|
||||
viewerPage.checkFileContent('1', pdfFile.firstPageText);
|
||||
viewerPage.checkPageSelectorInputIsDisplayed('1');
|
||||
|
||||
viewerPage.clearPageNumber();
|
||||
viewerPage.checkPageSelectorInputIsDisplayed('');
|
||||
|
||||
viewerPage.clickZoomOutButton();
|
||||
|
||||
zoom = viewerPage.getZoom();
|
||||
viewerPage.clickZoomOutButton();
|
||||
viewerPage.checkZoomedOut(zoom);
|
||||
|
||||
zoom = viewerPage.getZoom();
|
||||
viewerPage.clickZoomInButton();
|
||||
viewerPage.checkZoomedIn(zoom);
|
||||
|
||||
viewerPage.clickCloseButton();
|
||||
});
|
||||
|
||||
it('[C260042] Should be able to download, open full-screen and Info container from the Viewer', () => {
|
||||
viewerPage.viewFile(jpgFile.name);
|
||||
viewerPage.checkImgContainerIsDisplayed();
|
||||
|
||||
viewerPage.checkFullScreenButtonIsDisplayed();
|
||||
viewerPage.clickFullScreenButton();
|
||||
|
||||
viewerPage.exitFullScreen();
|
||||
|
||||
viewerPage.checkDownloadButtonIsDisplayed();
|
||||
viewerPage.clickDownloadButton();
|
||||
|
||||
viewerPage.clickCloseButton();
|
||||
});
|
||||
|
||||
it('[C260052] Should display image, toolbar and pagination when opening a .jpg file', () => {
|
||||
viewerPage.viewFile(jpgFile.name);
|
||||
viewerPage.checkImgContainerIsDisplayed();
|
||||
|
||||
viewerPage.checkCloseButtonIsDisplayed();
|
||||
viewerPage.checkFileNameIsDisplayed(jpgFile.name);
|
||||
viewerPage.checkFileThumbnailIsDisplayed();
|
||||
viewerPage.checkDownloadButtonIsDisplayed();
|
||||
viewerPage.checkFullScreenButtonIsDisplayed();
|
||||
viewerPage.checkInfoButtonIsDisplayed();
|
||||
viewerPage.checkZoomInButtonIsDisplayed();
|
||||
viewerPage.checkZoomOutButtonIsDisplayed();
|
||||
viewerPage.checkPercentageIsDisplayed();
|
||||
viewerPage.checkRotateLeftButtonIsDisplayed();
|
||||
viewerPage.checkRotateRightButtonIsDisplayed();
|
||||
viewerPage.checkScaleImgButtonIsDisplayed();
|
||||
});
|
||||
|
||||
it('[C260483] Should be able to zoom and rotate image when .jpg file is open', () => {
|
||||
zoom = viewerPage.getZoom();
|
||||
viewerPage.clickZoomInButton();
|
||||
viewerPage.checkZoomedIn(zoom);
|
||||
|
||||
zoom = viewerPage.getZoom();
|
||||
viewerPage.clickZoomOutButton();
|
||||
viewerPage.checkZoomedOut(zoom);
|
||||
|
||||
viewerPage.clickRotateLeftButton();
|
||||
viewerPage.checkRotation('transform: scale(1, 1) rotate(-90deg) translate(0px, 0px);');
|
||||
|
||||
viewerPage.clickScaleImgButton();
|
||||
viewerPage.checkRotation('transform: scale(1, 1) rotate(0deg) translate(0px, 0px);');
|
||||
|
||||
viewerPage.clickRotateRightButton();
|
||||
viewerPage.checkRotation('transform: scale(1, 1) rotate(90deg) translate(0px, 0px);');
|
||||
|
||||
viewerPage.clickCloseButton();
|
||||
});
|
||||
|
||||
it('[C279922] Open viewer for a .ppt file', () => {
|
||||
viewerPage.viewFile(pptFile.name);
|
||||
viewerPage.checkFileContent('1', pptFile.firstPageText);
|
||||
viewerPage.checkCloseButtonIsDisplayed();
|
||||
viewerPage.checkFileThumbnailIsDisplayed();
|
||||
viewerPage.checkFileNameIsDisplayed(pptFile.name);
|
||||
viewerPage.checkDownloadButtonIsDisplayed();
|
||||
viewerPage.checkInfoButtonIsDisplayed();
|
||||
viewerPage.checkPreviousPageButtonIsDisplayed();
|
||||
viewerPage.checkNextPageButtonIsDisplayed();
|
||||
viewerPage.checkPageSelectorInputIsDisplayed('1');
|
||||
viewerPage.checkZoomInButtonIsDisplayed();
|
||||
viewerPage.checkZoomOutButtonIsDisplayed();
|
||||
viewerPage.checkScalePageButtonIsDisplayed();
|
||||
viewerPage.clickCloseButton();
|
||||
});
|
||||
|
||||
it('[C260053] Should display first page, toolbar and pagination when opening a .docx file', () => {
|
||||
viewerPage.viewFile(docxFile.name);
|
||||
|
||||
viewerPage.checkFileContent('1', docxFile.firstPageText);
|
||||
viewerPage.checkCloseButtonIsDisplayed();
|
||||
viewerPage.checkFileThumbnailIsDisplayed();
|
||||
viewerPage.checkFileNameIsDisplayed(docxFile.name);
|
||||
viewerPage.checkDownloadButtonIsDisplayed();
|
||||
viewerPage.checkInfoButtonIsDisplayed();
|
||||
viewerPage.checkPreviousPageButtonIsDisplayed();
|
||||
viewerPage.checkNextPageButtonIsDisplayed();
|
||||
viewerPage.checkPageSelectorInputIsDisplayed('1');
|
||||
viewerPage.checkZoomInButtonIsDisplayed();
|
||||
viewerPage.checkZoomOutButtonIsDisplayed();
|
||||
viewerPage.checkScalePageButtonIsDisplayed();
|
||||
viewerPage.clickCloseButton();
|
||||
});
|
||||
|
||||
it('[C260054] Should display "Preview couldn\'t be loaded" and viewer toolbar when opening an unsupported file', () => {
|
||||
viewerPage.viewFile(unsupportedFile.name);
|
||||
|
||||
viewerPage.checkCloseButtonIsDisplayed();
|
||||
viewerPage.checkFileNameIsDisplayed(unsupportedFile.name);
|
||||
viewerPage.checkFileThumbnailIsDisplayed();
|
||||
viewerPage.checkDownloadButtonIsDisplayed();
|
||||
viewerPage.checkInfoButtonIsDisplayed();
|
||||
|
||||
viewerPage.checkZoomInButtonIsNotDisplayed();
|
||||
|
||||
viewerPage.clickCloseButton();
|
||||
});
|
||||
|
||||
it('[C260056] Should display video and viewer toolbar when opening a media file', () => {
|
||||
viewerPage.viewFile(mp4File.name);
|
||||
|
||||
viewerPage.checkMediaPlayerContainerIsDisplayed();
|
||||
viewerPage.checkCloseButtonIsDisplayed();
|
||||
viewerPage.checkFileThumbnailIsDisplayed();
|
||||
viewerPage.checkFileNameIsDisplayed(mp4File.name);
|
||||
viewerPage.checkDownloadButtonIsDisplayed();
|
||||
viewerPage.checkInfoButtonIsDisplayed();
|
||||
viewerPage.checkFullScreenButtonIsNotDisplayed();
|
||||
|
||||
viewerPage.checkZoomInButtonIsNotDisplayed();
|
||||
|
||||
viewerPage.clickCloseButton();
|
||||
});
|
||||
|
||||
it('[C261123] Should be able to preview all pages and navigate to a page when using thumbnails', () => {
|
||||
viewerPage.viewFile(pdfFile.name);
|
||||
|
||||
browser.driver.sleep(3000); //wait open file
|
||||
|
||||
viewerPage.checkFileContent('1', pdfFile.firstPageText);
|
||||
viewerPage.checkThumbnailsBtnIsDisplayed();
|
||||
viewerPage.clickThumbnailsBtn();
|
||||
|
||||
viewerPage.checkThumbnailsContentIsDisplayed();
|
||||
viewerPage.checkThumbnailsCloseIsDisplayed();
|
||||
viewerPage.checkAllThumbnailsDisplayed(pdfFile.lastPageNumber);
|
||||
|
||||
viewerPage.clickSecondThumbnail();
|
||||
viewerPage.checkFileContent('2', pdfFile.secondPageText);
|
||||
viewerPage.checkCurrentThumbnailIsSelected();
|
||||
|
||||
viewerPage.checkPreviousPageButtonIsDisplayed();
|
||||
viewerPage.clickPreviousPageButton();
|
||||
viewerPage.checkFileContent('1', pdfFile.firstPageText);
|
||||
viewerPage.checkCurrentThumbnailIsSelected();
|
||||
|
||||
viewerPage.clickThumbnailsBtn();
|
||||
viewerPage.checkThumbnailsContentIsNotDisplayed();
|
||||
viewerPage.clickThumbnailsBtn();
|
||||
viewerPage.checkThumbnailsCloseIsDisplayed();
|
||||
viewerPage.clickThumbnailsClose();
|
||||
});
|
||||
|
||||
it('[C268105] Should display current thumbnail when getting to the page following the last visible thumbnail', () => {
|
||||
viewerPage.checkThumbnailsBtnIsDisplayed();
|
||||
viewerPage.clickThumbnailsBtn();
|
||||
viewerPage.clickLastThumbnailDisplayed();
|
||||
viewerPage.checkCurrentThumbnailIsSelected();
|
||||
|
||||
viewerPage.checkNextPageButtonIsDisplayed();
|
||||
viewerPage.clickNextPageButton();
|
||||
viewerPage.checkCurrentThumbnailIsSelected();
|
||||
|
||||
viewerPage.clickCloseButton();
|
||||
});
|
||||
|
||||
it('[C269109] Should not be able to open thumbnail pane before the pdf is loaded', () => {
|
||||
viewerPage.viewFile(pdfFile.name);
|
||||
|
||||
viewerPage.clickThumbnailsBtn();
|
||||
viewerPage.checkThumbnailsContentIsNotDisplayed();
|
||||
|
||||
viewerPage.clickCloseButton();
|
||||
});
|
||||
|
||||
it('[C268901] Should need a password when opening a protected file', () => {
|
||||
viewerPage.viewFile(protectedFile.name);
|
||||
|
||||
browser.driver.sleep(3000); //wait open file
|
||||
|
||||
viewerPage.checkPasswordDialogIsDisplayed();
|
||||
viewerPage.checkPasswordSubmitDisabledIsDisplayed();
|
||||
|
||||
viewerPage.enterPassword('random password');
|
||||
viewerPage.clickPasswordSubmit();
|
||||
viewerPage.checkPasswordErrorIsDisplayed();
|
||||
viewerPage.checkPasswordInputIsDisplayed();
|
||||
|
||||
viewerPage.enterPassword(protectedFile.password);
|
||||
viewerPage.clickPasswordSubmit();
|
||||
viewerPage.checkFileContent('1', protectedFile.firstPageText);
|
||||
});
|
||||
});
|
77
e2e/core/z-finish.e2e.ts
Normal file
77
e2e/core/z-finish.e2e.ts
Normal file
@@ -0,0 +1,77 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2016 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import AlfrescoApi = require('alfresco-js-api-node');
|
||||
import TestConfig = require('../test.config');
|
||||
|
||||
import fs = require('fs');
|
||||
import path = require('path');
|
||||
|
||||
let buildNumber = process.env.TRAVIS_BUILD_NUMBER;
|
||||
let saveScreenshot = process.env.SAVE_SCREENSHOT;
|
||||
|
||||
describe('Save screenshot at the end', () => {
|
||||
|
||||
beforeAll(async (done) => {
|
||||
|
||||
if (saveScreenshot === 'true') {
|
||||
if (!buildNumber) {
|
||||
buildNumber = Date.now();
|
||||
}
|
||||
|
||||
let alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'ECM',
|
||||
hostEcm: TestConfig.adf.url
|
||||
});
|
||||
|
||||
let files = fs.readdirSync(path.join(__dirname, '../../e2e-output/screenshots'));
|
||||
|
||||
if (files && files.length > 0) {
|
||||
alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
|
||||
|
||||
let folder = await alfrescoJsApi.nodes.addNode('-my-', {
|
||||
'name': 'core',
|
||||
'relativePath': 'Buiild-screenshot/Screenshot-e2e-' + buildNumber,
|
||||
'nodeType': 'cm:folder'
|
||||
}, {}, {});
|
||||
|
||||
for (const fileName of files) {
|
||||
|
||||
let pathFile = path.join(__dirname, '../../e2e-output/screenshots', fileName);
|
||||
let file = fs.createReadStream(pathFile);
|
||||
|
||||
await alfrescoJsApi.upload.uploadFile(
|
||||
file,
|
||||
'',
|
||||
folder.entry.id,
|
||||
null,
|
||||
{
|
||||
'name': file.name,
|
||||
'nodeType': 'cm:content'
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('screenshot need it', () => {
|
||||
expect(true).toEqual(true);
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user