mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-05-12 17:04:57 +00:00
[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:
parent
192cca63aa
commit
98243f0450
@ -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();
|
||||||
|
20
e2e/actions/APS/models.actions.ts
Normal file
20
e2e/actions/APS/models.actions.ts
Normal 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -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);
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -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;
|
||||||
|
@ -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";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user