jest-webextension-mock icon indicating copy to clipboard operation
jest-webextension-mock copied to clipboard

chrome.runtime.onMessage inconsistent callback parameters?

Open dhakan opened this issue 1 year ago • 1 comments

Hi!

I'm working with the code located in the tabs.js module of this project as per:

sendMessage: jest.fn((tabId, message, cb) => {
    onMessageListeners.forEach((listener) => listener(tabId, message));
    if (cb !== undefined) {
      return cb();
    }
    return Promise.resolve();
  }),

From what I can see in the official docs for onMessage, the structure is as follows:

(message: any, sender: [MessageSender](https://developer.chrome.com/docs/extensions/reference/runtime/#type-MessageSender), sendResponse: function) => boolean | undefined

In my test if I run chrome.tabs.sendMessage(tabId, Message), the tabId is the first parameter of the listener, which is inconsistent with the way chrome.runtime.sendMessage calls its listener.

For more info, the listener I'm testing is

private async onMessage(
    message: Message,
    _: chrome.runtime.MessageSender,
    sendResponse: (response?: any) => void
  ) {
    console.log(message);
  }

There's also the issue with the sendResponse, which I don't believe is covered here?

Any guidance would be greatly appreciated :)

dhakan avatar Mar 14 '23 19:03 dhakan

Hey @dhakan - I just took over this project and moved it to https://github.com/RickyMarou/jest-webextension-mock

I couldn't move the issue tracker with it. Are you still interested in contributing? I think you might be onto something here, it looks like we should change the arguments of the onMessageListeners

RickyMarou avatar Apr 24 '24 09:04 RickyMarou