Skip to content

Commit f1999a3

Browse files
mregodelan
andcommitted
Add information about number of tests and subtests
This modifies the scores.json file so it now provides more data: * total_tests: The total number of tests * total_score: The total scores for the tests * per_mille: Per mille value of dividing total_score by total_tests * total_subtests: The total number of subtests * total_subtests_passed: The number of subtests that pass * per_mille_subtests: Per mille value of dividing total_subtests by total_subtests_passed This is based on previous work by Delan Azabani at #35. Co-authored-by: Delan Azabani <[email protected]> Signed-off-by: Manuel Rego Casasnovas <[email protected]>
1 parent a85f53e commit f1999a3

File tree

2 files changed

+228
-15
lines changed

2 files changed

+228
-15
lines changed

process-wpt-results.js

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -199,47 +199,56 @@ export function score_run (run, against_run, focus_areas_map) {
199199
for (const area of Object.keys(FOCUS_AREAS)) {
200200
scores[area] = {
201201
total_tests: 0,
202-
total_score: 0
202+
total_score: 0,
203+
per_mille: 0,
204+
total_subtests: 0,
205+
total_subtests_passed: 0,
206+
per_mille_subtests: 0
203207
}
204208
}
205209

206210
for (const [test, { subtests }] of Object.entries(against_run.test_scores)) {
207211
const areas = focus_areas_map[test]
212+
const subtest_names = Object.keys(subtests)
208213

209214
for (const area of areas) {
210215
scores[area].total_tests += 1
216+
scores[area].total_subtests += !subtest_names.length ? 1 : subtest_names.length
211217
}
212218

213219
const run_test = run.test_scores[test]
214220

215221
// score new tests not present in older runs
216222
if (!run_test) continue
217223

218-
const subtest_names = Object.keys(subtests)
219224
if (!subtest_names.length) {
220225
for (const area of areas) {
221226
scores[area].total_score += run_test.score
227+
scores[area].total_subtests_passed += run_test.score
222228
}
223229
} else {
224-
let test_score = 0
230+
let subtests_passed = 0
225231
for (const subtest of subtest_names) {
226232
if (Object.hasOwn(run_test.subtests, subtest)) {
227-
test_score += run_test.subtests[subtest].score
233+
subtests_passed += run_test.subtests[subtest].score
228234
}
229235
}
230-
test_score /= subtest_names.length
231236
for (const area of areas) {
232-
scores[area].total_score += test_score
237+
scores[area].total_score += subtests_passed / subtest_names.length
238+
scores[area].total_subtests_passed += subtests_passed
233239
}
234240
}
235241
}
236242

237243
return Object.entries(scores).reduce((scores, [area, totals]) => {
238-
scores[area] = 0
244+
scores[area] = totals
239245
if (totals.total_tests !== 0) {
240-
scores[area] = Math.floor(
246+
scores[area].per_mille = Math.floor(
241247
1000 * totals.total_score / totals.total_tests
242248
)
249+
scores[area].per_mille_subtests = Math.floor(
250+
1000 * totals.total_subtests_passed / totals.total_subtests
251+
)
243252
}
244253
return scores
245254
}, {})

test/process-wpt-results.test.js

Lines changed: 211 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -166,11 +166,109 @@ describe('Scoring', () => {
166166
test2: ['all']
167167
}
168168
let score = score_run(run, run, focus_area_map)
169-
assert.deepEqual(score.all, 1000)
169+
assert.deepEqual(score.all,
170+
{
171+
total_tests: 2,
172+
total_score: 2,
173+
per_mille: 1000,
174+
total_subtests: 2,
175+
total_subtests_passed: 2,
176+
per_mille_subtests: 1000
177+
})
170178

171179
run.test_scores.test2.score = 0
172180
score = score_run(run, run, focus_area_map)
173-
assert.deepEqual(score.all, 500)
181+
assert.deepEqual(score.all,
182+
{
183+
total_tests: 2,
184+
total_score: 1,
185+
per_mille: 500,
186+
total_subtests: 2,
187+
total_subtests_passed: 1,
188+
per_mille_subtests: 500
189+
})
190+
})
191+
it('calculates subtests count', () => {
192+
const run = {
193+
test_scores: {
194+
test1: {
195+
score: 1,
196+
subtests: {
197+
subtest1: { score: 1 },
198+
subtest2: { score: 1 },
199+
subtest3: { score: 1 }
200+
}
201+
},
202+
test2: {
203+
score: 0,
204+
subtests: {
205+
subtest1: { score: 1 },
206+
subtest2: { score: 0 }
207+
}
208+
}
209+
}
210+
}
211+
212+
const focus_area_map = {
213+
test1: ['all'],
214+
test2: ['all']
215+
}
216+
const score = score_run(run, run, focus_area_map)
217+
assert.deepEqual(score.all,
218+
{
219+
total_tests: 2,
220+
total_score: 1.5,
221+
per_mille: 750,
222+
total_subtests: 5,
223+
total_subtests_passed: 4,
224+
per_mille_subtests: 800
225+
})
226+
})
227+
it('calculates subtests counts with simple tests', () => {
228+
const run = {
229+
test_scores: {
230+
test1: {
231+
score: 1,
232+
subtests: {
233+
subtest1: { score: 1 },
234+
subtest2: { score: 1 },
235+
subtest3: { score: 1 }
236+
}
237+
},
238+
test2: {
239+
score: 0,
240+
subtests: {
241+
subtest1: { score: 1 },
242+
subtest2: { score: 0 }
243+
}
244+
},
245+
test3: {
246+
score: 1,
247+
subtests: {}
248+
},
249+
test4: {
250+
score: 0,
251+
subtests: {}
252+
}
253+
}
254+
}
255+
256+
const focus_area_map = {
257+
test1: ['all'],
258+
test2: ['all'],
259+
test3: ['all'],
260+
test4: ['all']
261+
}
262+
const score = score_run(run, run, focus_area_map)
263+
assert.deepEqual(score.all,
264+
{
265+
total_tests: 4,
266+
total_score: 2.5,
267+
per_mille: 625,
268+
total_subtests: 7,
269+
total_subtests_passed: 5,
270+
per_mille_subtests: 714
271+
})
174272
})
175273
it('calculates scores for subtests', () => {
176274
const run = {
@@ -187,7 +285,15 @@ describe('Scoring', () => {
187285
}
188286

189287
const score = score_run(run, run, { test1: ['all'] })
190-
assert.equal(score.all, 1000)
288+
assert.deepEqual(score.all,
289+
{
290+
total_tests: 1,
291+
total_score: 1,
292+
per_mille: 1000,
293+
total_subtests: 3,
294+
total_subtests_passed: 3,
295+
per_mille_subtests: 1000
296+
})
191297
})
192298
it('calculates scores for subtests by averaging', () => {
193299
const run = {
@@ -204,7 +310,15 @@ describe('Scoring', () => {
204310
}
205311

206312
const score = score_run(run, run, { test1: ['all'] })
207-
assert.equal(score.all, 333)
313+
assert.deepEqual(score.all,
314+
{
315+
total_tests: 1,
316+
total_score: 1 / 3,
317+
per_mille: 333,
318+
total_subtests: 3,
319+
total_subtests_passed: 1,
320+
per_mille_subtests: 333
321+
})
208322
})
209323
it('calculates scores correctly even subtest name collides with JS builtins', () => {
210324
const run = {
@@ -237,7 +351,15 @@ describe('Scoring', () => {
237351
}
238352

239353
const score = score_run(run, against_run, { test1: ['all'], test2: ['all'] })
240-
assert.equal(score.all, 500)
354+
assert.deepEqual(score.all,
355+
{
356+
total_tests: 2,
357+
total_score: 1,
358+
per_mille: 500,
359+
total_subtests: 2,
360+
total_subtests_passed: 1,
361+
per_mille_subtests: 500
362+
})
241363
})
242364
it('calculates scores based only on tests in new runs', () => {
243365
const old_run = {
@@ -258,11 +380,93 @@ describe('Scoring', () => {
258380
test1: all, test2: all, test3: all
259381
}
260382
let score = score_run(old_run, new_run, focus_map)
261-
assert.equal(score.all, 0)
383+
assert.deepEqual(score.all,
384+
{
385+
total_tests: 2,
386+
total_score: 0,
387+
per_mille: 0,
388+
total_subtests: 2,
389+
total_subtests_passed: 0,
390+
per_mille_subtests: 0
391+
})
392+
old_run.test_scores.test3.score = 1
393+
score = score_run(old_run, new_run, focus_map)
394+
assert.deepEqual(score.all,
395+
{
396+
total_tests: 2,
397+
total_score: 1,
398+
per_mille: 500,
399+
total_subtests: 2,
400+
total_subtests_passed: 1,
401+
per_mille_subtests: 500
402+
})
403+
})
404+
it('calculates scores based only on subtests in new runs', () => {
405+
const old_run = {
406+
test_scores: {
407+
test1: {
408+
score: 0,
409+
subtests: {
410+
subtest1: { score: 1 },
411+
subtest2: { score: 0 }
412+
}
413+
},
414+
test3: {
415+
score: 0,
416+
subtests: {
417+
subtest1: { score: 0 },
418+
subtest2: { score: 1 }
419+
}
420+
}
421+
}
422+
}
423+
const new_run = {
424+
test_scores: {
425+
test2: {
426+
score: 1,
427+
subtests: {
428+
subtest1: { score: 1 },
429+
subtest2: { score: 1 },
430+
subtest3: { score: 1 },
431+
subtest4: { score: 1 }
432+
}
433+
},
434+
test3: {
435+
score: 1,
436+
subtests: {
437+
subtest1: { score: 1 },
438+
subtest2: { score: 1 }
439+
}
440+
}
441+
}
442+
}
262443

444+
const all = ['all']
445+
const focus_map = {
446+
test1: all, test2: all, test3: all
447+
}
448+
let score = score_run(old_run, new_run, focus_map)
449+
assert.deepEqual(score.all,
450+
{
451+
total_tests: 2,
452+
total_score: 0.5,
453+
per_mille: 250,
454+
total_subtests: 6,
455+
total_subtests_passed: 1,
456+
per_mille_subtests: 166
457+
})
263458
old_run.test_scores.test3.score = 1
459+
old_run.test_scores.test3.subtests.subtests1 = 1
264460
score = score_run(old_run, new_run, focus_map)
265-
assert.equal(score.all, 500)
461+
assert.deepEqual(score.all,
462+
{
463+
total_tests: 2,
464+
total_score: 0.5,
465+
per_mille: 250,
466+
total_subtests: 6,
467+
total_subtests_passed: 1,
468+
per_mille_subtests: 166
469+
})
266470
})
267471
})
268472

0 commit comments

Comments
 (0)