Код Senior Отчётность и Allure обновлено

Итог прогона по результатам Allure

Условие

Дан массив результатов Allure { name, historyId, status, start, stop } (время в мс). Один тест мог выполняться несколько раз (ретраи): у таких результатов одинаковый historyId, итоговым считается результат с наибольшим stop. Напишите allureStats(results), вернуть { total, passed, failed, broken, skipped, unknown, retried, durationMs }:

  • счётчики статусов по итоговым результатам, total число уникальных historyId;
  • retried число тестов, у которых было больше одного результата;
  • durationMs это максимальный stop минус минимальный start по всем результатам, для пустого массива 0.

Примеры

allureStats([{"name":"a","historyId":"h1","status":"passed","start":0,"stop":100}, {"name":"b","historyId":"h2","status":"failed","start":50,"stop":300}]) // {"total":2,"passed":1,"failed":1,"broken":0,"skipped":0,"unknown":0,"retried":0,"durationMs":300}
allureStats([{"name":"a","historyId":"h1","status":"failed","start":0,"stop":100}, {"name":"a","historyId":"h1","status":"passed","start":120,"stop":200}]) // {"total":1,"passed":1,"failed":0,"broken":0,"skipped":0,"unknown":0,"retried":1,"durationMs":200}
allureStats([]) // {"total":0,"passed":0,"failed":0,"broken":0,"skipped":0,"unknown":0,"retried":0,"durationMs":0}

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.