browser_check.py

back to table · edit · history · where entries came from · files · download

1962 bytes, as of the version from 2026-11-10 22:01 (current). Recorded here, not run.

import os,json,pathlib,re
from playwright.sync_api import sync_playwright
p=pathlib.Path(os.environ['TMPDIR']);manifest=json.loads((p/'preview-manifest.json').read_text());results=[]
with sync_playwright() as pw:
 browser=pw.chromium.launch(headless=True,args=['--no-sandbox'])
 page=browser.new_page(viewport={'width':1400,'height':1050})
 for item in manifest:
  html=(p/item['file']).read_text().replace('<head>','<head><base href="https://numberdb.org/">',1)
  page.set_content(html,wait_until='networkidle',timeout=60000)
  page.wait_for_function('window.MathJax !== undefined',timeout=30000)
  page.evaluate('''async () => {if (MathJax.startup) await MathJax.startup.promise;
     else if (MathJax.Hub) await new Promise(resolve => MathJax.Hub.Queue(resolve));}''')
  errors=page.locator('mjx-merror, .MathJax_Error, [data-mjx-error]').all_text_contents()
  text=page.locator("#table-title").evaluate("(x)=>{let text='';for(let n=x;n;n=n.nextElementSibling){if(!['SCRIPT','STYLE'].includes(n.tagName))text+=n.innerText || '';}return text;}")
  raw_tokens=bool(re.search(r'HREF\{|CITE\{',text))
  results.append({'section':item['section'],'math_errors':errors,'unrendered_reference_tokens':raw_tokens,'body_characters':len(text)})
  if item['section'] in ['Definition','Formulas-formula-small','Data properties-paragraph-1','Numbers-26','Similar tables']:
   file='screenshot-'+item['section'].replace(' ','_')+'.png';page.screenshot(path=str(p/file),full_page=True)
  
  if errors or raw_tokens:
   print(json.dumps({'section':item['section'],'errors':errors,'tokens':raw_tokens,'matches':re.findall('.{0,60}(?:HREF|CITE)\\{.{0,80}',text)},ensure_ascii=False),flush=True)
  assert not errors and not raw_tokens,item['section']
 browser.close()
(p/'browser-check.json').write_text(json.dumps({'checked_previews':len(results),'results':results},indent=2))
print('PASS',len(results),'live-rendered preview sections, no MathJax or unresolved citation errors')