mirror of
https://github.com/dorny/test-reporter.git
synced 2025-12-15 22:07:09 +01:00
Add support for mocha-json
This commit is contained in:
parent
f285c4c6d7
commit
9b675bd55f
21 changed files with 1588 additions and 59 deletions
40
__tests__/__outputs__/mocha-json.md
Normal file
40
__tests__/__outputs__/mocha-json.md
Normal file
|
|
@ -0,0 +1,40 @@
|
|||

|
||||
## <a id="user-content-r0" href="#r0">fixtures/mocha-json.json</a> ❌
|
||||
**7** tests were completed in **14ms** with **1** passed, **5** failed and **1** skipped.
|
||||
|Test suite|Passed|Failed|Skipped|Time|
|
||||
|:---|---:|---:|---:|---:|
|
||||
|[test/main.test.js](#r0s0)|1✔️|3❌||1ms|
|
||||
|[test/second.test.js](#r0s1)||1❌|1✖️|NaNms|
|
||||
|[test/test.js](#r0s2)||1❌||0ms|
|
||||
### <a id="user-content-r0s0" href="#r0s0">test/main.test.js</a> ❌
|
||||
**4** tests were completed in **1ms** with **1** passed, **3** failed and **0** skipped.
|
||||
|
||||
**Test 1**
|
||||
|Result|Test|Time|
|
||||
|:---:|:---|---:|
|
||||
|✔️|Passing test|0ms|
|
||||
|
||||
**Test 1 Test 1.1**
|
||||
|Result|Test|Time|
|
||||
|:---:|:---|---:|
|
||||
|❌|Exception in target unit|0ms|
|
||||
|❌|Failing test|1ms|
|
||||
|
||||
**Test 2**
|
||||
|Result|Test|Time|
|
||||
|:---:|:---|---:|
|
||||
|❌|Exception in test|0ms|
|
||||
### <a id="user-content-r0s1" href="#r0s1">test/second.test.js</a> ❌
|
||||
**2** tests were completed in **NaNms** with **0** passed, **1** failed and **1** skipped.
|
||||
|
||||
|Result|Test|Time|
|
||||
|:---:|:---|---:|
|
||||
|✖️|Skipped test|NaNms|
|
||||
|❌|Timeout test|10ms|
|
||||
### <a id="user-content-r0s2" href="#r0s2">test/test.js</a> ❌
|
||||
**1** tests were completed in **0ms** with **0** passed, **1** failed and **0** skipped.
|
||||
|
||||
**Array #indexOf()**
|
||||
|Result|Test|Time|
|
||||
|:---:|:---|---:|
|
||||
|❌|should return -1 when the value is not present|0ms|
|
||||
137
__tests__/__snapshots__/mocha-json.test.ts.snap
Normal file
137
__tests__/__snapshots__/mocha-json.test.ts.snap
Normal file
|
|
@ -0,0 +1,137 @@
|
|||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`mocha-json tests report from ./reports/mocha-json test results matches snapshot 1`] = `
|
||||
TestRunResult {
|
||||
"path": "fixtures/mocha-json.json",
|
||||
"suites": Array [
|
||||
TestSuiteResult {
|
||||
"groups": Array [
|
||||
TestGroupResult {
|
||||
"name": "Test 1",
|
||||
"tests": Array [
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "Passing test",
|
||||
"result": "success",
|
||||
"time": 0,
|
||||
},
|
||||
],
|
||||
},
|
||||
TestGroupResult {
|
||||
"name": "Test 1 Test 1.1",
|
||||
"tests": Array [
|
||||
TestCaseResult {
|
||||
"error": Object {
|
||||
"details": "Error: Some error
|
||||
at Object.throwError (lib\\\\main.js:2:9)
|
||||
at Context.<anonymous> (test\\\\main.test.js:15:11)
|
||||
at processImmediate (internal/timers.js:461:21)",
|
||||
"line": 2,
|
||||
"message": "Some error",
|
||||
"path": "lib/main.js",
|
||||
},
|
||||
"name": "Exception in target unit",
|
||||
"result": "failed",
|
||||
"time": 0,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": Object {
|
||||
"details": "AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
|
||||
|
||||
false !== true
|
||||
|
||||
at Context.<anonymous> (test\\\\main.test.js:11:14)
|
||||
at processImmediate (internal/timers.js:461:21)",
|
||||
"line": 11,
|
||||
"message": "Expected values to be strictly equal:
|
||||
|
||||
false !== true
|
||||
",
|
||||
"path": "test/main.test.js",
|
||||
},
|
||||
"name": "Failing test",
|
||||
"result": "failed",
|
||||
"time": 1,
|
||||
},
|
||||
],
|
||||
},
|
||||
TestGroupResult {
|
||||
"name": "Test 2",
|
||||
"tests": Array [
|
||||
TestCaseResult {
|
||||
"error": Object {
|
||||
"details": "Error: Some error
|
||||
at Context.<anonymous> (test\\\\main.test.js:22:11)
|
||||
at processImmediate (internal/timers.js:461:21)",
|
||||
"line": 22,
|
||||
"message": "Some error",
|
||||
"path": "test/main.test.js",
|
||||
},
|
||||
"name": "Exception in test",
|
||||
"result": "failed",
|
||||
"time": 0,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
"name": "test/main.test.js",
|
||||
"totalTime": undefined,
|
||||
},
|
||||
TestSuiteResult {
|
||||
"groups": Array [
|
||||
TestGroupResult {
|
||||
"name": null,
|
||||
"tests": Array [
|
||||
TestCaseResult {
|
||||
"error": undefined,
|
||||
"name": "Skipped test",
|
||||
"result": "skipped",
|
||||
"time": undefined,
|
||||
},
|
||||
TestCaseResult {
|
||||
"error": Object {
|
||||
"details": "Error: Timeout of 1ms exceeded. For async tests and hooks, ensure \\"done()\\" is called; if returning a Promise, ensure it resolves. (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporter\\\\reports\\\\mocha\\\\test\\\\second.test.js)
|
||||
at listOnTimeout (internal/timers.js:554:17)
|
||||
at processTimers (internal/timers.js:497:7)",
|
||||
"line": undefined,
|
||||
"message": "Timeout of 1ms exceeded. For async tests and hooks, ensure \\"done()\\" is called; if returning a Promise, ensure it resolves. (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporter\\\\reports\\\\mocha\\\\test\\\\second.test.js)",
|
||||
"path": undefined,
|
||||
},
|
||||
"name": "Timeout test",
|
||||
"result": "failed",
|
||||
"time": 10,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
"name": "test/second.test.js",
|
||||
"totalTime": undefined,
|
||||
},
|
||||
TestSuiteResult {
|
||||
"groups": Array [
|
||||
TestGroupResult {
|
||||
"name": "Array #indexOf()",
|
||||
"tests": Array [
|
||||
TestCaseResult {
|
||||
"error": Object {
|
||||
"details": "AssertionError [ERR_ASSERTION]: 2 == -1
|
||||
at Context.<anonymous> (test\\\\test.js:5:14)
|
||||
at processImmediate (internal/timers.js:461:21)",
|
||||
"line": undefined,
|
||||
"message": "2 == -1",
|
||||
"path": undefined,
|
||||
},
|
||||
"name": "should return -1 when the value is not present",
|
||||
"result": "failed",
|
||||
"time": 0,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
"name": "test/test.js",
|
||||
"totalTime": undefined,
|
||||
},
|
||||
],
|
||||
"totalTime": 14,
|
||||
}
|
||||
`;
|
||||
192
__tests__/fixtures/mocha-json.json
Normal file
192
__tests__/fixtures/mocha-json.json
Normal file
|
|
@ -0,0 +1,192 @@
|
|||
{
|
||||
"stats": {
|
||||
"suites": 5,
|
||||
"tests": 7,
|
||||
"passes": 1,
|
||||
"pending": 1,
|
||||
"failures": 5,
|
||||
"start": "2021-02-23T14:20:41.144Z",
|
||||
"end": "2021-02-23T14:20:41.158Z",
|
||||
"duration": 14
|
||||
},
|
||||
"tests": [
|
||||
{
|
||||
"title": "Timeout test",
|
||||
"fullTitle": "Timeout test",
|
||||
"file": "C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\mocha\\test\\second.test.js",
|
||||
"duration": 10,
|
||||
"currentRetry": 0,
|
||||
"err": {
|
||||
"stack": "Error: Timeout of 1ms exceeded. For async tests and hooks, ensure \"done()\" is called; if returning a Promise, ensure it resolves. (C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\mocha\\test\\second.test.js)\n at listOnTimeout (internal/timers.js:554:17)\n at processTimers (internal/timers.js:497:7)",
|
||||
"message": "Timeout of 1ms exceeded. For async tests and hooks, ensure \"done()\" is called; if returning a Promise, ensure it resolves. (C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\mocha\\test\\second.test.js)",
|
||||
"code": "ERR_MOCHA_TIMEOUT",
|
||||
"timeout": 1,
|
||||
"file": "C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\mocha\\test\\second.test.js"
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": "Skipped test",
|
||||
"fullTitle": "Skipped test",
|
||||
"file": "C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\mocha\\test\\second.test.js",
|
||||
"currentRetry": 0,
|
||||
"err": {}
|
||||
},
|
||||
{
|
||||
"title": "Passing test",
|
||||
"fullTitle": "Test 1 Passing test",
|
||||
"file": "C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\mocha\\test\\main.test.js",
|
||||
"duration": 0,
|
||||
"currentRetry": 0,
|
||||
"speed": "fast",
|
||||
"err": {}
|
||||
},
|
||||
{
|
||||
"title": "Failing test",
|
||||
"fullTitle": "Test 1 Test 1.1 Failing test",
|
||||
"file": "C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\mocha\\test\\main.test.js",
|
||||
"duration": 1,
|
||||
"currentRetry": 0,
|
||||
"err": {
|
||||
"stack": "AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:\n\nfalse !== true\n\n at Context.<anonymous> (test\\main.test.js:11:14)\n at processImmediate (internal/timers.js:461:21)",
|
||||
"message": "Expected values to be strictly equal:\n\nfalse !== true\n",
|
||||
"generatedMessage": true,
|
||||
"name": "AssertionError",
|
||||
"code": "ERR_ASSERTION",
|
||||
"actual": "false",
|
||||
"expected": "true",
|
||||
"operator": "strictEqual"
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": "Exception in target unit",
|
||||
"fullTitle": "Test 1 Test 1.1 Exception in target unit",
|
||||
"file": "C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\mocha\\test\\main.test.js",
|
||||
"duration": 0,
|
||||
"currentRetry": 0,
|
||||
"err": {
|
||||
"stack": "Error: Some error\n at Object.throwError (lib\\main.js:2:9)\n at Context.<anonymous> (test\\main.test.js:15:11)\n at processImmediate (internal/timers.js:461:21)",
|
||||
"message": "Some error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": "Exception in test",
|
||||
"fullTitle": "Test 2 Exception in test",
|
||||
"file": "C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\mocha\\test\\main.test.js",
|
||||
"duration": 0,
|
||||
"currentRetry": 0,
|
||||
"err": {
|
||||
"stack": "Error: Some error\n at Context.<anonymous> (test\\main.test.js:22:11)\n at processImmediate (internal/timers.js:461:21)",
|
||||
"message": "Some error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": "should return -1 when the value is not present",
|
||||
"fullTitle": "Array #indexOf() should return -1 when the value is not present",
|
||||
"file": "C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\mocha\\test\\test.js",
|
||||
"duration": 0,
|
||||
"currentRetry": 0,
|
||||
"err": {
|
||||
"stack": "AssertionError [ERR_ASSERTION]: 2 == -1\n at Context.<anonymous> (test\\test.js:5:14)\n at processImmediate (internal/timers.js:461:21)",
|
||||
"message": "2 == -1",
|
||||
"generatedMessage": true,
|
||||
"name": "AssertionError",
|
||||
"code": "ERR_ASSERTION",
|
||||
"actual": "2",
|
||||
"expected": "-1",
|
||||
"operator": "=="
|
||||
}
|
||||
}
|
||||
],
|
||||
"pending": [
|
||||
{
|
||||
"title": "Skipped test",
|
||||
"fullTitle": "Skipped test",
|
||||
"file": "C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\mocha\\test\\second.test.js",
|
||||
"currentRetry": 0,
|
||||
"err": {}
|
||||
}
|
||||
],
|
||||
"failures": [
|
||||
{
|
||||
"title": "Timeout test",
|
||||
"fullTitle": "Timeout test",
|
||||
"file": "C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\mocha\\test\\second.test.js",
|
||||
"duration": 10,
|
||||
"currentRetry": 0,
|
||||
"err": {
|
||||
"stack": "Error: Timeout of 1ms exceeded. For async tests and hooks, ensure \"done()\" is called; if returning a Promise, ensure it resolves. (C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\mocha\\test\\second.test.js)\n at listOnTimeout (internal/timers.js:554:17)\n at processTimers (internal/timers.js:497:7)",
|
||||
"message": "Timeout of 1ms exceeded. For async tests and hooks, ensure \"done()\" is called; if returning a Promise, ensure it resolves. (C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\mocha\\test\\second.test.js)",
|
||||
"code": "ERR_MOCHA_TIMEOUT",
|
||||
"timeout": 1,
|
||||
"file": "C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\mocha\\test\\second.test.js"
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": "Failing test",
|
||||
"fullTitle": "Test 1 Test 1.1 Failing test",
|
||||
"file": "C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\mocha\\test\\main.test.js",
|
||||
"duration": 1,
|
||||
"currentRetry": 0,
|
||||
"err": {
|
||||
"stack": "AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:\n\nfalse !== true\n\n at Context.<anonymous> (test\\main.test.js:11:14)\n at processImmediate (internal/timers.js:461:21)",
|
||||
"message": "Expected values to be strictly equal:\n\nfalse !== true\n",
|
||||
"generatedMessage": true,
|
||||
"name": "AssertionError",
|
||||
"code": "ERR_ASSERTION",
|
||||
"actual": "false",
|
||||
"expected": "true",
|
||||
"operator": "strictEqual"
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": "Exception in target unit",
|
||||
"fullTitle": "Test 1 Test 1.1 Exception in target unit",
|
||||
"file": "C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\mocha\\test\\main.test.js",
|
||||
"duration": 0,
|
||||
"currentRetry": 0,
|
||||
"err": {
|
||||
"stack": "Error: Some error\n at Object.throwError (lib\\main.js:2:9)\n at Context.<anonymous> (test\\main.test.js:15:11)\n at processImmediate (internal/timers.js:461:21)",
|
||||
"message": "Some error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": "Exception in test",
|
||||
"fullTitle": "Test 2 Exception in test",
|
||||
"file": "C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\mocha\\test\\main.test.js",
|
||||
"duration": 0,
|
||||
"currentRetry": 0,
|
||||
"err": {
|
||||
"stack": "Error: Some error\n at Context.<anonymous> (test\\main.test.js:22:11)\n at processImmediate (internal/timers.js:461:21)",
|
||||
"message": "Some error"
|
||||
}
|
||||
},
|
||||
{
|
||||
"title": "should return -1 when the value is not present",
|
||||
"fullTitle": "Array #indexOf() should return -1 when the value is not present",
|
||||
"file": "C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\mocha\\test\\test.js",
|
||||
"duration": 0,
|
||||
"currentRetry": 0,
|
||||
"err": {
|
||||
"stack": "AssertionError [ERR_ASSERTION]: 2 == -1\n at Context.<anonymous> (test\\test.js:5:14)\n at processImmediate (internal/timers.js:461:21)",
|
||||
"message": "2 == -1",
|
||||
"generatedMessage": true,
|
||||
"name": "AssertionError",
|
||||
"code": "ERR_ASSERTION",
|
||||
"actual": "2",
|
||||
"expected": "-1",
|
||||
"operator": "=="
|
||||
}
|
||||
}
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"title": "Passing test",
|
||||
"fullTitle": "Test 1 Passing test",
|
||||
"file": "C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\mocha\\test\\main.test.js",
|
||||
"duration": 0,
|
||||
"currentRetry": 0,
|
||||
"speed": "fast",
|
||||
"err": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
29
__tests__/mocha-json.test.ts
Normal file
29
__tests__/mocha-json.test.ts
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
import * as fs from 'fs'
|
||||
import * as path from 'path'
|
||||
|
||||
import {MochaJsonParser} from '../src/parsers/mocha-json/mocha-json-parser'
|
||||
import {ParseOptions} from '../src/test-parser'
|
||||
import {getReport} from '../src/report/get-report'
|
||||
import {normalizeFilePath} from '../src/utils/path-utils'
|
||||
|
||||
describe('mocha-json tests', () => {
|
||||
it('report from ./reports/mocha-json test results matches snapshot', async () => {
|
||||
const fixturePath = path.join(__dirname, 'fixtures', 'mocha-json.json')
|
||||
const outputPath = path.join(__dirname, '__outputs__', 'mocha-json.md')
|
||||
const filePath = normalizeFilePath(path.relative(__dirname, fixturePath))
|
||||
const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'})
|
||||
|
||||
const opts: ParseOptions = {
|
||||
parseErrors: true,
|
||||
trackedFiles: ['test/main.test.js', 'test/second.test.js', 'lib/main.js']
|
||||
}
|
||||
|
||||
const parser = new MochaJsonParser(opts)
|
||||
const result = await parser.parse(filePath, fileContent)
|
||||
expect(result).toMatchSnapshot()
|
||||
|
||||
const report = getReport([result])
|
||||
fs.mkdirSync(path.dirname(outputPath), {recursive: true})
|
||||
fs.writeFileSync(outputPath, report)
|
||||
})
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue