@cat-factory/app 0.67.0 → 0.68.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/components/testing/TestReportWindow.vue +37 -0
- package/i18n/locales/en.json +1 -0
- package/i18n/locales/es.json +1 -0
- package/i18n/locales/fr.json +1 -0
- package/i18n/locales/he.json +1 -0
- package/i18n/locales/ja.json +1 -0
- package/i18n/locales/pl.json +1 -0
- package/i18n/locales/tr.json +1 -0
- package/i18n/locales/uk.json +1 -0
- package/package.json +1 -1
|
@@ -66,6 +66,30 @@ const infraSetup = computed(() => testState.value?.infraSetup ?? null)
|
|
|
66
66
|
// The captured stand-up logs are shown on demand (they can be long).
|
|
67
67
|
const showInfraSetupLogs = ref(false)
|
|
68
68
|
|
|
69
|
+
// Once ALL of a tester's infrastructure is up (its container is running, the ephemeral
|
|
70
|
+
// environment (when it tests against one) is ready, and any in-container dependency stand-up
|
|
71
|
+
// succeeded) the agent can actually begin exercising the change. Surface an explicit line
|
|
72
|
+
// saying so, so a run's details don't jump silently from "provisioning" straight into a blank
|
|
73
|
+
// "working" state. This only fills the gap BEFORE the first working signal, so it is scoped
|
|
74
|
+
// to a still-running step that hasn't produced a report yet: a finished step (state 'done'),
|
|
75
|
+
// a failed run, or one that already has a report is past "starting", so the banner clears.
|
|
76
|
+
// (The backend keeps the raw container status at 'up' after the step ends; 'destroyed' is a
|
|
77
|
+
// display-only derivation in StepContainerStatus, so gating on the step state is what stops
|
|
78
|
+
// the banner lingering.) Requires the container to actually report 'up' (a not-yet-created
|
|
79
|
+
// container is not "up"), and requires the tester to genuinely depend on a test environment
|
|
80
|
+
// (an ephemeral env or an in-container stand-up); an infraless tester has nothing to announce.
|
|
81
|
+
const infraReady = computed(() => {
|
|
82
|
+
const s = step.value
|
|
83
|
+
if (!s || runFailed.value || s.state === 'done' || report.value) return false
|
|
84
|
+
if (s.container?.status !== 'up') return false
|
|
85
|
+
const env = stepEnvironment.value
|
|
86
|
+
const infra = infraSetup.value
|
|
87
|
+
if (!env && !infra) return false
|
|
88
|
+
const envReady = !env || env.status === 'ready'
|
|
89
|
+
const standupReady = !infra || infra.started
|
|
90
|
+
return envReady && standupReady
|
|
91
|
+
})
|
|
92
|
+
|
|
69
93
|
const screenshots = computed<TestScreenshot[]>(() => report.value?.screenshots ?? [])
|
|
70
94
|
// Resolve each capture into an object URL for the gallery + lightbox. The shared cache
|
|
71
95
|
// dedupes, so the lightbox reuses what the thumbnails fetched. (The reference design is not
|
|
@@ -424,6 +448,19 @@ const GROUP_STATUS_META: Record<ScenarioGroup['status'], { icon: string; text: s
|
|
|
424
448
|
</template>
|
|
425
449
|
</div>
|
|
426
450
|
|
|
451
|
+
<!-- Explicit confirmation that every piece of the tester's infrastructure is up
|
|
452
|
+
(container running, the ephemeral environment ready, any in-container
|
|
453
|
+
dependency stand-up done) and the agent is now starting its work — so the
|
|
454
|
+
details don't jump silently from "provisioning" into a blank working state. -->
|
|
455
|
+
<div
|
|
456
|
+
v-if="infraReady"
|
|
457
|
+
data-testid="tester-env-ready"
|
|
458
|
+
class="flex items-center gap-2 rounded-lg border border-emerald-500/30 bg-emerald-500/10 px-3 py-2 text-[13px] text-emerald-200"
|
|
459
|
+
>
|
|
460
|
+
<UIcon name="i-lucide-rocket" class="h-4 w-4 shrink-0 text-emerald-400" />
|
|
461
|
+
<span>{{ t('testing.readyBanner') }}</span>
|
|
462
|
+
</div>
|
|
463
|
+
|
|
427
464
|
<div v-if="executionId">
|
|
428
465
|
<UButton
|
|
429
466
|
:icon="showProvisioning ? 'i-lucide-chevron-up' : 'i-lucide-scroll-text'"
|
package/i18n/locales/en.json
CHANGED
|
@@ -3180,6 +3180,7 @@
|
|
|
3180
3180
|
"showLogs": "Show stand-up logs",
|
|
3181
3181
|
"hideLogs": "Hide stand-up logs"
|
|
3182
3182
|
},
|
|
3183
|
+
"readyBanner": "Test environment is up. The tester is starting its work.",
|
|
3183
3184
|
"footer": "Scenarios are the areas the Tester chose to exercise (its spec acceptance scenarios). Outcomes and concerns are grouped under them by name.",
|
|
3184
3185
|
"@screenshotAlt": {
|
|
3185
3186
|
"description": "Alt text for a captured screenshot thumbnail; {view} is the screen/view name. The literal word 'screenshot' should be localized."
|
package/i18n/locales/es.json
CHANGED
|
@@ -3052,6 +3052,7 @@
|
|
|
3052
3052
|
"blocking": "({count} bloqueante) | ({count} bloqueantes)"
|
|
3053
3053
|
},
|
|
3054
3054
|
"environment": "Entorno",
|
|
3055
|
+
"readyBanner": "El entorno de pruebas está listo. El Tester está comenzando su trabajo.",
|
|
3055
3056
|
"footer": "Los escenarios son las áreas que el Tester decidió ejercitar (sus escenarios de aceptación de la especificación). Los resultados y las incidencias se agrupan bajo ellos por nombre.",
|
|
3056
3057
|
"infrastructure": "Infraestructura",
|
|
3057
3058
|
"standup": {
|
package/i18n/locales/fr.json
CHANGED
|
@@ -3052,6 +3052,7 @@
|
|
|
3052
3052
|
"blocking": "({count} bloquante) | ({count} bloquantes)"
|
|
3053
3053
|
},
|
|
3054
3054
|
"environment": "Environnement",
|
|
3055
|
+
"readyBanner": "L'environnement de test est prêt. Le Testeur commence son travail.",
|
|
3055
3056
|
"footer": "Les scénarios sont les domaines que le Testeur a choisi d'éprouver (ses scénarios d'acceptation de la spécification). Les résultats et les réserves y sont regroupés par nom.",
|
|
3056
3057
|
"infrastructure": "Infrastructure",
|
|
3057
3058
|
"standup": {
|
package/i18n/locales/he.json
CHANGED
|
@@ -3071,6 +3071,7 @@
|
|
|
3071
3071
|
"showLogs": "הצג יומני הקמה",
|
|
3072
3072
|
"hideLogs": "הסתר יומני הקמה"
|
|
3073
3073
|
},
|
|
3074
|
+
"readyBanner": "סביבת הבדיקה פעילה. הבודק מתחיל בעבודתו.",
|
|
3074
3075
|
"footer": "תרחישים הם התחומים שהבודק בחר לבחון (תרחישי קבלת המפרט שלו). תוצאות וחששות מקובצים תחתם לפי שם."
|
|
3075
3076
|
},
|
|
3076
3077
|
"visualConfirm": {
|
package/i18n/locales/ja.json
CHANGED
package/i18n/locales/pl.json
CHANGED
|
@@ -3052,6 +3052,7 @@
|
|
|
3052
3052
|
"blocking": "({count} blokujące) | ({count} blokujące) | ({count} blokujących)"
|
|
3053
3053
|
},
|
|
3054
3054
|
"environment": "Środowisko",
|
|
3055
|
+
"readyBanner": "Środowisko testowe jest gotowe. Tester rozpoczyna pracę.",
|
|
3055
3056
|
"footer": "Scenariusze to obszary, które Tester postanowił sprawdzić (jego scenariusze akceptacyjne ze specyfikacji). Wyniki i zastrzeżenia są pod nimi grupowane według nazwy.",
|
|
3056
3057
|
"infrastructure": "Infrastruktura",
|
|
3057
3058
|
"standup": {
|
package/i18n/locales/tr.json
CHANGED
|
@@ -3073,6 +3073,7 @@
|
|
|
3073
3073
|
"showLogs": "Başlatma günlüklerini göster",
|
|
3074
3074
|
"hideLogs": "Başlatma günlüklerini gizle"
|
|
3075
3075
|
},
|
|
3076
|
+
"readyBanner": "Test ortamı hazır. Test aracı çalışmaya başlıyor.",
|
|
3076
3077
|
"footer": "Senaryolar, Tester'ın test etmek için seçtiği alanlardır (spesifikasyon kabul senaryoları). Sonuçlar ve endişeler ada göre bunların altında gruplanır."
|
|
3077
3078
|
},
|
|
3078
3079
|
"visualConfirm": {
|
package/i18n/locales/uk.json
CHANGED
|
@@ -3052,6 +3052,7 @@
|
|
|
3052
3052
|
"blocking": "({count} блокувальне) | ({count} блокувальні) | ({count} блокувальних)"
|
|
3053
3053
|
},
|
|
3054
3054
|
"environment": "Середовище",
|
|
3055
|
+
"readyBanner": "Тестове середовище готове. Тестувальник починає роботу.",
|
|
3055
3056
|
"footer": "Сценарії — це області, які Тестувальник вирішив перевірити (його сценарії приймання зі специфікації). Результати та зауваження групуються під ними за назвою.",
|
|
3056
3057
|
"infrastructure": "Інфраструктура",
|
|
3057
3058
|
"standup": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/app",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.68.0",
|
|
4
4
|
"description": "Reusable Nuxt layer for the Agent Architecture Board SPA (components, stores, composables, pages). Consume it from a thin deployment app via `extends: ['@cat-factory/app']` and point it at your backend with NUXT_PUBLIC_API_BASE. See deploy/frontend for an example.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|