Skip to content

A mocking toolkit for web-extensions leveraging the power of TypeScript to enhance your jest experience.

License

Notifications You must be signed in to change notification settings

Lusito/mockzilla-webextension

Repository files navigation

mockzilla-webextension

Minified + gzipped size NPM version License Stars Watchers

mockzilla-webextension is a mocking toolkit for web-extensions leveraging the power of TypeScript to enhance your jest experience.

This is a Work In Progress! The API might change before version 1.0 is released.

Features

Why use mockzilla-webextension

  • Integrates with jest
  • Typesafety and code-completion out of the box.
  • Deadsimple to use
  • Liberal license: zlib/libpng

Installation via NPM

npm i -D mockzilla-webextension

Getting Started

Check out the documentation page for examples

Example

This is an example of how a mocking with mockzilla-webextension looks like:

describe("Web-Extension Helpers", () => {
    describe("getActiveTabs()", () => {
        it("should return active tabs", async () => {
            const tabs: any[] = [{id: 1}, {id: 2}];
            mockBrowser.tabs.query.expect({ active: true }).andResolve(tabs);

            expect(await getActiveTabs()).toEqual(tabs);
        });
    });

    describe("onBeforeRedirect()", () => {
        it("should register a listener and return a handle to remove the listener again", () => {
            const listener = jest.fn();
            mockBrowser.webRequest.onBeforeRedirect.addListener.expect(listener, expect.anything());

            const removeListener = onBeforeRedirect(listener);

            mockBrowser.webRequest.onBeforeRedirect.removeListener.expect(listener);
            removeListener();
        });
    });
});

Report issues

Something not working quite as expected? Do you need a feature that has not been implemented yet? Check the issue tracker and add a new one if your problem is not already listed. Please try to provide a detailed description of your problem, including the steps to reproduce it.

Contribute

Awesome! If you would like to contribute with a new feature or submit a bugfix, fork this repo and send a pull request. Please, make sure all the unit tests are passing before submitting and add new ones in case you introduced new features.

License

mockzilla-webextension has been released under the zlib/libpng license, meaning you can use it free of charge, without strings attached in commercial and non-commercial projects. Credits are appreciated but not mandatory.

About

A mocking toolkit for web-extensions leveraging the power of TypeScript to enhance your jest experience.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published