[ADF-3018] Create automated test for replacing an app (#3572)

* [ADF-3018] Create automated test for replacing an app

* Use await in the test

* Fixing document list pagination test.

* Implemented delete version and delete entire app test cases.

* Added a log.

* Added the api call into protractor control flow.

* Renamed the test cases

* Commented 'Click Audit Log button' test.

* Added some in control flow.

* Changing the test rail ID.
This commit is contained in:
cristinaj 2018-07-16 15:41:47 +03:00 committed by Eugenio Romano
parent 192cca63aa
commit 98243f0450
5 changed files with 147 additions and 11 deletions

View File

@ -19,6 +19,29 @@ export class AppsActions {
return appCreated; return appCreated;
} }
async publishDeployApp(alfrescoJsApi, appId) {
let publishApp = await alfrescoJsApi.activiti.appsApi.publishAppDefinition(appId, new AppPublish());
let published = await alfrescoJsApi.activiti.appsApi.deployAppDefinitions({ appDefinitions: [{ id: publishApp.appDefinition.id }] });
return publishApp;
}
async importNewVersionAppDefinitionPublishDeployApp(alfrescoJsApi, appFileLocation, modelId) {
let pathFile = path.join(TestConfig.main.rootPath + appFileLocation);
let file = fs.createReadStream(pathFile);
let appCreated = await alfrescoJsApi.activiti.appsApi.importNewAppDefinition(modelId, file);
let publishApp = await alfrescoJsApi.activiti.appsApi.publishAppDefinition(appCreated.id, new AppPublish());
let published = await alfrescoJsApi.activiti.appsApi.deployAppDefinitions({ appDefinitions: [{ id: publishApp.appDefinition.id }] });
return appCreated;
}
async startProcess(alfrescoJsApi, app, processName) { async startProcess(alfrescoJsApi, app, processName) {
let appDefinitionsList = await alfrescoJsApi.activiti.appsApi.getAppDefinitions(); let appDefinitionsList = await alfrescoJsApi.activiti.appsApi.getAppDefinitions();

View File

@ -0,0 +1,20 @@
import TestConfig = require('../../test.config');
import AppPublish = require('../../models/APS/AppPublish');
export class ModelsActions {
async deleteVersionModel(alfrescoJsApi, modelId) {
let versionModelDeleted = await alfrescoJsApi.activiti.modelsApi.deleteModel(modelId, { cascade: false, deleteRuntimeApp : true });
return versionModelDeleted;
}
async deleteEntireModel(alfrescoJsApi, modelId) {
let modelDeleted = await alfrescoJsApi.activiti.modelsApi.deleteModel(modelId, { cascade: true, deleteRuntimeApp : true });
return modelDeleted;
}
}

View File

@ -20,6 +20,7 @@ import ProcessServicesPage = require('./pages/adf/process_services/processServic
import NavigationBarPage = require('./pages/adf/navigationBarPage'); import NavigationBarPage = require('./pages/adf/navigationBarPage');
import CONSTANTS = require('./util/constants'); import CONSTANTS = require('./util/constants');
import Util = require('./util/util');
import TestConfig = require('./test.config'); import TestConfig = require('./test.config');
import resources = require('./util/resources'); import resources = require('./util/resources');
@ -27,16 +28,22 @@ import resources = require('./util/resources');
import AlfrescoApi = require('alfresco-js-api-node'); import AlfrescoApi = require('alfresco-js-api-node');
import { UsersActions } from './actions/users.actions'; import { UsersActions } from './actions/users.actions';
import { AppsActions } from './actions/APS/apps.actions'; import { AppsActions } from './actions/APS/apps.actions';
import { ModelsActions } from './actions/APS/models.actions';
import AppPublish = require('./models/APS/AppPublish');
describe('Attachment list', () => { describe('Modify applications', () => {
let loginPage = new LoginPage(); let loginPage = new LoginPage();
let navigationBarPage = new NavigationBarPage(); let navigationBarPage = new NavigationBarPage();
let processServicesPage = new ProcessServicesPage(); let processServicesPage = new ProcessServicesPage();
let app = resources.Files.APP_WITH_PROCESSES; let app = resources.Files.APP_WITH_PROCESSES;
let appTobeDeleted = resources.Files.SIMPLE_APP_WITH_USER_FORM;
let replacingApp = resources.Files.WIDGETS_SMOKE_TEST;
let apps = new AppsActions();
let modelActions = new ModelsActions();
let firstApp, appVersionToBeDeleted;
beforeAll(async (done) => { beforeAll(async(done) => {
let apps = new AppsActions();
let users = new UsersActions(); let users = new UsersActions();
this.alfrescoJsApi = new AlfrescoApi({ this.alfrescoJsApi = new AlfrescoApi({
@ -50,21 +57,92 @@ describe('Attachment list', () => {
await this.alfrescoJsApi.login(user.email, user.password); await this.alfrescoJsApi.login(user.email, user.password);
await apps.importPublishDeployApp(this.alfrescoJsApi, app.file_location); firstApp = await apps.importPublishDeployApp(this.alfrescoJsApi, app.file_location);
appVersionToBeDeleted = await apps.importPublishDeployApp(this.alfrescoJsApi, appTobeDeleted.file_location);
loginPage.loginToProcessServicesUsingUserModel(user); loginPage.loginToProcessServicesUsingUserModel(user);
done(); done();
}); });
it('[C260198] Publish on ADF side', () => { it('[C260198] Should the app be displayed on dashboard when is deployed on APS', () => {
navigationBarPage.clickProcessServicesButton(); navigationBarPage.clickProcessServicesButton();
processServicesPage.checkApsContainer(); processServicesPage.checkApsContainer();
expect(processServicesPage.getAppIconType(app.title)).toEqual('ac_unit'); expect(processServicesPage.getAppIconType(app.title)).toEqual(CONSTANTS.APP_ICON.UNIT);
expect(processServicesPage.getBackgroundColor(app.title)).toEqual(CONSTANTS.APP_COLOR.BLUE); expect(processServicesPage.getBackgroundColor(app.title)).toEqual(CONSTANTS.APP_COLOR.BLUE);
expect(processServicesPage.getDescription(app.title)).toEqual('Description for app'); expect(processServicesPage.getDescription(app.title)).toEqual(app.description);
});
it('[C260213] Should a new version of the app be displayed on dashboard when is replaced by importing another app in APS', async() => {
navigationBarPage.clickProcessServicesButton();
processServicesPage.checkApsContainer();
expect(processServicesPage.getAppIconType(app.title)).toEqual(CONSTANTS.APP_ICON.UNIT);
expect(processServicesPage.getBackgroundColor(app.title)).toEqual(CONSTANTS.APP_COLOR.BLUE);
expect(processServicesPage.getDescription(app.title)).toEqual(app.description);
browser.controlFlow().execute(() => {
return apps.importNewVersionAppDefinitionPublishDeployApp(this.alfrescoJsApi, replacingApp.file_location, firstApp.id);
});
Util.refreshBrowser();
processServicesPage.checkApsContainer();
expect(processServicesPage.getAppIconType(app.title)).toEqual(CONSTANTS.APP_ICON.FAVORITE);
expect(processServicesPage.getBackgroundColor(app.title)).toEqual(CONSTANTS.APP_COLOR.GREY);
expect(processServicesPage.getDescription(app.title)).toEqual(app.description);
});
it('[C260220] Should the app not be displayed on dashboard after it was deleted in APS', async() => {
navigationBarPage.clickProcessServicesButton();
processServicesPage.checkApsContainer();
processServicesPage.checkAppIsDisplayed(app.title);
browser.controlFlow().execute(() => {
return modelActions.deleteEntireModel(this.alfrescoJsApi, firstApp.id);
});
Util.refreshBrowser();
processServicesPage.checkApsContainer();
processServicesPage.checkAppIsNotDisplayed(app.title);
});
it('[C260215] Should the penultimate version of an app be displayed on dashboard when the last version is deleted in APS', async() => {
navigationBarPage.clickProcessServicesButton();
processServicesPage.checkApsContainer();
processServicesPage.checkAppIsDisplayed(appTobeDeleted.title);
expect(processServicesPage.getBackgroundColor(appTobeDeleted.title)).toEqual(CONSTANTS.APP_COLOR.ORANGE);
browser.controlFlow().execute(() => {
return apps.importNewVersionAppDefinitionPublishDeployApp(this.alfrescoJsApi, replacingApp.file_location, appVersionToBeDeleted.id);
});
Util.refreshBrowser();
processServicesPage.getBackgroundColor(appTobeDeleted.title);
expect(processServicesPage.getBackgroundColor(appTobeDeleted.title)).toEqual(CONSTANTS.APP_COLOR.GREY);
browser.controlFlow().execute(async() => {
await modelActions.deleteVersionModel(this.alfrescoJsApi, appVersionToBeDeleted.id);
await modelActions.deleteVersionModel(this.alfrescoJsApi, appVersionToBeDeleted.id);
await apps.publishDeployApp(this.alfrescoJsApi, appVersionToBeDeleted.id);
});
Util.refreshBrowser();
processServicesPage.checkApsContainer();
processServicesPage.checkAppIsDisplayed(appTobeDeleted.title);
expect(processServicesPage.getBackgroundColor(appTobeDeleted.title)).toEqual(CONSTANTS.APP_COLOR.ORANGE);
}); });
}); });

View File

@ -77,9 +77,7 @@ var ProcessServicesPage = function(){
this.getBackgroundColor = function(applicationName) { this.getBackgroundColor = function(applicationName) {
var app = element(by.css("mat-card[title='" + applicationName +"']")); var app = element(by.css("mat-card[title='" + applicationName +"']"));
Util.waitUntilElementIsVisible(app); Util.waitUntilElementIsVisible(app);
return app.getCssValue("color").then(function (value) { return app.getCssValue("background-color");
return value;
});
}; };
this.getDescription = function(applicationName) { this.getDescription = function(applicationName) {
@ -90,6 +88,16 @@ var ProcessServicesPage = function(){
return description.getText(); return description.getText();
}; };
this.checkAppIsNotDisplayed = function(applicationName) {
var app = element(by.css("mat-card[title='" + applicationName +"']"));
return Util.waitUntilElementIsNotOnPage(app);
};
this.checkAppIsDisplayed = function(applicationName) {
var app = element(by.css("mat-card[title='" + applicationName +"']"));
return Util.waitUntilElementIsVisible(app);
};
}; };
module.exports = ProcessServicesPage; module.exports = ProcessServicesPage;

View File

@ -110,7 +110,14 @@ exports.THEMING = {
}; };
exports.APP_COLOR = { exports.APP_COLOR = {
BLUE: "rgba(0, 0, 0, 0.87)" BLUE: "rgba(38, 154, 188, 1)",
GREY: "rgba(105, 108, 103, 1)",
ORANGE: "rgba(250, 185, 108, 1)"
};
exports.APP_ICON = {
FAVORITE: "favorite_border",
UNIT: "ac_unit"
}; };
exports.PROCESSENDDATE = "No date"; exports.PROCESSENDDATE = "No date";