agentic-space-factory-UI-public / tests /test_v61_stabilize_buttons_runtime.py
fffiloni's picture
Upload 41 files
7e6926a verified
Raw
History Blame
2.43 kB
from pathlib import Path
def test_cancel_job_import_is_lazy_to_avoid_app_crash_on_cached_hub_versions():
jobs = Path("src/jobs.py").read_text(encoding="utf-8")
first_lines = "\n".join(jobs.splitlines()[:12])
assert "cancel_job" not in first_lines
assert "from huggingface_hub import cancel_job" in jobs
assert "huggingface_hub.cancel_job is unavailable" in jobs
def test_custom_static_scripts_have_no_syntax_errors():
import subprocess
for path in Path("web/static").glob("*.js"):
result = subprocess.run(["node", "--check", str(path)], capture_output=True, text=True)
assert result.returncode == 0, result.stderr
def test_frontend_loads_with_minimal_dom_without_throwing():
import subprocess
script = r"""
const fs=require('fs');
class El{
constructor(id){this.id=id;this.value='';this.textContent='';this.innerHTML='';this.dataset={};this.classList={add(){},remove(){},toggle(){}};this.style={setProperty(){}};this.attributes={};this.disabled=false;this.hidden=false;this.href='';this.open=false;this.clientHeight=100;this.scrollHeight=100;this.scrollTop=0;}
addEventListener(){}
setAttribute(k,v){this.attributes[k]=v}
removeAttribute(k){delete this.attributes[k]}
querySelectorAll(){return[]}
querySelector(){return new El('child')}
scrollIntoView(){}
}
const ids = Array.from(fs.readFileSync('web/index.html','utf8').matchAll(/id="([^"]+)"/g)).map(m=>m[1]);
const map={};
for(const id of ids) map[id]=new El(id);
global.document={getElementById(id){return map[id]||null},querySelectorAll(sel){if(sel.includes('filter')) return ['all','running','failed'].map(s=>{let e=new El('filter');e.dataset={status:s};return e}); return [];}};
global.window={setTimeout,setInterval,clearInterval};
global.localStorage={getItem(){return null},setItem(){},removeItem(){}};
global.confirm=()=>true;
global.fetch=async()=>({ok:false,text:async()=>'forced error',json:async()=>({})});
for(const f of ['web/static/components.js','web/static/api.js','web/static/progress.js','web/static/runs.js','web/static/app.js']) global.eval(fs.readFileSync(f,'utf8'));
setTimeout(()=>process.exit(0), 25);
"""
result = subprocess.run(["node", "-e", script], capture_output=True, text=True, timeout=5)
assert result.returncode == 0, result.stderr
def test_app_version_v61():
assert '"version": "v74-grouped-timeline-rings"' in Path("app.py").read_text(encoding="utf-8")