# -*- coding: utf-8 -*-
r"""B138: thử TẤT CẢ 6 TAB trên Chrome thật — số biểu đồ vẽ được, lỗi JS, KPI mỗi tab."""
import re, subprocess, time

def ba(*a, t=300):
    r = subprocess.run(['browser-act'] + list(a), capture_output=True, text=True, encoding='utf-8',
                       errors='replace', timeout=t)
    return ((r.stdout or '') + (r.stderr or '')).strip()

lst = ''
for _ in range(6):
    lst = ba('browser', 'list')
    if re.search(r'direct_local_\d+', lst):
        break
    time.sleep(4)
bid = (re.findall(r'(direct_local_\d+)', lst) or ['direct_local_121304831500484624'])[0]
S = 'dashtab'
print('  mở trang:', ba('--session', S, 'browser', 'open', bid, 'http://127.0.0.1:8097/')[-45:])
time.sleep(9)

def ev(js):
    return ba('--session', S, 'eval', js)

if ev("!!document.querySelector('input[name=mat_khau]')").strip('"').lower() == 'true':
    ev("(()=>{const i=document.querySelector('input[name=mat_khau]'); i.value='btchem2026'; i.closest('form').submit(); return 1;})()")
    time.sleep(12)
ev("(()=>{window.__err=[];window.addEventListener('error',e=>window.__err.push(String(e.message)));return 1;})()")
time.sleep(1)
print('  thanh tab:', ev("[...document.querySelectorAll('.tab')].map(e=>e.textContent).join(' | ')")[-120:])

for k, ten in [('tong_quan','Tổng quan'),('mua_hang','Mua hàng'),('su_co','Sự cố kỹ thuật'),
               ('mau_lam','Làm mẫu'),('san_xuat','Sản xuất'),('kt','Báo cáo kỹ thuật')]:
    ev("(()=>{const t=[...document.querySelectorAll('.tab')].find(e=>e.dataset.k==='%s'); t.click(); return 1;})()" % k)
    time.sleep(6)
    ra = ev("""(()=>{const cs=[...document.querySelectorAll('canvas')];
              const ve=cs.filter(c=>{try{return !!Chart.getChart(c);}catch(e){return false;}}).length;
              const tb=document.querySelectorAll('#luoi table').length;
              const hang=document.querySelectorAll('#luoi table tbody tr').length;
              const k=document.querySelectorAll('#kpis .kpi').length;
              const d1=(document.querySelector('#kpis .kpi .n')||{}).textContent||'';
              return JSON.stringify({kpi:k, canvas:cs.length, ve:ve, bang:tb, dong:hang, kpi1:d1});})()""")
    print('  %-18s %s' % (ten, ra[-160:]))

print('  lỗi JS:', ev("JSON.stringify((window.__err||[]).slice(0,3))")[-160:])
ba('session', 'close', S)
