Closed sushant98905 closed 5 years ago
Take a look at https://facebook.github.io/create-react-app/docs/running-tests#coverage-reporting
You just have to run
npm test -- --coverage
...to get react's built-in coverage.
Take a look at https://facebook.github.io/create-react-app/docs/running-tests#coverage-reporting
You just have to run
npm test -- --coverage
...to get react's built-in coverage.
Thanks for your reply. The solution provided in the mentioned framework (Jest) is to create JUnit Cases and we intend to evaluate the code-coverage of our application by accessing it the way any layman might do i.e. by running our functional tests written in Selenium for traversing the application, thats why I'm inclined towards using JSCover.
Thanks for the wonderful API, for evaluating the JavaScript code coverage. I'm trying to evaluate a JS code coverage of my application which has react js and angular js. And I'm having trouble in instrumenting the the React js files, using local-storage option : java -jar JSCover-all.jar -fs --local-storage sourceCodeDir instrumentedSrcCodeDir
To help you in reproducing the case ,here is the sample usecase: A react js application (Calculator) can be downloaded from - https://github.com/ahfarmer/calculator
Now lets try instrumenting this application, using following commands: java -jar JSCover-all.jar -fs --local-storage userDir/calculator-master/calculator-master/src userDir/calculator-master/calculator-master/src_inst
Following stack is displayed on the console while performing the instrumentation of (App.js) :
Nov 09, 2018 1:07:10 PM jscover.Main runMain INFO: Args: -fs,--local-storage,<UserDir>/calculator-master/calculator-master/src,<UserDir>/calculator-master/calculator-master/src_inst 20181109 13:07:10.668,11,SEVERE,"'(' expected, sourceName: /component/App.js, line: 17 lineOffset: 14",jscover.instrument.SourceProcessor, 20181109 13:07:10.668,14,SEVERE,"'(' expected, sourceName: /component/ButtonPanel.js, line: 8 lineOffset: 14",jscover.instrument.SourceProcessor, 20181109 13:07:10.668,12,SEVERE,"')' expected, sourceName: /component/App.test.js, line: 7 lineOffset: 18",jscover.instrument.SourceProcessor, 20181109 13:07:10.668,13,SEVERE,"'(' expected, sourceName: /component/Button.js, line: 6 lineOffset: 14",jscover.instrument.SourceProcessor, 20181109 13:07:10.668,14,SEVERE,"',' expected, sourceName: /component/ButtonPanel.js, line: 8 lineOffset: 27",jscover.instrument.SourceProcessor, 20181109 13:07:10.668,11,SEVERE,"',' expected, sourceName: /component/App.js, line: 17 lineOffset: 27",jscover.instrument.SourceProcessor, 20181109 13:07:10.668,13,SEVERE,"')' expected, sourceName: /component/Button.js, line: 6 lineOffset: 16",jscover.instrument.SourceProcessor, 20181109 13:07:10.668,12,SEVERE,"Semi-colon expected, sourceName: /component/App.test.js, line: 7 lineOffset: 19",jscover.instrument.SourceProcessor, 20181109 13:07:10.668,11,SEVERE,"cannot use keyword 'this' here., sourceName: /component/App.js, line: 18 lineOffset: 8",jscover.instrument.SourceProcessor, 20181109 13:07:10.668,14,SEVERE,"cannot use keyword 'this' here., sourceName: /component/ButtonPanel.js, line: 9 lineOffset: 8",jscover.instrument.SourceProcessor, 20181109 13:07:10.668,12,SEVERE,"primary expression expected, sourceName: /component/App.test.js, line: 7 lineOffset: 25",jscover.instrument.SourceProcessor, 20181109 13:07:10.668,13,SEVERE,"'{' expected, sourceName: /component/Button.js, line: 6 lineOffset: 17",jscover.instrument.SourceProcessor, 20181109 13:07:10.668,12,SEVERE,"Semi-colon expected, sourceName: /component/App.test.js, line: 7 lineOffset: 30",jscover.instrument.SourceProcessor, 20181109 13:07:10.668,13,SEVERE,"'}' expected, sourceName: /component/Button.js, line: 6 lineOffset: 19",jscover.instrument.SourceProcessor, 20181109 13:07:10.668,11,SEVERE,"'}' expected, sourceName: /component/App.js, line: 18 lineOffset: 8",jscover.instrument.SourceProcessor, 20181109 13:07:10.684,14,SEVERE,"'}' expected, sourceName: /component/ButtonPanel.js, line: 9 lineOffset: 8",jscover.instrument.SourceProcessor, 20181109 13:07:10.684,12,SEVERE,"'}' expected, sourceName: /component/App.test.js, line: 7 lineOffset: 30",jscover.instrument.SourceProcessor, 20181109 13:07:10.684,13,SEVERE,"'}' expected, sourceName: /component/Button.js, line: 6 lineOffset: 22",jscover.instrument.SourceProcessor, 20181109 13:07:10.684,14,SEVERE,"',' expected, sourceName: /component/ButtonPanel.js, line: 9 lineOffset: 9",jscover.instrument.SourceProcessor, 20181109 13:07:10.684,11,SEVERE,"',' expected, sourceName: /component/App.js, line: 18 lineOffset: 9",jscover.instrument.SourceProcessor, 20181109 13:07:10.684,12,SEVERE,"',' expected, sourceName: /component/App.test.js, line: 7 lineOffset: 31",jscover.instrument.SourceProcessor, 20181109 13:07:10.684,11,SEVERE,"')' expected, sourceName: /component/App.js, line: 18 lineOffset: 17",jscover.instrument.SourceProcessor, 20181109 13:07:10.684,14,SEVERE,"')' expected, sourceName: /component/ButtonPanel.js, line: 9 lineOffset: 14",jscover.instrument.SourceProcessor, 20181109 13:07:10.684,13,SEVERE,"primary expression expected, sourceName: /component/Button.js, line: 8 lineOffset: 3",jscover.instrument.SourceProcessor, 20181109 13:07:10.684,12,SEVERE,"')' expected, sourceName: /component/App.test.js, line: 8 lineOffset: 0",jscover.instrument.SourceProcessor, 20181109 13:07:10.684,13,SEVERE,"Semi-colon expected, sourceName: /component/Button.js, line: 10 lineOffset: 11",jscover.instrument.SourceProcessor, 20181109 13:07:10.684,12,SEVERE,"Semi-colon expected, sourceName: /component/App.test.js, line: 8 lineOffset: 1",jscover.instrument.SourceProcessor, 20181109 13:07:10.684,11,SEVERE,"'{' expected, sourceName: /component/App.js, line: 18 lineOffset: 18",jscover.instrument.SourceProcessor, 20181109 13:07:10.684,14,SEVERE,"'{' expected, sourceName: /component/ButtonPanel.js, line: 9 lineOffset: 15",jscover.instrument.SourceProcessor, 20181109 13:07:10.684,11,SEVERE,"Semi-colon expected, sourceName: /component/App.js, line: 18 lineOffset: 51",jscover.instrument.SourceProcessor, 20181109 13:07:10.684,14,SEVERE,"primary expression expected, sourceName: /component/ButtonPanel.js, line: 14 lineOffset: 7",jscover.instrument.SourceProcessor, 20181109 13:07:10.684,11,SEVERE,"'}' expected, sourceName: /component/App.js, line: 18 lineOffset: 51",jscover.instrument.SourceProcessor, 20181109 13:07:10.684,12,SEVERE,"primary expression expected, sourceName: /component/App.test.js, line: 8 lineOffset: 2",jscover.instrument.SourceProcessor, 20181109 13:07:10.699,13,SEVERE,"primary expression expected, sourceName: /component/Button.js, line: 18 lineOffset: 7",jscover.instrument.SourceProcessor, 20181109 13:07:10.699,14,SEVERE,"')' expected, sourceName: /component/ButtonPanel.js, line: 14 lineOffset: 7",jscover.instrument.SourceProcessor, 20181109 13:07:10.699,11,SEVERE,"Semi-colon expected, sourceName: /component/App.js, line: 21 lineOffset: 11",jscover.instrument.SourceProcessor, 20181109 13:07:10.699,13,SEVERE,"')' expected, sourceName: /component/Button.js, line: 18 lineOffset: 7",jscover.instrument.SourceProcessor, 20181109 13:07:10.699,11,SEVERE,"primary expression expected, sourceName: /component/App.js, line: 23 lineOffset: 7",jscover.instrument.SourceProcessor, 20181109 13:07:10.699,14,SEVERE,"Semi-colon expected, sourceName: /component/ButtonPanel.js, line: 14 lineOffset: 11",jscover.instrument.SourceProcessor, 20181109 13:07:10.699,13,SEVERE,"Semi-colon expected, sourceName: /component/Button.js, line: 18 lineOffset: 11",jscover.instrument.SourceProcessor, 20181109 13:07:10.715,11,SEVERE,"')' expected, sourceName: /component/App.js, line: 23 lineOffset: 7",jscover.instrument.SourceProcessor, 20181109 13:07:10.715,14,SEVERE,"primary expression expected, sourceName: /component/ButtonPanel.js, line: 15 lineOffset: 9",jscover.instrument.SourceProcessor, 20181109 13:07:10.715,13,SEVERE,"'}' expected, sourceName: /component/Button.js, line: 18 lineOffset: 31",jscover.instrument.SourceProcessor, 20181109 13:07:10.715,11,SEVERE,"Semi-colon expected, sourceName: /component/App.js, line: 23 lineOffset: 11",jscover.instrument.SourceProcessor, 20181109 13:07:10.731,11,SEVERE,"primary expression expected, sourceName: /component/App.js, line: 24 lineOffset: 9",jscover.instrument.SourceProcessor, 20181109 13:07:10.715,14,SEVERE,"Semi-colon expected, sourceName: /component/ButtonPanel.js, line: 15 lineOffset: 9",jscover.instrument.SourceProcessor, 20181109 13:07:10.731,13,SEVERE,"Semi-colon expected, sourceName: /component/Button.js, line: 18 lineOffset: 32",jscover.instrument.SourceProcessor, 20181109 13:07:10.731,11,SEVERE,"Semi-colon expected, sourceName: /component/App.js, line: 24 lineOffset: 9",jscover.instrument.SourceProcessor, 20181109 13:07:10.731,14,SEVERE,"primary expression expected, sourceName: /component/ButtonPanel.js, line: 16 lineOffset: 11",jscover.instrument.SourceProcessor, 20181109 13:07:10.731,11,SEVERE,"Semi-colon expected, sourceName: /component/App.js, line: 24 lineOffset: 17",jscover.instrument.SourceProcessor, 20181109 13:07:10.731,14,SEVERE,"Semi-colon expected, sourceName: /component/ButtonPanel.js, line: 16 lineOffset: 11",jscover.instrument.SourceProcessor, 20181109 13:07:10.731,13,SEVERE,"primary expression expected, sourceName: /component/Button.js, line: 18 lineOffset: 50",jscover.instrument.SourceProcessor, 20181109 13:07:10.731,14,SEVERE,"Semi-colon expected, sourceName: /component/ButtonPanel.js, line: 16 lineOffset: 18",jscover.instrument.SourceProcessor, 20181109 13:07:10.731,11,SEVERE,"Cannot use keyword in short object literal, sourceName: /component/App.js, line: 24 lineOffset: 24",jscover.instrument.SourceProcessor, 20181109 13:07:10.731,14,SEVERE,"Semi-colon expected, sourceName: /component/ButtonPanel.js, line: 16 lineOffset: 28",jscover.instrument.SourceProcessor, 20181109 13:07:10.731,11,SEVERE,"'}' expected, sourceName: /component/App.js, line: 24 lineOffset: 28",jscover.instrument.SourceProcessor, 20181109 13:07:10.731,13,SEVERE,"Semi-colon expected, sourceName: /component/Button.js, line: 19 lineOffset: 16",jscover.instrument.SourceProcessor, 20181109 13:07:10.731,11,SEVERE,"Semi-colon expected, sourceName: /component/App.js, line: 24 lineOffset: 29",jscover.instrument.SourceProcessor, 20181109 13:07:10.731,13,SEVERE,"Cannot use keyword in short object literal, sourceName: /component/Button.js, line: 19 lineOffset: 25",jscover.instrument.SourceProcessor, 20181109 13:07:10.746,14,SEVERE,"Cannot use keyword in short object literal, sourceName: /component/ButtonPanel.js, line: 16 lineOffset: 42",jscover.instrument.SourceProcessor, 20181109 13:07:10.746,13,SEVERE,"'}' expected, sourceName: /component/Button.js, line: 19 lineOffset: 29",jscover.instrument.SourceProcessor, 20181109 13:07:10.746,11,SEVERE,"Expected '/' in regular expression literal, sourceName: /component/App.js, line: 24 lineOffset: 70",jscover.instrument.SourceProcessor, 20181109 13:07:10.746,13,SEVERE,"Semi-colon expected, sourceName: /component/Button.js, line: 19 lineOffset: 30",jscover.instrument.SourceProcessor, 20181109 13:07:10.746,11,SEVERE,"Semi-colon expected, sourceName: /component/App.js, line: 25 lineOffset: 21",jscover.instrument.SourceProcessor, 20181109 13:07:10.746,13,SEVERE,"primary expression expected, sourceName: /component/Button.js, line: 19 lineOffset: 42",jscover.instrument.SourceProcessor, 20181109 13:07:10.766,11,SEVERE,"Cannot use keyword in short object literal, sourceName: /component/App.js, line: 25 lineOffset: 35",jscover.instrument.SourceProcessor, 20181109 13:07:10.769,14,SEVERE,"'}' expected, sourceName: /component/ButtonPanel.js, line: 16 lineOffset: 46",jscover.instrument.SourceProcessor, 20181109 13:07:10.772,13,SEVERE,"Cannot use keyword in short object literal, sourceName: /component/Button.js, line: 19 lineOffset: 44",jscover.instrument.SourceProcessor, 20181109 13:07:10.773,11,SEVERE,"'}' expected, sourceName: /component/App.js, line: 25 lineOffset: 39",jscover.instrument.SourceProcessor, 20181109 13:07:10.775,14,SEVERE,"Semi-colon expected, sourceName: /component/ButtonPanel.js, line: 16 lineOffset: 47",jscover.instrument.SourceProcessor, 20181109 13:07:10.776,11,SEVERE,"Semi-colon expected, sourceName: /component/App.js, line: 25 lineOffset: 40",jscover.instrument.SourceProcessor, 20181109 13:07:10.782,14,SEVERE,"'}' expected, sourceName: /component/ButtonPanel.js, line: 16 lineOffset: 60",jscover.instrument.SourceProcessor, 20181109 13:07:10.782,13,SEVERE,"'}' expected, sourceName: /component/Button.js, line: 19 lineOffset: 48",jscover.instrument.SourceProcessor, 20181109 13:07:10.783,11,SEVERE,"primary expression expected, sourceName: /component/App.js, line: 25 lineOffset: 52",jscover.instrument.SourceProcessor, 20181109 13:07:10.788,14,SEVERE,"primary expression expected, sourceName: /component/ButtonPanel.js, line: 16 lineOffset: 62",jscover.instrument.SourceProcessor, 20181109 13:07:10.795,14,SEVERE,"Semi-colon expected, sourceName: /component/ButtonPanel.js, line: 17 lineOffset: 18",jscover.instrument.SourceProcessor, 20181109 13:07:10.788,13,SEVERE,"Semi-colon expected, sourceName: /component/Button.js, line: 19 lineOffset: 49",jscover.instrument.SourceProcessor, 20181109 13:07:10.797,11,SEVERE,"primary expression expected, sourceName: /component/App.js, line: 25 lineOffset: 55",jscover.instrument.SourceProcessor, 20181109 13:07:10.813,11,SEVERE,"Expected '/' in regular expression literal, sourceName: /component/App.js, line: 26 lineOffset: 12",jscover.instrument.SourceProcessor, 20181109 13:07:10.811,14,SEVERE,"Semi-colon expected, sourceName: /component/ButtonPanel.js, line: 17 lineOffset: 29",jscover.instrument.SourceProcessor, 20181109 13:07:10.819,13,SEVERE,"primary expression expected, sourceName: /component/Button.js, line: 19 lineOffset: 60",jscover.instrument.SourceProcessor, 20181109 13:07:10.821,11,SEVERE,"primary expression expected, sourceName: /component/App.js, line: 27 lineOffset: 5",jscover.instrument.SourceProcessor, 20181109 13:07:10.821,14,SEVERE,"Cannot use keyword in short object literal, sourceName: /component/ButtonPanel.js, line: 17 lineOffset: 43",jscover.instrument.SourceProcessor, 20181109 13:07:10.828,13,SEVERE,"Expected '/' in regular expression literal, sourceName: /component/Button.js, line: 19 lineOffset: 69",jscover.instrument.SourceProcessor, 20181109 13:07:10.829,11,SEVERE,"primary expression expected, sourceName: /component/App.js, line: 28 lineOffset: 3",jscover.instrument.SourceProcessor, 20181109 13:07:10.828,14,SEVERE,"'}' expected, sourceName: /component/ButtonPanel.js, line: 17 lineOffset: 47",jscover.instrument.SourceProcessor, 20181109 13:07:10.837,14,SEVERE,"Semi-colon expected, sourceName: /component/ButtonPanel.js, line: 17 lineOffset: 48",jscover.instrument.SourceProcessor, 20181109 13:07:10.838,13,SEVERE,"Expected '/' in regular expression literal, sourceName: /component/Button.js, line: 20 lineOffset: 12",jscover.instrument.SourceProcessor, 20181109 13:07:10.838,11,SEVERE,"primary expression expected, sourceName: /component/App.js, line: 29 lineOffset: 1",jscover.instrument.SourceProcessor, 20181109 13:07:10.838,12,SEVERE,"primary expression expected, sourceName: /component/Display.js, line: 9 lineOffset: 7",jscover.instrument.SourceProcessor, Exception in thread "pool-2-thread-1" java.lang.RuntimeException: Exception parsing "/component/App.js" at com.google.javascript.jscomp.parsing.ParserRunner.parse(ParserRunner.java:147) at jscover.instrument.SourceProcessor.parse(SourceProcessor.java:506) at jscover.instrument.SourceProcessor.instrumentSource(SourceProcessor.java:465) at jscover.instrument.SourceProcessor.processSourceWithoutHeader(SourceProcessor.java:435) at jscover.instrument.SourceProcessor.processSource(SourceProcessor.java:423) at jscover.instrument.SourceProcessor.processSourceForFileSystem(SourceProcessor.java:415) at jscover.instrument.InstrumenterService.instrumentJSForFileSystem(InstrumenterService.java:381) at jscover.filesystem.FileSystemInstrumenter.lambda$copyFolder$2(FileSystemInstrumenter.java:417) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at java.lang.String.substring(String.java:1967) at com.google.javascript.jscomp.parsing.IRFactory.normalizeRegex(IRFactory.java:2932) at com.google.javascript.jscomp.parsing.IRFactory$TransformDispatcher.processRegExpLiteral(IRFactory.java:1802) at com.google.javascript.jscomp.parsing.IRFactory$TransformDispatcher.processLiteralExpression(IRFactory.java:2710) at com.google.javascript.jscomp.parsing.IRFactory$TransformDispatcher.process(IRFactory.java:2797) at com.google.javascript.jscomp.parsing.IRFactory.transform(IRFactory.java:752) at com.google.javascript.jscomp.parsing.IRFactory$TransformDispatcher.processBinaryExpressionHelper(IRFactory.java:1464) at com.google.javascript.jscomp.parsing.IRFactory$TransformDispatcher.processBinaryExpression(IRFactory.java:1428) at com.google.javascript.jscomp.parsing.IRFactory$TransformDispatcher.process(IRFactory.java:2721) at com.google.javascript.jscomp.parsing.IRFactory.transform(IRFactory.java:752) at com.google.javascript.jscomp.parsing.IRFactory$TransformDispatcher.processExpressionStatement(IRFactory.java:1208) at com.google.javascript.jscomp.parsing.IRFactory$TransformDispatcher.process(IRFactory.java:2751) at com.google.javascript.jscomp.parsing.IRFactory.transform(IRFactory.java:752) at com.google.javascript.jscomp.parsing.IRFactory$TransformDispatcher.processAstRoot(IRFactory.java:1073) at com.google.javascript.jscomp.parsing.IRFactory$TransformDispatcher.process(IRFactory.java:2795) at com.google.javascript.jscomp.parsing.IRFactory.transformTree(IRFactory.java:333) at com.google.javascript.jscomp.parsing.ParserRunner.parse(ParserRunner.java:136) ... 10 more
Thanks in advance.