Comments (6)
Can you link me to your repo?
from jest-webextension-mock.
I would assume it’s not setup correctly, can you check those steps in the readme?
from jest-webextension-mock.
Can you link me to your repo?
Sorry it's a closed-source project but I will see if I can get that changed. I'll recheck the readme.
from jest-webextension-mock.
I would assume it’s not setup correctly, can you check those steps in the readme?
I have rechecked the readme and there is nothing in it that I can see with specific set up steps for testing chrome.runtime.sendMessage
. However I have now got this to work.
Here's the full source of my src/messaging/utils/send.js
/**
* A promisified version of the chrome sendMessage function.
*
* @param the message to send.
* @returns a promise that resolves with the message response.
*/
const send = async msg =>
new Promise(resolve =>
chrome.runtime.sendMessage(msg, response => {
if (chrome.runtime.lastError) {
console.error(chrome.runtime.lastError.message);
}
resolve(response);
})
);
export default send;
and here's the now working test
import send from 'messaging/utils/send';
const message = 'some message';
const cleanup = () => {
chrome.runtime.sendMessage.clearMocks();
chrome.runtime.lastError = undefined;
};
describe('with no error', () => {
beforeAll(async () => {
chrome.runtime.sendMessage = jest.fn((msg, callback) => callback(msg));
await send(message);
})
afterAll(cleanup);
it('called chrome.runtime.sendMessage with the message', () => {
expect(chrome.runtime.sendMessage).toHaveBeenCalledWith(
message,
expect.any(Function)
);
});
})
describe('with an error', () => {
const error = new Error('oops');
beforeAll(async () => {
chrome.runtime.sendMessage = jest.fn((msg, callback) => callback(msg));
chrome.runtime.lastError = error;
await send(message);
})
afterAll(cleanup);
it('called chrome.runtime.sendMessage with the message', () => {
expect(chrome.runtime.sendMessage).toHaveBeenCalledWith(
message,
expect.any(Function)
);
});
it('called logger.error', () => {
expect(console.error).toHaveBeenCalledWith(error.message);
})
})
from jest-webextension-mock.
I was wondering how you were using the setup, seen here: https://github.com/clarkbw/jest-webextension-mock#use-setup-file
from jest-webextension-mock.
I have a jest.init.js
file
import 'core-js/stable';
import 'regenerator-runtime/runtime';
import 'jest-webextension-mock';
global.fetch = require('jest-fetch-mock');
global.console = {
log: console.log,
error: jest.fn(),
warn: jest.fn(),
info: jest.fn(),
debug: jest.fn()
};
from jest-webextension-mock.
Related Issues (20)
- Make runtime.onMessage react to tabs.sendMessage HOT 3
- Add support for browser/chrome.management.* APIs
- Add contribution guidelines HOT 1
- chrome.storage.local.get should return a deep copy of objects
- Testing onMessage listeners HOT 3
- onMessageExternal missing from from runtime mock HOT 1
- `browser.permissions` is missing HOT 3
- Question: Is webextension-polyfill 0.9.0 supported? HOT 3
- `This script should only be loaded in a browser extension` HOT 1
- Support for manifest version 3 HOT 1
- Missing onChanged on chrome.storage.sync HOT 1
- Add support for runtime.getManifest HOT 1
- BUG: "Cannot read property 'addListener' of undefined" for `browser.storage.local.onChanged.addListener` HOT 3
- Vitest support HOT 5
- Struggling with ts-jest HOT 2
- chrome.runtime.onMessage inconsistent callback parameters? HOT 1
- throw new Error('Wrong key given'); HOT 1
- Add support for browser.webRequest API HOT 1
- Add `sidePanel` API HOT 1
- Separate storage values by type HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jest-webextension-mock.