const test = require('node:test'); const assert = require('node:assert/strict'); const fs = require('node:fs'); const { readFlowRegistryBundle } = require('./helpers/script-bundles.js'); const html = fs.readFileSync('sidepanel/sidepanel.html', 'utf8'); const source = fs.readFileSync('sidepanel/sidepanel.js', 'utf8'); const flowRegistrySource = readFlowRegistryBundle(); test('sidepanel exposes SUB2API account priority below group setting', () => { assert.match(html, /id="row-sub2api-account-priority"/); assert.match(html, /id="input-sub2api-account-priority"/); assert.match(html, /优先级<\/span>/); const inputTag = html.match(/]*id="input-sub2api-account-priority"[^>]*>/)?.[0] || ''; assert.match(inputTag, /type="number"/); assert.match(inputTag, /min="1"/); assert.match(inputTag, /step="1"/); assert.ok( html.indexOf('id="row-sub2api-account-priority"') > html.indexOf('id="row-sub2api-group"'), 'priority row should be placed below the SUB2API group row' ); assert.ok( html.indexOf('id="row-sub2api-account-priority"') < html.indexOf('id="row-sub2api-default-proxy"'), 'priority row should remain above the SUB2API default proxy row' ); }); test('sidepanel persists and locks SUB2API account priority setting', () => { const flowRegistryApi = new Function( 'self', `${flowRegistrySource}; return self.MultiPageFlowRegistry;` )({}); assert.match( source, /const rowSub2ApiAccountPriority = document\.getElementById\('row-sub2api-account-priority'\);/ ); assert.match( source, /const inputSub2ApiAccountPriority = document\.getElementById\('input-sub2api-account-priority'\);/ ); assert.match(source, /function normalizeSub2ApiAccountPriorityValue\(/); assert.match(source, /const sub2apiAccountPriorityNormalizer = typeof normalizeSub2ApiAccountPriorityValue === 'function'/); assert.match(source, /sub2apiAccountPriority: sub2apiAccountPriorityNormalizer\(/); assert.match( source, /inputSub2ApiAccountPriority\.value = String\(normalizeSub2ApiAccountPriorityValue\(state\?\.sub2apiAccountPriority\)\);/ ); assert.match(source, /applyFlowSettingsGroupVisibility\(visibleGroupIds\);/); assert.deepStrictEqual( flowRegistryApi.getSettingsGroupDefinition('openai-target-sub2api')?.rowIds?.includes('row-sub2api-account-priority'), true ); assert.match(source, /inputSub2ApiAccountPriority\.disabled = locked;/); assert.match( source, /inputSub2ApiAccountPriority\.addEventListener\('input', \(\) => \{[\s\S]*scheduleSettingsAutoSave\(\);[\s\S]*\}\);/ ); assert.match( source, /inputSub2ApiAccountPriority\.addEventListener\('blur', \(\) => \{[\s\S]*saveSettings\(\{ silent: true \}\)/ ); });