"""Browser test: pasted magnet cleanup, live diagnostics and .torrent upload.""" from pathlib import Path from playwright.sync_api import sync_playwright root = Path(__file__).resolve().parents[1] / 'app' / 'static' html = (root / 'index.html').read_text().replace('', '').replace('', '') css = (root / 'style.css').read_text() js = (root / 'app.js').read_text() with sync_playwright() as playwright: browser = playwright.chromium.launch(executable_path='/usr/bin/chromium', args=['--no-sandbox', '--disable-dev-shm-usage']) page = browser.new_page(viewport={'width': 1280, 'height': 900}) errors = [] page.on('pageerror', lambda err: errors.append(str(err))) page.set_content(html) page.add_style_tag(content=css) page.evaluate('''() => { window.__seenMagnet = null; window.fetch = async (url, options = {}) => { const u = String(url), m = options.method || 'GET'; let reply = {}; if (u === '/api/system') reply = {free:1000000000,total:2000000000}; else if (u === '/api/jobs' && m === 'GET') reply = []; else if (u === '/api/archive/session') reply = {authenticated:false}; else if (u === '/api/magnet/inspect' && m === 'POST') { window.__seenMagnet = JSON.parse(options.body).magnet; reply = {status:'loading',preview_id:'a'.repeat(32)}; } else if (u === '/api/magnet/upload') reply = {status:'ready',preview_id:'b'.repeat(32)}; else if (u.includes('/magnet/inspect/' + 'a'.repeat(32)) && m === 'GET') reply = {status:'loading',elapsed:35,connections:0,aria_status:'active'}; else if (u.includes('/magnet/inspect/' + 'b'.repeat(32)) && m === 'GET') reply = {status:'ready',name:'Demo',suggested:[],files:[{index:1,name:'Demo/Game.iso',size:1024,padding:false}]}; else if (u.startsWith('/api/magnet/inspect/') && m === 'POST') reply = {ok:true}; return new Response(JSON.stringify(reply), {status:200,headers:{'Content-Type':'application/json'}}); }; }''') page.add_script_tag(content=js) raw = "'**magnet**:?xt=urn:btih:c98fbaa2a36ee48e3d9423be02cdbefd9281bc7d&so=15\\\n&tr=udp%3A%2F%2Fexample.com%2Fannounce'" page.locator('#urls').fill(raw) page.locator('#linksForm button[type=submit]').click() page.locator('#magnetDialog').wait_for(state='visible') page.locator('#magnetStatus').get_by_text('Brak połączeń', exact=False).wait_for() parsed = page.evaluate('window.__seenMagnet') assert parsed.startswith('magnet:?xt=urn:btih:c98fbaa2a36ee48e3d9423be02cdbefd9281bc7d&so=15&tr='), parsed assert '\n' not in parsed and '&' not in parsed page.screenshot(path='/mnt/data/x360-magnet-diagnostics-preview.png', full_page=True) page.locator('#torrentFileDialog').set_input_files({'name':'demo.torrent','mimeType':'application/x-bittorrent','buffer':b'd4:infod4:name4:Demoe e'}) page.locator('#magnetResults').wait_for(state='visible') assert page.locator('#magnetFiles input[type=checkbox]').count() == 1 page.screenshot(path='/mnt/data/x360-magnet-upload-preview.png', full_page=True) assert not errors, errors browser.close() print('UI magnet fallback PASS')