/** * TinyMCE 交互冒烟:验证固定工具栏能够编辑正文格式, * 并记录无法捕获的 promise 拒绝。 */ const fs = require('fs'); const path = require('path'); const puppeteer = require('puppeteer-core'); const CANDIDATES = [ process.env.JIO_BROWSER, 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe', 'C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe', ].filter(Boolean); const BROWSER = CANDIDATES.find((p) => fs.existsSync(p)); const URL = process.argv[2] || 'https://localhost/jio-preview.html'; (async () => { const browser = await puppeteer.launch({ executablePath: BROWSER, headless: 'new', ignoreHTTPSErrors: true, args: ['--disable-gpu', '--no-sandbox'], }); const page = await browser.newPage(); await page.setViewport({ width: 1440, height: 900 }); const errors = []; page.on('pageerror', (error) => errors.push('pageerror: ' + error.message)); await page.goto(URL, { waitUntil: 'networkidle2', timeout: 60000 }); await page.waitForFunction(() => window.tinymce?.get('jio-creator-content'), { timeout: 20000 }); const before = await page.evaluate(() => ({ fixed: getComputedStyle(document.querySelector('.jio-creator__bar')).position === 'fixed', toolbar: !!document.querySelector('[role="toolbar"]'), editor: !!window.tinymce?.get('jio-creator-content'), })); await page.evaluate(() => { const editor = window.tinymce.get('jio-creator-content'); editor.setContent('
Toolbar smoke test
'); editor.selection.select(editor.dom.select('p')[0], true); }); await page.click('.jio-creator__tool-btn[aria-label="加粗"]'); const bold = await page.evaluate(() => /<(strong|b)>Toolbar smoke test<\/(strong|b)>/.test(window.tinymce.get('jio-creator-content').getContent())); await page.evaluate(() => { const editor = window.tinymce.get('jio-creator-content'); editor.setContent('Heading smoke test
'); editor.selection.select(editor.dom.select('p')[0], true); }); await page.select('.jio-creator__format-select', 'h2'); const heading = await page.evaluate(() => /