95982fad23
Overlay 46 upstream items; full patch set re-applied (all patched files reset by overlay regardless of upstream change status — lesson recorded). Verified: theme suites 35/35; dual-baseline 418 passed vs pristine 389+29 ours, FAILED-set diff EMPTY (same 10 Windows env fails). Live: container 8.32.0-dev.1 healthy, hesupipe 192 entries intact, trade-pro build 203 pages 0 errors. Co-Authored-By: Claude Code <noreply@anthropic.com>
33 lines
1.9 KiB
Python
33 lines
1.9 KiB
Python
"""Chromium isolation: exercise actual gallery controls / AJAX fallback; no live server."""
|
|
from pathlib import Path
|
|
import re,json
|
|
from playwright.sync_api import sync_playwright
|
|
ROOT=Path(__file__).resolve().parents[1]
|
|
original=(ROOT/'app/templates/theme-gallery.html').read_text(encoding='utf-8')
|
|
script=re.search(r'<script>(.*?)</script>',original,re.S).group(1)
|
|
source=original.replace('<script>'+script+'</script>','')
|
|
errors=[]
|
|
with sync_playwright() as p:
|
|
browser=p.chromium.launch(executable_path='/usr/bin/chromium',headless=True,args=['--no-sandbox','--disable-dev-shm-usage'])
|
|
page=browser.new_page(viewport={'width':1440,'height':900})
|
|
page.on('pageerror',lambda e:errors.append(str(e)))
|
|
page.set_content(source)
|
|
page.evaluate('''()=>{window.__galleryOk=true;window.fetch=async(url)=>{
|
|
const isPreview=String(url).includes('/preview?'),success=!isPreview||window.__galleryOk;
|
|
const data=[{version:'1.4.1'},{version:'1.4.0'}];
|
|
return {ok:success,status:success?200:503,headers:{get:()=>isPreview?'text/html':'application/json'},json:async()=>data};
|
|
}}''')
|
|
page.add_script_tag(content=script)
|
|
page.wait_for_function("document.querySelector('#preview').getAttribute('src')?.includes('page_type=home')")
|
|
assert page.locator('#version option').count()==3
|
|
page.evaluate('window.__galleryOk=false')
|
|
page.locator('#page').select_option('product')
|
|
page.wait_for_function("document.querySelector('#retryPreview').hidden===false")
|
|
assert '503' in page.locator('#previewStatus').inner_text()
|
|
assert 'page_type=product' in page.locator('#openPreview').get_attribute('href')
|
|
assert not errors,errors
|
|
page.set_viewport_size({'width':390,'height':844})
|
|
assert not page.evaluate('document.documentElement.scrollWidth>innerWidth+1')
|
|
browser.close()
|
|
print(json.dumps({'gallery_controls':True,'versions':True,'retry_error':True,'mobile390':True,'javascript_errors':errors},ensure_ascii=False))
|