File size: 1,607 Bytes
58e6885
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Standalone repro tool: open chart.html in puppeteer with console capture
// so we can see exactly why D3 failed to produce an SVG.
// Usage: PUPPETEER_EXECUTABLE_PATH=/usr/bin/google-chrome \
//        node scripts/_debug_render.cjs <chart.html path>
const puppeteer = require('puppeteer');
const path = require('path');

(async () => {
    const browser = await puppeteer.launch({
        headless: 'new',
        executablePath: process.env.PUPPETEER_EXECUTABLE_PATH || undefined,
        args: ['--no-sandbox', '--disable-setuid-sandbox'],
    });
    const page = await browser.newPage();
    page.on('console', msg => console.log('[console.' + msg.type() + ']', msg.text()));
    page.on('pageerror', err => console.log('[pageerror]', err.toString()));
    page.on('requestfailed', req =>
        console.log('[reqfail]', req.url(), req.failure().errorText));
    await page.setViewport({ width: 1200, height: 800 });
    const target = path.resolve(process.argv[2]);
    await page.goto('file://' + target, { waitUntil: 'networkidle0' });
    await new Promise(r => setTimeout(r, 3000));
    const info = await page.evaluate(() => {
        const c = document.querySelector('#chart-container');
        return {
            container_exists: !!c,
            container_html_length: c ? c.innerHTML.length : 0,
            container_children: c ? c.children.length : 0,
            svg_count: document.querySelectorAll('svg').length,
            d3_present: typeof d3 !== 'undefined',
        };
    });
    console.log('PAGE INFO:', JSON.stringify(info, null, 2));
    await browser.close();
})();