Implement smart runner in ADF (#5300)

This commit is contained in:
Eugenio Romano 2019-12-02 14:59:16 +00:00 committed by GitHub
parent b2ca28d3fd
commit fe802f29c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 106 additions and 151 deletions

View File

@ -46,6 +46,7 @@ addons:
before_script:
- "sudo chown root /opt/google/chrome/chrome-sandbox"
- "sudo chmod 4755 /opt/google/chrome/chrome-sandbox"
- export GIT_HASH=`git rev-parse HEAD`
before_install:
- export CHROME_BIN=chromium-browser

View File

@ -1,80 +0,0 @@
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
exports.init = init;
exports.getSpecReferences = getSpecReferences;
exports.disableSpecs = disableSpecs;
var wrap = require('lodash.wrap');
var refs = undefined;
function init() {
refs = getSpecReferences();
return {
specDone: function specDone(result) {
if (result.status === 'failed') {
disableSpecs(refs);
}
}
};
}
/**
* Gather references to all jasmine specs and suites, through any (currently hacky) means possible.
*
* @return {Object} An object with `specs` and `suites` properties, arrays of respective types.
*/
function getSpecReferences() {
var specs = [];
var suites = [];
// Use specFilter to gather references to all specs.
jasmine.getEnv().specFilter = function (spec) {
specs.push(spec);
return true;
};
// Wrap jasmine's describe function to gather references to all suites.
jasmine.getEnv().describe = wrap(jasmine.getEnv().describe, function (describe) {
for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
var suite = describe.apply(null, args);
suites.push(suite);
return suite;
});
return {
specs: specs,
suites: suites
};
}
/**
* Hacky workaround to facilitate "fail fast". Disable all specs (basically `xit`), then
* remove references to all before/after functions, else they'll still run. Disabling the
* suites themselves does not appear to have an effect.
*/
function disableSpecs() {
if (!refs) {
throw new Error('jasmine-fail-fast: Must call init() before calling disableSpecs()!');
}
refs.specs.forEach(function (spec) {
return spec.disable();
});
refs.suites.forEach(function (suite) {
suite.beforeFns = [];
suite.afterFns = [];
suite.beforeAllFns = [];
suite.afterAllFns = [];
});
}

163
package-lock.json generated
View File

@ -1,118 +1,88 @@
{
"name": "alfresco-ng2-components",
"version": "3.5.0",
"version": "3.6.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@alfresco/adf-cli": {
"version": "3.6.0-70fd3a1c602128ed45d195c424d45b366b8b50ce",
"resolved": "https://registry.npmjs.org/@alfresco/adf-cli/-/adf-cli-3.6.0-70fd3a1c602128ed45d195c424d45b366b8b50ce.tgz",
"integrity": "sha512-RPvL+37PPf3ZArB7XYQ/VhbCKuw+hp+t5NDbuxe56RENsB2RH+T0V3wmWhFsKsJMLcYvW0hf6kI2kUauAqHYDA==",
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/@alfresco/adf-cli/-/adf-cli-3.6.0.tgz",
"integrity": "sha512-HewDSVxz+BGqSTlooOj2jgnX5g5lNSXwsI8K+eqr55s12ku7AeX0JRFxrvVz20v/2efGMnwHHXGfF8tbdCChnA==",
"requires": {
"@angular-devkit/core": "^7.2.15",
"commander": "^2.15.1",
"commander": "^4.0.0",
"ejs": "^2.6.1",
"license-checker": "^25.0.1",
"npm-registry-fetch": "^3.9.0",
"rxjs": ">=6.2.2",
"shelljs": "^0.8.3",
"spdx-license-list": "^5.0.0"
},
"dependencies": {
"commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
}
}
},
"@alfresco/adf-content-services": {
"version": "3.6.0-70fd3a1c602128ed45d195c424d45b366b8b50ce",
"resolved": "https://registry.npmjs.org/@alfresco/adf-content-services/-/adf-content-services-3.6.0-70fd3a1c602128ed45d195c424d45b366b8b50ce.tgz",
"integrity": "sha512-3q/BkfA1bdpmDpoO2jknqECauGuPMNkEtlho7M0pm0a6xD6vxAoTgpZcDAhF+aJ2HkxfATwS8JxCf5/UEJn9ZA==",
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/@alfresco/adf-content-services/-/adf-content-services-3.6.0.tgz",
"integrity": "sha512-npEPJ4eAIalIWd4lmTltYiS3XyLdagzfqDUfC9oHwFz8QfX7y8mUtaSDBVYqTGRm3lZ7vElczfsbuKlknLaxog==",
"requires": {
"tslib": "^1.9.0"
}
},
"@alfresco/adf-core": {
"version": "3.6.0-70fd3a1c602128ed45d195c424d45b366b8b50ce",
"resolved": "https://registry.npmjs.org/@alfresco/adf-core/-/adf-core-3.6.0-70fd3a1c602128ed45d195c424d45b366b8b50ce.tgz",
"integrity": "sha512-WqN+mBPAY2XafQhkIS1/iN82zHXRyHP5Rw8YaGgiOfigOsIMuS8+9NgfzmoW12AhQg6hjWdJumAS8JHK9Ex5+Q==",
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/@alfresco/adf-core/-/adf-core-3.6.0.tgz",
"integrity": "sha512-WlYvxuBpJ6sug5iPfJprdWDZcDtJ7Y6/SFzEchEhan30O4Efb/MgWY+3s1nCsIwX0eYhyv8pj9NHQjHNjPotLw==",
"requires": {
"tslib": "^1.9.0"
}
},
"@alfresco/adf-extensions": {
"version": "3.6.0-70fd3a1c602128ed45d195c424d45b366b8b50ce",
"resolved": "https://registry.npmjs.org/@alfresco/adf-extensions/-/adf-extensions-3.6.0-70fd3a1c602128ed45d195c424d45b366b8b50ce.tgz",
"integrity": "sha512-dKGzStFerojXpmK+bgxbZjlz7RO689xI++MDPIAolTbHqpQNfm9xhQSobJXt2nbT3hoiQLmaVTb/fJDDKF292Q==",
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/@alfresco/adf-extensions/-/adf-extensions-3.6.0.tgz",
"integrity": "sha512-/B2+TKrjQswXsTkkuU7qgK9Ud8Wn02bZRgRuKZiPwUxIo8s4wSMZpgWkfrIw58WDNDiL/MDgDeNiCrpxxrzdow==",
"requires": {
"tslib": "^1.9.0"
}
},
"@alfresco/adf-insights": {
"version": "3.6.0-70fd3a1c602128ed45d195c424d45b366b8b50ce",
"resolved": "https://registry.npmjs.org/@alfresco/adf-insights/-/adf-insights-3.6.0-70fd3a1c602128ed45d195c424d45b366b8b50ce.tgz",
"integrity": "sha512-Ndpt0s9d0zZTEtgHUZDG7oD+VwdXmzf4DxFNeX+HsN15NRZruSffal3li56/jC0iB0u/CAeikY1DdBT1J/Lmgg==",
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/@alfresco/adf-insights/-/adf-insights-3.6.0.tgz",
"integrity": "sha512-MnrunA1KpM+B5NBRhY1yxcm/51l331JhEn5+5F3UEw4X+MjYLpAdgwTmYLdmO5LHkG76NjLiLDLlzJxMV7ITjA==",
"requires": {
"tslib": "^1.9.0"
}
},
"@alfresco/adf-process-services": {
"version": "3.6.0-70fd3a1c602128ed45d195c424d45b366b8b50ce",
"resolved": "https://registry.npmjs.org/@alfresco/adf-process-services/-/adf-process-services-3.6.0-70fd3a1c602128ed45d195c424d45b366b8b50ce.tgz",
"integrity": "sha512-Tr4Da5vK1K+G/sLuvd58HQ1Zp+KJaEfj8l04YedEi1AmGOtviQ2RUmgYSrYK+iyta2GjKWyF7EDMbIV1UFiiXg==",
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/@alfresco/adf-process-services/-/adf-process-services-3.6.0.tgz",
"integrity": "sha512-Q57YvCpWlLmcKd4Mjrd9oRqSEImO/lDDDMxT9JpIueGq9xgsYOApN6C6fKxzy/+VFYiFEuBNCICmNkK51wUz/A==",
"requires": {
"tslib": "^1.9.0"
}
},
"@alfresco/adf-process-services-cloud": {
"version": "3.6.0-70fd3a1c602128ed45d195c424d45b366b8b50ce",
"resolved": "https://registry.npmjs.org/@alfresco/adf-process-services-cloud/-/adf-process-services-cloud-3.6.0-70fd3a1c602128ed45d195c424d45b366b8b50ce.tgz",
"integrity": "sha512-hfVVtb+L/07ARS3ymcyy9sAUrlUdtzUhwW2IwmavISidAKE+wXPCrJYGCxGHbuMSea9RReagkzHrpeuxOIJSSw==",
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/@alfresco/adf-process-services-cloud/-/adf-process-services-cloud-3.6.0.tgz",
"integrity": "sha512-AZJMrWxH0ldT5QBTl/5eObQX94j7ydJvaWxrXs0p9WDZdzl5A7VTds7zYueveQV2lDSO3cBo6wq2/lgrhZPnJw==",
"requires": {
"tslib": "^1.9.0"
}
},
"@alfresco/adf-testing": {
"version": "3.6.0-70fd3a1c602128ed45d195c424d45b366b8b50ce",
"resolved": "https://registry.npmjs.org/@alfresco/adf-testing/-/adf-testing-3.6.0-70fd3a1c602128ed45d195c424d45b366b8b50ce.tgz",
"integrity": "sha512-vVWtQRo5LcvxqDV12XFH325PnZQED9xywK040J263wkqjd0o/2Dwgd1u+sQNazIv+anC8VSnxtCzW5eVAgJ/Ww==",
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/@alfresco/adf-testing/-/adf-testing-3.6.0.tgz",
"integrity": "sha512-9m/EZCi2sQbxbl1HAmgW8ZKfaLPLOhhHOaklToWcJLmyWeREmln10Y5jemUvU8FfBsQ0C+5lTZ35J/Q46XKFpA==",
"requires": {
"tslib": "^1.9.0"
}
},
"@alfresco/js-api": {
"version": "3.6.0-5085d994f7aa1713c03ecdbc320df32423e4b4f9",
"resolved": "https://registry.npmjs.org/@alfresco/js-api/-/js-api-3.6.0-5085d994f7aa1713c03ecdbc320df32423e4b4f9.tgz",
"integrity": "sha512-477wYs1Z1H5c3LystqIw7R9H4AgpP2gumEw6uAWUtUeA2NDWu4DbTeIssX+V3WVj+odwIKy+OVYfmAjXi4sF5g==",
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/@alfresco/js-api/-/js-api-3.6.0.tgz",
"integrity": "sha512-aXc4twC3jDTZqyyhrlQX5DvyuSAnsfmZ7LT03itm/II9EqFEHcpXGWzyOA2VyZSyfuYz5e13KuM6v1VqBZxCwQ==",
"requires": {
"@alfresco/adf-cli": "^3.6.0-d659073389847ab312623736ec171791c10f6534",
"event-emitter": "^0.3.5",
"minimatch": "3.0.4",
"superagent": "^3.8.2"
},
"dependencies": {
"@alfresco/adf-cli": {
"version": "3.6.0-f731988ca6c6e691f24647dd3a26ce01bfeffc23",
"resolved": "https://registry.npmjs.org/@alfresco/adf-cli/-/adf-cli-3.6.0-f731988ca6c6e691f24647dd3a26ce01bfeffc23.tgz",
"integrity": "sha512-IXTLRXyBh1FL5zhzZucUWJ8FS1NMCigAm+wH/S0cZLewAlXoUkrqUUGtCoQkH4/b1Et5nEbWbSGUvkqB6VUxfg==",
"requires": {
"@angular-devkit/core": "^7.2.15",
"commander": "^2.15.1",
"ejs": "^2.6.1",
"license-checker": "^25.0.1",
"npm-registry-fetch": "^3.9.0",
"rxjs": ">=6.2.2",
"shelljs": "^0.8.3",
"spdx-license-list": "^5.0.0"
}
},
"commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
}
}
},
"@angular-devkit/architect": {
@ -4176,8 +4146,7 @@
"commander": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-4.0.0.tgz",
"integrity": "sha512-SEa2abMBTZuEjLVYpNrAFoRgxPwG4rXP3+SGY6CM/HZGeDzIA7Pzp+7H3AHDukKEpyy2SoSGGPShKqqfH9T9AQ==",
"dev": true
"integrity": "sha512-SEa2abMBTZuEjLVYpNrAFoRgxPwG4rXP3+SGY6CM/HZGeDzIA7Pzp+7H3AHDukKEpyy2SoSGGPShKqqfH9T9AQ=="
},
"comment-json": {
"version": "1.1.3",
@ -5755,12 +5724,12 @@
}
},
"es5-ext": {
"version": "0.10.52",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.52.tgz",
"integrity": "sha512-bWCbE9fbpYQY4CU6hJbJ1vSz70EClMlDgJ7BmwI+zEJhxrwjesZRPglGJlsZhu0334U3hI+gaspwksH9IGD6ag==",
"version": "0.10.53",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz",
"integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==",
"requires": {
"es6-iterator": "~2.0.3",
"es6-symbol": "~3.1.2",
"es6-symbol": "~3.1.3",
"next-tick": "~1.0.0"
}
},
@ -6108,9 +6077,9 @@
}
},
"ext": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/ext/-/ext-1.1.2.tgz",
"integrity": "sha512-/KLjJdTNyDepCihrk4HQt57nAE1IRCEo5jUt+WgWGCr1oARhibDvmI2DMcSNWood1T9AUWwq+jaV1wvRqaXfnA==",
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz",
"integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==",
"requires": {
"type": "^2.0.0"
},
@ -6379,6 +6348,23 @@
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
},
"filename-reserved-regex": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz",
"integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=",
"dev": true
},
"filenamify": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.1.0.tgz",
"integrity": "sha512-KQV/uJDI9VQgN7sHH1Zbk6+42cD6mnQ2HONzkXUfPJ+K2FC8GZ1dpewbbHw0Sz8Tf5k3EVdHVayM4DoAwWlmtg==",
"dev": true,
"requires": {
"filename-reserved-regex": "^2.0.0",
"strip-outer": "^1.0.1",
"trim-repeated": "^1.0.0"
}
},
"fileset": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz",
@ -13440,6 +13426,29 @@
}
}
},
"protractor-smartrunner": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/protractor-smartrunner/-/protractor-smartrunner-0.1.1.tgz",
"integrity": "sha512-t5L6AM2mRnpOEkg3Ib0C5pLGgWu2rOzjutF/UAEevBgwwil5M1m/E6bv/uUn+kAyImJJCCI000ssrz7JcVP/dw==",
"dev": true,
"requires": {
"filenamify": "4.1.0",
"fs-extra": "8.1.0"
},
"dependencies": {
"fs-extra": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
"integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
"dev": true,
"requires": {
"graceful-fs": "^4.2.0",
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
}
}
}
},
"proxy-addr": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
@ -16355,6 +16364,15 @@
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
},
"strip-outer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
"integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==",
"dev": true,
"requires": {
"escape-string-regexp": "^1.0.2"
}
},
"style-loader": {
"version": "0.23.1",
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz",
@ -17414,6 +17432,15 @@
"integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
"dev": true
},
"trim-repeated": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
"integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=",
"dev": true,
"requires": {
"escape-string-regexp": "^1.0.2"
}
},
"trim-right": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",

View File

@ -184,6 +184,7 @@
"protractor-browser-logs": "1.0.456",
"protractor-html-reporter-2": "1.0.4",
"protractor-retry": "^1.2.9",
"protractor-smartrunner": "^0.1.1",
"puppeteer": "1.17.0",
"raw-loader": "0.5.1",
"remark": "^9.0.0",

View File

@ -5,13 +5,14 @@ const tsConfig = require('./e2e/tsconfig.e2e.json');
const AlfrescoApi = require('@alfresco/js-api').AlfrescoApiCompatibility;
const TestConfig = require('./e2e/test.config');
const RESOURCES = require('./e2e/util/resources');
const SmartRunner = require('protractor-smartrunner');
const resolve = require('path').resolve;
require('ts-node').register({
project: './lib/testing/tsconfig.lib.json'
});
const ACTIVITI_CLOUD_APPS = require('./lib/testing').ACTIVITI_CLOUD_APPS;
const failFast = require('./e2e/protractor/fail-fast');
const { beforeAllRewrite, afterAllRewrite, beforeEachAllRewrite, afterEachAllRewrite } = require('./e2e/protractor/override-jasmine');
const { uploadScreenshot, saveReport, cleanReportFolder } = require('./e2e/protractor/save-remote');
const argv = require('yargs').argv;
@ -124,8 +125,10 @@ exports.config = {
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 120000,
print: function () {
}
print: () => {},
...SmartRunner.withOptionalExclusions(
resolve(__dirname, 'protractor.excludes.json')
)
},
/**

3
protractor.excludes.json Normal file
View File

@ -0,0 +1,3 @@
{
"C260249" : "REPO-4772 ACS 6.2"
}