Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: emoji font not displayed (just blank spaces) #12304

Open
1 of 2 tasks
drmrbrewer opened this issue Apr 22, 2024 · 42 comments
Open
1 of 2 tasks

[Bug]: emoji font not displayed (just blank spaces) #12304

drmrbrewer opened this issue Apr 22, 2024 · 42 comments
Labels

Comments

@drmrbrewer
Copy link

drmrbrewer commented Apr 22, 2024

Minimal, reproducible example

import puppeteer from 'puppeteer';

(async () => {

        const browser = await puppeteer.launch({ args: ['--no-sandbox'] });
        const page = await browser.newPage();

        // HTML content
        const htmlContent = `
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Noto Color Emoji Example</title>
    <style>
    @font-face {
        font-family: 'Noto Color Emoji';
        src: url('/root/.fonts/NotoColorEmoji/NotoColorEmoji-Regular.ttf') format('truetype');
        /* Additional font format declarations can be added as needed */
    }
    /* Style for the span */
        .emoji-text {
            font-family: 'Noto Color Emoji', sans-serif;
            font-size: 24px;
            line-height: 1.5;
        }
    </style>
    </head>
    <body>
    <!-- Span with mixed text -->
    <span class="emoji-text">
        Hello! 😊 Welcome to the Noto Color Emoji example.
    </span>
    </body>
    </html>
`;

        await page.setContent(htmlContent);

        const fontAvailable = await page.evaluate(() => {
            const span = document.createElement('span');
            span.textContent = '😊';
            span.style.fontFamily = 'Noto Color Emoji';
            document.body.appendChild(span);
            const { fontFamily } = window.getComputedStyle(span);
            span.remove();
            return fontFamily === 'Noto Color Emoji';
        });
        console.log('Noto Color Emoji font available:', fontAvailable);

        // Generate a PDF file
        await page.pdf({ path: 'noto_color_emoji_example.pdf', format: 'A4' });

        console.log('PDF generated successfully.');

        await browser.close();
    })();

Error string

no error

Bug behavior

  • Flaky
  • PDF

Background

Generate a simple web page with some text content include an emoji symbol from Noto Color Emoji font.

Expectation

I expect the emoji symbol to be included in the output.

This is the html page in a browser environment:

https://jsfiddle.net/vxg7z183/

image

In the puppeteer code snppet I am specifying the location of the font explicitly, and yes the font file does exist:

# ls -al /root/.fonts/NotoColorEmoji/NotoColorEmoji-Regular.ttf
-rw-r--r-- 1 root root 24015992 Apr 22 19:39 /root/.fonts/NotoColorEmoji/NotoColorEmoji-Regular.ttf

And I am running as root so I do have access to this file.

Reality

It isn't... just blank space where the emoji should be. This is the pdf output:

image

Puppeteer configuration file (if used)

No response

Puppeteer version

22.6.5

Node version

20.12.1

Package manager

npm

Package manager version

10.5.0

Operating system

Linux

Copy link

github-actions bot commented Apr 22, 2024

The issue has been labeled as confirmed by the automatic analyser.
Someone from the Puppeteer team will take a look soon!


Analyzer run

@OrKoN
Copy link
Collaborator

OrKoN commented Apr 22, 2024

url('/root/.fonts/NotoColorEmoji/NotoColorEmoji-Regular.ttf') does not look correct since the content is set on an about:blank page. Have you tried including file:// in the URL or a http(s) URL?

@OrKoN
Copy link
Collaborator

OrKoN commented Apr 22, 2024

Screenshot 2024-04-22 at 21 33 34

Right, so the browser seems to be blocking the font.

@drmrbrewer
Copy link
Author

drmrbrewer commented Apr 22, 2024

@OrKoN rather than the absolute path, here it is as a relative path:

src: url('../../.fonts/NotoColorEmoji/NotoColorEmoji-Regular.ttf') format('truetype');

And yes, this relative path is correct:

# ls -al ../../.fonts/NotoColorEmoji/NotoColorEmoji-Regular.ttf
-rw-r--r-- 1 root root 24015992 Apr 22 19:39 ../../.fonts/NotoColorEmoji/NotoColorEmoji-Regular.ttf

I can't see anything wrong with this declaration? I don't want to use a remote url, I want to use a local font file.

This was working fine in the past, even without the @font-face declaration... the font is available in the environment in which node is running... I checked with fc-list:

# fc-list | grep 'Noto Color Emoji'
/root/.fonts/NotoColorEmoji/NotoColorEmoji-Regular.ttf: Noto Color Emoji:style=Regular
/usr/share/fonts/truetype/noto/NotoColorEmoji.ttf: Noto Color Emoji:style=Regular

Not sure when it broke, but it seems to have done.

@OrKoN
Copy link
Collaborator

OrKoN commented Apr 22, 2024

@drmrbrewer I think it is probably a change in browser implementation, probably intentional. Let me try to look it up.

@drmrbrewer
Copy link
Author

@OrKoN OK thanks, this is driving me crazy!

@OrKoN
Copy link
Collaborator

OrKoN commented Apr 22, 2024

import puppeteer from 'puppeteer';
import fs from 'fs';

(async () => {

        const browser = await puppeteer.launch({ headless: false, devtools: true });
        const page = await browser.newPage();

        // HTML content
        const htmlContent = `
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Noto Color Emoji Example</title>
    <style>
    @font-face {
        font-family: 'Noto Color Emoji';
        src: url('file:///Users/alex/projects/pptr-test/Noto_Color_Emoji/NotoColorEmoji-Regular.ttf') format('truetype');
        /* Additional font format declarations can be added as needed */
    }
    /* Style for the span */
        .emoji-text {
            font-family: 'Noto Color Emoji', sans-serif;
            font-size: 24px;
            line-height: 1.5;
        }
    </style>
    </head>
    <body>
    <!-- Span with mixed text -->
    <span class="emoji-text">
        Hello! 😊 Welcome to the Noto Color Emoji example.
    </span>
    </body>
    </html>
`;
        
        fs.writeFileSync('font.html', htmlContent);
        await page.goto(`file://${process.cwd()}/font.html`);

        await page.evaluate(() => document.fonts.ready)

        console.log(await page.evaluate(() => {
            const span = document.createElement('span');
            span.textContent = '😊';
            span.style.fontFamily = 'Noto Color Emoji';
            document.body.appendChild(span);
            const { fontFamily } = window.getComputedStyle(span);
            span.remove();
            return fontFamily;
        }));

        // Generate a PDF file
        await page.pdf({ path: 'noto_color_emoji_example.pdf', format: 'A4' });

        console.log('PDF generated successfully.');

        // await browser.close();
    })();

it works for opening from a file:// instead of about:blank. Not sure why but it looks like the permissions were tightened up for the default about:blank page.

@drmrbrewer
Copy link
Author

Hmm, OK well this is a shame because in my actual code (rather than my attempt at a reproducible example) I am using page.goto(url) and I'm not seeing emoji symbols there.

@OrKoN
Copy link
Collaborator

OrKoN commented Apr 22, 2024

That's weird, could you debug with the launch headless: false and devtools: true? any errors in the console/network?

@drmrbrewer
Copy link
Author

BTW for me, your example also does not produce any emojis in the output.

@OrKoN
Copy link
Collaborator

OrKoN commented Apr 22, 2024

Interesting, it might Linux-specific then. I can try to repro on Linux tomorrow.

@OrKoN
Copy link
Collaborator

OrKoN commented Apr 22, 2024

This is the PDF I get noto_color_emoji_example.pdf Do you see emojis in it?

@drmrbrewer
Copy link
Author

drmrbrewer commented Apr 22, 2024

No, still not:

image

That is despite the test returning "Noto Color Emoji" (suggesting that it can see this font).

Incidentally, I need to retain args: ['--no-sandbox'], and if I add either or both of headless: false, devtools: true then I get:

[21:20:44.884] [FATAL] NodeServer - Unhandled Rejection at: Promise {
  <rejected> Error: Failed to launch the browser process! undefined
  [120595:120620:0422/212044.868811:ERROR:bus.cc(407)] Failed to connect to the bus: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory
  [120595:120595:0422/212044.870209:ERROR:ozone_platform_x11.cc(243)] Missing X server or $DISPLAY
  [120595:120595:0422/212044.870239:ERROR:env.cc(257)] The platform failed to initialize.  Exiting.

@drmrbrewer
Copy link
Author

@OrKoN it's the same when screenshotting to png:

await page.screenshot({ path: 'noto_color_emoji_example.png' });

Output:

noto_color_emoji_example

@drmrbrewer
Copy link
Author

drmrbrewer commented Apr 22, 2024

And for the avoidance of doubt, I'm running your version of the snippet but with:

const browser = await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'] });

And I get the same outcome if I remove the @font-face completely (more like my actual code, where I don't have this)... i.e. I get "Noto Color Emoji" from the font check (presumably because my node environment has this font installed), and an output without the emoji symbol.

But what is also perplexing me is that when I change to font-family: 'Non Existent Font', sans-serif; I still get the same outcome, i.e. "Noto Color Emoji" from the font check... I am so confused :-/

@OrKoN
Copy link
Collaborator

OrKoN commented Apr 23, 2024

The font check explicitly sets span.style.fontFamily = 'Noto Color Emoji'; so it will always return "Noto Color Emoji". The computed font family is not the same as the actually used font: you can use the computed tab > platform fonts in DevTools to see actually used fonts.

@OrKoN
Copy link
Collaborator

OrKoN commented Apr 23, 2024

And I get the same outcome if I remove the @font-face completely (more like my actual code, where I don't have this)

my assumption is that the font-face fails to load, make sure you use a file:// URL with an absolute path.

@drmrbrewer
Copy link
Author

drmrbrewer commented Apr 23, 2024

Yes, I'm using:

src: url('file:///root/.fonts/NotoColorEmoji/NotoColorEmoji-Regular.ttf') format('truetype');

... where:

# ls -l /root/.fonts/NotoColorEmoji/NotoColorEmoji-Regular.ttf
-rw-r--r-- 1 root root 24015992 Apr 22 19:39 /root/.fonts/NotoColorEmoji/NotoColorEmoji-Regular.ttf

If I remove the .fonts folder (so that the URL doesn't point to a valid font) then I get:

image

And interestingly, further up I noted that this emoji font is installed on the system... in fact there are two in the font cache:

# fc-list | grep 'Noto Color Emoji'
/root/.fonts/NotoColorEmoji/NotoColorEmoji-Regular.ttf: Noto Color Emoji:style=Regular
/usr/share/fonts/truetype/noto/NotoColorEmoji.ttf: Noto Color Emoji:style=Regular

The first one is the same as the one specified in the font-face URL of the snippet. The second one must have come pre-installed with the Ubuntu installation. But if I remove the first one and refresh the system font cache, so that fc-list shows only the second one above, then puppeteer generates the output with the emoji character displayed correctly! Doing it the other way around (only the first in the system font cache, not the second), it doesn't work again. :-/

Any idea what's going on here? The NotoColorEmoji-Regular.ttf file (first entry above) is just as downloaded recently from Google Fonts.

@OrKoN
Copy link
Collaborator

OrKoN commented Apr 23, 2024

Is there any difference between two ttf files? could one file be corrupted? perhaps some permissions issue? (you see now errors in DevTools?)

@OrKoN
Copy link
Collaborator

OrKoN commented Apr 23, 2024

I also downloaded NotoColorEmoji-Regular.ttf from Google Fonts and it worked for me with the example above.

@drmrbrewer
Copy link
Author

Is there any difference between two ttf files?

Well, they're clearly quite different to one another, but I'm not sure where the pre-installed one came from and how it differs (apart from obvious things like date and size and name):

# ls -l /root/.fonts/NotoColorEmoji/NotoColorEmoji-Regular.ttf
-rw-r--r-- 1 root root 24015992 Apr 22 19:39 /root/.fonts/NotoColorEmoji/NotoColorEmoji-Regular.ttf
# ls -l /usr/share/fonts/truetype/noto/NotoColorEmoji.ttf
-rw-r--r-- 1 root root 10980856 Nov 30 16:37 /usr/share/fonts/truetype/noto/NotoColorEmoji.ttf

perhaps some permissions issue?

I don't see how... just downloaded and put in the relevant folder.

I also downloaded NotoColorEmoji-Regular.ttf from Google Fonts and it worked for me with the example above.

Have you tested in a Linux (Ubuntu) environment? With font config in place?

@OrKoN
Copy link
Collaborator

OrKoN commented Apr 23, 2024

Yeah, I am not able to reproduce on a Linux (not Ubuntu though):

import puppeteer from 'puppeteer';
import fs from 'fs';

const browser = await puppeteer.launch();
const page = await browser.newPage();

// HTML content
const htmlContent = `
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Noto Color Emoji Example</title>
    <style>
    @font-face {
        font-family: 'Noto Color Emoji';
        src: url('file:///${process.cwd()}/Noto_Color_Emoji/NotoColorEmoji-Regular.ttf') format('truetype');
        /* Additional font format declarations can be added as needed */
    }
    /* Style for the span */
        .emoji-text {
            font-family: 'Noto Color Emoji', sans-serif;
            font-size: 24px;
            line-height: 1.5;
        }
    </style>
    </head>
    <body>
    <!-- Span with mixed text -->
    <span class="emoji-text">
        Hello! 😊 Welcome to the Noto Color Emoji example.
    </span>
    </body>
    </html>
`;

fs.writeFileSync('font.html', htmlContent);
await page.goto(`file://${process.cwd()}/font.html`);

// Generate a PDF file
await page.pdf({ path: 'noto_color_emoji_example.pdf', format: 'A4' });

console.log('PDF generated successfully.');

await browser.close();

Generated the following PDF:

noto_color_emoji_example.pdf

Looks like this with Chrome PDF viewer:

Screenshot 2024-04-23 at 11 15 39

@OrKoN
Copy link
Collaborator

OrKoN commented Apr 23, 2024

fc-list | grep 'Noto Color Emoji'
/usr/share/fonts/truetype/noto/NotoColorEmoji.ttf: Noto Color Emoji:style=Regular

I have the font on the system as well. But I have not tried to put it to the /root/.fonts only to the local folder. If it does not work being in the /root/.fonts, there must be errors in the DevTools console showing that the loading has failed.

@drmrbrewer
Copy link
Author

When you refer to the DevTools console, do you mean what you get if you include devtools: true as a launch arg? If I do that, I just get a bunch of horrible looking errors... but it is the same even when using the ttf file that works):

[10:29:13.176] [FATAL] NodeServer - Unhandled Rejection at: Promise {
  <rejected> Error: Failed to launch the browser process! undefined
  [12683:12683:0423/102913.145836:ERROR:ozone_platform_x11.cc(243)] Missing X server or $DISPLAY
  [12683:12683:0423/102913.145905:ERROR:env.cc(257)] The platform failed to initialize.  Exiting.
  [12683:12710:0423/102913.152880:ERROR:bus.cc(407)] Failed to connect to the bus: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory
  
  
  TROUBLESHOOTING: https://pptr.dev/troubleshooting
  
	  at ChildProcess.onClose (file:///root/workspace/meteogram/node_modules/@puppeteer/browsers/lib/esm/launch.js:258:24)
	  at ChildProcess.emit (node:events:530:35)
	  at ChildProcess.emit (node:domain:488:12)
	  at ChildProcess._handle.onexit (node:internal/child_process:294:12)
	  at Process.callbackTrampoline (node:internal/async_hooks:130:17),
  [Symbol(async_id_symbol)]: 6656,
  [Symbol(trigger_async_id_symbol)]: 6653,
  [Symbol(kResourceStore)]: Hub {
	_version: 7.111,
	_stack: [ [Object] ],
	_isolationScope: Scope {
	  _notifyingListeners: false,
	  _scopeListeners: [],
	  _eventProcessors: [],
	  _breadcrumbs: [],
	  _attachments: [],
	  _user: {},
	  _tags: {},
	  _extra: {},
	  _contexts: {},
	  _sdkProcessingMetadata: {},
	  _propagationContext: [Object],
	  _level: undefined,
	  _span: undefined,
	  _session: undefined,
	  _transactionName: undefined,
	  _fingerprint: undefined,
	  _requestSession: undefined,
	  _client: undefined
	}
  }
} with reason: Error: Failed to launch the browser process! undefined
[12683:12683:0423/102913.145836:ERROR:ozone_platform_x11.cc(243)] Missing X server or $DISPLAY
[12683:12683:0423/102913.145905:ERROR:env.cc(257)] The platform failed to initialize.  Exiting.
[12683:12710:0423/102913.152880:ERROR:bus.cc(407)] Failed to connect to the bus: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory


TROUBLESHOOTING: https://pptr.dev/troubleshooting

	at ChildProcess.onClose (file:///root/workspace/meteogram/node_modules/@puppeteer/browsers/lib/esm/launch.js:258:24)
	at ChildProcess.emit (node:events:530:35)
	at ChildProcess.emit (node:domain:488:12)
	at ChildProcess._handle.onexit (node:internal/child_process:294:12)
	at Process.callbackTrampoline (node:internal/async_hooks:130:17)
This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:
Error: Failed to launch the browser process! undefined
[12683:12683:0423/102913.145836:ERROR:ozone_platform_x11.cc(243)] Missing X server or $DISPLAY
[12683:12683:0423/102913.145905:ERROR:env.cc(257)] The platform failed to initialize.  Exiting.
[12683:12710:0423/102913.152880:ERROR:bus.cc(407)] Failed to connect to the bus: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory


TROUBLESHOOTING: https://pptr.dev/troubleshooting

	at ChildProcess.onClose (file:///root/workspace/meteogram/node_modules/@puppeteer/browsers/lib/esm/launch.js:258:24)
	at ChildProcess.emit (node:events:530:35)
	at ChildProcess.emit (node:domain:488:12)
	at ChildProcess._handle.onexit (node:internal/child_process:294:12)
	at Process.callbackTrampoline (node:internal/async_hooks:130:17)

@drmrbrewer
Copy link
Author

drmrbrewer commented Apr 23, 2024

Maybe this is something peculiar to the fact that I'm using an arm64 architecture:

# dpkg --print-architecture
arm64

And maybe I just accept my fate and use the emoji font file provided, rather than using my own... that would be the easiest workaround.

@OrKoN
Copy link
Collaborator

OrKoN commented Apr 23, 2024

@drmrbrewer it requires a display to be on the system :) Could you perhaps include CDP logs instead? Running with the env var DEBUG=puppeteer:* (https://pptr.dev/guides/debugging#log-devtools-protocol-traffic)

Chrome does not support Linux on arm64 so I assume you are using some emulation or third party Chromium builds?

@drmrbrewer
Copy link
Author

Yes I can't recall the details of how I got it to work on arm64 (but I've made copious notes about it and recall it being a real headache)... but refer to this previous comment about this.

@OrKoN
Copy link
Collaborator

OrKoN commented Apr 23, 2024

I see, it makes it more difficult to troubleshoot. Is the version of your Chromium matches the version expected by the Puppeteer version? Chrome currently does not support Linux arm64 so nothing gets tested on that platform, so if something is wrong there, we would not know.

@drmrbrewer
Copy link
Author

Here is the output (for an output without emoji char) with DEBUG=puppeteer:* and dumpio: true:

  puppeteer:browsers:launcher Launching /usr/bin/chromium --allow-pre-commit-input --disable-background-networking --disable-background-timer-throttling --disable-backgrounding-occluded-windows --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-background-pages --disable-component-update --disable-default-apps --disable-dev-shm-usage --disable-extensions --disable-field-trial-config --disable-hang-monitor --disable-infobars --disable-ipc-flooding-protection --disable-popup-blocking --disable-prompt-on-repost --disable-renderer-backgrounding --disable-search-engine-choice-screen --disable-sync --enable-automation --export-tagged-pdf --generate-pdf-document-outline --force-color-profile=srgb --metrics-recording-only --no-first-run --password-store=basic --use-mock-keychain --disable-features=Translate,AcceptCHFrame,MediaRouter,OptimizationHints,ProcessPerSiteUpToMainFrameThreshold --enable-features=NetworkServiceInProcess2 --headless --hide-scrollbars --mute-audio about:blank --no-sandbox --disable-setuid-sandbox --remote-debugging-port=0 --user-data-dir=/tmp/puppeteer_dev_chrome_profile-XXXXXXZi0ZJn {
  detached: true,
  env: {
	PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: 'true',
	PUPPETEER_EXECUTABLE_PATH: '/usr/bin/chromium',
	PUPPETEER_DISABLE_HEADLESS_WARNING: 'true'
  },
  stdio: [ 'pipe', 'pipe', 'pipe' ]
} +49s
  puppeteer:browsers:launcher Launched 15595 +4ms
[0423/104023.808057:ERROR:bus.cc(407)] Failed to connect to the bus: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory
[0423/104023.810006:ERROR:bus.cc(407)] Failed to connect to the bus: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory
[0423/104023.810225:ERROR:bus.cc(407)] Failed to connect to the bus: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory
[0423/104023.827243:INFO:policy_logger.cc(145)] :components/policy/core/common/config_dir_policy_loader.cc(118) Skipping mandatory platform policies because no policy file was found at: /etc/chromium/policies/managed
[0423/104023.827291:INFO:policy_logger.cc(145)] :components/policy/core/common/config_dir_policy_loader.cc(118) Skipping recommended platform policies because no policy file was found at: /etc/chromium/policies/recommended
[0423/104023.837014:ERROR:angle_platform_impl.cc(44)] Display.cpp:1070 (initialize): ANGLE Display::initialize error 12289: Could not open the default X display.
ERR: Display.cpp:1070 (initialize): ANGLE Display::initialize error 12289: Could not open the default X display.
[0423/104023.837302:ERROR:gl_display.cc(515)] EGL Driver message (Critical) eglInitialize: Could not open the default X display.
[0423/104023.837394:ERROR:gl_display.cc(786)] eglInitialize Default failed with error EGL_NOT_INITIALIZED
[0423/104023.837489:ERROR:gl_display.cc(820)] Initialization of all EGL display types failed.
[0423/104023.837673:ERROR:gl_ozone_egl.cc(26)] GLDisplayEGL::Initialize failed.
[0423/104023.837969:ERROR:angle_platform_impl.cc(44)] Display.cpp:1070 (initialize): ANGLE Display::initialize error 12289: Could not open the default X display.
ERR: Display.cpp:1070 (initialize): ANGLE Display::initialize error 12289: Could not open the default X display.
[0423/104023.838129:ERROR:gl_display.cc(515)] EGL Driver message (Critical) eglInitialize: Could not open the default X display.
[0423/104023.838200:ERROR:gl_display.cc(786)] eglInitialize Default failed with error EGL_NOT_INITIALIZED
[0423/104023.838267:ERROR:gl_display.cc(820)] Initialization of all EGL display types failed.
[0423/104023.838334:ERROR:gl_ozone_egl.cc(26)] GLDisplayEGL::Initialize failed.
[0423/104023.841294:ERROR:viz_main_impl.cc(196)] Exiting GPU process due to errors during initialization
[0423/104023.901243:WARNING:bluez_dbus_manager.cc(248)] Floss manager not present, cannot set Floss enable/disable.

DevTools listening on ws://127.0.0.1:39341/devtools/browser/96f4e9c4-bc1b-4fb3-ac1e-2176e7058912
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setDiscoverTargets","params":{"discover":true,"filter":[{}]},"id":1}'
  puppeteer:protocol:SEND ► ] +0ms
[0423/104023.945322:WARNING:runtime_features.cc(728)] AttributionReportingCrossAppWeb cannot be enabled in this configuration. Use --enable-features=ConversionMeasurement,AttributionReportingCrossAppWeb in addition.
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"2ad5684a-d26c-4647-9978-51af9411967e","type":"browser","title":"","url":"","attached":false,"canAccessOpener":false}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"3510618358C546EB9217B411B326F038","type":"page","title":"","url":"about:blank","attached":false,"canAccessOpener":false,"browserContextId":"0F97B1964BB14DEA51F588BE03FBC5B1"}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"9F9C0713890EDC78222DB1085F2DB622","type":"tab","title":"","url":"about:blank","attached":false,"canAccessOpener":false,"browserContextId":"0F97B1964BB14DEA51F588BE03FBC5B1"}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"e3b63877-8ebc-4079-86d3-f110cc4f6073","type":"browser","title":"","url":"","attached":true,"canAccessOpener":false}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [ '{"id":1,"result":{}}' ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{"type":"page","exclude":true},{}]},"id":2}'
  puppeteer:protocol:SEND ► ] +0ms
[0423/104023.948675:ERROR:angle_platform_impl.cc(44)] Display.cpp:1070 (initialize): ANGLE Display::initialize error 12289: Could not open the default X display.
ERR: Display.cpp:1070 (initialize): ANGLE Display::initialize error 12289: Could not open the default X display.
[0423/104023.948957:ERROR:gl_display.cc(515)] EGL Driver message (Critical) eglInitialize: Could not open the default X display.
[0423/104023.949093:ERROR:gl_display.cc(786)] eglInitialize Default failed with error EGL_NOT_INITIALIZED
[0423/104023.949220:ERROR:gl_display.cc(820)] Initialization of all EGL display types failed.
[0423/104023.949288:ERROR:gl_ozone_egl.cc(26)] GLDisplayEGL::Initialize failed.
[0423/104023.949475:ERROR:angle_platform_impl.cc(44)] Display.cpp:1070 (initialize): ANGLE Display::initialize error 12289: Could not open the default X display.
ERR: Display.cpp:1070 (initialize): ANGLE Display::initialize error 12289: Could not open the default X display.
[0423/104023.949559:ERROR:gl_display.cc(515)] EGL Driver message (Critical) eglInitialize: Could not open the default X display.
[0423/104023.949609:ERROR:gl_display.cc(786)] eglInitialize Default failed with error EGL_NOT_INITIALIZED
[0423/104023.949654:ERROR:gl_display.cc(820)] Initialization of all EGL display types failed.
[0423/104023.949723:ERROR:gl_ozone_egl.cc(26)] GLDisplayEGL::Initialize failed.
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"9F9C0713890EDC78222DB1085F2DB622","type":"tab","title":"","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"0F97B1964BB14DEA51F588BE03FBC5B1"}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.attachedToTarget","params":{"sessionId":"2CB6C0B0B095AC86BD624D2E9FAC08F9","targetInfo":{"targetId":"9F9C0713890EDC78222DB1085F2DB622","type":"tab","title":"","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"0F97B1964BB14DEA51F588BE03FBC5B1"},"waitingForDebugger":false}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{}]},"id":1,"sessionId":"2CB6C0B0B095AC86BD624D2E9FAC08F9"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Runtime.runIfWaitingForDebugger","id":2,"sessionId":"2CB6C0B0B095AC86BD624D2E9FAC08F9"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [ '{"id":2,"result":{}}' ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"3510618358C546EB9217B411B326F038","type":"page","title":"","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"0F97B1964BB14DEA51F588BE03FBC5B1"}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.attachedToTarget","params":{"sessionId":"1C276E81494F7EBDD815DA24AA68CB7F","targetInfo":{"targetId":"3510618358C546EB9217B411B326F038","type":"page","title":"","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"0F97B1964BB14DEA51F588BE03FBC5B1"},"waitingForDebugger":false},"sessionId":"2CB6C0B0B095AC86BD624D2E9FAC08F9"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{}]},"id":1,"sessionId":"1C276E81494F7EBDD815DA24AA68CB7F"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Runtime.runIfWaitingForDebugger","id":2,"sessionId":"1C276E81494F7EBDD815DA24AA68CB7F"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":1,"result":{},"sessionId":"2CB6C0B0B095AC86BD624D2E9FAC08F9"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":2,"result":{},"sessionId":"2CB6C0B0B095AC86BD624D2E9FAC08F9"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.createTarget","params":{"url":"about:blank"},"id":3}'
  puppeteer:protocol:SEND ► ] +0ms
[0423/104023.957182:ERROR:viz_main_impl.cc(196)] Exiting GPU process due to errors during initialization
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"B66BE1AE2AE3447390813B96F5E50ABF","type":"page","title":"","url":"","attached":false,"canAccessOpener":false,"browserContextId":"0F97B1964BB14DEA51F588BE03FBC5B1"}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"0B0D303E89762BB291CE06B17BC230AA","type":"tab","title":"","url":"","attached":false,"canAccessOpener":false,"browserContextId":"0F97B1964BB14DEA51F588BE03FBC5B1"}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"0B0D303E89762BB291CE06B17BC230AA","type":"tab","title":"","url":"","attached":true,"canAccessOpener":false,"browserContextId":"0F97B1964BB14DEA51F588BE03FBC5B1"}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.attachedToTarget","params":{"sessionId":"47D803CB20836F1D716E75E2FCDCA065","targetInfo":{"targetId":"0B0D303E89762BB291CE06B17BC230AA","type":"tab","title":"","url":"","attached":true,"canAccessOpener":false,"browserContextId":"0F97B1964BB14DEA51F588BE03FBC5B1"},"waitingForDebugger":true}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{}]},"id":1,"sessionId":"47D803CB20836F1D716E75E2FCDCA065"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Runtime.runIfWaitingForDebugger","id":2,"sessionId":"47D803CB20836F1D716E75E2FCDCA065"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [ '{"id":3,"result":{"targetId":"B66BE1AE2AE3447390813B96F5E50ABF"}}' ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"B66BE1AE2AE3447390813B96F5E50ABF","type":"page","title":"","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"0F97B1964BB14DEA51F588BE03FBC5B1"}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.attachedToTarget","params":{"sessionId":"6BAAC22732EC6264F11054DFC986DD05","targetInfo":{"targetId":"B66BE1AE2AE3447390813B96F5E50ABF","type":"page","title":"","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"0F97B1964BB14DEA51F588BE03FBC5B1"},"waitingForDebugger":false},"sessionId":"47D803CB20836F1D716E75E2FCDCA065"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{}]},"id":1,"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Runtime.runIfWaitingForDebugger","id":2,"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":1,"result":{},"sessionId":"47D803CB20836F1D716E75E2FCDCA065"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Network.enable","id":3,"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Network.setCacheDisabled","params":{"cacheDisabled":false},"id":4,"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Fetch.disable","id":5,"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Page.enable","id":6,"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Page.getFrameTree","id":7,"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Page.setLifecycleEventsEnabled","params":{"enabled":true},"id":8,"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Runtime.enable","id":9,"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Performance.enable","id":10,"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Log.enable","id":11,"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":2,"result":{},"sessionId":"47D803CB20836F1D716E75E2FCDCA065"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"3510618358C546EB9217B411B326F038","type":"page","title":"about:blank","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"0F97B1964BB14DEA51F588BE03FBC5B1"}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":1,"result":{},"sessionId":"1C276E81494F7EBDD815DA24AA68CB7F"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":2,"result":{},"sessionId":"1C276E81494F7EBDD815DA24AA68CB7F"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":5,"result":{},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
[0423/104023.969800:WARNING:runtime_features.cc(728)] AttributionReportingCrossAppWeb cannot be enabled in this configuration. Use --enable-features=ConversionMeasurement,AttributionReportingCrossAppWeb in addition.
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"B66BE1AE2AE3447390813B96F5E50ABF","type":"page","title":"about:blank","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"0F97B1964BB14DEA51F588BE03FBC5B1"}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.frameStoppedLoading","params":{"frameId":"B66BE1AE2AE3447390813B96F5E50ABF"},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":1,"result":{},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":2,"result":{},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":3,"result":{},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":4,"result":{},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":6,"result":{},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":7,"result":{"frameTree":{"frame":{"id":"B66BE1AE2AE3447390813B96F5E50ABF","loaderId":"7818FD819C085672BB0816A62B2C2964","url":"about:blank","domainAndRegistry":"","securityOrigin":"://","mimeType":"text/html","adFrameStatus":{"adFrameType":"none"},"secureContextType":"InsecureScheme","crossOriginIsolatedContextType":"NotIsolated","gatedAPIFeatures":[]}}},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"B66BE1AE2AE3447390813B96F5E50ABF","loaderId":"7818FD819C085672BB0816A62B2C2964","name":"commit","timestamp":97582.50295},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"B66BE1AE2AE3447390813B96F5E50ABF","loaderId":"7818FD819C085672BB0816A62B2C2964","name":"DOMContentLoaded","timestamp":97582.503078},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"B66BE1AE2AE3447390813B96F5E50ABF","loaderId":"7818FD819C085672BB0816A62B2C2964","name":"load","timestamp":97582.503586},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"B66BE1AE2AE3447390813B96F5E50ABF","loaderId":"7818FD819C085672BB0816A62B2C2964","name":"networkAlmostIdle","timestamp":97582.50351},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"B66BE1AE2AE3447390813B96F5E50ABF","loaderId":"7818FD819C085672BB0816A62B2C2964","name":"networkIdle","timestamp":97582.50351},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":8,"result":{},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Runtime.executionContextCreated","params":{"context":{"id":1,"origin":"://","name":"","uniqueId":"8703613886202040495.-3633262949820770451","auxData":{"isDefault":true,"type":"default","frameId":"B66BE1AE2AE3447390813B96F5E50ABF"}}},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":9,"result":{},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":10,"result":{},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":11,"result":{},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Page.addScriptToEvaluateOnNewDocument","params":{"source":"//# sourceURL=pptr:internal","worldName":"__puppeteer_utility_world__"},"id":12,"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":12,"result":{"identifier":"1"},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Page.createIsolatedWorld","params":{"frameId":"B66BE1AE2AE3447390813B96F5E50ABF","worldName":"__puppeteer_utility_world__","grantUniveralAccess":true},"id":13,"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Runtime.executionContextCreated","params":{"context":{"id":2,"origin":"","name":"__puppeteer_utility_world__","uniqueId":"-1064249186974532386.51555205590110432","auxData":{"isDefault":false,"type":"isolated","frameId":"B66BE1AE2AE3447390813B96F5E50ABF"}}},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":13,"result":{"executionContextId":2},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Emulation.setDeviceMetricsOverride","params":{"mobile":false,"width":800,"height":600,"deviceScaleFactor":1,"screenOrientation":{"angle":0,"type":"portraitPrimary"}},"id":14,"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Emulation.setTouchEmulationEnabled","params":{"enabled":false},"id":15,"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":14,"result":{},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":15,"result":{},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Page.navigate","params":{"url":"file:///root/workspace/meteogram/font.html","frameId":"B66BE1AE2AE3447390813B96F5E50ABF"},"id":16,"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.frameStartedLoading","params":{"frameId":"B66BE1AE2AE3447390813B96F5E50ABF"},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.requestWillBeSent","params":{"requestId":"9E98725F719466B71AEAE2944F7B4FB7","loaderId":"9E98725F719466B71AEAE2944F7B4FB7","documentURL":"file:///root/workspace/meteogram/font.html","request":{"url":"file:///root/workspace/meteogram/font.html","method":"GET","headers":{"sec-ch-ua":"\\"HeadlessChrome\\";v=\\"123\\", \\"Not:A-Brand\\";v=\\"8\\", \\"Chromium\\";v=\\"123\\"","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\\"Linux\\""},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"strict-origin-when-cross-origin","isSameSite":true},"timestamp":97582.523906,"wallTime":1713865224.010861,"initiator":{"type":"other"},"redirectHasExtraInfo":false,"type":"Document","frameId":"B66BE1AE2AE3447390813B96F5E50ABF","hasUserGesture":false},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.responseReceived","params":{"requestId":"9E98725F719466B71AEAE2944F7B4FB7","loaderId":"9E98725F719466B71AEAE2944F7B4FB7","timestamp":97582.529591,"type":"Document","response":{"url":"file:///root/workspace/meteogram/font.html","status":200,"statusText":"OK","headers":{"Content-Type":"text/html","Last-Modified":"Tue, 23 Apr 2024 09:40:24 GMT"},"mimeType":"text/html","charset":"","connectionReused":false,"connectionId":0,"remoteIPAddress":"","remotePort":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","alternateProtocolUsage":"alternativeJobWonWithoutRace","securityState":"secure"},"hasExtraInfo":false,"frameId":"B66BE1AE2AE3447390813B96F5E50ABF"},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":16,"result":{"frameId":"B66BE1AE2AE3447390813B96F5E50ABF","loaderId":"9E98725F719466B71AEAE2944F7B4FB7"},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"B66BE1AE2AE3447390813B96F5E50ABF","loaderId":"9E98725F719466B71AEAE2944F7B4FB7","name":"init","timestamp":97582.532177},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"B66BE1AE2AE3447390813B96F5E50ABF","type":"page","title":"font.html","url":"file:///root/workspace/meteogram/font.html","attached":true,"canAccessOpener":false,"browserContextId":"0F97B1964BB14DEA51F588BE03FBC5B1"}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Runtime.executionContextsCleared","params":{},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.frameNavigated","params":{"frame":{"id":"B66BE1AE2AE3447390813B96F5E50ABF","loaderId":"9E98725F719466B71AEAE2944F7B4FB7","url":"file:///root/workspace/meteogram/font.html","domainAndRegistry":"","securityOrigin":"file://","mimeType":"text/html","adFrameStatus":{"adFrameType":"none"},"secureContextType":"Secure","crossOriginIsolatedContextType":"NotIsolated","gatedAPIFeatures":[]},"type":"Navigation"},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Runtime.executionContextCreated","params":{"context":{"id":3,"origin":"file://","name":"","uniqueId":"-9199191925608155630.1560103195125049649","auxData":{"isDefault":true,"type":"default","frameId":"B66BE1AE2AE3447390813B96F5E50ABF"}}},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Runtime.executionContextCreated","params":{"context":{"id":4,"origin":"://","name":"__puppeteer_utility_world__","uniqueId":"-8766348129434233768.-3466841952020746898","auxData":{"isDefault":false,"type":"isolated","frameId":"B66BE1AE2AE3447390813B96F5E50ABF"}}},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"9E98725F719466B71AEAE2944F7B4FB7","timestamp":97582.537466,"dataLength":965,"encodedDataLength":0},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.loadingFinished","params":{"requestId":"9E98725F719466B71AEAE2944F7B4FB7","timestamp":97582.528498,"encodedDataLength":965},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.domContentEventFired","params":{"timestamp":97582.539182},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"B66BE1AE2AE3447390813B96F5E50ABF","loaderId":"9E98725F719466B71AEAE2944F7B4FB7","name":"DOMContentLoaded","timestamp":97582.539182},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.requestWillBeSent","params":{"requestId":"15651.2","loaderId":"9E98725F719466B71AEAE2944F7B4FB7","documentURL":"file:///root/workspace/meteogram/font.html","request":{"url":"file:///root/workspace/meteogram/NotoColorEmoji-Regular.ttf","method":"GET","headers":{"Referer":"","User-Agent":"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/123.0.6312.105 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"strict-origin-when-cross-origin","isSameSite":true},"timestamp":97582.539851,"wallTime":1713865224.026833,"initiator":{"type":"parser","url":"file:///root/workspace/meteogram/font.html","lineNumber":27,"columnNumber":9},"redirectHasExtraInfo":false,"type":"Font","frameId":"B66BE1AE2AE3447390813B96F5E50ABF","hasUserGesture":false},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.responseReceived","params":{"requestId":"15651.2","loaderId":"9E98725F719466B71AEAE2944F7B4FB7","timestamp":97582.54612,"type":"Font","response":{"url":"file:///root/workspace/meteogram/NotoColorEmoji-Regular.ttf","status":200,"statusText":"OK","headers":{"Last-Modified":"Tue, 23 Apr 2024 09:19:41 GMT","Content-Type":"font/ttf"},"mimeType":"font/ttf","charset":"","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","alternateProtocolUsage":"alternativeJobWonWithoutRace","securityState":"secure"},"hasExtraInfo":false,"frameId":"B66BE1AE2AE3447390813B96F5E50ABF"},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"15651.2","timestamp":97582.546161,"dataLength":1048576,"encodedDataLength":0},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"15651.2","timestamp":97582.594458,"dataLength":1048576,"encodedDataLength":0},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"15651.2","timestamp":97582.595595,"dataLength":1048576,"encodedDataLength":0},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"15651.2","timestamp":97582.596607,"dataLength":1048576,"encodedDataLength":0},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"15651.2","timestamp":97582.597636,"dataLength":1048576,"encodedDataLength":0},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"B66BE1AE2AE3447390813B96F5E50ABF","loaderId":"9E98725F719466B71AEAE2944F7B4FB7","name":"firstPaint","timestamp":97582.595265},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"B66BE1AE2AE3447390813B96F5E50ABF","loaderId":"9E98725F719466B71AEAE2944F7B4FB7","name":"firstContentfulPaint","timestamp":97582.595265},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"B66BE1AE2AE3447390813B96F5E50ABF","loaderId":"9E98725F719466B71AEAE2944F7B4FB7","name":"firstMeaningfulPaintCandidate","timestamp":97582.595265},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"15651.2","timestamp":97582.598748,"dataLength":1048576,"encodedDataLength":0},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"15651.2","timestamp":97582.59968,"dataLength":1048576,"encodedDataLength":0},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"15651.2","timestamp":97582.600761,"dataLength":1048576,"encodedDataLength":0},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"15651.2","timestamp":97582.60171,"dataLength":1048576,"encodedDataLength":0},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"15651.2","timestamp":97582.602828,"dataLength":1048576,"encodedDataLength":0},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"15651.2","timestamp":97582.603834,"dataLength":1048576,"encodedDataLength":0},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"15651.2","timestamp":97582.604654,"dataLength":1048576,"encodedDataLength":0},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"15651.2","timestamp":97582.605307,"dataLength":1048576,"encodedDataLength":0},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"15651.2","timestamp":97582.606115,"dataLength":1048576,"encodedDataLength":0},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"15651.2","timestamp":97582.606782,"dataLength":1048576,"encodedDataLength":0},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"15651.2","timestamp":97582.607381,"dataLength":1048576,"encodedDataLength":0},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"15651.2","timestamp":97582.607969,"dataLength":1048576,"encodedDataLength":0},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"15651.2","timestamp":97582.608587,"dataLength":1048576,"encodedDataLength":0},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"15651.2","timestamp":97582.609211,"dataLength":1048576,"encodedDataLength":0},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"15651.2","timestamp":97582.609787,"dataLength":1048576,"encodedDataLength":0},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"15651.2","timestamp":97582.610448,"dataLength":1048576,"encodedDataLength":0},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"15651.2","timestamp":97582.611108,"dataLength":1048576,"encodedDataLength":0},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"15651.2","timestamp":97582.611728,"dataLength":947320,"encodedDataLength":0},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.loadingFinished","params":{"requestId":"15651.2","timestamp":97582.613026,"encodedDataLength":24015992},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.loadEventFired","params":{"timestamp":97582.649719},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"B66BE1AE2AE3447390813B96F5E50ABF","loaderId":"9E98725F719466B71AEAE2944F7B4FB7","name":"load","timestamp":97582.649719},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Runtime.callFunctionOn","params":{"functionDeclaration":"() => document.fonts.ready\\n//# sourceURL=pptr:evaluate;file%3A%2F%2F%2Froot%2Fworkspace%2Fmeteogram%2Fnodeserver.js%3A1814%3A28\\n","executionContextId":3,"arguments":[],"returnByValue":true,"awaitPromise":true,"userGesture":true},"id":17,"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.frameStoppedLoading","params":{"frameId":"B66BE1AE2AE3447390813B96F5E50ABF"},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":17,"result":{"result":{"type":"object","value":{}}},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   `{"method":"Runtime.callFunctionOn","params":{"functionDeclaration":"() => {\\n                    const span = document.createElement('span');\\n                    span.textContent = '😊';\\n                    span.style.fontFamily = 'Noto Color Emoji';\\n                    document.body.appendChild(span);\\n                    const { fontFamily } = window.getComputedStyle(span);\\n                    span.remove();\\n                    return fontFamily;\\n                }\\n//# sourceURL=pptr:evaluate;file%3A%2F%2F%2Froot%2Fworkspace%2Fmeteogram%2Fnodeserver.js%3A1816%3A40\\n","executionContextId":3,"arguments":[],"returnByValue":true,"awaitPromise":true,"userGesture":true},"id":18,"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}`
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":18,"result":{"result":{"type":"string","value":"\\"Noto Color Emoji\\""}},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
"Noto Color Emoji"
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Page.bringToFront","id":19,"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":19,"result":{},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Page.captureScreenshot","params":{"format":"png","captureBeyondViewport":false},"id":20,"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":20,"result":{"data":"iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAYAAACadoJwAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAACAASURBVHic7d17tJV1nfjxzwbOORwQEBQQZIk3JG+jaV5Ik0QSVGgiSVKo8MLkBKXZpDbVLysnnbSxxswmI7W0qaZmdImXNFOXjdYoM5KmVlriNRUlRECu398frL3jcPbhcs7hc8Ber7VYS5/97Oc8t/08+71vT6WUUgIAACBBt66eAQAA4K+HAAEAANIIEAAAII0AAQAA0ggQAAAgjQABAADSCBAAACCNAAEAANIIEAAAII0AAQAA0ggQAAAgjQABAADSCBAAACCNAAEAANIIEAAAII0AAQAA0mxSgLzxxhtRqVSiUqnEgw8+uNHx99xzz6hUKnHNNdd0dP5i+vTpUalU4sILL6wNu+aaa6JSqcTYsWM7PP3FixfXlu2Xv/xlh6fHprvggguiUqnE3/zN32xwvBkzZkSlUomDDjpog+OdfPLJUalU4r3vfW+756kz9y1Y16xZs6JSqcT555/f1bOyxRx++OFRqVSiqakpHn/88Q2O++1vfzsqlUpMnz49Z+a2Qffff3985CMfiX333Tf69+8fDQ0NMXDgwDjqqKPi4osvjldeeaXT/la9c+2bTXX/3NR/73znO7t6lluZNm1aVCqVuPjii2vDqo+l8ePHd+Gcsal23XXXqFQq8Ytf/KKrZ6VL/dW/A9LY2Fj3v9nyjj/++IiIePjhh+OFF15oc7w77rgjIiIeeuihePnll+uOU0qJn//85xERcdxxx3XynJLhox/9aGy//fZdPRsd9mZZjo5YsWJFzJw5M/VvvpnW++LFi2Py5Mnx9re/Pa688sp47LHHoqGhIYYMGRKvvvpq3HvvvfGpT30qRowYET/72c+6ena3OQMHDoyRI0du9N8uu+zS1bMKb1oCRIB0mbe97W2x4447RkTE7bffXnec3/3udzF//vzo1atXlFLaPNnOmzcvXnrppYgQINuqBx54oKtnoVO8WZajI7bffvv4+c9/Htdff33a33yzrPc33ngjjj766PjJT34SvXv3jgsvvDCeffbZeOmll+Lpp5+OZcuWxW233RajRo2KhQsXxnHHHRe33XZbV8/2NuXcc8+Nxx9/fKP/vvvd73b1rLZy9dVXx7Jly+KTn/xkbdipp54ay5Yti5tuuqkL5ww2z199gFQqlejRo0dECJBs3bp1i3HjxkVExE9/+tO641Tf/Zg2bVqL/29rvP333z+GDRvW2bPKFrZy5cp46KGHuno2OuzNshwd9ZnPfCYiIj7xiU/EokWLtvjfezOt9/PPPz/mzp0b2223Xdx1113x6U9/OoYOHVq7vbGxMcaNGxd33313TJw4MVatWhUzZ86MN954owvnmiwNDQ3Rs2fP6N69e21Y9+7do2fPntHQ0NCFcwabJz1AXnzxxTj33HNjn332iebm5ujTp08ccMAB8YUvfCGWLFnS4ek//fTTMWvWrNhrr72iubk5tttuu9h7773jnHPOieeff77ufarhIUDyVd+t+NnPfhallFa3V98ZmTFjRvTs2XOjAbL+ux8rVqyIr33tazFq1Kjo27dvNDc3x+677x5nnnlmzJ8/f7Pm9fnnn4+PfexjMWLEiOjZs2f0798/JkyY0OYrr5u7Lw4fPjwqlUo888wzcc8998To0aOjX79+MWDAgDjuuOPikUceiYiIp556KqZOnRpDhgyJpqam2Hfffdv8vlVnLv+WMm3atGhsbIzly5fHokWLap+/XvdV3SVLlsRFF10UBx98cPTt2zeamppil112ialTp27S99IybMpyRKx9srBw4cKYNWtW7LLLLtHU1BSDBw+OadOmxbPPPlt32vPmzYsPfvCDtfF32GGHGD16dFx77bV1Hzdd7V3veldMnDgxXnzxxfj0pz+92fcvpcT1118fY8eOjR122CEaGxtj0KBBcdxxx8WPf/zjFuNuynrfnOl1pZdffjn+7d/+LSIiLrroojjkkEPaHLexsTGuuuqqOPHEE+OCCy5otR+051zYlvvvvz9OOumk2HnnnaOxsTG23377OPzww+MrX/lKLFu2rNX4O++8c1QqlXjuuefi0ksvjWHDhkVTU1ObH6HdVmyJY/Tmbqdt5Tsgm3Puufzyy6NSqcRb3vKWWL58eatpffWrX41KpRJ77713i9B+7bXX4oILLoi3vvWt0adPn2hoaIhBgwbFCSecUPfTEldffXVUKpU4/fTTa+8iDR8+PHr27Bl77LFHXHTRRbXH0ezZs+PAAw+MXr16xYABA+L9739/q4+Kf/3rX699j23ZsmVx7rnnxm677RY9e/aMQYMGxZQpU+KJJ57YrPV24403xvHHHx8DBw6MxsbGGDJkSJx44olx7733btZ0tgllEyxbtqxERImI8sADD2x0/D322KNERLn66qtbDH/00UfLTjvtVCKi7LHHHuVDH/pQOemkk8qQIUNKRJR99tmnvPzyyy3u86EPfahERPniF79YG3b11VeXiCjHHHNMi3F/9atfle23375ERBk5cmSZOnVqOeWUU8qIESNKRJSBAweWhx9+uNX8Vu/z3HPPbcrqoBO9/PLLpVu3biUiyty5c1vctnLlytK3b9/Sr1+/smrVqvKOd7yjRER59NFHW4y3bNmy0tzcXCKi3H333bXhS5YsKaNGjSoRUfr371/e9773lenTp5d99923RETp06dP+eUvf9liWm3tW/PmzSsDBgwoEVHe8pa3lPe85z3lkEMOKRFRKpVKufbaa1uM3559ca+99ioRUWbPnl2am5vL2LFjy6RJk8qgQYNKRJTBgweXJ598sgwdOrTsu+++ZcqUKWW//farPTbnzJnTYnrtWf6u8IMf/KCcfvrpJSJKU1NTOe+888p5551Xfvvb35ZSSlmwYEHZf//9a+tg0qRJ5bTTTiuHH354iYjSvXv3ct1113XxUmx8OWbOnFkiopx//vll7733LkOHDi0nnXRSmThxYunVq1eJiDJixIjyxhtvtJjuD3/4w9LY2Fgiohx22GHljDPOKCeccELtPu9///vL6tWru2KRWznssMNKRJT/+Z//KX/84x9Lr169Srdu3eqeN6666qoSEeVDH/pQi+Fr1qwpU6dOLRFRevbsWcaNG1dmzJhRxo0bV1sPZ555Zm38ja33zZ1eV/r2t79dIqL069evLF26tN3Tac/xp965tpRSvvnNb9aO0aNGjSqnn356mTRpUtlxxx1LRJRDDjmkLF68uMV9qs8BLrvsslKpVMrhhx9exowZUxYsWNDuZeoM1f3zkksuadf9O/sY3Z7tVN2XL7rootqw6mNp3Lhx7Vquzra55541a9aUMWPGlIgon/vc51pM69lnny19+vQpPXr0KL/61a9qw19//fXa9Pr3718mTZpUpk2bVtvGEVG++93vtpjW97///RIRtePusGHDypQpU8rb3/722n0uvfTS8oUvfKE0NzeXiRMnlhNOOKH07t27tq+v61vf+laJiPKe97ynjB07tvTt27eMGTOmxeOjf//+5Xe/+12L+w0fPrxERLn33ntbDD/rrLNKRJSGhoYyfvz4csYZZ5Sjjjqq9jzj61//ekc2y1YnLUBWr15dexLx4Q9/uKxatap222uvvVYmTJhQIqKccsopLaa1qQGycuXKsvvuu5eIKOecc05Zs2ZNi79dnc7BBx/can6rB4/144cc1QPGl770pRbD77333hIRZcKECaWUUi644IISEeWrX/1qi/HuuOOOEhGlb9++ZcWKFbXh1Sd8hxxySHnllVdqw9esWVM+//nPl4gou+++e1m+fHnttnr71qpVq8pb3vKWEhHlwgsvbPG3//M//7NUKpXS1NRUC9j27ov77LNPiYiy4447lptvvrk2/KWXXqrFz9ChQ8usWbNqTzjXrFlTTjzxxBIR5b3vfW+L6bVn+bvKww8/XHvitb4PfOADJSLKkUceWV5//fUWt82ePbtEROndu3d54YUXsma3TRtajur22H777cuUKVPKkiVLarc98sgjtSfDN954Y234/PnzS3Nzc6lUKq1Opk888UTtWPutb31ryy3UZqg+lu+///5SSin/9E//VCKivO1tb2sVSW0FSHWbDho0qNWJe968ebUnAzfddFNt+IbWe3um11WqIXX88ce3exrtPf7UO9c+9thjpaGhoVQqlfJf//VfLcZfuHBh7Zz+iU98osVte++9d4mIMnz48HLLLbe0e1k6W0cDpDOP0e3dTttCgLTn3PPUU0+Vvn37lqampvL444/Xhr/3ve8tEVE++9nPtvgb3/jGN0pElF133bXF3yillMsvv7z2mF/3uPOjH/2odgweO3Zsi3D+7Gc/W4u+YcOGlV//+te12x566KFSqVRKRLQYXn2+0NzcXA4++ODy6quv1m5btGhRbX+bNGlSi/mrFyD/8R//USKiDBgwoDz00EMtxr/ttttKU1NT6dGjR6sXYLdlmx0gQ4YMKcOHD9/gvx49erQKkJtvvrn24Fz/Fb5SSnnhhRdKjx49Svfu3VuEwKYGyA033FB7BWLdJ6FVCxYsqM3Xgw8+2OK2YcOGlYgoixYt2pTVQSerhsU73/nOFsP/3//7fyUiyte+9rVSyl+C5IQTTmgx3rnnntvq4P7qq6+WpqamEhF13/UqpdRemVr3xFpv37r99ttrB8x6rzT/7d/+bdl7773LT37yk1JK+/fF6qs5U6ZMaXWfU089tXZwXH+a1cfWyJEjO7z8XaWtJ5Avv/xyaWhoKBFR5s2bV/e+b33rW2uvXHW1TQmQHXfcsbz22mutbh8/fnyr5fjkJz9ZIqKceOKJdf/ej3/84xIR5YADDui8heiA9QNk+fLltXi/4oorWozbVoAceOCBLR736/v4xz/e4oWJUja83tszva5S3QfOPvvsdk+jvcefeufas88+u+4TqKobb7yx9irvypUra8Orx7Kt5QlxVXX/HDp0aDnggAM2+m/9d6E68xjd3u20tQdIR8491RcLRo8eXUop5aabbioRUQ488MBW6+jXv/51+d73vlfuvPPOVtNfsWJF6d69e4mIFjFTfZJfqVRaPZGfP39+7XnuZZdd1mqa1U88/Pu//3ttWPX5QkSUX/ziF63u87Of/axERGlsbGzx4lm9AKlO//LLL6+3ysqsWbNKRJSzzjqr7u3bos3+DsgLL7wQ8+fP3+C/VatWtbpf9SdSjz322Ghqamp1+0477RQHH3xwrF69ul2fdbvnnnsiImLs2LF1v4i1ww47xIEHHhgRaz/Pui7fAela1e9t3HffffH666/Xhle//1G9Jsdhhx0W2223Xdx9992xYsWK2njV739Uf9Y3IuK///u/Y/ny5bHrrrvGfvvtV/fvnnDCCRERcdddd21w/m6++eaIiDj66KOjW7fWD5kbbrghHn300dr1RzqyL0ZEHHPMMa2G7bzzzhERcdBBB7WaZvW21157rTasM5e/K913332xcuXK2Hnnndu8Xkx1fdVbl1uj0aNHR58+fVoNr27H6q+5RfzluDlx4sS60xo/fnx069Yt5s2bFwsXLtwCc9sxjY2N8Y1vfCMiIj796U/Hiy++uMHxFy1aFPPmzYuIlo/ndW3O9u7s6W1p1eNf79692z2Njh5/6k2rrXU3ZsyYqFQqsXDhwrrXfdlaf5Hw+eefj3nz5m303+rVq+vevzOO0Z25nbYmHTn3nHbaaTFhwoS455574oorrohZs2ZFU1NTfO9732u1jvbff/+YNm1ajBkzJiIiXn311XjyySfjiSeeiPnz59d+kvvPf/5zq78/ZMiQ2HvvvVsMq26jiLXXi1lfvW1Y1b9//zjiiCNaDT/yyCMjYu33YZ566qlWt1ctWrQo5s6dGxFtH+u3hfP15uqxuXd44IEH4m1ve9sGx9lzzz3jySefbDGsuvIffPDBNi889ac//SkiIn7/+99v7mzV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'... 5225 more characters
  puppeteer:protocol:RECV ◀ ] +0ms
generated successfully.
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"B66BE1AE2AE3447390813B96F5E50ABF","loaderId":"9E98725F719466B71AEAE2944F7B4FB7","name":"networkAlmostIdle","timestamp":97582.540173},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"B66BE1AE2AE3447390813B96F5E50ABF","loaderId":"9E98725F719466B71AEAE2944F7B4FB7","name":"firstMeaningfulPaint","timestamp":97582.595265},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"B66BE1AE2AE3447390813B96F5E50ABF","loaderId":"9E98725F719466B71AEAE2944F7B4FB7","name":"networkIdle","timestamp":97582.64969},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"B66BE1AE2AE3447390813B96F5E50ABF","loaderId":"9E98725F719466B71AEAE2944F7B4FB7","name":"InteractiveTime","timestamp":97587.596425},"sessionId":"6BAAC22732EC6264F11054DFC986DD05"}'
  puppeteer:protocol:RECV ◀ ] +0ms

@drmrbrewer
Copy link
Author

And the output when pointing to the ttf file that works:

  puppeteer:browsers:launcher Launching /usr/bin/chromium --allow-pre-commit-input --disable-background-networking --disable-background-timer-throttling --disable-backgrounding-occluded-windows --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-background-pages --disable-component-update --disable-default-apps --disable-dev-shm-usage --disable-extensions --disable-field-trial-config --disable-hang-monitor --disable-infobars --disable-ipc-flooding-protection --disable-popup-blocking --disable-prompt-on-repost --disable-renderer-backgrounding --disable-search-engine-choice-screen --disable-sync --enable-automation --export-tagged-pdf --generate-pdf-document-outline --force-color-profile=srgb --metrics-recording-only --no-first-run --password-store=basic --use-mock-keychain --disable-features=Translate,AcceptCHFrame,MediaRouter,OptimizationHints,ProcessPerSiteUpToMainFrameThreshold --enable-features=NetworkServiceInProcess2 --headless --hide-scrollbars --mute-audio about:blank --no-sandbox --disable-setuid-sandbox --remote-debugging-port=0 --user-data-dir=/tmp/puppeteer_dev_chrome_profile-XXXXXXzjdg9T {
  detached: true,
  env: {
	PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: 'true',
	PUPPETEER_EXECUTABLE_PATH: '/usr/bin/chromium',
	PUPPETEER_DISABLE_HEADLESS_WARNING: 'true'
  },
  stdio: [ 'pipe', 'pipe', 'pipe' ]
} +10s
  puppeteer:browsers:launcher Launched 16832 +3ms
[0423/104338.832898:ERROR:bus.cc(407)] Failed to connect to the bus: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory
[0423/104338.834368:ERROR:bus.cc(407)] Failed to connect to the bus: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory
[0423/104338.834587:ERROR:bus.cc(407)] Failed to connect to the bus: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory
[0423/104338.849468:INFO:policy_logger.cc(145)] :components/policy/core/common/config_dir_policy_loader.cc(118) Skipping mandatory platform policies because no policy file was found at: /etc/chromium/policies/managed
[0423/104338.850121:INFO:policy_logger.cc(145)] :components/policy/core/common/config_dir_policy_loader.cc(118) Skipping recommended platform policies because no policy file was found at: /etc/chromium/policies/recommended
[0423/104338.868356:WARNING:bluez_dbus_manager.cc(248)] Floss manager not present, cannot set Floss enable/disable.
[0423/104338.861498:ERROR:angle_platform_impl.cc(44)] Display.cpp:1070 (initialize): ANGLE Display::initialize error 12289: Could not open the default X display.
ERR: Display.cpp:1070 (initialize): ANGLE Display::initialize error 12289: Could not open the default X display.
[0423/104338.895275:ERROR:gl_display.cc(515)] EGL Driver message (Critical) eglInitialize: Could not open the default X display.
[0423/104338.895360:ERROR:gl_display.cc(786)] eglInitialize Default failed with error EGL_NOT_INITIALIZED
[0423/104338.895423:ERROR:gl_display.cc(820)] Initialization of all EGL display types failed.
[0423/104338.895506:ERROR:gl_ozone_egl.cc(26)] GLDisplayEGL::Initialize failed.
[0423/104338.895747:ERROR:angle_platform_impl.cc(44)] Display.cpp:1070 (initialize): ANGLE Display::initialize error 12289: Could not open the default X display.
ERR: Display.cpp:1070 (initialize): ANGLE Display::initialize error 12289: Could not open the default X display.
[0423/104338.895834:ERROR:gl_display.cc(515)] EGL Driver message (Critical) eglInitialize: Could not open the default X display.
[0423/104338.895883:ERROR:gl_display.cc(786)] eglInitialize Default failed with error EGL_NOT_INITIALIZED
[0423/104338.895928:ERROR:gl_display.cc(820)] Initialization of all EGL display types failed.
[0423/104338.895976:ERROR:gl_ozone_egl.cc(26)] GLDisplayEGL::Initialize failed.

DevTools listening on ws://127.0.0.1:35413/devtools/browser/6ee646d9-9d62-4cc2-867a-cd70ac441989
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setDiscoverTargets","params":{"discover":true,"filter":[{}]},"id":1}'
  puppeteer:protocol:SEND ► ] +0ms
[0423/104338.900708:ERROR:viz_main_impl.cc(196)] Exiting GPU process due to errors during initialization
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"08D97D751D9629DCD71B0951E13486C4","type":"page","title":"","url":"about:blank","attached":false,"canAccessOpener":false,"browserContextId":"F0DE86965EB86D91D1096091F1C87A31"}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"169ef1b2-da8c-494b-8184-98dbfcde0d3e","type":"browser","title":"","url":"","attached":true,"canAccessOpener":false}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"4d97dfd3-c5c0-4cc9-9461-a79bdee33979","type":"browser","title":"","url":"","attached":false,"canAccessOpener":false}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"EF531B6A8D032AD3FAE07BF0B6392F15","type":"tab","title":"","url":"about:blank","attached":false,"canAccessOpener":false,"browserContextId":"F0DE86965EB86D91D1096091F1C87A31"}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [ '{"id":1,"result":{}}' ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{"type":"page","exclude":true},{}]},"id":2}'
  puppeteer:protocol:SEND ► ] +0ms
[0423/104338.904255:WARNING:runtime_features.cc(728)] AttributionReportingCrossAppWeb cannot be enabled in this configuration. Use --enable-features=ConversionMeasurement,AttributionReportingCrossAppWeb in addition.
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"EF531B6A8D032AD3FAE07BF0B6392F15","type":"tab","title":"","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"F0DE86965EB86D91D1096091F1C87A31"}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.attachedToTarget","params":{"sessionId":"8C77CDD7CEEEF70FFA42C8D782E975C5","targetInfo":{"targetId":"EF531B6A8D032AD3FAE07BF0B6392F15","type":"tab","title":"","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"F0DE86965EB86D91D1096091F1C87A31"},"waitingForDebugger":false}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{}]},"id":1,"sessionId":"8C77CDD7CEEEF70FFA42C8D782E975C5"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Runtime.runIfWaitingForDebugger","id":2,"sessionId":"8C77CDD7CEEEF70FFA42C8D782E975C5"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [ '{"id":2,"result":{}}' ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"08D97D751D9629DCD71B0951E13486C4","type":"page","title":"","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"F0DE86965EB86D91D1096091F1C87A31"}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.attachedToTarget","params":{"sessionId":"BBA2EFF08C1A40324C3E986E97D2CA49","targetInfo":{"targetId":"08D97D751D9629DCD71B0951E13486C4","type":"page","title":"","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"F0DE86965EB86D91D1096091F1C87A31"},"waitingForDebugger":false},"sessionId":"8C77CDD7CEEEF70FFA42C8D782E975C5"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{}]},"id":1,"sessionId":"BBA2EFF08C1A40324C3E986E97D2CA49"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Runtime.runIfWaitingForDebugger","id":2,"sessionId":"BBA2EFF08C1A40324C3E986E97D2CA49"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":1,"result":{},"sessionId":"8C77CDD7CEEEF70FFA42C8D782E975C5"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":2,"result":{},"sessionId":"8C77CDD7CEEEF70FFA42C8D782E975C5"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.createTarget","params":{"url":"about:blank"},"id":3}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"5B87105549921D4F624BB7E1368DC228","type":"page","title":"","url":"","attached":false,"canAccessOpener":false,"browserContextId":"F0DE86965EB86D91D1096091F1C87A31"}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"D4CDD6C0960D5E980B651172938D8E8B","type":"tab","title":"","url":"","attached":false,"canAccessOpener":false,"browserContextId":"F0DE86965EB86D91D1096091F1C87A31"}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"D4CDD6C0960D5E980B651172938D8E8B","type":"tab","title":"","url":"","attached":true,"canAccessOpener":false,"browserContextId":"F0DE86965EB86D91D1096091F1C87A31"}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.attachedToTarget","params":{"sessionId":"F40C1013F60832FC6374EED1D9ACFD4E","targetInfo":{"targetId":"D4CDD6C0960D5E980B651172938D8E8B","type":"tab","title":"","url":"","attached":true,"canAccessOpener":false,"browserContextId":"F0DE86965EB86D91D1096091F1C87A31"},"waitingForDebugger":true}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{}]},"id":1,"sessionId":"F40C1013F60832FC6374EED1D9ACFD4E"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Runtime.runIfWaitingForDebugger","id":2,"sessionId":"F40C1013F60832FC6374EED1D9ACFD4E"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [ '{"id":3,"result":{"targetId":"5B87105549921D4F624BB7E1368DC228"}}' ] +0ms
[0423/104338.925528:WARNING:runtime_features.cc(728)] AttributionReportingCrossAppWeb cannot be enabled in this configuration. Use --enable-features=ConversionMeasurement,AttributionReportingCrossAppWeb in addition.
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"5B87105549921D4F624BB7E1368DC228","type":"page","title":"","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"F0DE86965EB86D91D1096091F1C87A31"}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.attachedToTarget","params":{"sessionId":"B87BDC7CF3610E5845317C6541764E8E","targetInfo":{"targetId":"5B87105549921D4F624BB7E1368DC228","type":"page","title":"","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"F0DE86965EB86D91D1096091F1C87A31"},"waitingForDebugger":false},"sessionId":"F40C1013F60832FC6374EED1D9ACFD4E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Target.setAutoAttach","params":{"waitForDebuggerOnStart":true,"flatten":true,"autoAttach":true,"filter":[{}]},"id":1,"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Runtime.runIfWaitingForDebugger","id":2,"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":1,"result":{},"sessionId":"F40C1013F60832FC6374EED1D9ACFD4E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":2,"result":{},"sessionId":"F40C1013F60832FC6374EED1D9ACFD4E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Network.enable","id":3,"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Network.setCacheDisabled","params":{"cacheDisabled":false},"id":4,"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Fetch.disable","id":5,"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Page.enable","id":6,"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Page.getFrameTree","id":7,"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Page.setLifecycleEventsEnabled","params":{"enabled":true},"id":8,"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Runtime.enable","id":9,"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Performance.enable","id":10,"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Log.enable","id":11,"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"08D97D751D9629DCD71B0951E13486C4","type":"page","title":"about:blank","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"F0DE86965EB86D91D1096091F1C87A31"}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":1,"result":{},"sessionId":"BBA2EFF08C1A40324C3E986E97D2CA49"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":5,"result":{},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":2,"result":{},"sessionId":"BBA2EFF08C1A40324C3E986E97D2CA49"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"5B87105549921D4F624BB7E1368DC228","type":"page","title":"about:blank","url":"about:blank","attached":true,"canAccessOpener":false,"browserContextId":"F0DE86965EB86D91D1096091F1C87A31"}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.frameStoppedLoading","params":{"frameId":"5B87105549921D4F624BB7E1368DC228"},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":1,"result":{},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":2,"result":{},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":3,"result":{},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":4,"result":{},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":6,"result":{},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":7,"result":{"frameTree":{"frame":{"id":"5B87105549921D4F624BB7E1368DC228","loaderId":"511D809AA6797C4F7B39104C525210A9","url":"about:blank","domainAndRegistry":"","securityOrigin":"://","mimeType":"text/html","adFrameStatus":{"adFrameType":"none"},"secureContextType":"InsecureScheme","crossOriginIsolatedContextType":"NotIsolated","gatedAPIFeatures":[]}}},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"5B87105549921D4F624BB7E1368DC228","loaderId":"511D809AA6797C4F7B39104C525210A9","name":"commit","timestamp":97777.460911},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"5B87105549921D4F624BB7E1368DC228","loaderId":"511D809AA6797C4F7B39104C525210A9","name":"DOMContentLoaded","timestamp":97777.461097},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"5B87105549921D4F624BB7E1368DC228","loaderId":"511D809AA6797C4F7B39104C525210A9","name":"load","timestamp":97777.46181},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"5B87105549921D4F624BB7E1368DC228","loaderId":"511D809AA6797C4F7B39104C525210A9","name":"networkAlmostIdle","timestamp":97777.461488},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"5B87105549921D4F624BB7E1368DC228","loaderId":"511D809AA6797C4F7B39104C525210A9","name":"networkIdle","timestamp":97777.461488},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":8,"result":{},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Runtime.executionContextCreated","params":{"context":{"id":1,"origin":"://","name":"","uniqueId":"-7067496928013099718.5173776297283034892","auxData":{"isDefault":true,"type":"default","frameId":"5B87105549921D4F624BB7E1368DC228"}}},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":9,"result":{},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":10,"result":{},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Page.addScriptToEvaluateOnNewDocument","params":{"source":"//# sourceURL=pptr:internal","worldName":"__puppeteer_utility_world__"},"id":12,"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":11,"result":{},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":12,"result":{"identifier":"1"},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Page.createIsolatedWorld","params":{"frameId":"5B87105549921D4F624BB7E1368DC228","worldName":"__puppeteer_utility_world__","grantUniveralAccess":true},"id":13,"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Runtime.executionContextCreated","params":{"context":{"id":2,"origin":"","name":"__puppeteer_utility_world__","uniqueId":"4149412497371527595.8215501283136567232","auxData":{"isDefault":false,"type":"isolated","frameId":"5B87105549921D4F624BB7E1368DC228"}}},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":13,"result":{"executionContextId":2},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Emulation.setDeviceMetricsOverride","params":{"mobile":false,"width":800,"height":600,"deviceScaleFactor":1,"screenOrientation":{"angle":0,"type":"portraitPrimary"}},"id":14,"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Emulation.setTouchEmulationEnabled","params":{"enabled":false},"id":15,"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":14,"result":{},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":15,"result":{},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Page.navigate","params":{"url":"file:///root/workspace/meteogram/font.html","frameId":"5B87105549921D4F624BB7E1368DC228"},"id":16,"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.frameStartedLoading","params":{"frameId":"5B87105549921D4F624BB7E1368DC228"},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.requestWillBeSent","params":{"requestId":"4AFE5BF2D08A8E59C18AD3EFF7CDF5E9","loaderId":"4AFE5BF2D08A8E59C18AD3EFF7CDF5E9","documentURL":"file:///root/workspace/meteogram/font.html","request":{"url":"file:///root/workspace/meteogram/font.html","method":"GET","headers":{"sec-ch-ua":"\\"HeadlessChrome\\";v=\\"123\\", \\"Not:A-Brand\\";v=\\"8\\", \\"Chromium\\";v=\\"123\\"","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\\"Linux\\""},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"strict-origin-when-cross-origin","isSameSite":true},"timestamp":97777.494967,"wallTime":1713865418.981915,"initiator":{"type":"other"},"redirectHasExtraInfo":false,"type":"Document","frameId":"5B87105549921D4F624BB7E1368DC228","hasUserGesture":false},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.responseReceived","params":{"requestId":"4AFE5BF2D08A8E59C18AD3EFF7CDF5E9","loaderId":"4AFE5BF2D08A8E59C18AD3EFF7CDF5E9","timestamp":97777.501044,"type":"Document","response":{"url":"file:///root/workspace/meteogram/font.html","status":200,"statusText":"OK","headers":{"Content-Type":"text/html","Last-Modified":"Tue, 23 Apr 2024 09:43:38 GMT"},"mimeType":"text/html","charset":"","connectionReused":false,"connectionId":0,"remoteIPAddress":"","remotePort":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","alternateProtocolUsage":"alternativeJobWonWithoutRace","securityState":"secure"},"hasExtraInfo":false,"frameId":"5B87105549921D4F624BB7E1368DC228"},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":16,"result":{"frameId":"5B87105549921D4F624BB7E1368DC228","loaderId":"4AFE5BF2D08A8E59C18AD3EFF7CDF5E9"},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"5B87105549921D4F624BB7E1368DC228","loaderId":"4AFE5BF2D08A8E59C18AD3EFF7CDF5E9","name":"init","timestamp":97777.506897},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Target.targetInfoChanged","params":{"targetInfo":{"targetId":"5B87105549921D4F624BB7E1368DC228","type":"page","title":"font.html","url":"file:///root/workspace/meteogram/font.html","attached":true,"canAccessOpener":false,"browserContextId":"F0DE86965EB86D91D1096091F1C87A31"}}}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Runtime.executionContextsCleared","params":{},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.frameNavigated","params":{"frame":{"id":"5B87105549921D4F624BB7E1368DC228","loaderId":"4AFE5BF2D08A8E59C18AD3EFF7CDF5E9","url":"file:///root/workspace/meteogram/font.html","domainAndRegistry":"","securityOrigin":"file://","mimeType":"text/html","adFrameStatus":{"adFrameType":"none"},"secureContextType":"Secure","crossOriginIsolatedContextType":"NotIsolated","gatedAPIFeatures":[]},"type":"Navigation"},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Runtime.executionContextCreated","params":{"context":{"id":3,"origin":"file://","name":"","uniqueId":"-3089974670520466856.1615268681676738775","auxData":{"isDefault":true,"type":"default","frameId":"5B87105549921D4F624BB7E1368DC228"}}},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Runtime.executionContextCreated","params":{"context":{"id":4,"origin":"://","name":"__puppeteer_utility_world__","uniqueId":"-422730132023286381.3216705276995819807","auxData":{"isDefault":false,"type":"isolated","frameId":"5B87105549921D4F624BB7E1368DC228"}}},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"4AFE5BF2D08A8E59C18AD3EFF7CDF5E9","timestamp":97777.510985,"dataLength":957,"encodedDataLength":0},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.loadingFinished","params":{"requestId":"4AFE5BF2D08A8E59C18AD3EFF7CDF5E9","timestamp":97777.499767,"encodedDataLength":957},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.domContentEventFired","params":{"timestamp":97777.512938},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"5B87105549921D4F624BB7E1368DC228","loaderId":"4AFE5BF2D08A8E59C18AD3EFF7CDF5E9","name":"DOMContentLoaded","timestamp":97777.512938},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.requestWillBeSent","params":{"requestId":"16902.2","loaderId":"4AFE5BF2D08A8E59C18AD3EFF7CDF5E9","documentURL":"file:///root/workspace/meteogram/font.html","request":{"url":"file:///root/workspace/meteogram/NotoColorEmoji.ttf","method":"GET","headers":{"Referer":"","User-Agent":"Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/123.0.6312.105 Safari/537.36"},"mixedContentType":"none","initialPriority":"VeryHigh","referrerPolicy":"strict-origin-when-cross-origin","isSameSite":true},"timestamp":97777.513704,"wallTime":1713865419.000685,"initiator":{"type":"parser","url":"file:///root/workspace/meteogram/font.html","lineNumber":27,"columnNumber":9},"redirectHasExtraInfo":false,"type":"Font","frameId":"5B87105549921D4F624BB7E1368DC228","hasUserGesture":false},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.responseReceived","params":{"requestId":"16902.2","loaderId":"4AFE5BF2D08A8E59C18AD3EFF7CDF5E9","timestamp":97777.516809,"type":"Font","response":{"url":"file:///root/workspace/meteogram/NotoColorEmoji.ttf","status":200,"statusText":"OK","headers":{"Last-Modified":"Thu, 30 Nov 2023 16:37:35 GMT","Content-Type":"font/ttf"},"mimeType":"font/ttf","charset":"","connectionReused":false,"connectionId":0,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":-1,"protocol":"file","alternateProtocolUsage":"alternativeJobWonWithoutRace","securityState":"secure"},"hasExtraInfo":false,"frameId":"5B87105549921D4F624BB7E1368DC228"},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"16902.2","timestamp":97777.516839,"dataLength":1024,"encodedDataLength":0},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"16902.2","timestamp":97777.547865,"dataLength":1048576,"encodedDataLength":0},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"16902.2","timestamp":97777.549136,"dataLength":1047552,"encodedDataLength":0},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"16902.2","timestamp":97777.550095,"dataLength":1024,"encodedDataLength":0},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"16902.2","timestamp":97777.550322,"dataLength":1048576,"encodedDataLength":0},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"16902.2","timestamp":97777.551632,"dataLength":1047552,"encodedDataLength":0},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"16902.2","timestamp":97777.552274,"dataLength":1024,"encodedDataLength":0},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"16902.2","timestamp":97777.552614,"dataLength":1048576,"encodedDataLength":0},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"16902.2","timestamp":97777.553637,"dataLength":1047552,"encodedDataLength":0},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"16902.2","timestamp":97777.554509,"dataLength":1048576,"encodedDataLength":0},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"5B87105549921D4F624BB7E1368DC228","loaderId":"4AFE5BF2D08A8E59C18AD3EFF7CDF5E9","name":"firstPaint","timestamp":97777.547006},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"5B87105549921D4F624BB7E1368DC228","loaderId":"4AFE5BF2D08A8E59C18AD3EFF7CDF5E9","name":"firstContentfulPaint","timestamp":97777.547006},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"5B87105549921D4F624BB7E1368DC228","loaderId":"4AFE5BF2D08A8E59C18AD3EFF7CDF5E9","name":"firstMeaningfulPaintCandidate","timestamp":97777.547006},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"16902.2","timestamp":97777.556963,"dataLength":1048576,"encodedDataLength":0},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"16902.2","timestamp":97777.558511,"dataLength":1048576,"encodedDataLength":0},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"16902.2","timestamp":97777.559526,"dataLength":1048576,"encodedDataLength":0},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.dataReceived","params":{"requestId":"16902.2","timestamp":97777.560407,"dataLength":495096,"encodedDataLength":0},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Network.loadingFinished","params":{"requestId":"16902.2","timestamp":97777.561577,"encodedDataLength":10980856},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.loadEventFired","params":{"timestamp":97777.614651},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"5B87105549921D4F624BB7E1368DC228","loaderId":"4AFE5BF2D08A8E59C18AD3EFF7CDF5E9","name":"load","timestamp":97777.614651},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Runtime.callFunctionOn","params":{"functionDeclaration":"() => document.fonts.ready\\n//# sourceURL=pptr:evaluate;file%3A%2F%2F%2Froot%2Fworkspace%2Fmeteogram%2Fnodeserver.js%3A1814%3A28\\n","executionContextId":3,"arguments":[],"returnByValue":true,"awaitPromise":true,"userGesture":true},"id":17,"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.frameStoppedLoading","params":{"frameId":"5B87105549921D4F624BB7E1368DC228"},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":17,"result":{"result":{"type":"object","value":{}}},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   `{"method":"Runtime.callFunctionOn","params":{"functionDeclaration":"() => {\\n                    const span = document.createElement('span');\\n                    span.textContent = '😊';\\n                    span.style.fontFamily = 'Noto Color Emoji';\\n                    document.body.appendChild(span);\\n                    const { fontFamily } = window.getComputedStyle(span);\\n                    span.remove();\\n                    return fontFamily;\\n                }\\n//# sourceURL=pptr:evaluate;file%3A%2F%2F%2Froot%2Fworkspace%2Fmeteogram%2Fnodeserver.js%3A1816%3A40\\n","executionContextId":3,"arguments":[],"returnByValue":true,"awaitPromise":true,"userGesture":true},"id":18,"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}`
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":18,"result":{"result":{"type":"string","value":"\\"Noto Color Emoji\\""}},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
"Noto Color Emoji"
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Page.bringToFront","id":19,"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":19,"result":{},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:SEND ► [
  puppeteer:protocol:SEND ►   '{"method":"Page.captureScreenshot","params":{"format":"png","captureBeyondViewport":false},"id":20,"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:SEND ► ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"id":20,"result":{"data":"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KafE/PnzN2heX3zxxfj0pz8dI0aMiC5dukSfPn1i6tSpHb7zuqHb4tChQ6Moinj++efjzjvvjIkTJ0avXr2ib9++cdhhh8Wjjz4aERHPPvtsHHfccTFw4MCora2NMWPGdPh7q825/FvKzJkzo6amJhoaGmLx4sXlmH77u7rLly+P8847L/bcc8/o2bNn1NbWxpAhQ+K4445br9+l5bA+yxGx+sXCokWLYvbs2TFkyJCora2NAQMGxMyZM+OFF15od9rz5s2Lj33sY+Xxt9tuu5g4cWJcccUV7T5vOtv73//+mDZtWrzyyivxhS98YYPvn1KKq666KiZPnhzbbbdd1NTURP/+/eOwww6LX/3qV63GXZ/HfUOm15kWLFgQ//Vf/xUREeedd17svffeHY5bU1MTF198cRx55JFxzjnntNkONuZY2JF77rknjj766Nhxxx2jpqYmevfuHfvtt19861vfipUrV7YZf8cdd4yiKOJvf/tbXHDBBTF48OCora3t8Cu024otsY/e0PW0rfwGZEOOPRdddFEURRG77bZbNDQ0tJnWd77znSiKIkaNGtUqtJcsWRLnnHNOvPvd744ePXpEdXV19O/fP4444oh2vy1x2WWXRVEUcdJJJ5U/RRo6dGh06dIldt555zjvvPPKz6NLLrkkxo8fH127do2+ffvGRz7ykTZfFf/e975X/h3bypUr48wzz4zhw4dHly5don///jFjxox4+umnN+hxu+666+Lwww+Pfv36RU1NTQwcODCOPPLImDt37gZNZ5uQ1sPKlStTrD7HUrr//vvXOf7OO++cIiJddtllrYY//vjjaYcddkgRkXbeeef08Y9/PB199NFp4MCBKSLS6NGj04IFC1rd5+Mf/3iKiPS1r32tPOyyyy5LEZEOPvjgVuPed999qXfv3iki0siRI9Nxxx2Xjj322DRixIgUEalfv37pkUceaTO/pfv87W9/W5+HY8tatTw1Pvq9tGLOyLTy/41O9feOSQ1/HJsaH31Xuu4/h6WjD+ydDh7bI03dq2c6/7SBacEfx6bmZ8en5mfHp9fmjUvfPWvHNG2fXungsT3SUQf0Tj8/f0hqfGRcavjD2FR/75i04s7Raen/jUiNz1yTUktTZy9tWrBgQaqoqEgRkR588MFWt61atSr17Nkz9erVKzU1NaX3vve9KSLS448/3mq8lStXprq6uhQR6Y477igPX758eZowYUKKiNSnT5/04Q9/OB1//PFpzJgxKSJSjx490r333ttqWh1tW/PmzUt9+/ZNEZF222239MEPfjDtvffeKSJSURTpiiuuaDX+xmyLu+66a4qIdMkll6S6uro0efLkNH369NS/f/8UEWnAgAHpmWeeSYMGDUpjxoxJM2bMSGPHji0/N+fMmdNqehuz/J3hF7/4RTrppJNSRKTa2tp01llnpbPOOiv96U9/SimltHDhwjRu3LjyYzB9+vR04oknpv322y9FRKqsrExXXnllJy/Fupfj1FNPTRGRzj777DRq1Kg0aNCgdPTRR6dp06alrl27pohII0aMSPX19a2m+8tf/jLV1NSkiEj77rtvOvnkk9MRRxxRvs9HPvKR1Nzc3BmL3Ma+++6bIiL9/ve/T3/9619T165dU0VFRbvHjYsvvjhFRPr4xz/eanhLS0s67rjjUkSkLl26pEMPPTTNmjUrHXrooeXH4ZRTTimPv67HfUOn15l+8pOfpIhIvXr1SitWrNjo6WzM/qe9Y21KKf3oRz8q76MnTJiQTjrppDR9+vS0/fbbp4hIe++9d1q6dGmr+5ReA1x44YWpKIq03377pUmTJqWFCxdu9DJtDqXt85vf/OZG3X9z76M3Zj2VtuXzzjuvPKz0XDr00EM3ark2tw099rS0tKRJkyaliEhf/vKXW03rhRdeSD169EhVVVXpvvvuKw9ftmxZeXp9+vRJ06dPTzNnziyv44hIP/3pT1tN6+c//3mKiPJ+d/DgwWnGjBnpPe95T/k+F1xwQfrqV7+a6urq0rRp09IRRxyRunXrVt7W3+7HP/5xioj0wQ9+ME2ePDn17NkzTZo0qdXzo0+fPumpp55qdb+hQ4emiEhz585tNfy0005LEZGqq6vTlClT0sknn5wOPPDA8uuM733ve5uyWrY62QKkubm5/CLiE5/4RGpqeuvF75IlS9LUqVNTRKRjjz221bTWN0BWrVqVdtpppxQR6YwzzkgtLS2t/u3SdPbcc88281vaeawZP52ifmGqv+9zaflNu6WVd41J9b8fmxrmjU2rHn9XmjV1uzR1717pczP7pxMP3y4dtkfP9OjNI1PTX3dPTX/dPf359lHpA/v0Sh99f5901sf6p3/ct1eaMbF3anzsXanhobGp/vdj08q5Y9Ky63dKDQ9/O7U0LuvspU0pvXVQ+PrXv95q+Ny5c1NEpKlTp6aUUjrnnHNSRKTvfOc7rca79dZbU0Sknj17psbGxvLw0gu+vffeO7322mvl4S0tLekrX/lKioi00047pYaGhvJt7W1bTU1NabfddksRkc4999xW//b//u//pqIoUm1tbTlgN3ZbHD16dIqItP3226cbbrihPPzVV18tx8+gQYPS7Nmzyy84W1pa0pFHHpkiIn3oQx9qNb2NWf7O8sgjj5RfeK3pox/9aIqIdMABB6Rly1pvs5dcckmKiNStW7f00ksv5ZrdDq1tOUrro3fv3mnGjBlp+fLl5dseffTR8ovh6667rjx8/vz5qa6uLhVF0eZg+vTTT5f3tT/+8Y+33EJtgNJz+Z577kkppfTv//7vKSLSXnvt1SaSOgqQ0jrt379/mwP3vHnzyi8Grr/++vLwtT3uGzO9zlIKqcMPP3yjp7Gx+5/2jrVPPPFEqq6uTkVRpP/7v/9rNf6iRYvKx/TPfvazrW4bNWpUiog0dOjQdOONN270smxumxogm3MfvbHraVsIkI059jz77LOpZ8+eqba2Nj355JPl4R/60IdSRKQvfelLrf6NH/zgByki0rBhw1r9GymldNFFF5Wf82/f71x99dXlffDkyZNbhfOXvvSlcvQNHjw4Pfzww+XbHnrooVQURYqIVsNLrxfq6urSnnvumV5//fXybYsXLy5vb9OnT281f+0FyP/8z/+kiEh9+/ZNDz30UKvxb7755lRbW5uqqqravAG7LdvgABk4cGAaOnToWv+qqqraBMgNN9xQfnKu+Q5fSim99NJLqaqqKlVWVrYKgfUNkGuvvbb8DsTbX4SWLFy4sDxfDzzwQKvbBg8enCIiLV68eH0eji2qZflLqX7uSWn5Lbullb8bm+p/Nz7V3713arx/n3T1f+yUrv72sLTksXHpwet2TT/5yj+klx8YUw6QBX8Ymy499x/SfdeMSEsfH5f+73vD08/OHZ4afr93qv/d3mnlXePTyrlj0/KbRqQV956Zmle+tu4ZyqAUFu973/taDf+3f/u3FBHpu9/9bkrprSA54ogjWo135plnttm5v/7666m2tjZFRLufeqWUyu9Mvf3A2t62dcstt5R3mO290/yP//iPadSoUemaa65JKW38tlh6N2fGjBlt7nPCCSeUd45rTrP03Bo5cuQmL39n6egF5IIFC1J1dXWKiDRv3rx27/vud7+7/M5VZ1ufANl+++3TkiVL2tw+ZcqUNsvxuc99LkVEOvLII9v99371q1+liEi777775luITbBmgDQ0NJTj/fvf/36rcTsKkPHjx7d63q/pM5/5TKs3JlJa++O+MdPrLKVt4PTTT9/oaWzs/qe9Y+3pp5/e7guokuuuu678Lu+qVavKw0v7sq3lBXFJafscNGhQ2n333df5t+anUJtzH72x62lrD5BNOfaU3iyYOHFiSiml66+/PkVEGj9+fJvH6OGHH04/+9nP0m233dZm+o2NjamysjJFRKuYKb3IL4qizQv5+fPnl1/nXnjhhW2mWfrGw3//93+Xh5VeL0REuuuuu9rc5ze/+U2KiFRTU9PqzbP2AqQ0/Ysuuqi9hyzNnj07RUQ67bTT2r19W7TBvwF56aWXYv78+Wv9a2pqanO/0ilSDznkkKitrW1z+w477BB77rlnNDc3b9R33e68886IiJg8eXK7P8TabrvtYvz48RGx+vusb7dV/QYkUkRLYxRRES0raqP5tR7R9HKfWPVyn/jAfkNi+vv7Rde6yhi/e9c44ePbRb/tq8vfee7btyo+PnO72GvPblFXVxlTD9o+Pnzg0Gh6pW80vdInWl7vGS0rayOlIqK5Poqt4ExYEW/9buPuu++OZcuWlYeXfv9RuibHvvvuG927d4877rgjGhsby+OVfv9ROq1vRMTvfve7aGhoiGHDhsXYsWPb/XePOOKIiIi4/fbb1zp/N9xwQ0REHHTQQVFR0fYpc+2118bjjz9evv7IpmyLEREHH3xwm2E77rhjRETssccebaZZum3JkiXlYZtz+TvT3XffHatWrYodd9yxw+vFlB6v9h7LrdHEiROjR48ebYaX1mPpbG4Rb+03p02b1u60pkyZEhUVFTFv3rxYtGjRFpjbTVNTUxM/+MEPIiLiC1/4QrzyyitrHX/x4sUxb968iGj9fH67DVnfm3t6W1pp/9etW7eNnsam7n/am1ZHj92kSZOiKIpYtGhRu9d92VrPSPjiiy/GvHnz1vnX3Nzc7v03xz56c66nrcmmHHtOPPHEmDp1atx5553x/e9/P2bPnh21tbXxs5/9rM1jNG7cuJg5c2ZMmjQpIiJef/31eOaZZ+Lpp5+O+fPnl0/J/cYbbS87MHDgwBg1alSrYaV1FLH6ejFram8dlvTp0yf233//NsMPOOCAiFj9e5hnn322ze0lixcvjgcffDAiOt7XbwvH6w1VtaF3uP/++2OvvfZa6zi77LJLPPPMM62GlR78Bx54oMMLT7388ssREfHnP/95Q2erPP3hw4d3OM6wYcPigQceiOeee67V8K0rQCKiqIy0qjJSY12kpT2ipaFu9Q/JmyojqlqisqY5ipqWt66A3o60qiKaF3eJ5tfqonlRXaSmIoou1VHRPSKK5RFFdaQo1jaJbEqn4124cGHccccdMXXq1Fi8eHHcf//9MWjQoBg9enRErD77x4EHHhg33nhj3HPPPTFx4sRYuHBh+ew3b/8BXml7WLZsWYfbW+mAua7trTSt9T271qZsix39O6Uznrx9J7nmbS0tbwXl5lz+zrS+j2VEtPtYbo06WpYuXbpERLR60VNa/iuvvLLDA091dXU0NDTEn//859hnn30278xuBgcddFAce+yx8fOf/zw++9nPxpVXXtnhuPPnzy//CLS0XtdUGv7aa6/FihUromvXrtmmt6X17NkzItp/kbO+NnX/syHT6t69e2y33XaxcOHCeO6559q84Hz72bu2Jt/85jfjX/7lXzb6/ptzH7051tPWZFOPPRdffHGMGTMmZs+eHRER//Ef/9FhyNx0003xjW98I+655552f7weEe2epGNt6y9i/ddhyS677NLuv11bWxs9evSIpUuXxiuvvBJjxoxpd7znn3++PN0vfvGLrealpBRSW/PxekNtcIBsrNI7O48++mj5TBEd2Zid74oVKyIioq6ursNxSgf4Nc/aUVNTE5WVle2+u51dRVVEde+IpopIq2oiNdZGWl4XUdESLbVNUdlYGdG8HtnQXEQ0VEbLyppIy7tEaq6IKFKk2vpIkaKiulcUlVvHKftKp+O96qqr4pZbbompU6fGb3/722hubm5zRfLJkyfHjTfeGLfccktMnDgxbrvttkgpxe67795qp1Ha3hYuXBhXXHHFWv/9dW1vpbNurO8pDjdlW1zXv7O+87A5l78zbepjuTVq7+DSkdJ6XJ+LzW3N6/Fb3/pW3HDDDXHVVVfFSSedFAcddFC745XWd3V1dfn06Gsqre+I1et8bcGwuae3pQ0dOjQiYp3HyLXZnM+ZTZ1We5/0vRNsjn30O3HfFrHpx54ddtghJk+eHFdffXVUVFTE0Ucf3e59L7nkkjj55JOjKIo49NBDY8qUKdG/f//y4z9r1qx2P/2IWPc62tDTGXfv3r3D23r27BlLly5d6+nI3/7Nj7W9QROxeltoamrqcH+2Lcn2iru0gs4888xIq3970uHfueeeu8HTL31kXXpSt6d025obS//+/WPgwIEb/G9uEZVdouj2D5FaWqKobI6oaoqipjGKmqZoaGmM+a8sj+aWtkW/puaU4rkFK6KhpTGKmlWrp1HVFEVFc6SmVVHRfVhEZcc7vtxKH9WXvnJSesH1/ve/v9V4pSApjdfR6XdL63ifffZZ5/Z21113rXXeStvW66+/vl7Lsinb4uayOZe/M20Nj2VnKi3TjTfeuM71uGasb0122GGH8n79k5/8ZDQ2NkZRtH0jpbS+V61a1e5XeSNabwvrWuebe3pb2nve856IWP2Vm/Xd37z00kut3uXdnM+Zv/fn35b0Tn1sN/XYc8stt8TVV18dffr0iZaWljj55JPbfIrR2NhYvhDjhRdeGDfddFOcdtppccwxx8RRRx0VRx111JZf0Lfp6NOXiLciq2/fvh2O8/b1u3z58nU+bu+E+IjIGCClj6i21LUHdtppp4iI+Mtf/tLhOKXb1vzI89Zbb43nn986rotRVHWNih4joqKoiKJmRVR0XxYVfZZERZ9lsaRYHFfMeSGuvGZhPPr4yqivb/tRYENDSzz2+Mr4+TUL4/L/74VY1LI4Knovi4reS6LotiyielkUtb2i6D54q/kEJOKt77I//vjjsXDhwvKOac0XVePGjYsBAwbEgw8+GCtWrCh/j3bNANmc21tp2+roO5yNjY2xbNmy8k5oU7bFzWVLP99y2Roey870TlmPEavDY4899ognn3wyLrjggnZ/Czhs2LDyJ9EdrfPS8NI1FtZmc09vS/vABz4QPXr0iPr6+rjgggvWOf6KFSvigAMOiPHjx8ef/vSniNi8z5l1TWvx4sXlUHonPv+2pHfqvm1T9lmLFy+Ok08+OSoqKuLmm2+Ogw8+OG677bb4/ve/32q8P/3pT7Fo0aKoqKiIU045pc10nn/++Q4//dgSOlrWhoaGWLp0aUREDBgwoMP7Dx8+vPzJ+Lb0dbtNlS1ASj8Uuummmzr8qsA111wTTzzxxEZN/33ve19ErI6J9mr0xRdfjIcffjgiVv8IdKtVVEZFj2ER3YZHVC2PoufiqOz7RlT2ez36DFkZ43evjjvvWhrf/s8F8ZV/fzm+/6MF8d+/XBT//ctF8YP/WhjnnPtyfOu7C+K3dy6NcWOrY7uhK6Oy3xtRud0bUdH7jUjp9ajoPSYqewzr7CVtZbvttou99947Ukpx4403xqOPPhpjx46NHXbYoc24kyZNilWrVsUNN9wQTz/9dPTq1av8zmHJhAkToq6uLl555ZW444472v03586dG3fffXeHPzQsKX1d5Oabb271UWnJjBkzokePHnHRRRdFxNaxLW7O5c9pzXe6JkyYEDU1NfHSSy/FH/7wh3bH//Wvfx0Rbz3uW4P2vne8MUr7zV/84hft3t7Q0BBXXnll+fdzW7OKior40'... 7981 more characters
  puppeteer:protocol:RECV ◀ ] +0ms
generated successfully.
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"5B87105549921D4F624BB7E1368DC228","loaderId":"4AFE5BF2D08A8E59C18AD3EFF7CDF5E9","name":"networkAlmostIdle","timestamp":97777.514107},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"5B87105549921D4F624BB7E1368DC228","loaderId":"4AFE5BF2D08A8E59C18AD3EFF7CDF5E9","name":"firstMeaningfulPaint","timestamp":97777.547006},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"5B87105549921D4F624BB7E1368DC228","loaderId":"4AFE5BF2D08A8E59C18AD3EFF7CDF5E9","name":"networkIdle","timestamp":97777.614622},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms
  puppeteer:protocol:RECV ◀ [
  puppeteer:protocol:RECV ◀   '{"method":"Page.lifecycleEvent","params":{"frameId":"5B87105549921D4F624BB7E1368DC228","loaderId":"4AFE5BF2D08A8E59C18AD3EFF7CDF5E9","name":"InteractiveTime","timestamp":97782.616683},"sessionId":"B87BDC7CF3610E5845317C6541764E8E"}'
  puppeteer:protocol:RECV ◀ ] +0ms

@OrKoN
Copy link
Collaborator

OrKoN commented Apr 23, 2024

There is nothing in the logs that would indicate an obvious issue to me. Just the file sizes are different 10980856 bytes for the working one, and 24015992 bytes for the not working one. Which chromium version is it?

@drmrbrewer
Copy link
Author

Which chromium version is it?

# /usr/bin/chromium --version
Chromium 123.0.6312.105 built on Debian 12.5, running on Debian bookworm/sid

@drmrbrewer
Copy link
Author

... and it would make it a lot easier if arm64 was supported by puppeteer, wouldn't it? :-)

@OrKoN
Copy link
Collaborator

OrKoN commented Apr 23, 2024

@drmrbrewer it is not up to Puppeteer. Chromium project officially does not support Linux arm64. That browser configuration is not available for end users in a supported way. We do support Mac arm64 ;)

@OrKoN
Copy link
Collaborator

OrKoN commented Apr 23, 2024

Also, windows arm64 has only recently started to be supported (not by Puppeteer yet). In this case though I doubt that the architecture is the issue, but I am not sure what is needed to reproduce the issue on my end.

@OrKoN
Copy link
Collaborator

OrKoN commented Apr 23, 2024

I tried with npx @puppeteer/browsers install chromium@1262506 on linux amd64 I am not able to reproduce as well.

@drmrbrewer
Copy link
Author

OK well this is really strange. I'll try to figure out what exactly is causing this; otherwise I'll just avoid installing/using my own color emoji font and used what is provided (and which seems to work).

@drmrbrewer
Copy link
Author

@OrKoN not that it will help much, but I found the place where the "working" emoji font was coming from: apt-get install fonts-noto-color-emoji. But now, even if I remove the "non-working" font file and refresh font cache, so that it's working with the test snippet, it's still not in my actual code... why are fonts so complicated? 😢 😱

@drmrbrewer
Copy link
Author

@OrKoN I've now also got it working with my actual code... I am using Web Font Loader in my code and it turns out that I was also specifying the Noto Color Emoji font as part of that config... and as a result even if I'd culled all instances of the Noto Color Emoji font in my puppeteer environment, it was still being referenced remotely. Once I culled that reference too, it's fine.

So it really does seem to be some issue/incompatibility between puppeteer and the Noto Color Emoji font direct from Google, even though it's fine with the version of this font installed via apt-get install fonts-noto-color-emoji. But only in some setups (like mine) and not others (like yours)... perhaps arm64-related, perhaps not.

Difficult to know how to solve this (rather than just work around it) without you being able to reproduce it, so happy if you want to close this issue... perhaps one day someone else will experience the same thing and stumble upon this issue and add their tuppence worth.

@drmrbrewer
Copy link
Author

@OrKoN 🙄 now I see that it's the same issue for the Noto Emoji font (i.e. non-color version)... only this time I can't use the same workaround because apt-get install fonts-noto-color-emoji only installs a working color version of the font, not the non-color version, and there doesn't seem to be a package available to install a working non-color version. These things were sent to try us 😢

@OrKoN
Copy link
Collaborator

OrKoN commented Apr 24, 2024

@drmrbrewer would it be possible for you to test your setup on amd64 with Chrome for Testing (or regular Chrome)?

@drmrbrewer
Copy link
Author

drmrbrewer commented Apr 24, 2024

I'll see if I can do that. I've had to jump through so many hoops to get it working on arm64 I'm not sure how easy it will be to jump backwards through those hoops to get it back working on amd64... there are just so many benefits to running this on linux arm64 compared to linux amd64 that I would not seriously contemplate going back. Just a shame that it's not easy (for whatever reason) to run puppeteer on linux arm64 :-)

For now I've found another workaround to get the non-color version rendering properly too (it required adding explicit @font-face entries for each weight for this font in the css, pointing to the local ttf files... the files from Google work for the non-color emoji font even though they don't for the color emoji font). But these @font-face entries are not required for the many other fonts I have downloaded and available locally (those listed by fc-list)... they just seem to work without being explicit in the css. It all feels very fragile, with one sticking plaster on top of another, but it seems to be holding together for now 🤞 .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants