UNPKG

skutter

Version:

Skutter: Opinionated BDD Browser based test framework

85 lines (84 loc) 5.39 kB
"use strict"; const path = require("path"); const Lazy = require("lazy.js"); const chalk = require("chalk"); const orchestrator_1 = require("./framework/orchestrator/orchestrator"); const node_module_finder_1 = require("./framework/services/node-module-finder"); const version_reader_1 = require("./framework/services/version-reader"); const logger_1 = require("./framework/services/logger"); const file_checker_1 = require("./framework/services/file-checker"); const feature_provider_1 = require("./framework/services/feature-provider"); const config_validator_1 = require("./framework/services/config-validator"); const config_reader_1 = require("./framework/services/config-reader"); const single_process_console_reporter_1 = require("./framework/reporters/single-process-console-reporter"); const exit_code_reporter_1 = require("./framework/reporters/exit-code-reporter"); const feature_info_provider_1 = require("./framework/services/feature-info-provider"); const multi_process_overview_reporter_1 = require("./framework/reporters/multi-process-overview-reporter"); const run_totals_reporter_1 = require("./framework/reporters/run-totals-reporter"); const run_failures_reporter_1 = require("./framework/reporters/run-failures-reporter"); const exit_codes_1 = require("./framework/exit-codes"); const run_errors_reporter_1 = require("./framework/reporters/run-errors-reporter"); const run_data_reporter_1 = require("./framework/reporters/run-data-reporter"); function run() { let logger = new logger_1.Logger(); let configReader = new config_reader_1.ConfigReader(logger); let skutterVersion = version_reader_1.default(); logger.log(`${chalk.white("Skutter")} ${chalk.green("v." + skutterVersion)}`); let configPath = process.cwd() + "\\skutter.config.js"; let config = null; try { config = configReader.read(configPath); } catch (exception) { logger.log(`Unable to load configuration from path '${configPath}'.`); logger.log(`Load exception: ${exception.message}`); process.exit(exit_codes_1.ExitCodes.SkutterInitialisationFailure); } let configErrors = config_validator_1.ConfigValidator.validate(config); if (configErrors && configErrors.length > 0) { console.log("Following errors detected with configuration:"); Lazy(configErrors).each((error) => { console.log(error); }); process.exit(exit_codes_1.ExitCodes.SkutterInitialisationFailure); } let protractorConfigPath = process.cwd() + "\\protractor.config.js"; if (!file_checker_1.FileChecker.exists(protractorConfigPath)) { logger.log(`Expected config to exist at '${configPath}' but it was not found or access was denied.`); process.exit(exit_codes_1.ExitCodes.SkutterInitialisationFailure); } let protractorBootstrapFullPath = __dirname + "\\framework\\executor\\protractor-bootstrap.js"; if (!file_checker_1.FileChecker.exists(protractorBootstrapFullPath)) { logger.log(`Expected protractor-bootstrap.js to exist at '${protractorBootstrapFullPath}' but it was not found or access was denied.`); process.exit(exit_codes_1.ExitCodes.SkutterInitialisationFailure); } config.orchestrator.executor.fullLibraryPaths = Lazy(config.libraryPaths).map((libraryPath) => { return process.cwd() + "/" + libraryPath; }).toArray(); let seleniumServerJar = node_module_finder_1.NodeModuleFinder.find("selenium-server-standalone-jar/jar/selenium-server-standalone-2.53.1.jar"); let chromeDriverExe = node_module_finder_1.NodeModuleFinder.find("chromedriver/lib/chromedriver/chromedriver.exe"); let cwdToScriptRelativePrefix = path.relative(process.cwd(), __dirname); let frameworkSpecRunner = cwdToScriptRelativePrefix + "/framework/executor/protractor-bootstrap.js"; if (!file_checker_1.FileChecker.exists(frameworkSpecRunner)) { logger.log(`Protractor bootstrap script '${frameworkSpecRunner}' was not found or access was denied.`); process.exit(exit_codes_1.ExitCodes.SkutterInitialisationFailure); } config.orchestrator.executor.protractor.configPath = protractorConfigPath; config.orchestrator.executor.protractor.specs = protractorBootstrapFullPath; config.orchestrator.executor.protractor.chromeDriver = chromeDriverExe; config.orchestrator.executor.protractor.seleniumServerJar = seleniumServerJar; let features = feature_provider_1.FeatureProvider.load(config.featuresRootPath); let featureInfoProvider = new feature_info_provider_1.FeatureInfoProvider(features); let reporters = []; reporters.push(new multi_process_overview_reporter_1.MultiProcessOverviewReporter(featureInfoProvider)); reporters.push(new single_process_console_reporter_1.SingleProcessConsoleReporter(featureInfoProvider)); reporters.push(new run_failures_reporter_1.RunFailuresReporter()); reporters.push(new run_errors_reporter_1.RunErrorsReporter()); reporters.push(new run_totals_reporter_1.RunTotalsReporter()); reporters.push(new run_data_reporter_1.RunDataReporter(config.outputRootPath)); reporters.push(new exit_code_reporter_1.ExitCodeReporter()); let orchestrator = new orchestrator_1.Orchestrator(config.orchestrator); orchestrator.start(features, reporters); } Object.defineProperty(exports, "__esModule", { value: true }); exports.default = run;