This commit is contained in:
th committed 2026-04-19 22:32:06 +02:00
1 parent fcefd258eb
commit 6b6157d786
23 files changed
+1140 -237

No files matched your search

+12 -11
View File
@@ -2,6 +2,7 @@
import { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue'
import { PhArrowClockwise, PhCheck, PhClipboardText, PhWarning, PhX } from '@phosphor-icons/vue'
import { useSceneStore } from '@/stores/scene'
import { t } from '@/i18n'
import { runAll, type TestResult } from './testRunner'
import { registerAllTests } from './tests'
@@ -190,7 +191,7 @@ onBeforeUnmount(() => document.removeEventListener('keydown', onKeyDown))
<Transition name="hud-pop">
<div v-if="modelValue && running" class="hud" role="status" aria-live="polite">
<div class="hud-top">
<span class="hud-tag">Tests laufen</span>
<span class="hud-tag">{{ t('tests.running') }}</span>
<span class="hud-counts">
<span class="hud-count">{{ done }}/{{ total }}</span>
<span class="hud-chip ok" v-if="passedSoFar">{{ passedSoFar }} ✓</span>
@@ -213,7 +214,7 @@ onBeforeUnmount(() => document.removeEventListener('keydown', onKeyDown))
<div class="panel" role="dialog" aria-modal="true">
<header class="hdr">
<div class="hdr-title">
<span>Test Runner</span>
<span>{{ t('tests.title') }}</span>
<span v-if="results.length" class="hdr-status">
<span class="ok-badge" :class="{ bad: failed > 0 }">
{{ passed }}/{{ results.length }}
@@ -225,16 +226,16 @@ onBeforeUnmount(() => document.removeEventListener('keydown', onKeyDown))
<button
class="tbtn"
:disabled="!results.length"
:title="clipboardStatus === 'copied' ? 'Report kopiert' : 'Report in Zwischenablage kopieren'"
:title="clipboardStatus === 'copied' ? t('tests.copiedTooltip') : t('tests.copyTooltip')"
:class="{ copied: clipboardStatus === 'copied', failed: clipboardStatus === 'failed' }"
@click="copyReport"
>
<PhClipboardText :size="14" />
</button>
<button class="tbtn" title="Erneut ausführen" @click="run">
<button class="tbtn" :title="t('tests.runAgain')" @click="run">
<PhArrowClockwise :size="14" />
</button>
<button class="tbtn" title="Schließen" @click="close">
<button class="tbtn" :title="t('tests.close')" @click="close">
<PhX :size="14" weight="bold" />
</button>
</div>
@@ -242,16 +243,16 @@ onBeforeUnmount(() => document.removeEventListener('keydown', onKeyDown))
<div v-if="clipboardStatus !== 'idle'" class="clip-banner" :class="clipboardStatus">
<span v-if="clipboardStatus === 'copied'">
Fehlerreport wurde in die Zwischenablage kopiert.
{{ t('tests.copiedBanner') }}
</span>
<span v-else>
Kopieren fehlgeschlagen — Report manuell über das Clipboard-Icon auslösen.
{{ t('tests.copyFailedBanner') }}
</span>
</div>
<div class="body">
<div v-if="!results.length" class="empty">
Keine Ergebnisse — „Erneut ausführen“ klicken oder <kbd>⌃⇧⌥T</kbd> drücken.
{{ t('tests.emptyState', { shortcut: '⌃⇧⌥T' }) }}
</div>
<div v-for="g in grouped" :key="g.suite" class="suite">
<div class="suite-hdr" :class="{ bad: !g.ok }">
@@ -274,9 +275,9 @@ onBeforeUnmount(() => document.removeEventListener('keydown', onKeyDown))
</div>
<footer class="ftr">
<span class="ftr-item">{{ results.length }} Tests</span>
<span class="ftr-item ok" v-if="passed">{{ passed }} grün</span>
<span class="ftr-item bad" v-if="failed">{{ failed }} rot</span>
<span class="ftr-item">{{ t('tests.testsCountLabel', { n: results.length }) }}</span>
<span class="ftr-item ok" v-if="passed">{{ t('tests.passedLabel', { n: passed }) }}</span>
<span class="ftr-item bad" v-if="failed">{{ t('tests.failedLabel', { n: failed }) }}</span>
</footer>
</div>
</div>