/** * Schedules Runner — Entry Point * * Boot SDK, load test modules. * Each module is an IIFE that registers suites via sw.testing.suite(). */ (async function () { 'use strict'; try { var base = window.__BASE__ || ''; var ver = window.__VERSION__ || '0'; if (!window.preact) { var { h, render } = await import(base + '/js/sw/vendor/preact.module.js'); var hooksModule = await import(base + '/js/sw/vendor/hooks.module.js'); var htmModule = await import(base + '/js/sw/vendor/htm.module.js'); window.preact = { h, render }; window.hooks = hooksModule; window.html = htmModule.default.bind(h); } var sdk = await import(base + '/js/sw/sdk/index.js?v=' + ver); await sdk.boot(); } catch (e) { console.warn('[SchedRunner] SDK boot failed:', e.message); } window.SR = { base: window.__BASE__ || '', api: '/api/v1/schedules' }; var surfaceId = 'schedules-runner'; var assetBase = '/surfaces/' + surfaceId + '/js/'; if (window.SR.base) assetBase = window.SR.base + assetBase; var modules = [ 'schedules-crud.js', 'shell-topbar.js' ]; var loaded = 0; function loadNext() { if (loaded >= modules.length) { onReady(); return; } var script = document.createElement('script'); script.src = assetBase + modules[loaded] + '?v=' + (window.__VERSION__ || '0') + '.' + Date.now(); script.onload = function () { loaded++; loadNext(); }; script.onerror = function () { console.error('[SchedRunner] Failed to load: ' + modules[loaded]); loaded++; loadNext(); }; document.body.appendChild(script); } function onReady() { console.log('[SchedRunner] All modules loaded — ' + sw.testing.suites().length + ' suites registered'); var manifest = window.__MANIFEST__ || {}; if (manifest.id === surfaceId) { window.location.href = (window.__BASE__ || '') + '/s/test-runners'; } } loadNext(); })();