mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
Add HTML Reporter (#3757)
* Add HTML Reporter; Removed parallel execution; Removed z-finish.e2e.ts tests; Copy the screenshots and the report to an environment. * fix report upload and unify folder
This commit is contained in:
committed by
Eugenio Romano
parent
04799f0c95
commit
2a883fca5f
@@ -1,79 +0,0 @@
|
|||||||
/*!
|
|
||||||
* @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': 'content-services',
|
|
||||||
'relativePath': 'Build-screenshot/Screenshot-e2e-' + buildNumber,
|
|
||||||
'nodeType': 'cm:folder'
|
|
||||||
}, {}, {
|
|
||||||
'overwrite': true
|
|
||||||
});
|
|
||||||
|
|
||||||
for (const fileName of files) {
|
|
||||||
|
|
||||||
let pathFile = path.join(__dirname, '../../e2e-output/screenshots', fileName);
|
|
||||||
let file: any = 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);
|
|
||||||
});
|
|
||||||
});
|
|
@@ -1,79 +0,0 @@
|
|||||||
/*!
|
|
||||||
* @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': 'Build-screenshot/Screenshot-e2e-' + buildNumber,
|
|
||||||
'nodeType': 'cm:folder'
|
|
||||||
}, {}, {
|
|
||||||
'overwrite': true
|
|
||||||
});
|
|
||||||
|
|
||||||
for (const fileName of files) {
|
|
||||||
|
|
||||||
let pathFile = path.join(__dirname, '../../e2e-output/screenshots', fileName);
|
|
||||||
let file: any = 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);
|
|
||||||
});
|
|
||||||
});
|
|
@@ -1,79 +0,0 @@
|
|||||||
/*!
|
|
||||||
* @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': 'process-services',
|
|
||||||
'relativePath': 'Build-screenshot/Screenshot-e2e-' + buildNumber,
|
|
||||||
'nodeType': 'cm:folder'
|
|
||||||
}, {}, {
|
|
||||||
'overwrite': true
|
|
||||||
});
|
|
||||||
|
|
||||||
for (const fileName of files) {
|
|
||||||
|
|
||||||
let pathFile = path.join(__dirname, '../../e2e-output/screenshots', fileName);
|
|
||||||
let file: any = 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);
|
|
||||||
});
|
|
||||||
});
|
|
@@ -126,7 +126,7 @@
|
|||||||
"http-proxy-middleware": "^0.19.0",
|
"http-proxy-middleware": "^0.19.0",
|
||||||
"jasmine-ajax": "3.2.0",
|
"jasmine-ajax": "3.2.0",
|
||||||
"jasmine-core": "~2.8.0",
|
"jasmine-core": "~2.8.0",
|
||||||
"jasmine-reporters": "^2.3.1",
|
"jasmine-reporters": "^2.3.2",
|
||||||
"jasmine-spec-reporter": "~4.2.1",
|
"jasmine-spec-reporter": "~4.2.1",
|
||||||
"jasmine2-protractor-utils": "1.1.3",
|
"jasmine2-protractor-utils": "1.1.3",
|
||||||
"js-yaml": "^3.12.0",
|
"js-yaml": "^3.12.0",
|
||||||
@@ -153,6 +153,7 @@
|
|||||||
"ng-packagr": "4.0.1",
|
"ng-packagr": "4.0.1",
|
||||||
"node-sass": "4.9.2",
|
"node-sass": "4.9.2",
|
||||||
"protractor": "^5.4.0",
|
"protractor": "^5.4.0",
|
||||||
|
"protractor-html-reporter-2": "^1.0.4",
|
||||||
"raw-loader": "0.5.1",
|
"raw-loader": "0.5.1",
|
||||||
"remap-istanbul": "^0.11.1",
|
"remap-istanbul": "^0.11.1",
|
||||||
"remark": "^9.0.0",
|
"remark": "^9.0.0",
|
||||||
|
@@ -4,8 +4,14 @@
|
|||||||
const path = require('path');
|
const path = require('path');
|
||||||
const {SpecReporter} = require('jasmine-spec-reporter');
|
const {SpecReporter} = require('jasmine-spec-reporter');
|
||||||
const jasmineReporters = require('jasmine-reporters');
|
const jasmineReporters = require('jasmine-reporters');
|
||||||
|
const htmlReporter = require('protractor-html-reporter-2');
|
||||||
const retry = require('protractor-retry').retry;
|
const retry = require('protractor-retry').retry;
|
||||||
|
|
||||||
|
const AlfrescoApi = require('alfresco-js-api-node');
|
||||||
|
const TestConfig = require('./e2e/test.config');
|
||||||
|
|
||||||
|
const fs = require('fs');
|
||||||
|
|
||||||
const projectRoot = path.resolve(__dirname);
|
const projectRoot = path.resolve(__dirname);
|
||||||
|
|
||||||
const width = 1366;
|
const width = 1366;
|
||||||
@@ -21,7 +27,7 @@ var NAME_TEST = process.env.NAME_TEST ? true : false
|
|||||||
var specsToRun = './**/' + FOLDER + '**/*.e2e.ts';
|
var specsToRun = './**/' + FOLDER + '**/*.e2e.ts';
|
||||||
|
|
||||||
if (process.env.NAME_TEST) {
|
if (process.env.NAME_TEST) {
|
||||||
specsToRun = './e2e/**/' + process.env.NAME_TEST;
|
specsToRun = './e2e/**/' + process.env.NAME_TEST;
|
||||||
}
|
}
|
||||||
|
|
||||||
var args_options = [];
|
var args_options = [];
|
||||||
@@ -44,8 +50,6 @@ exports.config = {
|
|||||||
capabilities: {
|
capabilities: {
|
||||||
browserName: 'chrome',
|
browserName: 'chrome',
|
||||||
|
|
||||||
shardTestFiles: true,
|
|
||||||
maxInstances: 1,
|
|
||||||
chromeOptions: {
|
chromeOptions: {
|
||||||
prefs: {
|
prefs: {
|
||||||
'credentials_enable_service': false,
|
'credentials_enable_service': false,
|
||||||
@@ -131,6 +135,117 @@ exports.config = {
|
|||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onComplete: async function () {
|
||||||
|
|
||||||
|
let buildNumber = process.env.TRAVIS_BUILD_NUMBER;
|
||||||
|
let saveScreenshot = process.env.SAVE_SCREENSHOT;
|
||||||
|
|
||||||
|
let alfrescoJsApi = new AlfrescoApi({
|
||||||
|
provider: 'ECM',
|
||||||
|
hostEcm: TestConfig.adf.url
|
||||||
|
});
|
||||||
|
alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
|
||||||
|
|
||||||
|
if (saveScreenshot === 'true') {
|
||||||
|
if (!buildNumber) {
|
||||||
|
buildNumber = Date.now();
|
||||||
|
}
|
||||||
|
|
||||||
|
let files = fs.readdirSync(path.join(__dirname, './e2e-output/screenshots'));
|
||||||
|
|
||||||
|
if (files && files.length > 0) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
folder = await alfrescoJsApi.nodes.addNode('-my-', {
|
||||||
|
'name': 'screenshot',
|
||||||
|
'relativePath': `Builds/${buildNumber}`,
|
||||||
|
'nodeType': 'cm:folder'
|
||||||
|
}, {}, {
|
||||||
|
'overwrite': true
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
console.log('Folder screenshot already present');
|
||||||
|
|
||||||
|
folder = await alfrescoJsApi.nodes.getNode('-my-', {
|
||||||
|
'relativePath': `Builds/${buildNumber}/screenshot`,
|
||||||
|
'nodeType': 'cm:folder'
|
||||||
|
}, {}, {
|
||||||
|
'overwrite': true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
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'
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
testConfig = {
|
||||||
|
reportTitle: 'Protractor Test Execution Report',
|
||||||
|
outputPath: `${projectRoot}/e2e-output/junit-report`,
|
||||||
|
outputFilename: 'ProtractorTestReport',
|
||||||
|
screenshotPath: '`${projectRoot}/e2e-output/screenshots/`',
|
||||||
|
screenshotsOnlyOnFailure: true
|
||||||
|
};
|
||||||
|
|
||||||
|
new htmlReporter().from(`${projectRoot}/e2e-output/junit-report/results.xml`, testConfig);
|
||||||
|
|
||||||
|
let pathFile = path.join(__dirname, './e2e-output/junit-report', 'ProtractorTestReport.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) {
|
||||||
|
console.log('Folder report already present' + 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'
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.log('error' + error);
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
afterLaunch() {
|
afterLaunch() {
|
||||||
return retry.afterLaunch(3);
|
return retry.afterLaunch(3);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user