Skip to content

Commit d23ead0

Browse files
Merge pull request #668 from gemini-testing/INFRADUTY-28780.invalid_stats
fix: tree builder calc stats
2 parents 47a947e + 62d6539 commit d23ead0

File tree

3 files changed

+133
-8
lines changed

3 files changed

+133
-8
lines changed

lib/tests-tree-builder/static.ts

Lines changed: 64 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -110,15 +110,32 @@ export class StaticTestsTreeBuilder extends BaseTestsTreeBuilder {
110110
switch (status) {
111111
case TestStatus.FAIL:
112112
case TestStatus.ERROR: {
113+
if (this._passedTestIds[testIdWithBrowser]) {
114+
delete this._passedTestIds[testIdWithBrowser];
115+
this._failedTestIds[testIdWithBrowser] = true;
116+
117+
this._stats.passed--;
118+
this._stats.failed++;
119+
this._stats.retries++;
120+
121+
this._stats.perBrowser[browserName][version].passed--;
122+
this._stats.perBrowser[browserName][version].failed++;
123+
this._stats.perBrowser[browserName][version].retries++;
124+
125+
return;
126+
}
127+
113128
if (this._failedTestIds[testIdWithBrowser]) {
114129
this._stats.retries++;
115130
this._stats.perBrowser[browserName][version].retries++;
116131
return;
117132
}
118133

119134
this._failedTestIds[testIdWithBrowser] = true;
135+
120136
this._stats.failed++;
121137
this._stats.total++;
138+
122139
this._stats.perBrowser[browserName][version].failed++;
123140
this._stats.perBrowser[browserName][version].total++;
124141
return;
@@ -133,9 +150,12 @@ export class StaticTestsTreeBuilder extends BaseTestsTreeBuilder {
133150

134151
if (this._failedTestIds[testIdWithBrowser]) {
135152
delete this._failedTestIds[testIdWithBrowser];
153+
this._passedTestIds[testIdWithBrowser] = true;
154+
136155
this._stats.failed--;
137156
this._stats.passed++;
138157
this._stats.retries++;
158+
139159
this._stats.perBrowser[browserName][version].failed--;
140160
this._stats.perBrowser[browserName][version].passed++;
141161
this._stats.perBrowser[browserName][version].retries++;
@@ -144,15 +164,59 @@ export class StaticTestsTreeBuilder extends BaseTestsTreeBuilder {
144164
}
145165

146166
this._passedTestIds[testIdWithBrowser] = true;
167+
147168
this._stats.passed++;
148169
this._stats.total++;
170+
149171
this._stats.perBrowser[browserName][version].passed++;
150172
this._stats.perBrowser[browserName][version].total++;
151173

152174
return;
153175
}
154176

155177
case TestStatus.SKIPPED: {
178+
if (this._failedTestIds[testIdWithBrowser]) {
179+
delete this._failedTestIds[testIdWithBrowser];
180+
this._skippedTestIds[testIdWithBrowser] = true;
181+
182+
this._stats.failed--;
183+
this._stats.skipped++;
184+
this._stats.retries++;
185+
186+
this._stats.perBrowser[browserName][version].failed--;
187+
this._stats.perBrowser[browserName][version].skipped++;
188+
this._stats.perBrowser[browserName][version].retries++;
189+
190+
this._skips.push({
191+
browser: browserName,
192+
suite: testId,
193+
comment: testResult.skipReason
194+
});
195+
196+
return;
197+
}
198+
199+
if (this._passedTestIds[testIdWithBrowser]) {
200+
delete this._passedTestIds[testIdWithBrowser];
201+
this._skippedTestIds[testIdWithBrowser] = true;
202+
203+
this._stats.passed--;
204+
this._stats.skipped++;
205+
this._stats.retries++;
206+
207+
this._stats.perBrowser[browserName][version].passed--;
208+
this._stats.perBrowser[browserName][version].passed--;
209+
this._stats.perBrowser[browserName][version].passed--;
210+
211+
this._skips.push({
212+
browser: browserName,
213+
suite: testId,
214+
comment: testResult.skipReason
215+
});
216+
217+
return;
218+
}
219+
156220
if (this._skippedTestIds[testIdWithBrowser]) {
157221
this._stats.retries++;
158222
this._stats.perBrowser[browserName][version].retries++;
@@ -170,13 +234,6 @@ export class StaticTestsTreeBuilder extends BaseTestsTreeBuilder {
170234
this._stats.skipped++;
171235
this._stats.perBrowser[browserName][version].skipped++;
172236

173-
if (this._failedTestIds[testIdWithBrowser]) {
174-
delete this._failedTestIds[testIdWithBrowser];
175-
this._stats.failed--;
176-
this._stats.perBrowser[browserName][version].failed--;
177-
return;
178-
}
179-
180237
this._stats.total++;
181238
this._stats.perBrowser[browserName][version].total++;
182239
}

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
"scripts": {
1515
"build": "rimraf build && npm run build:client && npm run build:server && npm run build-bundle -- --minify",
1616
"build:client": "cross-env NODE_ENV=production webpack build --config=webpack.prod.js --progress && npm run copy-static",
17+
"build:client:dev": "cross-env NODE_ENV=development webpack build --config=webpack.dev.js --progress && npm run copy-static",
1718
"build:server": "npx tsc",
1819
"build-bundle": "esbuild ./lib/bundle/index.ts --outdir=./build/lib/bundle --bundle --format=cjs --platform=node --target=ES2021",
1920
"copy-static": "copyfiles 'lib/static/icons/*' .npmignore build",

test/unit/lib/tests-tree-builder/static.js

Lines changed: 68 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
const _ = require('lodash');
44
const {StaticTestsTreeBuilder} = require('lib/tests-tree-builder/static');
5-
const {SUCCESS} = require('lib/constants/test-statuses');
5+
const {SUCCESS, FAIL, SKIPPED} = require('lib/constants/test-statuses');
66
const {BrowserVersions} = require('lib/constants/browser');
77
const {ToolName} = require('lib/constants');
88

@@ -191,5 +191,72 @@ describe('StaticResultsTreeBuilder', () => {
191191
]);
192192
});
193193
});
194+
195+
describe('should calculate stats', () => {
196+
it('failed and success tests', () => {
197+
const dataFromDb1 = mkDataFromDb_({name: 'bro1', metaInfo: {browserVersion: 'v1'}, status: SUCCESS});
198+
const dataFromDb2 = mkDataFromDb_({name: 'bro2', metaInfo: {browserVersion: 'v2'}, status: FAIL});
199+
const rows = [mkDataRowFromDb_(dataFromDb1), mkDataRowFromDb_(dataFromDb2)];
200+
201+
const {stats} = builder.build(rows);
202+
203+
assert.deepEqual(stats.perBrowser.bro1.v1, {
204+
failed: 0,
205+
passed: 1,
206+
retries: 0,
207+
skipped: 0,
208+
total: 1
209+
});
210+
211+
assert.deepEqual(stats.perBrowser.bro2.v2, {
212+
failed: 1,
213+
passed: 0,
214+
retries: 0,
215+
skipped: 0,
216+
total: 1
217+
});
218+
219+
assert.match(stats, {
220+
failed: 1,
221+
passed: 1,
222+
retries: 0,
223+
skipped: 0,
224+
total: 2
225+
});
226+
});
227+
228+
it('mixed status test', () => {
229+
const dataFromDb1 = mkDataFromDb_({name: 'bro1', metaInfo: {browserVersion: 'v1'}, status: SUCCESS});
230+
const dataFromDb2 = mkDataFromDb_({name: 'bro1', metaInfo: {browserVersion: 'v1'}, status: FAIL});
231+
const dataFromDb3 = mkDataFromDb_({name: 'bro1', metaInfo: {browserVersion: 'v1'}, status: SUCCESS});
232+
const dataFromDb4 = mkDataFromDb_({name: 'bro1', metaInfo: {browserVersion: 'v1'}, status: FAIL});
233+
const dataFromDb5 = mkDataFromDb_({name: 'bro1', metaInfo: {browserVersion: 'v1'}, status: SKIPPED});
234+
const rows = [
235+
mkDataRowFromDb_(dataFromDb1),
236+
mkDataRowFromDb_(dataFromDb2),
237+
mkDataRowFromDb_(dataFromDb3),
238+
mkDataRowFromDb_(dataFromDb4),
239+
mkDataRowFromDb_(dataFromDb5)
240+
];
241+
242+
const {stats} = builder.build(rows);
243+
244+
assert.deepEqual(stats.perBrowser.bro1.v1, {
245+
failed: 0,
246+
passed: 0,
247+
retries: 4,
248+
skipped: 1,
249+
total: 1
250+
});
251+
252+
assert.match(stats, {
253+
failed: 0,
254+
passed: 0,
255+
retries: 4,
256+
skipped: 1,
257+
total: 1
258+
});
259+
});
260+
});
194261
});
195262
});

0 commit comments

Comments
 (0)