'use strict'; const assert = require('node:assert/strict'); const fs = require('node:fs'); const path = require('node:path'); const root = path.join(__dirname, '..'); const html = fs.readFileSync(path.join(root, 'progress.html'), 'utf8'); const indexHtml = fs.readFileSync(path.join(root, 'index.html'), 'utf8'); const windowSource = fs.readFileSync(path.join(root, 'js', 'progress-window.js'), 'utf8'); const i18nSource = fs.readFileSync(path.join(root, 'js', 'i18n.js'), 'utf8'); const normalizePluginRoot = (pathname) => pathname.replace(/^\/+([A-Za-z]:)/, '$1'); assert.match(windowSource, /minimizable: true/); assert.match(windowSource, /url: 'progress\.html',/); assert.doesNotMatch(windowSource, /url: 'progress\.html\?/); assert.match(i18nSource, /params\.get\('lang'\) \|\| params\.get\('locale'\)/); for (const source of [html, indexHtml]) { assert.match(source, /pathname\.replace\(\/\^\\\/\+\(\[A-Za-z\]:\)\/, '\$1'\)/); } assert.equal(normalizePluginRoot('//C:/Users/demo/plugin/'), 'C:/Users/demo/plugin/'); assert.equal(normalizePluginRoot('/Users/demo/plugin/'), '/Users/demo/plugin/'); assert.match(html, /addEventListener\('beforeunload'/); assert.match(html, /function requestStop\(\)[\s\S]*writeControl\('pause'\)[\s\S]*resumeEl\.focus\(\)/); assert.match(html, /if \(allowClose \|\| finished\) return;[\s\S]*event\.returnValue = false;[\s\S]*requestStop\(\)/); assert.equal((html.match(/requestStop\(\);/g) || []).length, 2); assert.equal((html.match(/allowClose = true;[\s\S]{0,80}window\.close\(\)/g) || []).length, 2); console.log('PASS: 系统关闭与停止按钮共用暂停确认流程');