UNPKG

protractor-smartrunner

Version:

Protractor utility for keeping track of passed/failed tests between runs. Works together with protractor-retry.

54 lines (53 loc) 2.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SmartRunner = void 0; const smartrunner_results_1 = require("./smartrunner-results"); const smartrunner_reporter_1 = require("./smartrunner-reporter"); const logger_1 = require("protractor/built/logger"); const fs = require('fs-extra'); const LOGGER_ID = 'smartrunner'; const DEFAULT_OPTIONS = { outputDirectory: './.protractor-smartrunner', passedMessagePrefix: '🟢 previously passed:' }; class SmartRunner { constructor(options) { this.options = options; this.logger = new logger_1.Logger(LOGGER_ID); this.results = new smartrunner_results_1.SmartRunnerResults(this.options.outputDirectory, this.options.repoHash, this.logger); this.results.load(); this.setupJasmine(); } static apply(options) { return new SmartRunner(Object.assign(Object.assign({}, DEFAULT_OPTIONS), options)); } static withOptionalExclusions(filePath) { const logger = new logger_1.Logger(LOGGER_ID); const cliGrepped = process.argv.some((argument) => /^-g=/.test(argument) || /^--grep=/.test(argument)); if (!cliGrepped && fs.existsSync(filePath)) { const exclusions = Object.keys(require(filePath)); if (exclusions.length) { logger.info('🚫 Exclusion patterns: ', exclusions.join(', ')); return { grep: exclusions.join('|'), invertGrep: true }; } } return {}; } setupJasmine() { jasmine.getEnv().addReporter(new smartrunner_reporter_1.SmartRunnerReporter(this.results)); const oldSpecFilter = jasmine.getEnv().specFilter; jasmine.getEnv().specFilter = (spec) => { const testName = spec.getResult().description; const suiteName = spec.getFullName().replace(testName, '').trim(); const testPassedInPreviousRun = this.results.get(suiteName, testName); if (testPassedInPreviousRun.passed) { this.logger.info(`${this.options.passedMessagePrefix} ${suiteName} ${testName}`); } return !testPassedInPreviousRun.passed && oldSpecFilter(spec); }; } } exports.SmartRunner = SmartRunner;