Copy screenshots to env (#1508)

* add screenshots

* Fix protractor file

* make 1 test to fail

* remove method

* fix build number

* add log

* fix folder path

* fix test

* fix test

* Move saving screenshots to separate file

* Remove failing tests
This commit is contained in:
Cristina Jalba 2020-07-10 15:08:37 +03:00 committed by GitHub
parent c74eb55653
commit cf9e3180c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 104 additions and 1 deletions

View File

@ -0,0 +1,21 @@
const uploadOutput = require('../utils/upload-output');
const SAVE_SCREENSHOT = process.env.SAVE_SCREENSHOT === 'true';
async function afterLaunch(statusCode) {
if (SAVE_SCREENSHOT) {
console.log(`Save screenshot is ${SAVE_SCREENSHOT}, trying to save screenshots.`);
try {
await uploadOutput();
console.log('Screenshots saved successfully.');
} catch (e) {
console.log('Error happened while trying to upload screenshots and test reports: ', e);
}
} else {
console.log(`Save screenshot is ${SAVE_SCREENSHOT}, no need to save screenshots.`);
}
}
module.exports = afterLaunch;

View File

@ -0,0 +1,10 @@
const buildNumber = () => {
let buildNumber = process.env.TRAVIS_BUILD_NUMBER;
if (!buildNumber) {
process.env.TRAVIS_BUILD_NUMBER = Date.now();
}
return process.env.TRAVIS_BUILD_NUMBER;
}
module.exports = buildNumber;

View File

@ -0,0 +1,69 @@
const path = require('path');
const fs = require('fs');
const AlfrescoApi = require('@alfresco/js-api').AlfrescoApiCompatibility;
const buildNumber = require('./build-number');
const configScreenshotsPath = path.join(`${path.resolve(__dirname)}/../../../e2e-output/report/screenshots/`);
const rimraf = require('rimraf');
uploadOutput = async function() {
let alfrescoJsApi = new AlfrescoApi({ provider: 'ECM', hostEcm: process.env.SCREENSHOT_URL });
alfrescoJsApi.login(process.env.SCREENSHOT_USERNAME, process.env.SCREENSHOT_PASSWORD);
await saveScreenshots(alfrescoJsApi);
rimraf(configScreenshotsPath, function () {
console.log('done delete screenshot');
});
}
async function saveScreenshots(alfrescoJsApi) {
let files = fs.readdirSync(configScreenshotsPath);
if (files && files.length > 0) {
let folder;
try {
folder = await alfrescoJsApi.nodes.addNode('-my-', {
'name': `screenshot`,
'relativePath': `Builds/ACA-${buildNumber()}`,
'nodeType': 'cm:folder'
}, {}, {
'overwrite': true
});
} catch (error) {
folder = await alfrescoJsApi.nodes.getNode('-my-', {
'relativePath': `Builds/ACA-${buildNumber()}/screenshot`,
'nodeType': 'cm:folder'
}, {}, {
'overwrite': true
});
}
for (const fileName of files) {
let pathFile = path.join(configScreenshotsPath, fileName);
let file = fs.createReadStream(pathFile);
let safeFileName = fileName.replace(new RegExp('"', 'g'), '');
try {
await alfrescoJsApi.upload.uploadFile(
file,
'',
folder.entry.id,
null,
{
'name': safeFileName,
'nodeType': 'cm:content',
'autoRename': true
}
);
}catch(error){
console.log(error);
}
}
}
};
module.exports = uploadOutput;

View File

@ -1,9 +1,11 @@
// Protractor configuration file, see link for more information // Protractor configuration file, see link for more information
// https://github.com/angular/protractor/blob/master/lib/config.ts // https://github.com/angular/protractor/blob/master/lib/config.ts
const AlfrescoApi = require('@alfresco/js-api').AlfrescoApiCompatibility;
const path = require('path'); const path = require('path');
const { SpecReporter } = require('jasmine-spec-reporter'); const { SpecReporter } = require('jasmine-spec-reporter');
const CDP = require('chrome-remote-interface'); const CDP = require('chrome-remote-interface');
const afterLaunch = require('./e2e/e2e-config/hooks/after-launch');
const fs = require('fs'); const fs = require('fs');
require('dotenv').config(); require('dotenv').config();
@ -198,5 +200,6 @@ exports.config = {
.catch(err => { .catch(err => {
console.log(err); console.log(err);
}); });
} },
afterLaunch
}; };