const assert = require('node:assert/strict'); const fs = require('node:fs'); const path = require('node:path'); const applicationSource = fs.readFileSync(path.join(__dirname, '..', 'assets', 'app.js'), 'utf8') .replace(/\s*bootstrap\(\);\s*$/, ''); const runtimeTests = String.raw` render=()=>{}; state.selectedRelabelId='INB-260819-018'; state.page='relabel-sku'; state.relabelDoneOrders={}; state.relabelScans.sku={}; let view=relabelDetailView('sku'); assert.match(view,/class="progress-line"/,'SKU relabel detail should show progress'); assert.match(view,/0 \/ 0/,'SKU relabel detail should start without a scanned carton'); state.relabelScans.sku['INB-260819-018']={value:'YQ-CASE-01',itemId:'C-001'}; view=relabelDetailView('sku'); assert.match(view,/0 \/ 120/,'SKU relabel detail should show scanned SKU carton quantity'); state.relabelDoneOrders['sku:INB-260819-018']=true; view=relabelDetailView('sku'); assert.match(view,/120 \/ 120/,'Completed SKU relabel detail should show full quantity progress'); `; const documentStub = { getElementById: () => null }; const windowStub = { scrollTo: () => {}, requestAnimationFrame: callback => callback() }; const run = new Function('assert', 'localStorage', 'document', 'window', applicationSource + '\n' + runtimeTests); run(assert, { getItem: () => null, setItem: () => {} }, documentStub, windowStub); process.stdout.write('PASS: SKU relabel detail exposes quantity progress\n');