0.2.0 â€ĸ Published 2 years ago

firebase-jest-testing-codeofficer v0.2.0

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

firebase-jest-testing

install size

Tools for testing Firebase backend features, using Jest.

Offers:

  • đŸĨĢ Emulator detection. The library automatically picks up the configuration when running the tests. Less boilerplate!

  • đŸĒļ Light. Uses Firestore REST API so no Firebase client JS SDK is required.

    This is an implementation detail. In practise, it means less npm dependencies.

  • ⚡ī¸ Fast. Optimized for multithreading and Node.js. You'll likely max out your cores.

    This may be overpromising. The Firebase Emulators themselves are the bottleneck, and there's an issue for handling this. Anyways, we are pushing for speedy testability of Firebase backend.

  • ‖‖‖ Security Rules are tested immutably - a passing write or delete operation does not change the data, and cannot disturb other tests. This is why we can parallelize the tests so much. No flaky tests.

  • 👨‍đŸĻ¯ Help functions for priming of Firestore with JSON data.

    Firebase emulators provide binary import/export which is not very useful for small, hand-crafted datasets. JSON is more human friendly.

  • + Means for testing callables (without a client SDK).

Only to be used with Jest 28 and above.

The aim for this repo is on ESM projects and Jest 28 brings this support. Thus the lack of interest for supporting even Jest 27 (it is possible, using some hacks - see release 0.0.4-alpha.5).

Requires

  • Jest 28 as a peer dependency

Using in your project

In your application project:

$ npm install --save-dev firebase-jest-testing@beta

Using with Docker Compose

With Docker Compose, your emulators are likely running under another host than the one running the Jest tests.

Set the EMUL_HOST env.var. to indicate the host name.

services:
  emul:
    ...
  sample:
    ...
    environment: ['EMUL_HOST=emul']

Sample project(s)

If you find the library useful, you may file a PR for adding a link to your project here. 😊

Reference documentation

Writing tests walks you through the API.

Support

If you wish to support the development of this software, be in touch with the author. We'll figure out something nice! ;)