diff --git a/__tests__/allure-api/attachment.test.js b/__tests__/allure-api/attachment.test.js index 7b7bf30..931f4a0 100644 --- a/__tests__/allure-api/attachment.test.js +++ b/__tests__/allure-api/attachment.test.js @@ -1,10 +1,11 @@ const {ContentType} = require('../../dist'); -test('allure.attachment()', () => { - allure.attachment('TEXT-attachment', 'line1\nline2\nline3\n', ContentType.TEXT); - allure.attachment('CSS-attachment', 'CSS content', ContentType.CSS); - allure.attachment('CSV-attachment', 'a,b,c,d,e,f\n1,2,3,4,5,6', ContentType.CSV); - allure.attachment('JSON-attachment', +describe('Attachments', () => { + test('allure.attachment()', () => { + allure.attachment('TEXT-attachment', 'line1\nline2\nline3\n', ContentType.TEXT); + allure.attachment('CSS-attachment', 'CSS content', ContentType.CSS); + allure.attachment('CSV-attachment', 'a,b,c,d,e,f\n1,2,3,4,5,6', ContentType.CSV); + allure.attachment('JSON-attachment', JSON.stringify({ string: 'foobar', number: 1, @@ -12,15 +13,15 @@ test('allure.attachment()', () => { function: () => console.log('Ok it works.') }, null, 2), ContentType.JSON); - allure.attachment('JPEG-attachment', '', ContentType.JPEG); - allure.attachment('PNG-attachment', '', ContentType.PNG); - allure.attachment('SVG attachment', '', ContentType.SVG); - allure.attachment('HTML attachment', '

This is an HTML doc

{ - expect(ContentType.HTML).toStrictEqual('text/html'); -}); + allure.attachment('JPEG-attachment', '', ContentType.JPEG); + allure.attachment('PNG-attachment', '', ContentType.PNG); + allure.attachment('SVG attachment', '', ContentType.SVG); + allure.attachment('HTML attachment', '

This is an HTML doc

{ + expect(ContentType.HTML).toStrictEqual('text/html'); + }); +}) \ No newline at end of file diff --git a/__tests__/allure-api/description.test.js b/__tests__/allure-api/description.test.js index fe19314..07f8f24 100644 --- a/__tests__/allure-api/description.test.js +++ b/__tests__/allure-api/description.test.js @@ -1,5 +1,6 @@ - -test('allure.description()', () => { - allure.description('This is an example description'); - expect(5).toBe(5); -}); +describe('Description', () => { + test('allure.description()', () => { + allure.description('This is an example description'); + expect(5).toBe(5); + }); +}) \ No newline at end of file diff --git a/__tests__/allure-api/logStep.test.js b/__tests__/allure-api/logStep.test.js index 844c044..3c6dd58 100644 --- a/__tests__/allure-api/logStep.test.js +++ b/__tests__/allure-api/logStep.test.js @@ -1,10 +1,11 @@ const {Status} = require('../../dist'); - -test('allure.logStep()', () => { - allure.logStep('This is a PASSED logStep', Status.PASSED); - allure.logStep('This is a FAILED logStep', Status.FAILED); - allure.logStep('This is a BLOCKED logStep', Status.BROKEN); - allure.logStep('This is a SKIPPED logStep', Status.SKIPPED); - - expect(5).toBe(5); -}); +describe('logStep', () => { + test('allure.logStep()', () => { + allure.logStep('This is a PASSED logStep', Status.PASSED); + allure.logStep('This is a FAILED logStep', Status.FAILED); + allure.logStep('This is a BLOCKED logStep', Status.BROKEN); + allure.logStep('This is a SKIPPED logStep', Status.SKIPPED); + + expect(5).toBe(5); + }); +}) \ No newline at end of file diff --git a/__tests__/allure-api/parameter.test.js b/__tests__/allure-api/parameter.test.js index 522f50f..be71e67 100644 --- a/__tests__/allure-api/parameter.test.js +++ b/__tests__/allure-api/parameter.test.js @@ -1,6 +1,7 @@ - -test('allure.parameter()', () => { - allure.parameter('Argument 1', 'exampleValue'); - - expect(5).toBe(5); -}); +describe('Parameter', () => { + test('allure.parameter()', () => { + allure.parameter('Argument 1', 'exampleValue'); + + expect(5).toBe(5); + }); +}) diff --git a/__tests__/allure-api/severity.test.js b/__tests__/allure-api/severity.test.js index 84e507f..a785eb2 100644 --- a/__tests__/allure-api/severity.test.js +++ b/__tests__/allure-api/severity.test.js @@ -1,32 +1,32 @@ const {Severity} = require('../../dist'); - -test('.severity = BLOCKER', () => { - allure.severity(Severity.BLOCKER); - - expect(1 + 1).toBe(2); -}); - -test('.severity = CRITICAL', () => { - allure.severity(Severity.CRITICAL); - - expect(1 + 1).toBe(2); -}); - -test('.severity = MINOR', () => { - allure.severity(Severity.MINOR); - - expect(1 + 1).toBe(2); -}); - -test('.severity = NORMAL', () => { - allure.severity(Severity.NORMAL); - - expect(1 + 1).toBe(2); -}); - -test('.severity = TRIVIAL', () => { - allure.severity(Severity.TRIVIAL); - - expect(1 + 1).toBe(2); -}); - +describe('severity', () => { + test('.severity = BLOCKER', () => { + allure.severity(Severity.BLOCKER); + + expect(1 + 1).toBe(2); + }); + + test('.severity = CRITICAL', () => { + allure.severity(Severity.CRITICAL); + + expect(1 + 1).toBe(2); + }); + + test('.severity = MINOR', () => { + allure.severity(Severity.MINOR); + + expect(1 + 1).toBe(2); + }); + + test('.severity = NORMAL', () => { + allure.severity(Severity.NORMAL); + + expect(1 + 1).toBe(2); + }); + + test('.severity = TRIVIAL', () => { + allure.severity(Severity.TRIVIAL); + + expect(1 + 1).toBe(2); + }); +}) \ No newline at end of file diff --git a/__tests__/docblocks.test.js b/__tests__/docblocks.test.js index 0b1a73b..eceacaf 100644 --- a/__tests__/docblocks.test.js +++ b/__tests__/docblocks.test.js @@ -5,15 +5,16 @@ function sum(a, b) { /** * @my-custom-pragma above-test1 */ -test('Ignore Docblock, when located above test', () => { - expect(sum(1, 2)).toBe(3); -}); +describe('Docblock', () => { + test('Ignore Docblock, when located above test', () => { + expect(sum(1, 2)).toBe(3); + }); -test('Read Docblock, when located under test', () => { - /** - * @my-custom-pragma under-test1 - */ - - expect(sum(1, 2)).toBe(3); -}); + test('Read Docblock, when located under test', () => { + /** + * @my-custom-pragma under-test1 + */ + expect(sum(1, 2)).toBe(3); + }); +}) \ No newline at end of file diff --git a/__tests__/reporter.test.js b/__tests__/reporter.test.js new file mode 100644 index 0000000..6f333e4 --- /dev/null +++ b/__tests__/reporter.test.js @@ -0,0 +1,30 @@ +describe('Root suite', () => { + describe('Nested root suite 1', () => { + it('first assert', async () => { + expect(true).toEqual(true); + }); + describe('Nested Nested root suite 1', () => { + it('Nested Nested first assert', async () => { + expect(true).toEqual(true); + }); + }); + }); + + it('second assert', async () => { + expect(true).toEqual(true); + }); + + describe('Nested suite 2', () => { + it('suite 2 first assert', async () => { + expect(true).toEqual(true); + }); + + it('suite 2 second assert', async () => { + expect(true).toEqual(true); + }); + }); +}); + +it('ROOT assert', async () => { + expect(true).toEqual(true); +}); diff --git a/__tests__/status.test.js b/__tests__/status.test.js index f40fa63..b93c6fa 100644 --- a/__tests__/status.test.js +++ b/__tests__/status.test.js @@ -1,16 +1,18 @@ -test('Expect to pass', () => { - expect(1 + 2).toBe(3); -}); - -test.skip('Expect to skip', () => { - expect(1 + 2).toBe(3); -}); - -test('Expect to fail', () => { - expect(2 + 2).toBe(6); -}); - -test('Expect to break', () => { - expect(3 + 2).toBe(5); - foo.bar; -}); +describe('Status', () => { + test('Expect to pass', () => { + expect(1 + 2).toBe(3); + }); + + test.skip('Expect to skip', () => { + expect(1 + 2).toBe(3); + }); + + test('Expect to fail', () => { + expect(2 + 2).toBe(6); + }); + + test('Expect to break', () => { + expect(3 + 2).toBe(5); + foo.bar; + }); +}) \ No newline at end of file diff --git a/src/allure-reporter.ts b/src/allure-reporter.ts index 764eed6..e16b158 100644 --- a/src/allure-reporter.ts +++ b/src/allure-reporter.ts @@ -1,5 +1,4 @@ import {createHash} from 'crypto'; -import * as os from 'os'; import { AllureGroup, AllureRuntime, @@ -178,7 +177,7 @@ export default class AllureReporter { currentTest.addLabel(LabelName.THREAD, state.parentProcess.env.JEST_WORKER_ID); } - currentTest = this.addSuiteLabelsToTestCase(currentTest, testPath); + currentTest = this.addSuiteLabelsToTestCase(currentTest, test.parent); this.pushTest(currentTest); } @@ -369,27 +368,18 @@ export default class AllureReporter { } } - private addSuiteLabelsToTestCase(currentTest: AllureTest, testPath: string): AllureTest { - const isWindows = os.type() === 'Windows_NT'; - const pathDelimiter = isWindows ? '\\' : '/'; - const pathsArray = testPath.split(pathDelimiter); - - const [parentSuite, ...suites] = pathsArray; - const subSuite = suites.pop(); - - if (parentSuite) { - currentTest.addLabel(LabelName.PARENT_SUITE, parentSuite); - currentTest.addLabel(LabelName.PACKAGE, parentSuite); - } - - if (suites.length > 0) { - currentTest.addLabel(LabelName.SUITE, suites.join(' > ')); + private addSuiteLabelsToTestCase(currentTest: AllureTest, parent: jest.Circus.DescribeBlock): AllureTest { + if ((parent?.parent as any)?.parent?.parent && (parent?.parent as any)?.parent?.parent.name === 'ROOT_DESCRIBE_BLOCK') { + currentTest.addLabel(LabelName.PARENT_SUITE, (parent.parent as any).parent.name); + currentTest.addLabel(LabelName.SUITE, (parent.parent as any).name); + currentTest.addLabel(LabelName.SUB_SUITE, parent.name); + } else if ((parent?.parent as any)?.parent && (parent?.parent as any)?.parent.name === 'ROOT_DESCRIBE_BLOCK') { + currentTest.addLabel(LabelName.PARENT_SUITE, (parent.parent as any).name); + currentTest.addLabel(LabelName.SUITE, (parent as any).name); + // currentTest.addLabel(LabelName.SUB_SUITE, parent.name); + } else if ((parent as any)?.parent && (parent as any)?.parent.name === 'ROOT_DESCRIBE_BLOCK') { + currentTest.addLabel(LabelName.PARENT_SUITE, (parent as any).name); } - - if (subSuite) { - currentTest.addLabel(LabelName.SUB_SUITE, subSuite); - } - return currentTest; }