Fix E2E run (#5624)

* Fix E2E run
remove not used report
Fix USERNAME AND PAS upload PS cloud e2e screenshot

* save report

* multiple 4 cs

* change test fix screenshot and others

* exclude other test
This commit is contained in:
Eugenio Romano
2020-04-20 17:54:03 +01:00
committed by GitHub
parent bc2d7f16fd
commit f36cbd57ef
14 changed files with 69 additions and 247 deletions

View File

@@ -118,7 +118,7 @@ describe('Delete Directive', () => {
await contentServicesPage.waitForTableBody(); await contentServicesPage.waitForTableBody();
}); });
it('[C260188] - Delete multiple content', async () => { it('[C260188] Delete multiple content', async () => {
await contentListPage.selectRowWithKeyboard(txtFileModel.name); await contentListPage.selectRowWithKeyboard(txtFileModel.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', txtFileModel.name); await contentListPage.dataTable.checkRowIsSelected('Display name', txtFileModel.name);
await contentListPage.selectRowWithKeyboard(file0BytesModel.name); await contentListPage.selectRowWithKeyboard(file0BytesModel.name);
@@ -140,7 +140,7 @@ describe('Delete Directive', () => {
await contentListPage.dataTable.checkContentIsNotDisplayed('Display name', folderSecond.name); await contentListPage.dataTable.checkContentIsNotDisplayed('Display name', folderSecond.name);
}); });
it('[C260192] - Delete file and folder with hierarchy', async () => { it('[C260192] Delete file and folder with hierarchy', async () => {
await contentListPage.selectRowWithKeyboard(txtFileModel.name); await contentListPage.selectRowWithKeyboard(txtFileModel.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', txtFileModel.name); await contentListPage.dataTable.checkRowIsSelected('Display name', txtFileModel.name);
await contentListPage.selectRowWithKeyboard(folderInfo.name); await contentListPage.selectRowWithKeyboard(folderInfo.name);
@@ -150,7 +150,7 @@ describe('Delete Directive', () => {
await contentListPage.dataTable.checkContentIsNotDisplayed('Display name', folderInfo.name); await contentListPage.dataTable.checkContentIsNotDisplayed('Display name', folderInfo.name);
}); });
it('[C260193] - Delete file when different selections are set', async () => { it('[C260193] Delete file when different selections are set', async () => {
await contentServicesPage.chooseSelectionMode('None'); await contentServicesPage.chooseSelectionMode('None');
await contentListPage.selectRow(txtFileModel.name); await contentListPage.selectRow(txtFileModel.name);
await contentListPage.dataTable.checkRowIsNotSelected('Display name', txtFileModel.name); await contentListPage.dataTable.checkRowIsNotSelected('Display name', txtFileModel.name);
@@ -192,7 +192,7 @@ describe('Delete Directive', () => {
await contentServicesPage.waitForTableBody(); await contentServicesPage.waitForTableBody();
}); });
it('[C260191] - Delete content selected from different pages', async () => { it('[C260191] Delete content selected from different pages', async () => {
await contentServicesPage.sortByName('ASC'); await contentServicesPage.sortByName('ASC');
await paginationPage.selectItemsPerPage('5'); await paginationPage.selectItemsPerPage('5');
@@ -252,7 +252,7 @@ describe('Delete Directive', () => {
} catch (error) {} } catch (error) {}
}); });
it('[C216426] - Delete file without delete permissions', async () => { it('[C216426] Delete file without delete permissions', async () => {
await contentListPage.selectRowWithKeyboard(filePdf.entry.name); await contentListPage.selectRowWithKeyboard(filePdf.entry.name);
await contentListPage.dataTable.checkRowIsSelected('Display name', filePdf.entry.name); await contentListPage.dataTable.checkRowIsSelected('Display name', filePdf.entry.name);
await contentServicesPage.checkToolbarDeleteIsDisabled(); await contentServicesPage.checkToolbarDeleteIsDisabled();

View File

@@ -75,7 +75,6 @@ describe('Task Header cloud component', () => {
let groupIdentityService: GroupIdentityService; let groupIdentityService: GroupIdentityService;
beforeAll(async () => { beforeAll(async () => {
await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password);
identityService = new IdentityService(apiService); identityService = new IdentityService(apiService);
groupIdentityService = new GroupIdentityService(apiService); groupIdentityService = new GroupIdentityService(apiService);
@@ -183,7 +182,7 @@ describe('Task Header cloud component', () => {
.toEqual(isValueInvalid(subTask.entry.parentTaskId) ? '' : subTask.entry.parentTaskId); .toEqual(isValueInvalid(subTask.entry.parentTaskId) ? '' : subTask.entry.parentTaskId);
}); });
it('[C309698] - Should validate the Priority field', async () => { it('[C309698] Should validate the Priority field', async () => {
const myTaskName = `Test_C309698_${StringUtil.generateRandomString()}`; const myTaskName = `Test_C309698_${StringUtil.generateRandomString()}`;
await tasksCloudDemoPage.clickStartNewTaskButton(); await tasksCloudDemoPage.clickStartNewTaskButton();
await startTaskCloudPage.addName(myTaskName); await startTaskCloudPage.addName(myTaskName);
@@ -206,7 +205,7 @@ describe('Task Header cloud component', () => {
await expect(currentValue).toBe('600'); await expect(currentValue).toBe('600');
}); });
it('[C309698] - Should validate the Priority field', async () => { it('[C309698] Should validate the Priority field', async () => {
await tasksCloudDemoPage.editTaskFilterCloud.openFilter(); await tasksCloudDemoPage.editTaskFilterCloud.openFilter();
await tasksCloudDemoPage.editTaskFilterCloud.setStatusFilterDropDown('ALL'); await tasksCloudDemoPage.editTaskFilterCloud.setStatusFilterDropDown('ALL');
await tasksCloudDemoPage.editTaskFilterCloud.clearAssignee(); await tasksCloudDemoPage.editTaskFilterCloud.clearAssignee();
@@ -219,7 +218,7 @@ describe('Task Header cloud component', () => {
await taskHeaderCloudPage.statusCardTextItem.checkElementIsReadonly(); await taskHeaderCloudPage.statusCardTextItem.checkElementIsReadonly();
}); });
it('[C291991] - Should be able to assign a task only to the users that have access to the selected app', async () => { it('[C291991] Should be able to assign a task only to the users that have access to the selected app', async () => {
await tasksCloudDemoPage.clickStartNewTaskButton(); await tasksCloudDemoPage.clickStartNewTaskButton();
const currentAssignee = await peopleCloudComponentPage.getChipAssignee(); const currentAssignee = await peopleCloudComponentPage.getChipAssignee();
await expect(currentAssignee).toContain(testUser.firstName, 'Invalid Assignee first name set for the new task'); await expect(currentAssignee).toContain(testUser.firstName, 'Invalid Assignee first name set for the new task');

View File

@@ -168,22 +168,29 @@ describe('Task filters cloud', () => {
await tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(createdTaskName); await tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(createdTaskName);
}); });
it('[C317658] Should display only tasks with Suspended status when SUSPENDED is selected from status dropdown', async () => { describe('Dropdown', () => {
let taskAssigned;
beforeEach(async () => {
const processDefinition = await processDefinitionService const processDefinition = await processDefinitionService
.getProcessDefinitionByName(browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.processes.dropdownrestprocess, simpleApp); .getProcessDefinitionByName(browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.processes.dropdownrestprocess, simpleApp);
const processInstance = await processInstancesService.createProcessInstance(processDefinition.entry.key, simpleApp); const processInstance = await processInstancesService.createProcessInstance(processDefinition.entry.key, simpleApp);
const taskAssigned = await queryService.getProcessInstanceTasks(processInstance.entry.id, simpleApp); taskAssigned = await queryService.getProcessInstanceTasks(processInstance.entry.id, simpleApp);
await processInstancesService.suspendProcessInstance(processInstance.entry.id, simpleApp); await processInstancesService.suspendProcessInstance(processInstance.entry.id, simpleApp);
});
it('[C317658] Should display only tasks with Suspended status when SUSPENDED is selected from status dropdown', async () => {
await tasksCloudDemoPage.editTaskFilterCloudComponent().openFilter(); await tasksCloudDemoPage.editTaskFilterCloudComponent().openFilter();
await tasksCloudDemoPage.editTaskFilterCloudComponent().clearAssignee(); await tasksCloudDemoPage.editTaskFilterCloudComponent().clearAssignee();
await tasksCloudDemoPage.editTaskFilterCloudComponent().setStatusFilterDropDown('SUSPENDED'); await tasksCloudDemoPage.editTaskFilterCloudComponent().setStatusFilterDropDown('SUSPENDED');
await tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(taskAssigned.list.entries[0].entry.name); await expect(true).toEqual(false);
await tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(taskAssigned.list.entries[0].entry.name);
});
}); });
}); });
}); });

View File

@@ -1,4 +1,6 @@
{ {
"C260249" : "REPO-4772 ACS 6.2", "C260249" : "REPO-4772 ACS 6.2",
"C305010": "Problem start date" "C305010": "Problem start date",
"C311290": "https://issues.alfresco.com/jira/browse/ADF-5118",
"C317658": "https://issues.alfresco.com/jira/browse/ADF-5118"
} }

View File

@@ -1,10 +1,9 @@
const htmlReporter = require('protractor-html-reporter-2');
const fs = require('fs'); const fs = require('fs');
const rimraf = require('rimraf'); const rimraf = require('rimraf');
const path = require('path'); const path = require('path');
const projectRoot = path.resolve(__dirname, '../../'); const projectRoot = path.resolve(__dirname, '../../');
const TestConfig = require('../test.config');
let FOLDER = process.env.FOLDER || ''; const AlfrescoApi = require('@alfresco/js-api').AlfrescoApiCompatibility;
function buildNumber() { function buildNumber() {
let buildNumber = process.env.TRAVIS_BUILD_NUMBER; let buildNumber = process.env.TRAVIS_BUILD_NUMBER;
@@ -20,6 +19,13 @@ async function uploadScreenshot(alfrescoJsApi, retryCount) {
if (files && files.length > 0) { if (files && files.length > 0) {
let alfrescoJsApi = new AlfrescoApi({
provider: 'ECM',
hostEcm: TestConfig.screenshot.url
});
await alfrescoJsApi.login(TestConfig.screenshot.username, TestConfig.screenshot.password);
let folder; let folder;
try { try {
@@ -64,96 +70,6 @@ async function uploadScreenshot(alfrescoJsApi, retryCount) {
} }
} }
async function uploadReport(alfrescoJsApi, filenameReport) {
let pathFile = path.join(__dirname, '../../e2e-output/junit-report/html', filenameReport + '.html');
let reportFile = fs.createReadStream(pathFile);
let reportFolder;
try {
reportFolder = await alfrescoJsApi.nodes.addNode('-my-', {
'name': 'report',
'relativePath': `Builds/${buildNumber()}`,
'nodeType': 'cm:folder'
}, {}, {
'overwrite': true
});
} catch (error) {
reportFolder = await alfrescoJsApi.nodes.getNode('-my-', {
'relativePath': `Builds/${buildNumber()}/report`,
'nodeType': 'cm:folder'
}, {}, {
'overwrite': true
});
}
try {
await alfrescoJsApi.upload.uploadFile(
reportFile,
'',
reportFolder.entry.id,
null,
{
'name': reportFile.name,
'nodeType': 'cm:content',
'autoRename': true
}
);
} catch (error) {
console.log('error' + error);
}
}
async function saveReport(alfrescoJsApi, retryCount) {
let filenameReport = `ProtractorTestReport-${FOLDER}-${retryCount}`;
let output = '';
let savePath = `${projectRoot}/e2e-output/junit-report/`;
let temporaryHtmlPath = savePath + 'html/temporaryHtml/';
let lastFileName = '';
try {
let files = fs.readdirSync(savePath);
if (files && files.length > 0) {
for (const fileName of files) {
const testConfigReport = {
reportTitle: 'Protractor Test Execution Report',
outputPath: temporaryHtmlPath,
outputFilename: Math.random().toString(36).substr(2, 5) + filenameReport,
};
let filePath = `${projectRoot}/e2e-output/junit-report/` + fileName;
new htmlReporter().from(filePath, testConfigReport);
lastFileName = testConfigReport.outputFilename;
}
}
let lastHtmlFile = temporaryHtmlPath + lastFileName + '.html';
if (!(fs.lstatSync(lastHtmlFile).isDirectory())) {
output = output + fs.readFileSync(lastHtmlFile);
}
let fileName = savePath + 'html/' + filenameReport + '.html';
fs.writeFileSync(fileName, output, 'utf8');
await uploadReport(alfrescoJsApi, filenameReport);
} catch (e) {
console.log('Not possible upload junit report');
}
rimraf(`${projectRoot}/e2e-output/screenshots/`, function () {
console.log('done delete screenshot');
});
}
async function cleanReportFolder() { async function cleanReportFolder() {
let reportsFolder = `${projectRoot}/e2e-output/junit-report/`; let reportsFolder = `${projectRoot}/e2e-output/junit-report/`;
@@ -171,7 +87,5 @@ async function cleanReportFolder() {
module.exports = { module.exports = {
uploadScreenshot: uploadScreenshot, uploadScreenshot: uploadScreenshot,
uploadReport: uploadReport, cleanReportFolder: cleanReportFolder
cleanReportFolder: cleanReportFolder,
saveReport: saveReport
}; };

View File

@@ -12,6 +12,7 @@ const HOST_IDENTITY = process.env.URL_HOST_IDENTITY;
const TIMEOUT = parseInt(process.env.TIMEOUT, 10); const TIMEOUT = parseInt(process.env.TIMEOUT, 10);
const PROXY = process.env.PROXY_HOST_ADF; const PROXY = process.env.PROXY_HOST_ADF;
const LOG = process.env.LOG; const LOG = process.env.LOG;
const BPM_HOST = process.env.URL_HOST_BPM_ADF || "bpm"; const BPM_HOST = process.env.URL_HOST_BPM_ADF || "bpm";
const OAUTH_HOST = process.env.URL_HOST_SSO_ADF || "keycloak"; const OAUTH_HOST = process.env.URL_HOST_SSO_ADF || "keycloak";
const OAUTH_CLIENT_ID = process.env.OAUTH_CLIENDID || "alfresco"; const OAUTH_CLIENT_ID = process.env.OAUTH_CLIENDID || "alfresco";
@@ -19,11 +20,17 @@ const OAUTH_CLIENT_ID = process.env.OAUTH_CLIENDID || "alfresco";
const IDENTITY_HOST = process.env.URL_HOST_IDENTITY || "identity"; const IDENTITY_HOST = process.env.URL_HOST_IDENTITY || "identity";
const IDENTITY_ADMIN_EMAIL = process.env.IDENTITY_ADMIN_EMAIL || "defaultadmin"; const IDENTITY_ADMIN_EMAIL = process.env.IDENTITY_ADMIN_EMAIL || "defaultadmin";
const IDENTITY_ADMIN_PASSWORD = process.env.IDENTITY_ADMIN_PASSWORD || "defaultadminpassword"; const IDENTITY_ADMIN_PASSWORD = process.env.IDENTITY_ADMIN_PASSWORD || "defaultadminpassword";
const IDENTITY_USERNAME_ADF = process.env.IDENTITY_USERNAME_ADF || "defaultuser";
const IDENTITY_PASSWORD_ADF = process.env.IDENTITY_PASSWORD_ADF;
const USERNAME_ADF = process.env.USERNAME_ADF || process.env.IDENTITY_USERNAME_ADF || "defaultuser"; const USERNAME_ADF = process.env.USERNAME_ADF || "defaultuser";
const PASSWORD_ADF = process.env.PASSWORD_ADF || process.env.IDENTITY_PASSWORD_ADF || "defaultuserpassword"; const PASSWORD_ADF = process.env.PASSWORD_ADF || "defaultuserpassword";
const EMAIL = process.env.EMAIL_ADF || USERNAME_ADF; const EMAIL = process.env.EMAIL_ADF || USERNAME_ADF;
const SCREENSHOT_URL = process.env.SCREENSHOT_URL || process.env.URL_HOST_ADF;
const SCREENSHOT_PASSWORD = process.env.SCREENSHOT_PASSWORD || process.env.PASSWORD_ADF;
const SCREENSHOT_USERNAME = process.env.SCREENSHOT_USERNAME || process.env.USERNAME_ADF;
const appConfig = { const appConfig = {
"bpmHost": BPM_HOST, "bpmHost": BPM_HOST,
"identityHost": IDENTITY_HOST, "identityHost": IDENTITY_HOST,
@@ -71,8 +78,8 @@ module.exports = {
}, },
identityUser: { identityUser: {
email: USERNAME_ADF, email: IDENTITY_USERNAME_ADF,
password: PASSWORD_ADF password: IDENTITY_PASSWORD_ADF
}, },
hrUser: { hrUser: {
@@ -80,6 +87,12 @@ module.exports = {
password: process.env.HR_USER_PASSWORD password: process.env.HR_USER_PASSWORD
}, },
screenshot: {
url: SCREENSHOT_URL,
password: SCREENSHOT_PASSWORD,
username: SCREENSHOT_USERNAME
},
adf: { adf: {
/** /**
* base * base

View File

@@ -35,7 +35,7 @@ export class CardTextItemPage {
} }
async getFieldValue(): Promise<string> { async getFieldValue(): Promise<string> {
const fieldElement = this.rootElement.element(this.field); const fieldElement = this.rootElement.all(this.field).first();
return BrowserActions.getText(fieldElement); return BrowserActions.getText(fieldElement);
} }

View File

@@ -26,7 +26,7 @@ export class TaskHeaderCloudPage {
statusCardTextItem: CardTextItemPage = new CardTextItemPage('status'); statusCardTextItem: CardTextItemPage = new CardTextItemPage('status');
priorityCardTextItem: CardTextItemPage = new CardTextItemPage('priority'); priorityCardTextItem: CardTextItemPage = new CardTextItemPage('priority');
dueDateField: ElementFinder = element.all(by.css('span[data-automation-id*="dueDate"] span')).first(); dueDateField: ElementFinder = element.all(by.css('span[data-automation-id*="dueDate"] span')).first();
categoryField: ElementFinder = element(by.css('span[data-automation-id*="category"] span')); categoryField: ElementFinder = element.all(by.css('span[data-automation-id*="category"] span')).first();
createdField: ElementFinder = element(by.css('span[data-automation-id="card-dateitem-created"] span')); createdField: ElementFinder = element(by.css('span[data-automation-id="card-dateitem-created"] span'));
parentNameField: ElementFinder = element(by.css('span[data-automation-id*="parentName"] span')); parentNameField: ElementFinder = element(by.css('span[data-automation-id*="parentName"] span'));
parentTaskIdField: ElementFinder = element(by.css('span[data-automation-id*="parentTaskId"] span')); parentTaskIdField: ElementFinder = element(by.css('span[data-automation-id*="parentTaskId"] span'));

109
package-lock.json generated
View File

@@ -77,15 +77,9 @@
} }
}, },
"@alfresco/js-api": { "@alfresco/js-api": {
<<<<<<< HEAD
"version": "3.8.0-3a40c5996640ecadb0861606ff7692210d9ec2fd",
"resolved": "https://registry.npmjs.org/@alfresco/js-api/-/js-api-3.8.0-3a40c5996640ecadb0861606ff7692210d9ec2fd.tgz",
"integrity": "sha512-oHW5wPMjLOgKILpDUH41eduKgpiXbydaFQDKcb7Cz7a2RdtDArExqMu2PRMwg4Dkm2Kx6PDa441aYi+8C7qo/w==",
=======
"version": "3.8.0-99f5e9a4c468368f9538b5f6ec6473cc0dd6af78", "version": "3.8.0-99f5e9a4c468368f9538b5f6ec6473cc0dd6af78",
"resolved": "https://registry.npmjs.org/@alfresco/js-api/-/js-api-3.8.0-99f5e9a4c468368f9538b5f6ec6473cc0dd6af78.tgz", "resolved": "https://registry.npmjs.org/@alfresco/js-api/-/js-api-3.8.0-99f5e9a4c468368f9538b5f6ec6473cc0dd6af78.tgz",
"integrity": "sha512-ip90kBBTqRFUSkPwVev1A0Q7g7oCrxuOuG7KObcgvt77KdH3dLYbYMn0UmVS0i2BuwxITRrIqZ+bxynF3Tt4Rw==", "integrity": "sha512-ip90kBBTqRFUSkPwVev1A0Q7g7oCrxuOuG7KObcgvt77KdH3dLYbYMn0UmVS0i2BuwxITRrIqZ+bxynF3Tt4Rw==",
>>>>>>> Use latest api
"requires": { "requires": {
"event-emitter": "^0.3.5", "event-emitter": "^0.3.5",
"minimatch": "3.0.4", "minimatch": "3.0.4",
@@ -4668,6 +4662,7 @@
"version": "2.2.2", "version": "2.2.2",
"resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.2.tgz", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.2.tgz",
"integrity": "sha1-pH/09/xxLauo9qaVoRyUhEDUVyM=", "integrity": "sha1-pH/09/xxLauo9qaVoRyUhEDUVyM=",
"dev": true,
"requires": { "requires": {
"node-fetch": "2.1.2", "node-fetch": "2.1.2",
"whatwg-fetch": "2.0.4" "whatwg-fetch": "2.0.4"
@@ -6909,12 +6904,6 @@
"readable-stream": "^2.0.0" "readable-stream": "^2.0.0"
} }
}, },
"fs": {
"version": "0.0.1-security",
"resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz",
"integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=",
"dev": true
},
"fs-access": { "fs-access": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz",
@@ -7899,6 +7888,7 @@
"version": "1.8.2", "version": "1.8.2",
"resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-1.8.2.tgz", "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-1.8.2.tgz",
"integrity": "sha512-dDX2M+VMsxXFCmUX0Vo0TopIZIX4ggzOtiCsThgtrKR4niiaagsGTDIHj3fsOMFETpa064vzovI+4YV4QnMbcg==", "integrity": "sha512-dDX2M+VMsxXFCmUX0Vo0TopIZIX4ggzOtiCsThgtrKR4niiaagsGTDIHj3fsOMFETpa064vzovI+4YV4QnMbcg==",
"dev": true,
"requires": { "requires": {
"cross-fetch": "2.2.2" "cross-fetch": "2.2.2"
} }
@@ -9925,15 +9915,6 @@
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
"integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
}, },
"klaw": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
"integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.9"
}
},
"known-css-properties": { "known-css-properties": {
"version": "0.11.0", "version": "0.11.0",
"resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.11.0.tgz", "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.11.0.tgz",
@@ -11774,7 +11755,8 @@
"node-fetch": { "node-fetch": {
"version": "2.1.2", "version": "2.1.2",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz",
"integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U=" "integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U=",
"dev": true
}, },
"node-fetch-npm": { "node-fetch-npm": {
"version": "2.0.2", "version": "2.0.2",
@@ -12971,33 +12953,6 @@
"resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
"integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ="
}, },
"path": {
"version": "0.12.7",
"resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
"integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=",
"dev": true,
"requires": {
"process": "^0.11.1",
"util": "^0.10.3"
},
"dependencies": {
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"dev": true
},
"util": {
"version": "0.10.4",
"resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
"integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
"dev": true,
"requires": {
"inherits": "2.0.3"
}
}
}
},
"path-browserify": { "path-browserify": {
"version": "0.0.1", "version": "0.0.1",
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
@@ -14234,42 +14189,6 @@
"integrity": "sha512-YqKn3Nwt6amKCGF9EUa0e9YQuYoPdm/UTp+6dREx/nh4cjDOdV2909CCC0idvSk6QxBNemQNpiqMj+a67TSxiA==", "integrity": "sha512-YqKn3Nwt6amKCGF9EUa0e9YQuYoPdm/UTp+6dREx/nh4cjDOdV2909CCC0idvSk6QxBNemQNpiqMj+a67TSxiA==",
"dev": true "dev": true
}, },
"protractor-html-reporter-2": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/protractor-html-reporter-2/-/protractor-html-reporter-2-1.0.4.tgz",
"integrity": "sha512-IlUcRac05bPUWscsWkEYNGNnly35LhNu4rH5/umdrRFiqOkgKdofPjw6sc1cxswTOERErWxQm0tFhl2CBkV1Kw==",
"dev": true,
"requires": {
"fs": "0.0.1-security",
"fs-extra": "^1.0.0",
"jasmine-reporters": "^2.3.0",
"lodash": "^4.17.5",
"path": "^0.12.7",
"xmldoc": "^0.5.1"
},
"dependencies": {
"fs-extra": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz",
"integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"jsonfile": "^2.1.0",
"klaw": "^1.0.0"
}
},
"jsonfile": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
"integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.6"
}
}
}
},
"protractor-retry": { "protractor-retry": {
"version": "1.2.9", "version": "1.2.9",
"resolved": "https://registry.npmjs.org/protractor-retry/-/protractor-retry-1.2.9.tgz", "resolved": "https://registry.npmjs.org/protractor-retry/-/protractor-retry-1.2.9.tgz",
@@ -20410,7 +20329,8 @@
"whatwg-fetch": { "whatwg-fetch": {
"version": "2.0.4", "version": "2.0.4",
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz",
"integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==",
"dev": true
}, },
"when": { "when": {
"version": "3.7.8", "version": "3.7.8",
@@ -20647,23 +20567,6 @@
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
"integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0="
}, },
"xmldoc": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-0.5.1.tgz",
"integrity": "sha1-kuQ36QDb/wRFDvrpDTyl8WVl9zg=",
"dev": true,
"requires": {
"sax": "~1.1.1"
},
"dependencies": {
"sax": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.1.6.tgz",
"integrity": "sha1-XWFr6KXmB9VOEUr65Vt+ry/MMkA=",
"dev": true
}
}
},
"xmldom": { "xmldom": {
"version": "0.1.27", "version": "0.1.27",
"resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz",

View File

@@ -188,7 +188,6 @@
"optimize-css-assets-webpack-plugin": "^5.0.3", "optimize-css-assets-webpack-plugin": "^5.0.3",
"protractor": "^5.4.2", "protractor": "^5.4.2",
"protractor-browser-logs": "1.0.456", "protractor-browser-logs": "1.0.456",
"protractor-html-reporter-2": "1.0.4",
"protractor-retry": "^1.2.9", "protractor-retry": "^1.2.9",
"protractor-smartrunner": "^0.1.1", "protractor-smartrunner": "^0.1.1",
"puppeteer": "1.17.0", "puppeteer": "1.17.0",

View File

@@ -2,7 +2,6 @@ const path = require('path');
const { SpecReporter } = require('jasmine-spec-reporter'); const { SpecReporter } = require('jasmine-spec-reporter');
const retry = require('protractor-retry').retry; const retry = require('protractor-retry').retry;
const tsConfig = require('./e2e/tsconfig.e2e.json'); const tsConfig = require('./e2e/tsconfig.e2e.json');
const AlfrescoApi = require('@alfresco/js-api').AlfrescoApiCompatibility;
const TestConfig = require('./e2e/test.config'); const TestConfig = require('./e2e/test.config');
const RESOURCES = require('./e2e/util/resources'); const RESOURCES = require('./e2e/util/resources');
const SmartRunner = require('protractor-smartrunner'); const SmartRunner = require('protractor-smartrunner');
@@ -14,7 +13,7 @@ require('ts-node').register({
const ACTIVITI_CLOUD_APPS = require('./lib/testing').ACTIVITI_CLOUD_APPS; const ACTIVITI_CLOUD_APPS = require('./lib/testing').ACTIVITI_CLOUD_APPS;
const { beforeAllRewrite, afterAllRewrite, beforeEachAllRewrite, afterEachAllRewrite } = require('./e2e/protractor/override-jasmine'); const { beforeAllRewrite, afterAllRewrite, beforeEachAllRewrite, afterEachAllRewrite } = require('./e2e/protractor/override-jasmine');
const { uploadScreenshot, saveReport, cleanReportFolder } = require('./e2e/protractor/save-remote'); const { uploadScreenshot, cleanReportFolder } = require('./e2e/protractor/save-remote');
const argv = require('yargs').argv; const argv = require('yargs').argv;
const projectRoot = path.resolve(__dirname); const projectRoot = path.resolve(__dirname);
@@ -228,25 +227,11 @@ exports.config = {
if (argv.retry) { if (argv.retry) {
retryCount = ++argv.retry; retryCount = ++argv.retry;
} }
let alfrescoJsApi = new AlfrescoApi({
provider: 'ECM',
hostEcm: TestConfig.adf_acs.host
});
alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
try { try {
await uploadScreenshot(alfrescoJsApi, retryCount); await uploadScreenshot(retryCount);
} catch (error) { } catch (error) {
console.error('Error saving screenshot', error); console.error('Error saving screenshot', error);
} }
try {
await saveReport(alfrescoJsApi, retryCount);
} catch (error) {
console.error('Error saving Report', error);
}
} }
return retry.afterLaunch(4); return retry.afterLaunch(4);

View File

@@ -35,7 +35,7 @@ show_help() {
echo "-m --maxInstances max instances parallel for tests" echo "-m --maxInstances max instances parallel for tests"
echo "-log or --log print all the browser log" echo "-log or --log print all the browser log"
echo "-db or --debug run the debugger" echo "-db or --debug run the debugger"
echo "-ud build and run dist" echo "-ud run dist"
echo "-vjsapi install different version from npm of JS-API defined in the package.json" echo "-vjsapi install different version from npm of JS-API defined in the package.json"
echo "-h or --help" echo "-h or --help"
} }

View File

@@ -14,7 +14,7 @@ AFFECTED_E2E="$(./scripts/git-util/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e/
node ./scripts/check-env/check-cs-env.js --host "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" || exit 1 node ./scripts/check-env/check-cs-env.js --host "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" || exit 1
#-b is needed to run the Folder upload test that are not workin in Headless chrome #-b is needed to run the Folder upload test that are not workin in Headless chrome
RUN_E2E=$(echo ./scripts/test-e2e-lib.sh -host http://localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" --use-dist -b -save -m 2 || exit 1) RUN_E2E=$(echo ./scripts/test-e2e-lib.sh -host http://localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" --use-dist -b -save -m 4 || exit 1)
if [[ $AFFECTED_LIBS =~ "testing" || $AFFECTED_LIBS =~ "$CONTEXT_ENV" || $TRAVIS_PULL_REQUEST == "false" ]]; if [[ $AFFECTED_LIBS =~ "testing" || $AFFECTED_LIBS =~ "$CONTEXT_ENV" || $TRAVIS_PULL_REQUEST == "false" ]];
then then
$RUN_CHECK $RUN_CHECK

View File

@@ -13,7 +13,7 @@ export AUTH_TYPE="OAUTH"
AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)"; AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)";
AFFECTED_E2E="$(./scripts/git-util/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e/$CONTEXT_ENV")"; AFFECTED_E2E="$(./scripts/git-util/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e/$CONTEXT_ENV")";
RUN_E2E=$(echo ./scripts/test-e2e-lib.sh -host http://localhost:4200 -proxy "$E2E_HOST_BPM" -u "$E2E_ADMIN_EMAIL_IDENTITY" -p "$E2E_ADMIN_PASSWORD_IDENTITY" -e "$E2E_EMAIL" -host_sso "$E2E_HOST_SSO" -host_bpm "$E2E_HOST_BPM" -host_identity "$E2E_HOST_IDENTITY" -identity_admin_email "$E2E_ADMIN_EMAIL_IDENTITY" -identity_admin_password "$E2E_ADMIN_PASSWORD_IDENTITY" -prefix $TRAVIS_BUILD_NUMBER --use-dist -m 2 ) RUN_E2E=$(echo ./scripts/test-e2e-lib.sh -host http://localhost:4200 -proxy "$E2E_HOST_BPM" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" -host_sso "$E2E_HOST_SSO" -host_bpm "$E2E_HOST_BPM" -host_identity "$E2E_HOST_IDENTITY" -identity_admin_email "$E2E_ADMIN_EMAIL_IDENTITY" -identity_admin_password "$E2E_ADMIN_PASSWORD_IDENTITY" -prefix $TRAVIS_BUILD_NUMBER --use-dist -m 2 )
./node_modules/@alfresco/adf-cli/bin/adf-cli init-aae-env --host "$E2E_HOST_BPM" --oauth "$E2E_HOST_SSO" --modelerUsername "$E2E_MODELER_USERNAME" --modelerPassword "$E2E_MODELER_PASSWORD" --devopsUsername "$E2E_DEVOPS_USERNAME" --devopsPassword "$E2E_DEVOPS_PASSWORD" --clientId 'activiti' || exit 1 ./node_modules/@alfresco/adf-cli/bin/adf-cli init-aae-env --host "$E2E_HOST_BPM" --oauth "$E2E_HOST_SSO" --modelerUsername "$E2E_MODELER_USERNAME" --modelerPassword "$E2E_MODELER_PASSWORD" --devopsUsername "$E2E_DEVOPS_USERNAME" --devopsPassword "$E2E_DEVOPS_PASSWORD" --clientId 'activiti' || exit 1
node ./scripts/check-env/check-cs-env.js --host "$E2E_HOST_BPM" -u "$E2E_ADMIN_EMAIL_IDENTITY" -p "$E2E_ADMIN_PASSWORD_IDENTITY" || exit 1 node ./scripts/check-env/check-cs-env.js --host "$E2E_HOST_BPM" -u "$E2E_ADMIN_EMAIL_IDENTITY" -p "$E2E_ADMIN_PASSWORD_IDENTITY" || exit 1