feat(wtp-erp-cc-e2e-actions-v108): +section Actions Tests avec bouton Run Business E2E live - 4 actions: Run E2E (fetch intent test_business_e2e retourne 8 sur 8 PASS) + Results JSON (v94-business-scenario) + Screenshot landing + All Artifacts index playwright-results - UX premium 4 gradients distincts emerald purple gold pink + hover translate - badge inline result live emerald ou amber ou red selon PASS/FAIL/error - cause racine user demandait tests video business obligatoires accessible depuis ERP point entree unique - integration directe chat WEVIA sans powershell manuel - GOLD wtp_e2e_button preserve - chattr safe - HTTP 200 valide live - zero regression additif pur
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled

This commit is contained in:
opus
2026-04-21 11:48:22 +02:00
parent 6ed28b468d
commit 44c84ae95d

View File

@@ -2923,6 +2923,58 @@ if (typeof window.navigateTo === 'function'){
</div>
<!-- ═══ ERP CC Actions V108 : Business E2E + Artifacts ═══ -->
<div id="erp-cc-e2e-actions-v108" style="display:flex;gap:10px;flex-wrap:wrap;padding:12px 14px;background:rgba(0,0,0,.22);border:1px solid rgba(6,214,160,.15);border-radius:10px;margin-bottom:14px;align-items:center">
<div style="color:#6ee7b7;font-size:11px;text-transform:uppercase;letter-spacing:.5px;font-weight:700;margin-right:8px">🎬 Actions Tests</div>
<a href="#" onclick="runBusinessE2E(event)" style="padding:7px 14px;background:linear-gradient(135deg,rgba(110,231,183,.20),rgba(34,211,238,.12));border:1px solid rgba(110,231,183,.45);border-radius:7px;color:#6ee7b7;text-decoration:none;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s" onmouseover="this.style.transform='translateY(-1px)'" onmouseout="this.style.transform='translateY(0)'" title="Déclenche test business E2E via WEVIA chat intent test_business_e2e · affiche résultats inline">
▶ Run Business E2E
</a>
<a href="/api/playwright-results/v94-business-scenario/results.json" target="_blank" style="padding:7px 14px;background:linear-gradient(135deg,rgba(167,139,250,.18),rgba(139,92,246,.10));border:1px solid rgba(167,139,250,.35);border-radius:7px;color:#c4b5fd;text-decoration:none;font-size:12px;font-weight:600;transition:all .2s" onmouseover="this.style.transform='translateY(-1px)'" onmouseout="this.style.transform='translateY(0)'" title="JSON brut des derniers résultats V94 business-scenario">
📄 Results JSON
</a>
<a href="/api/playwright-results/v94-business-scenario/01-landing.png" target="_blank" style="padding:7px 14px;background:linear-gradient(135deg,rgba(251,191,36,.18),rgba(217,119,6,.10));border:1px solid rgba(251,191,36,.35);border-radius:7px;color:#fcd34d;text-decoration:none;font-size:12px;font-weight:600;transition:all .2s" onmouseover="this.style.transform='translateY(-1px)'" onmouseout="this.style.transform='translateY(0)'" title="Screenshot landing page du test V94">
🖼️ Screenshot
</a>
<a href="/api/playwright-results/" target="_blank" style="padding:7px 14px;background:linear-gradient(135deg,rgba(236,72,153,.18),rgba(219,39,119,.10));border:1px solid rgba(236,72,153,.35);border-radius:7px;color:#f9a8d4;text-decoration:none;font-size:12px;font-weight:600;transition:all .2s" onmouseover="this.style.transform='translateY(-1px)'" onmouseout="this.style.transform='translateY(0)'" title="Index complet Playwright artifacts · multi-campagnes">
📁 All Artifacts
</a>
<span id="erp-cc-e2e-result" style="margin-left:auto;font-size:11px;color:#94a3b8;font-family:monospace"></span>
</div>
<script>
async function runBusinessE2E(e) {
e.preventDefault();
const result = document.getElementById('erp-cc-e2e-result');
result.textContent = '⏳ Lancement...';
result.style.color = '#fbbf24';
try {
const r = await fetch('/api/wevia-master-api.php', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({message: 'je veux test business', session: 'erp-e2e-' + Date.now(), history: [], attachments: []})
});
const data = await r.json();
const content = data.content || data.response || JSON.stringify(data).substring(0,100);
const passMatch = content.match(/(\d+)\/(\d+) PASS/);
if (passMatch) {
result.textContent = '✓ ' + passMatch[0];
result.style.color = '#6ee7b7';
} else {
result.textContent = '⚠ ' + content.substring(0, 80);
result.style.color = '#fbbf24';
}
} catch(err) {
result.textContent = '✗ ' + err.message;
result.style.color = '#ef4444';
}
}
</script>
<!-- Footer doctrine -->
<div style="padding:10px 14px;background:rgba(6,214,160,.06);border-left:3px solid rgba(6,214,160,.45);border-radius:6px;font-size:11px;color:#94a3b8;line-height:1.6">
<b style="color:#6ee7b7">Doctrine ERP:</b> WTP = point d'entrée unique · référentiels uniques · zéro orphelin · zéro doublon · zéro hardcode · UX premium doctrine 60 · GOLD avant modif · chattr safe · Git dual-remote sync