46 lines
1.2 KiB
Vue
46 lines
1.2 KiB
Vue
<template>
|
|
<div class="flex p-2 items-center">
|
|
<SmartProgressRing
|
|
class="text-red-500"
|
|
:radius="16"
|
|
:stroke="4"
|
|
:progress="(failedTests / totalTests) * 100"
|
|
/>
|
|
<div class="ml-2">
|
|
<span v-if="failedTests" class="text-red-500">
|
|
{{ failedTests }} failing,
|
|
</span>
|
|
<span v-if="passedTests" class="text-green-500">
|
|
{{ passedTests }} successful,
|
|
</span>
|
|
<span> out of {{ totalTests }} tests. </span>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import { computed, PropType } from "@nuxtjs/composition-api"
|
|
import { HoppTestResult } from "~/helpers/types/HoppTestResult"
|
|
|
|
const props = defineProps({
|
|
testResults: {
|
|
type: Object as PropType<HoppTestResult>,
|
|
required: true,
|
|
},
|
|
})
|
|
|
|
const totalTests = computed(() => props.testResults.expectResults.length)
|
|
const failedTests = computed(
|
|
() =>
|
|
props.testResults.expectResults.filter(
|
|
(result: { status: string }) => result.status === "fail"
|
|
).length
|
|
)
|
|
const passedTests = computed(
|
|
() =>
|
|
props.testResults.expectResults.filter(
|
|
(result: { status: string }) => result.status === "pass"
|
|
).length
|
|
)
|
|
</script>
|