UNPKG

@objectivity/angular-schematic-web-ci

Version:
108 lines 5.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.karma = void 0; const schematics_1 = require("@angular-devkit/schematics"); const dependences_1 = require("../dependences"); const core_1 = require("@angular-devkit/core"); const tasks_1 = require("@angular-devkit/schematics/tasks"); const schematics_utilities_1 = require("schematics-utilities"); const angular_schematic_utils_1 = require("@objectivity/angular-schematic-utils"); const angular_schematic_utils_2 = require("@objectivity/angular-schematic-utils"); function karma(options) { return (tree, _context) => { const karmaConfigurationContext = createKarmaConfigurationContext(tree, options); return schematics_1.chain([ createKarmaCiFile(tree, karmaConfigurationContext, options), addJUnitFolderToIgnore(options), updatePackageScripts(options), installPackages(options), createProtractorCiFile(tree, karmaConfigurationContext, options) ]); }; } exports.karma = karma; function updatePackageScripts(_options) { return (tree, _context) => { const json = new angular_schematic_utils_1.JSONFile(tree, 'package.json'); const existingScripts = json.get(['scripts']); const updatedScripts = Object.assign(Object.assign({}, existingScripts), { "install-puppeteer": "cd node_modules/puppeteer && npm run install" }); json.modify(['scripts'], updatedScripts); }; } function addJUnitFolderToIgnore(_options) { return (host, context) => { context.logger.info(`Updating .gitignore configuration`); const gitignorePath = '.gitignore'; try { const buffer = host.read(gitignorePath); if (buffer !== null) { let content = buffer.toString(); content = content.concat('\n', '# Unit tests results.', '\n', '/junit', '\n'); host.overwrite(gitignorePath, content); } } catch (_a) { } return host; }; } function installPackages(_options) { return (host, context) => { schematics_utilities_1.addPackageJsonDependency(host, { type: schematics_utilities_1.NodeDependencyType.Dev, version: dependences_1.karmaJunitReporterPkg.version, name: dependences_1.karmaJunitReporterPkg.pkg }); schematics_utilities_1.addPackageJsonDependency(host, { type: schematics_utilities_1.NodeDependencyType.Dev, version: dependences_1.puppeteerPkg.version, name: dependences_1.puppeteerPkg.pkg }); schematics_utilities_1.addPackageJsonDependency(host, { type: schematics_utilities_1.NodeDependencyType.Dev, version: dependences_1.jasmineReportersPkg.version, name: dependences_1.jasmineReportersPkg.pkg }); if (_options.skipInstall !== true) { context.addTask(new tasks_1.NodePackageInstallTask()); } return host; }; } function createProtractorCiFile(tree, karmaConfigurationContext, options) { const templateSource = schematics_1.apply(schematics_1.url('./files/e2e'), [ schematics_1.applyTemplates(Object.assign(Object.assign({}, options), { junitReporterOutputDir: karmaConfigurationContext.rootPath + '/../junit' })), schematics_1.move(karmaConfigurationContext.protractorConfigPath), angular_schematic_utils_1.overwriteIfExists(tree) ]); return schematics_1.chain([ schematics_1.mergeWith(templateSource) ]); } function createKarmaCiFile(tree, karmaConfigurationContext, options) { const templateSource = schematics_1.apply(schematics_1.url('./files/src'), [ schematics_1.applyTemplates(Object.assign(Object.assign({}, options), { junitReporterOutputDir: karmaConfigurationContext.rootPath + '/junit', coverageReporterOutputDir: karmaConfigurationContext.rootPath + '/coverage/' + options.project })), schematics_1.move(karmaConfigurationContext.karmaConfigPath), angular_schematic_utils_1.overwriteIfExists(tree) ]); return schematics_1.chain([ schematics_1.mergeWith(templateSource) ]); } function createKarmaConfigurationContext(host, options) { const workspace = schematics_utilities_1.getWorkspace(host); const projectName = options.project; const workspaceProject = angular_schematic_utils_2.getProjectFromWorkspace(workspace, projectName); const karmaPath = getProjectKarmaPath(workspaceProject); const protractorPath = getProjectProtractorPath(workspaceProject); return { karmaConfigPath: karmaPath, protractorConfigPath: protractorPath, rootPath: workspaceProject.root === '' ? '.' : workspaceProject.root.split('/').map(_ => '..').join('/') }; } function getProjectKarmaPath(project) { const testOptions = angular_schematic_utils_1.getProjectTargetOptions(project, 'test'); const karmaConfigFile = core_1.normalize(testOptions.karmaConfig); return karmaConfigFile.substring(0, karmaConfigFile.lastIndexOf("/")); } function getProjectProtractorPath(project) { const testOptions = angular_schematic_utils_1.getProjectTargetOptions(project, 'e2e'); const protractorConfigFile = core_1.normalize(testOptions.protractorConfig); return protractorConfigFile.substring(0, protractorConfigFile.lastIndexOf("/")); } //# sourceMappingURL=index.js.map