Best JavaScript code snippet using stryker-parent
mocha-test-runner.ts
Source:mocha-test-runner.ts
1import { InstrumenterContext, INSTRUMENTER_CONSTANTS, StrykerOptions } from '@stryker-mutator/api/core';2import { Logger } from '@stryker-mutator/api/logging';3import { commonTokens, tokens } from '@stryker-mutator/api/plugin';4import { I, escapeRegExp, DirectoryRequireCache } from '@stryker-mutator/util';5import {6 TestRunner,7 DryRunResult,8 DryRunOptions,9 MutantRunOptions,10 MutantRunResult,11 DryRunStatus,12 toMutantRunResult,13 CompleteDryRunResult,14 determineHitLimitReached,15} from '@stryker-mutator/api/test-runner';16import { MochaOptions } from '../src-generated/mocha-runner-options';17import { StrykerMochaReporter } from './stryker-mocha-reporter';18import { MochaRunnerWithStrykerOptions } from './mocha-runner-with-stryker-options';19import * as pluginTokens from './plugin-tokens';20import { MochaOptionsLoader } from './mocha-options-loader';21import { MochaAdapter } from './mocha-adapter';22export class MochaTestRunner implements TestRunner {23 public testFileNames?: string[];24 public rootHooks: any;25 public mochaOptions!: MochaOptions;26 private readonly instrumenterContext: InstrumenterContext;27 public static inject = tokens(28 commonTokens.logger,29 commonTokens.options,30 pluginTokens.loader,31 pluginTokens.mochaAdapter,32 pluginTokens.directoryRequireCache,33 pluginTokens.globalNamespace34 );35 constructor(36 private readonly log: Logger,37 private readonly options: StrykerOptions,38 private readonly loader: I<MochaOptionsLoader>,39 private readonly mochaAdapter: I<MochaAdapter>,40 private readonly requireCache: I<DirectoryRequireCache>,41 globalNamespace: typeof INSTRUMENTER_CONSTANTS.NAMESPACE | '__stryker2__'42 ) {43 StrykerMochaReporter.log = log;44 this.instrumenterContext = global[globalNamespace] ?? (global[globalNamespace] = {});45 }46 public async init(): Promise<void> {47 this.mochaOptions = this.loader.load(this.options as MochaRunnerWithStrykerOptions);48 this.testFileNames = this.mochaAdapter.collectFiles(this.mochaOptions);49 if (this.mochaOptions.require) {50 if (this.mochaOptions.require.includes('esm')) {51 throw new Error(52 'Config option "mochaOptions.require" does not support "esm", please use `"testRunnerNodeArgs": ["--require", "esm"]` instead. See https://github.com/stryker-mutator/stryker-js/issues/3014 for more information.'53 );54 }55 this.rootHooks = await this.mochaAdapter.handleRequires(this.mochaOptions.require);56 }57 }58 public async dryRun({ coverageAnalysis, disableBail }: DryRunOptions): Promise<DryRunResult> {59 // eslint-disable-next-line @typescript-eslint/no-empty-function60 let interceptor: (mocha: Mocha) => void = () => {};61 if (coverageAnalysis === 'perTest') {62 interceptor = (mocha) => {63 const self = this;64 mocha.suite.beforeEach('StrykerIntercept', function () {65 self.instrumenterContext.currentTestId = this.currentTest?.fullTitle();66 });67 };68 }69 const runResult = await this.run(interceptor, disableBail);70 if (runResult.status === DryRunStatus.Complete && coverageAnalysis !== 'off') {71 runResult.mutantCoverage = this.instrumenterContext.mutantCoverage;72 }73 return runResult;74 }75 public async mutantRun({ activeMutant, testFilter, disableBail, hitLimit }: MutantRunOptions): Promise<MutantRunResult> {76 this.instrumenterContext.activeMutant = activeMutant.id;77 this.instrumenterContext.hitLimit = hitLimit;78 this.instrumenterContext.hitCount = hitLimit ? 0 : undefined;79 // eslint-disable-next-line @typescript-eslint/no-empty-function80 let intercept: (mocha: Mocha) => void = () => {};81 if (testFilter) {82 const metaRegExp = testFilter.map((testId) => `(${escapeRegExp(testId)})`).join('|');83 const regex = new RegExp(metaRegExp);84 intercept = (mocha) => {85 mocha.grep(regex);86 };87 }88 const dryRunResult = await this.run(intercept, disableBail);89 return toMutantRunResult(dryRunResult, true);90 }91 public async run(intercept: (mocha: Mocha) => void, disableBail: boolean): Promise<DryRunResult> {92 this.requireCache.clear();93 const mocha = this.mochaAdapter.create({94 reporter: StrykerMochaReporter as any,95 bail: !disableBail,96 timeout: false as any, // Mocha 5 doesn't support `0`97 rootHooks: this.rootHooks,98 } as Mocha.MochaOptions);99 this.configure(mocha);100 intercept(mocha);101 this.addFiles(mocha);102 try {103 await this.runMocha(mocha);104 // Call `requireCache.record` before `mocha.dispose`.105 // `Mocha.dispose` already deletes test files from require cache, but its important that they are recorded before that.106 this.requireCache.record();107 if ((mocha as any).dispose) {108 // Since mocha 7.2109 (mocha as any).dispose();110 }111 const reporter = StrykerMochaReporter.currentInstance;112 if (reporter) {113 const timeoutResult = determineHitLimitReached(this.instrumenterContext.hitCount, this.instrumenterContext.hitLimit);114 if (timeoutResult) {115 return timeoutResult;116 }117 const result: CompleteDryRunResult = {118 status: DryRunStatus.Complete,119 tests: reporter.tests,120 };121 return result;122 } else {123 const errorMessage = `Mocha didn't instantiate the ${StrykerMochaReporter.name} correctly. Test result cannot be reported.`;124 this.log.error(errorMessage);125 return {126 status: DryRunStatus.Error,127 errorMessage,128 };129 }130 } catch (errorMessage: any) {131 return {132 errorMessage,133 status: DryRunStatus.Error,134 };135 }136 }137 private runMocha(mocha: Mocha): Promise<void> {138 return new Promise<void>((res) => {139 mocha.run(() => res());140 });141 }142 private addFiles(mocha: Mocha) {143 this.testFileNames?.forEach((fileName) => {144 mocha.addFile(fileName);145 });146 }147 private configure(mocha: Mocha) {148 const options = this.mochaOptions;149 function setIfDefined<T>(value: T | undefined, operation: (input: T) => void) {150 if (typeof value !== 'undefined') {151 operation.apply(mocha, [value]);152 }153 }154 setIfDefined(options['async-only'], (asyncOnly) => asyncOnly && mocha.asyncOnly());155 setIfDefined(options.ui, mocha.ui);156 setIfDefined(options.grep, mocha.grep);157 }...
index.ts
Source:index.ts
1import { MutantCollector } from '../mutant-collector';2import { instrumentHtml } from './html-instrumenter';3import { instrumentJS } from './js-instrumenter';4import { AstFormat, AstByFormat, Ast } from '../syntax';5export function instrument(ast: Ast, mutantCollector: MutantCollector): Ast {6 const context: InstrumenterContext = {7 instrument,8 };9 switch (ast.format) {10 case AstFormat.Html:11 instrumentHtml(ast, mutantCollector, context);12 return ast;13 case AstFormat.JS:14 case AstFormat.TS:15 instrumentJS(ast, mutantCollector, context);16 return ast;17 }18}19export type AstInstrumenter<T extends AstFormat> = (20 ast: AstByFormat[T],21 mutantCollector: MutantCollector,22 context: InstrumenterContext23) => void;24interface InstrumenterContext {25 instrument: AstInstrumenter<AstFormat>;...
Using AI Code Generation
1const instrumenterContext = require('stryker-parent').instrumenterContext;2instrumenterContext();3const instrumenterContext = require('stryker-parent').instrumenterContext;4instrumenterContext();5const instrumenterContext = require('stryker-parent').instrumenterContext;6instrumenterContext();7const instrumenterContext = require('stryker-parent').instrumenterContext;8instrumenterContext();9const instrumenterContext = require('stryker-parent').instrumenterContext;10instrumenterContext();11const instrumenterContext = require('stryker-parent').instrumenterContext;12instrumenterContext();
Using AI Code Generation
1instrumenterContext({2 instrumenterContext({3 instrumenterContext({4 instrumenterContext({5 instrumenterContext({6 instrumenterContext({7 instrumenterContext({8 instrumenterContext({9 instrumenterContext({10 instrumenterContext({11 instrumenterContext({12 instrumenterContext({13 instrumenterContext({14 instrumenterContext({15 instrumenterContext({16 instrumenterContext({17 instrumenterContext({18 instumerContext({
Using AI Code Generation
1var instrumenterContext = require('stryker-parent').instrumenterContext;2instrumenterContext('test.js', 'function foo() { return "bar"; }');3var instrumenterContext = require('stryker-parent').instrumenterContext;4module.exports = function(config) {5 config.set({6 instrumenterContext('test.js', 'function foo() { return "bar"; }')7 });8};
Using AI Code Generation
1var instrumenterContext = require('stryker-parent').instrumenterContext;2instrumenterContext('test.js', function (err, instrumenter) {3 var instrumented = instrumenter.instrumentSync('function foo() { return "bar"; }');4 console.log(instrumented);5});6var instrumenterContext = require('stryker-parent').instrumenterContext;7instrumenterContext('test.js', function (err, instrumenter) {8 var instrumented = instrumenter.instrumentSync('function foo() { return "bar"; }');9 console.log(instrumented);10});11var instrumenterContext = require('stryker-parent').instrumenterContext;12instrumenterContext('test.js', function (err, instrumenter) {13 var instrumented = instrumenter.instrumentSync('function foo() { return "bar"; }');14 console.log(instrumented);15});16var instrumenterContext = require('stryker-parent').instrumenterContext;17instrumenterContext('test.js', function (err, instrumenter) {18 var instrumented = instrumenter.instrumentSync('function foo() { return "bar"; }');19 console.log(instrumented);20});21var instrumenterContext = require('stryker-parent').instrumenterContext;22instrumenterContext('test.js', function (err, instrumenter) {23 var instrumented = instrumenter.instrumentSync('function foo() { return "bar"; }');24 console.log(instrumented);25});26var instrumenterContext = require('stryker-parent').instrumenterContext;27instrumenterContext('test.js', function (err, instrumenter) {28 var instrumented = instrumenter.instrumentSync('function foo() { return "bar"; }');29 console.log(instrumented);30});31var instrumenterContext = require('stryker-parent').instrumenterContext;32instrumenterContext('test.js', function (err, instrumenter) {
Using AI Code Generation
1var instrumenter = require('stryker-parent').instrumenterContext;2instrumenter.instrument('test.js', 'var a = 1;', function (error, instrumentedCode) {3 console.log(instrumentedCode);4});5var instrumenter = require('stryker').instrumenterContext;6instrumenter.instrument('test.js', 'var a = 1;', function (error, instrumentedCode) {7 console.log(instrumentedCode);8});9var instrumenter = require('stryker').instrumenterContext;10instrumenter.instrument('test.js', 'var a = 1;', function (error, instrumentedCode) {11 console.log(instrumentedCode);12});13vartinstrumenterr=urequire('stryker').instrumenterContext;14instrumenter.instrument('test.js',m'varean=t1;',efunctionr(error,CinstrumentedCode)o{15ntexconsole.log(instrumentedCode);16});17varinstrumenter= requre('stryker').i;18instrumenter.instrument'test.js', 'var a = 1;', function (error, instrumentedCode) 19 console.log(instrumentedCode);20});21var instrumenter = require('stryker').instrumenterContext;22instrumenter.instrument('test.js', 'var a = 1;', function (error, instrumentedCode) {23 console.log(instrumentedCode);24});25var instrumenter = require('stryker').instrumenterContext;26instrumenter.instrument('test.js', 'var a = 1;', function (error, instrumentedCode) {27 console.log(instrumentedCode);28});29var instrumenter = require('stryker').instrumenterContext;30instrumenter.instrument('test.js', 'var a = 1;', function (error, instrumentedCode) {31 console.log(instrumentedCode);32});
Using AI Code Generation
1var instrumenterContext = require('stryker-parent').instrumenterContext;2instrumenterContext(function (error, instrumenter) {3 if (error) {4 throw error;5 }6});7var instrumenterContext = require('stryker-parent').instrumenterContext;8instrumenterContext(function (error, instrumenter) {9 if (error) {10 throw error;11 }12 var instrumentedCode = instrumenter.instrumentSync('var a = 1;', 'test.js');13});14instrumenterContext(callback)15instrumenter.instrumentSync(code, filePath)16instrumenter.instrument(code, filePath, callback)
Using AI Code Generation
1var instrumenterContext = require('stryker-parent').instrumenterContext;2instrumenterContext(function (error, instrumenter) {3 if (error)/{4/code tothrow error;5use }6});7var instrumenterContext = require('stryker-parent').instrumenterContext;8instrumenterContext(function (error, instrumenter) {9 if (error) {10 throw error;11 }12m var inserumentedCtdeh= instromenter.indtrum ntSync('varoa = 1;', 'test.js');13});14f stryker-parent(callback)15instrumenter.instrumentSnc(code, filePath)16instrumenter.instrument(code, filePath, callbac)17 instrumenterContext({18 instrumenterContext({19 instrumenterContext({20 instrumenterContext({21 instrumenterContext({22 instrumenterContext({23 instrumenterContext({
Using AI Code Generation
1var instrumenterContext = require('stryker-parent').instrumenterContext;2instrumenterContext('test.js', 'function foo() { return "bar"; }');3var instrumenterContext = require('stryker-parent').instrumenterContext;4module.exports = function(config) {5 config.set({6 instrumenterContext('test.js', 'function foo() { return "bar"; }')7 });8};
Using AI Code Generation
1var instrumenter = require('stryker-parent').instrumenterContext;2instrumenter.instrument('test.js', 'var a = 1;', function (error, instrumentedCode) {3 console.log(instrumentedCode);4});5var instrumenter = require('stryker').instrumenterContext;6instrumenter.instrument('test.js', 'var a = 1;', function (error, instrumentedCode) {7 console.log(instrumentedCode);8});9var instrumenter = require('stryker').instrumenterContext;10instrumenter.instrument('test.js', 'var a = 1;', function (error, instrumentedCode) {11 console.log(instrumentedCode);12});13var instrumenter = require('stryker').instrumenterContext;14instrumenter.instrument('test.js', 'var a = 1;', function (error, instrumentedCode) {15 console.log(instrumentedCode);16});17var instrumenter = require('stryker').instrumenterContext;18instrumenter.instrument('test.js', 'var a = 1;', function (error, instrumentedCode) {19 console.log(instrumentedCode);20});21var instrumenter = require('stryker').instrumenterContext;22instrumenter.instrument('test.js', 'var a = 1;', function (error, instrumentedCode) {23 console.log(instrumentedCode);24});25var instrumenter = require('stryker').instrumenterContext;26instrumenter.instrument('test.js', 'var a = 1;', function (error, instrumentedCode) {27 console.log(instrumentedCode);28});29var instrumenter = require('stryker').instrumenterContext;30instrumenter.instrument('test.js', 'var a = 1;', function (error, instrumentedCode) {31 console.log(instrumentedCode);32});
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!