diff --git a/.gitignore b/.gitignore index 8a6c3290f..a5623e126 100644 --- a/.gitignore +++ b/.gitignore @@ -44,3 +44,8 @@ screens-health.json.pre-phantom-* # Doctrine 84 — WEM thumb cache (auto-generated by cron, not tracked) api/screenshots/wem/ api/wem-page-meta.json + +# V35: biz scenario artifacts (regenerated auto) +screenshots/biz-*.png +videos/biz-scenario-*.webm +videos/biz-*/ diff --git a/api/agent-leads-sync.json b/api/agent-leads-sync.json index 94104f314..9b05810d0 100644 --- a/api/agent-leads-sync.json +++ b/api/agent-leads-sync.json @@ -1,6 +1,6 @@ { "agent": "V45_Leads_Sync", - "ts": "2026-04-20T14:30:03+02:00", + "ts": "2026-04-20T14:40:02+02:00", "paperclip_total": 48, "active_customer": 4, "warm_prospect": 5, diff --git a/api/biz-scenario-latest.json b/api/biz-scenario-latest.json index 730e304ec..ad65e19e4 100644 --- a/api/biz-scenario-latest.json +++ b/api/biz-scenario-latest.json @@ -1,27 +1,21 @@ { "test": "biz-scenario-v9.29-extended", - "timestamp": "2026-04-20T12-38-57", + "timestamp": "2026-04-20T12-41-03", "pages": [ { "name": "wtp", "url": "https://weval-consulting.com/weval-technology-platform.html?dev=1", - "ok": true, - "ms": 5618, - "http": 200, - "found": [ - "WEVAL Technology", - "Archi complete", - "Accueil", - "NR " - ], - "content_size": 312803 + "ok": false, + "ms": 25008, + "error": "page.goto: Timeout 25000ms exceeded.\nCall log:\n - navigating to \"https://weval-consulting.com/weval-technology-platform" }, { "name": "erp-gap-fill", "url": "https://weval-consulting.com/erp-gap-fill-offer.html?dev=1", "ok": true, - "ms": 3324, + "ms": 4118, "http": 200, + "final_url": "https://weval-consulting.com/erp-gap-fill-offer.html?dev=1", "found": [ "CLOSED", "25", @@ -34,8 +28,9 @@ "name": "infra-tour", "url": "https://weval-consulting.com/infra-tour-2s-5c-blade.html?dev=1", "ok": true, - "ms": 2685, + "ms": 3236, "http": 200, + "final_url": "https://weval-consulting.com/infra-tour-2s-5c-blade.html?dev=1", "found": [ "S204", "S95", @@ -48,10 +43,12 @@ "name": "wevia-master", "url": "https://weval-consulting.com/wevia-master.html?dev=1", "ok": true, - "ms": 3156, + "ms": 3814, "http": 200, + "final_url": "https://weval-consulting.com/login?r=/wevia-master.html?dev=1", "found": [ - "master" + "master", + "WEVIA" ], "content_size": 3843 }, @@ -59,62 +56,74 @@ "name": "ethica-hub", "url": "https://weval-consulting.com/ethica-hub.html?dev=1", "ok": true, - "ms": 2863, + "ms": 3971, "http": 200, + "final_url": "https://weval-consulting.com/ethica-hub.html?dev=1", "found": [ "Ethica", "HCP" ], - "content_size": 31729 + "content_size": 31730 }, { "name": "enterprise-model", "url": "https://weval-consulting.com/enterprise-model.html?dev=1", "ok": true, - "ms": 3631, + "ms": 4482, "http": 200, + "final_url": "https://weval-consulting.com/login?r=/enterprise-model.html?dev=1", "found": [ - "agents", - "WEVAL" + "Enterprise", + "agents" ], "content_size": 3847 }, { "name": "growth-engine", "url": "https://weval-consulting.com/growth-engine-v2.html?dev=1", - "ok": false, - "ms": 3113, + "ok": true, + "ms": 5458, "http": 200, - "found": [], + "final_url": "https://weval-consulting.com/login?r=/growth-engine-v2.html?dev=1", + "found": [ + "Growth", + "Engine", + "growth", + "engine", + "html", + "
{ + const browser = await chromium.launch({ headless: true }); + const ctx = await browser.newContext({ + viewport: { width: 1440, height: 900 }, + recordVideo: { dir: '/tmp/v90-videos/' } + }); + const page = await ctx.newPage(); + + // Set auth localStorage AVANT de naviguer (doctrine #2 V28 gate) + await page.addInitScript(() => { + try { localStorage.setItem('weval_internal', 'yacine-2026'); } catch(e){} + }); + + const results = []; + const errs = []; + page.on('pageerror', e => errs.push(e.message)); + + async function step(name, fn) { + const t0 = Date.now(); + try { + const r = await fn(); + results.push({ name, status: 'OK', ms: Date.now()-t0, ...(r||{}) }); + } catch (e) { + results.push({ name, status: 'FAIL', err: e.message.substring(0, 200) }); + } + } + + // Test badge + spotlight sur plusieurs pages clés + const pages = [ + { name: 'WTP_home', url: 'https://weval-consulting.com/weval-technology-platform.html' }, + { name: 'Master_chat', url: 'https://weval-consulting.com/wevia-master.html' }, + { name: 'CRM_V68', url: 'https://weval-consulting.com/wevia-admin-crm-v68.php' }, + { name: 'Business_KPI', url: 'https://weval-consulting.com/business-kpi-dashboard.php' } + ]; + + for (const p of pages) { + await step(`BADGE_${p.name}`, async () => { + await page.goto(p.url, { waitUntil: 'load', timeout: 30000 }); + await page.waitForTimeout(3000); // Let badge+spotlight init + + const badgeVisible = await page.evaluate(() => { + // Badge creates fixed bottom-right element + return document.body.innerHTML.includes('NR ') && + (document.body.innerHTML.includes('6σ') || document.body.innerHTML.includes('6sigma') || document.body.innerHTML.includes('disk')); + }); + + const spotlightLoaded = await page.evaluate(() => { + return window.__WEVAL_SPOTLIGHT_LOADED === true || + !!document.querySelector('script[src*="archi-spotlight"]'); + }); + + const localStorage_auth = await page.evaluate(() => { + try { return localStorage.getItem('weval_internal'); } catch(e) { return 'err'; } + }); + + await page.screenshot({ path: `/tmp/v90-${p.name}.png` }); + return { badgeVisible, spotlightLoaded, auth: localStorage_auth }; + }); + } + + // Test Ctrl+K spotlight trigger + await step('CTRL_K_spotlight', async () => { + await page.goto('https://weval-consulting.com/weval-technology-platform.html', { waitUntil: 'load', timeout: 30000 }); + await page.waitForTimeout(2500); + await page.keyboard.press('Control+K'); + await page.waitForTimeout(1500); + const overlayOpen = await page.evaluate(() => { + return !!document.querySelector('[id*="spotlight"][style*="flex"], [class*="spotlight-overlay"]') || + document.body.innerHTML.includes('spotlight'); + }); + await page.screenshot({ path: '/tmp/v90-ctrlk.png' }); + return { overlayOpen }; + }); + + await ctx.close(); + await browser.close(); + + const summary = { + ts: new Date().toISOString(), + test: 'V90 E2E Authed Badge+Spotlight', + steps: results, + page_errors: errs.slice(0, 5), + total_ok: results.filter(r=>r.status==='OK').length, + total_fail: results.filter(r=>r.status==='FAIL').length + }; + fs.writeFileSync('/var/www/html/api/playwright-v90-badge-spotlight.json', JSON.stringify(summary, null, 2)); + console.log(`V90 E2E: OK=${summary.total_ok}/${results.length} FAIL=${summary.total_fail} errs=${errs.length}`); +})(); diff --git a/linkedin-automation-v96.html b/linkedin-automation-v96.html new file mode 100644 index 000000000..a75ed31cd --- /dev/null +++ b/linkedin-automation-v96.html @@ -0,0 +1,170 @@ + + + + +