From 544a35dbcfb6f585f56250d57d641c85018c15a2 Mon Sep 17 00:00:00 2001 From: Roman Kuznetsov Date: Fri, 28 Mar 2025 02:01:12 +0300 Subject: [PATCH 1/2] fix: transform root suite to non-root when non-root id matches root id --- lib/tests-tree-builder/base.ts | 8 ++++++ test/unit/lib/tests-tree-builder/base.js | 32 ++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/lib/tests-tree-builder/base.ts b/lib/tests-tree-builder/base.ts index 1c4382ca4..8358f7933 100644 --- a/lib/tests-tree-builder/base.ts +++ b/lib/tests-tree-builder/base.ts @@ -160,6 +160,14 @@ export class BaseTestsTreeBuilder { const suite: TreeSuite = {id, parentId, name, suitePath, root: isRoot}; this._addSuite(suite); + } else if (!isRoot && suites.byId[id].root) { + const newParentId = this._buildId(suitePath.slice(0, -1)); + + suites.byId[id].root = false; + suites.byId[id].parentId = newParentId; + suites.byId[id].suitePath = suitePath; + suites.byId[id].name = suites.byId[id].name.slice(newParentId.length + 1); + suites.allRootIds.splice(suites.allRootIds.indexOf(id), 1); } if (ind !== arr.length - 1) { diff --git a/test/unit/lib/tests-tree-builder/base.js b/test/unit/lib/tests-tree-builder/base.js index 4805c5713..09da2f960 100644 --- a/test/unit/lib/tests-tree-builder/base.js +++ b/test/unit/lib/tests-tree-builder/base.js @@ -108,6 +108,38 @@ describe('ResultsTreeBuilder', () => { } ); }); + + it('should transform root suite into child suite', () => { + builder.addTestResult(mkFormattedResult_({testPath: ['s1 s2', 's3']})); + + assert.deepEqual( + builder.tree.suites.byId['s1 s2'], + { + id: 's1 s2', + name: 's1 s2', + parentId: null, + root: true, + suitePath: ['s1 s2'], + status: SUCCESS, + suiteIds: ['s1 s2 s3'] + } + ); + + builder.addTestResult(mkFormattedResult_({testPath: ['s1', 's2', 's4']})); + + assert.deepEqual( + builder.tree.suites.byId['s1 s2'], + { + id: 's1 s2', + name: 's2', + parentId: 's1', + root: false, + suitePath: ['s1', 's2'], + status: SUCCESS, + suiteIds: ['s1 s2 s3', 's1 s2 s4'] + } + ); + }); }); describe('"browsers" field in the tree', () => { From 306578bf4541dbb7145f0fb8fa5015fb6645ff4d Mon Sep 17 00:00:00 2001 From: Roman Kuznetsov Date: Fri, 11 Apr 2025 01:14:59 +0300 Subject: [PATCH 2/2] fix: transform suite into child suite --- lib/tests-tree-builder/base.ts | 11 +++-- test/unit/lib/tests-tree-builder/base.js | 52 +++++++++++++++++++++++- 2 files changed, 58 insertions(+), 5 deletions(-) diff --git a/lib/tests-tree-builder/base.ts b/lib/tests-tree-builder/base.ts index 8358f7933..d57fb408a 100644 --- a/lib/tests-tree-builder/base.ts +++ b/lib/tests-tree-builder/base.ts @@ -160,14 +160,17 @@ export class BaseTestsTreeBuilder { const suite: TreeSuite = {id, parentId, name, suitePath, root: isRoot}; this._addSuite(suite); - } else if (!isRoot && suites.byId[id].root) { + } else if (suitePath.length > suites.byId[id].suitePath.length) { const newParentId = this._buildId(suitePath.slice(0, -1)); - suites.byId[id].root = false; suites.byId[id].parentId = newParentId; suites.byId[id].suitePath = suitePath; - suites.byId[id].name = suites.byId[id].name.slice(newParentId.length + 1); - suites.allRootIds.splice(suites.allRootIds.indexOf(id), 1); + suites.byId[id].name = suites.byId[id].id.slice(newParentId.length + 1); + + if (suites.byId[id].root) { + suites.byId[id].root = false; + suites.allRootIds.splice(suites.allRootIds.indexOf(id), 1); + } } if (ind !== arr.length - 1) { diff --git a/test/unit/lib/tests-tree-builder/base.js b/test/unit/lib/tests-tree-builder/base.js index 09da2f960..4faf6b4be 100644 --- a/test/unit/lib/tests-tree-builder/base.js +++ b/test/unit/lib/tests-tree-builder/base.js @@ -109,7 +109,7 @@ describe('ResultsTreeBuilder', () => { ); }); - it('should transform root suite into child suite', () => { + it('should transform root suite into non-root suite', () => { builder.addTestResult(mkFormattedResult_({testPath: ['s1 s2', 's3']})); assert.deepEqual( @@ -140,6 +140,56 @@ describe('ResultsTreeBuilder', () => { } ); }); + + it('should transform suite into child suite', () => { + builder.addTestResult(mkFormattedResult_({testPath: ['s1', 's2 s3', 's4']})); + + assert.deepEqual( + builder.tree.suites.byId['s1 s2 s3'], + { + id: 's1 s2 s3', + name: 's2 s3', + parentId: 's1', + root: false, + suitePath: ['s1', 's2 s3'], + status: SUCCESS, + suiteIds: ['s1 s2 s3 s4'] + } + ); + + builder.addTestResult(mkFormattedResult_({testPath: ['s1', 's2', 's3', 's5']})); + + assert.deepEqual( + builder.tree.suites.byId['s1 s2 s3'], + { + id: 's1 s2 s3', + name: 's3', + parentId: 's1 s2', + root: false, + suitePath: ['s1', 's2', 's3'], + status: SUCCESS, + suiteIds: ['s1 s2 s3 s4', 's1 s2 s3 s5'] + } + ); + }); + + it('should merge suite into existing one', () => { + builder.addTestResult(mkFormattedResult_({testPath: ['s1', 's2', 's3', 's4']})); + builder.addTestResult(mkFormattedResult_({testPath: ['s1', 's2 s3', 's5']})); + + assert.deepEqual( + builder.tree.suites.byId['s1 s2 s3'], + { + id: 's1 s2 s3', + name: 's3', + parentId: 's1 s2', + root: false, + suitePath: ['s1', 's2', 's3'], + status: SUCCESS, + suiteIds: ['s1 s2 s3 s4', 's1 s2 s3 s5'] + } + ); + }); }); describe('"browsers" field in the tree', () => {