/** * 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(() => /]*>Heading smoke test<\/h2>/.test(window.tinymce.get('jio-creator-content').getContent())); console.log('STATE ' + JSON.stringify({ ...before, bold, heading })); if (errors.length) errors.forEach((error) => console.log(error)); await page.screenshot({ path: 'C:/Users/Xing/Desktop/WP-Date/data/wordpress/shot-tinymce-toolbar.png' }); await browser.close(); })();