sendToContentScript function test exported

Last updated: 2026-03-01T23:25:47.057Z

Metrics

LOC: 24 Complexity: 3 Params: 3

Signature

sendToContentScript( page: Page, message: ExtensionMsg, ): : Promise<unknown>

Summary

Sends a message to the content script running on page by going through the background service worker.

Tags

#@returns The response from the content script handler.

Source Code

export async function sendToContentScript(
  page: Page,
  message: ExtensionMsg,
): Promise<unknown> {
  const context = page.context();

  let [sw] = context.serviceWorkers();
  if (!sw) {
    sw = await context.waitForEvent("serviceworker", { timeout: 10_000 });
  }

  const url = page.url();

  return sw.evaluate(
    async ({ pageUrl, msg }) => {
      const origin = new URL(pageUrl).origin;
      const tabs = await chrome.tabs.query({ url: `${origin}/*` });
      const tab = tabs[0];
      if (!tab?.id) throw new Error(`No tab found for origin: ${origin}`);
      return chrome.tabs.sendMessage(tab.id, msg);
    },
    { pageUrl: url, msg: message },
  );
}

No outgoing dependencies.

Impact (Incoming)

graph LR sendToContentScript["sendToContentScript"] FieldSummary["FieldSummary"] FieldSummary -->|uses| sendToContentScript style sendToContentScript fill:#dbeafe,stroke:#2563eb,stroke-width:2px click sendToContentScript "035089c459427109.html" click FieldSummary "b2a72169196ce9a2.html"
SourceType
FieldSummary uses