Skip to content

Commit ee80940

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 ee80940

File tree

2 files changed

+170
-15
lines changed

2 files changed

+170
-15
lines changed

process-wpt-results.js

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,11 @@ 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

@@ -213,33 +217,47 @@ export function score_run (run, against_run, focus_areas_map) {
213217
const run_test = run.test_scores[test]
214218

215219
// score new tests not present in older runs
216-
if (!run_test) continue
220+
if (!run_test) {
221+
for (const area of areas) {
222+
scores[area].total_subtests += 1
223+
}
224+
continue
225+
}
217226

218227
const subtest_names = Object.keys(subtests)
219228
if (!subtest_names.length) {
220229
for (const area of areas) {
221230
scores[area].total_score += run_test.score
231+
scores[area].total_subtests += 1
232+
scores[area].total_subtests_passed += run_test.score
222233
}
223234
} else {
224-
let test_score = 0
235+
let subtests_count = 0
236+
let subtests_passed = 0
225237
for (const subtest of subtest_names) {
238+
subtests_count += 1
226239
if (Object.hasOwn(run_test.subtests, subtest)) {
227-
test_score += run_test.subtests[subtest].score
240+
subtests_passed += run_test.subtests[subtest].score
228241
}
229242
}
230-
test_score /= subtest_names.length
243+
let test_score = subtests_passed / subtests_count
231244
for (const area of areas) {
232245
scores[area].total_score += test_score
246+
scores[area].total_subtests += subtests_count
247+
scores[area].total_subtests_passed += subtests_passed
233248
}
234249
}
235250
}
236251

237252
return Object.entries(scores).reduce((scores, [area, totals]) => {
238-
scores[area] = 0
253+
scores[area] = totals
239254
if (totals.total_tests !== 0) {
240-
scores[area] = Math.floor(
255+
scores[area].per_mille = Math.floor(
241256
1000 * totals.total_score / totals.total_tests
242257
)
258+
scores[area].per_mille_subtests = Math.floor(
259+
1000 * totals.total_subtests_passed / totals.total_subtests
260+
)
243261
}
244262
return scores
245263
}, {})

test/process-wpt-results.test.js

Lines changed: 145 additions & 8 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+
let 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+
let 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,26 @@ 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)
262-
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+
})
263392
old_run.test_scores.test3.score = 1
264393
score = score_run(old_run, new_run, focus_map)
265-
assert.equal(score.all, 500)
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+
})
266403
})
267404
})
268405

0 commit comments

Comments
 (0)