195 lines
11 KiB
HTML
195 lines
11 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="fr">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
|
<title>WEVAL — Master Test Report</title>
|
|
<link href="https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&family=Outfit:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
|
<style>
|
|
:root{--bg:#080b12;--surface:rgba(255,255,255,.03);--border:rgba(255,255,255,.06);--text:#94a3b8;--white:#f1f5f9;--accent:#6366f1;--teal:#00c896;--red:#ef4444;--gold:#f0c674;--r:12px}
|
|
*{margin:0;padding:0;box-sizing:border-box}
|
|
body{font-family:"Outfit",system-ui,sans-serif;background:var(--bg);color:var(--text);font-size:15px;min-height:100vh}
|
|
.wrap{max-width:1400px;margin:0 auto;padding:1rem 2%}
|
|
.hero{text-align:center;padding:1.2rem 0 1rem}
|
|
.badge{display:inline-block;background:rgba(99,102,241,.1);color:var(--accent);padding:5px 14px;border-radius:20px;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;margin-bottom:.5rem}
|
|
h1{font-size:1.5rem;font-weight:800;color:var(--white);margin-bottom:.2rem}
|
|
h1 em{color:var(--teal);font-style:normal}
|
|
.sub{color:var(--text);font-size:.8rem}
|
|
.tabs{display:flex;gap:0;margin:1rem 0;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);overflow-x:auto;-webkit-overflow-scrolling:touch}
|
|
.tab{flex:none;padding:.55rem .8rem;text-align:center;cursor:pointer;font-weight:600;font-size:.75rem;color:var(--text);transition:all .2s;border:none;background:transparent;white-space:nowrap}
|
|
.tab:hover{color:var(--white);background:rgba(99,102,241,.08)}
|
|
.tab.active{background:var(--accent);color:#fff}
|
|
.tab .ct{font-family:"Space Mono";font-size:.65rem;margin-left:.2rem;opacity:.7}
|
|
.panel{display:none}.panel.active{display:block}
|
|
.stats{display:flex;gap:.6rem;justify-content:center;flex-wrap:wrap;margin-bottom:1rem}
|
|
.st{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:.4rem 1rem;text-align:center}
|
|
.st-n{font-family:"Space Mono";font-size:1.3rem;font-weight:700;color:var(--white)}
|
|
.st-l{font-size:.6rem;text-transform:uppercase;letter-spacing:.04em}
|
|
.st.pass .st-n{color:var(--teal)}.st.fail .st-n{color:var(--red)}
|
|
.output{font-family:"Space Mono",monospace;font-size:11px;line-height:1.6;white-space:pre-wrap;word-break:break-word;padding:.8rem;background:rgba(0,0,0,.3);border:1px solid var(--border);border-radius:var(--r);max-height:500px;overflow-y:auto}
|
|
.output .p{color:var(--teal)}.output .f{color:var(--red)}.output .w{color:var(--gold)}.output .s{color:var(--accent);font-weight:700}
|
|
.ifr{border:1px solid var(--border);border-radius:var(--r);overflow:hidden;background:#0a0e1a}
|
|
.ifr iframe{width:100%;height:82vh;border:none}
|
|
.btn{display:inline-flex;align-items:center;gap:.4rem;background:var(--accent);color:#fff;border:none;padding:.5rem 1.2rem;border-radius:8px;font-weight:600;font-size:.78rem;cursor:pointer;margin:.3rem;transition:all .2s}
|
|
.btn:hover{background:#4f46e5;transform:translateY(-1px)}
|
|
.btn:disabled{opacity:.5;cursor:not-allowed}
|
|
.btn.teal{background:var(--teal)}.btn.gold{background:#d97706}.btn.red{background:var(--red)}
|
|
.btn .sp{display:none;width:12px;height:12px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}
|
|
.btn.ld .sp{display:inline-block}
|
|
@keyframes spin{to{transform:rotate(360deg)}}
|
|
.ts{font-size:.65rem;color:var(--text);text-align:center;margin-top:.4rem;font-family:"Space Mono"}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="wrap">
|
|
<div class="hero">
|
|
<div class="badge">Quality Assurance</div>
|
|
<h1>WEVAL <em>Master Test Report</em></h1>
|
|
<div class="sub">8 suites — NonReg + Visual + Auth + Inventory + 6s + WEVIA Deep + Code Review + GoLive</div>
|
|
</div>
|
|
|
|
<div class="tabs" id="tabbar">
|
|
<div class="tab active" data-t="nonreg">🧪 NonReg <span class="ct" id="c-nr">--</span></div>
|
|
<div class="tab" data-t="visual">📸 Visual <span class="ct" id="c-vs">--</span></div>
|
|
<div class="tab" data-t="auth">🔐 Auth <span class="ct" id="c-au">--</span></div>
|
|
<div class="tab" data-t="inv">📊 Inventory</div>
|
|
<div class="tab" data-t="sigma">🎯 6s Master <span class="ct" id="c-sg">--</span></div>
|
|
<div class="tab" data-t="wevia">🧠 WEVIA Deep <span class="ct" id="c-wv">--</span></div>
|
|
<div class="tab" data-t="code">🔍 Code Review</div>
|
|
<div class="tab" data-t="s95">🔧 WEVADS S95</div>
|
|
<div class="tab" data-t="arsenal">2694 Arsenal</div>
|
|
<div class="tab" data-t="golive">🚀 GoLive</div>
|
|
</div>
|
|
|
|
<!-- TAB 1: NONREG -->
|
|
<div class="panel active" id="p-nonreg">
|
|
<div style="text-align:center">
|
|
<button class="btn" id="btn-nr" onclick="runNR()"><span class="sp"></span>▶ Lancer NonReg API</button>
|
|
<button class="btn teal" onclick="runVis()"><span class="sp"></span>📸 Lancer Visual</button>
|
|
<button class="btn gold" onclick="runMega()"><span class="sp"></span>🧠 Lancer WEVIA Deep</button>
|
|
</div>
|
|
<div class="stats" id="nr-st"></div>
|
|
<div class="output" id="nr-out">Cliquez "Lancer NonReg" pour les tests API/BDD/Infra...</div>
|
|
<div class="ts" id="nr-ts"></div>
|
|
</div>
|
|
|
|
<!-- TAB 2: VISUAL -->
|
|
<div class="panel" id="p-visual">
|
|
<div style="text-align:center;margin-bottom:.5rem">
|
|
<button class="btn teal" onclick="runVis()"><span class="sp"></span>📸 Re-lancer Visual</button>
|
|
</div>
|
|
<div class="ifr"><iframe id="if-vs" src="/test-report/visual-report.html" loading="lazy"></iframe></div>
|
|
<div class="ts">Screenshots Playwright — pages desktop + mobile</div>
|
|
</div>
|
|
|
|
<!-- TAB 3: AUTH -->
|
|
<div class="panel" id="p-auth">
|
|
<div class="ifr"><iframe id="if-au" src="/test-report/auth-report.html" loading="lazy"></iframe></div>
|
|
<div class="ts">Login/Logout + Overlap detection</div>
|
|
</div>
|
|
|
|
<!-- TAB 4: INVENTORY -->
|
|
<div class="panel" id="p-inv">
|
|
<div class="ifr"><iframe src="/weval-master-inventory.html" loading="lazy"></iframe></div>
|
|
<div class="ts">70+ ecrans — S204 + S95 + S151 — URLs + Credentials + Docker</div>
|
|
</div>
|
|
|
|
<!-- TAB 5: 6s MASTER -->
|
|
<div class="panel" id="p-sigma">
|
|
<div class="ifr"><iframe id="if-sg" src="/master-test.html" loading="lazy"></iframe></div>
|
|
<div class="ts">Lean Six Sigma DMAIC — E2E + API + Security + Branding + Business</div>
|
|
</div>
|
|
|
|
<!-- TAB 6: WEVIA DEEP -->
|
|
<div class="panel" id="p-wevia">
|
|
<div style="text-align:center;margin-bottom:.5rem">
|
|
<button class="btn gold" onclick="runMega()"><span class="sp"></span>🧠 Lancer Mega Test</button>
|
|
</div>
|
|
<div class="ifr"><iframe id="if-wv" src="/wevia-ia/mega-test.html" loading="lazy"></iframe></div>
|
|
<div class="ts">WEVIA + WEDROID + WEVCODE — Chatbot, PDF, Mermaid, Logos, Images, Multi-turn, Injection</div>
|
|
</div>
|
|
|
|
<!-- TAB 7: CODE REVIEW -->
|
|
<div class="panel" id="p-code">
|
|
<div class="ifr"><iframe src="/wevia-ia/code-review-22mars.html" loading="lazy"></iframe></div>
|
|
<div class="ts">Audit 3 serveurs — Issues + Plan d'action</div>
|
|
</div>
|
|
|
|
<!-- TAB 9: S95 WEVADS -->
|
|
<div class="panel" id="p-s95">
|
|
<div class="ifr"><iframe src="/wevads-nonreg/" loading="lazy"></iframe></div>
|
|
<div class="ts">WEVADS S95 — PostgreSQL + Arsenal + PMTA + Crons + Brain Engine</div>
|
|
</div>
|
|
|
|
<!-- TAB: ARSENAL -->
|
|
<div class="panel" id="p-arsenal">
|
|
<div class="ifr"><iframe src="/test-report/arsenal-report.html" loading="lazy"></iframe></div>
|
|
<div class="ts">Arsenal + ADX — 40 ecrans + 11 ADX + Admin</div>
|
|
</div>
|
|
|
|
<!-- TAB 8: GOLIVE -->
|
|
<div class="panel" id="p-golive">
|
|
<div class="ifr"><iframe src="/golive.html" loading="lazy"></iframe></div>
|
|
<div class="ts">4 variantes — WEVIA Grand ecran + Widget + WEVCODE + WEDROID</div>
|
|
</div>
|
|
|
|
</div>
|
|
<script>
|
|
document.querySelectorAll('.tab').forEach(function(t){
|
|
t.addEventListener('click',function(){
|
|
var id=this.dataset.t;
|
|
document.querySelectorAll('.tab').forEach(function(x){x.classList.remove('active')});
|
|
document.querySelectorAll('.panel').forEach(function(x){x.classList.remove('active')});
|
|
this.classList.add('active');
|
|
document.getElementById('p-'+id).classList.add('active');
|
|
});
|
|
});
|
|
function esc(s){return s.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>')}
|
|
async function runNR(){
|
|
var b=document.getElementById('btn-nr');b.classList.add('ld');b.disabled=true;
|
|
document.getElementById('nr-out').textContent='Running NonReg API tests...\n';
|
|
try{
|
|
var r=await fetch('/api/nonreg-master.php',{credentials:'include'});
|
|
var t=await r.text();var o=document.getElementById('nr-out');
|
|
var lines=t.split('\n'),p=0,f=0,w=0,h='';
|
|
lines.forEach(function(l){
|
|
if(l.match(/PASS/i)){h+='<span class="p">'+esc(l)+'</span>\n';p++;}
|
|
else if(l.match(/FAIL/i)){h+='<span class="f">'+esc(l)+'</span>\n';f++;}
|
|
else if(l.match(/WARN/i)){h+='<span class="w">'+esc(l)+'</span>\n';w++;}
|
|
else if(l.match(/^===|^---/)){h+='<span class="s">'+esc(l)+'</span>\n';}
|
|
else{h+=esc(l)+'\n';}
|
|
});
|
|
o.innerHTML=h;
|
|
document.getElementById('nr-st').innerHTML=
|
|
'<div class="st pass"><div class="st-n">'+p+'</div><div class="st-l">Pass</div></div>'+
|
|
'<div class="st fail"><div class="st-n">'+f+'</div><div class="st-l">Fail</div></div>'+
|
|
'<div class="st"><div class="st-n">'+(p+f+w)+'</div><div class="st-l">Total</div></div>';
|
|
document.getElementById('c-nr').textContent=p+'/'+(p+f+w);
|
|
document.getElementById('nr-ts').textContent='Run: '+new Date().toLocaleString('fr-FR');
|
|
}catch(e){document.getElementById('nr-out').textContent='Error: '+e.message;}
|
|
b.classList.remove('ld');b.disabled=false;
|
|
}
|
|
function runVis(){
|
|
alert('Visual test lance en background (~2min).');
|
|
fetch('/api/cx',{method:'POST',body:'k=WEVADS2026&c='+btoa('cd /opt && python3 weval-visual-test.py && cp /tmp/weval-visual-report.html /var/www/html/test-report/visual-report.html'),headers:{'Content-Type':'application/x-www-form-urlencoded'}});
|
|
setTimeout(function(){document.getElementById('if-vs').src='/test-report/visual-report.html?t='+Date.now()},150000);
|
|
}
|
|
function runMega(){
|
|
document.querySelectorAll('.tab').forEach(function(x){x.classList.remove('active')});
|
|
document.querySelectorAll('.panel').forEach(function(x){x.classList.remove('active')});
|
|
document.querySelector('[data-t=wevia]').classList.add('active');
|
|
document.getElementById('p-wevia').classList.add('active');
|
|
document.getElementById('if-wv').src='/wevia-ia/mega-test.php?t='+Date.now();
|
|
}
|
|
setTimeout(function(){
|
|
try{
|
|
var vf=document.getElementById('if-vs');
|
|
vf.onload=function(){try{var d=vf.contentDocument;var p=(d.body.innerHTML.match(/>PASS</g)||[]).length;var f=(d.body.innerHTML.match(/>FAIL</g)||[]).length;document.getElementById('c-vs').textContent=p+'/'+(p+f);}catch(e){}};
|
|
var af=document.getElementById('if-au');
|
|
af.onload=function(){try{var d=af.contentDocument;var p=(d.body.innerHTML.match(/>PASS</g)||[]).length;var f=(d.body.innerHTML.match(/>FAIL</g)||[]).length;document.getElementById('c-au').textContent=p+'/'+(p+f);}catch(e){}};
|
|
}catch(e){}
|
|
},3000);
|
|
</script>
|
|
</body>
|
|
</html>
|