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', '
{
- 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', ' {
+ 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;
}