0.0.9 • Published 2 years ago

@hirez_io/lembas v0.0.9

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

@hirez_io/lembas 🍞✨

This library makes Smoke testing's DB seeding easier!

npm version License: MIT

Table of Contents

Installation

yarn add -D @hirez_io/lembas

or

npm install -D @hirez_io/lembas

THE PROBLEM:

Smoke tests require a real database to provide the highest confidence possible.

Populating the database with data (or "DB seeding") is slow, that's why developers / testers usually just use the same DB data between all tests and "clean up" after their changes.

This strategy makes our smoke tests more fragile and less maintainable.

THE SOLUTION: Lembas

image

If the smoke test is the "Critical User Journey".. we need food for this journey.

And "Lembas" (the Elvish way-bread) is the best food we can get for our journey (god I'm a nerd 😅🤦‍♂️)

How does it work?

  1. You write the setup code for the smoke test (sending ajax requests to create entities)

  2. You wrap with with a lembasWrapper()

  3. Next time you'll run the same test it'll skip the setup code, and will populate the DB initial state from the cache.

image

Lembas's Benefits:

  • Repeatable - Bugs are easier to reproduce because the "snapshots" are committed to git.

  • Minimal - Only create the data you need for the test, no need for giant db dumps from production.

  • Faster - Restoring from cache is faster than writing data via the server layer.

  • Flexible - Write your own "backup and restore" logic that fits your stack.

Usage

In order to setup lembas you'll need a lembas.json file and

Setup the lembas.json configuration file

lembas-hooks/ folder with 3 files: empty.ts, restore.ts and snapshot.ts

lembasWrapper( asyncSetupFunction )

Where asyncSetupFunction is where your setup logic located.

It must be an async function (return a promise)

Example:

import {lembasWrapper} from '@hirez_io/lembas`;

export async function setup(){

  return lembasWrapper( async () => {

  })
}

emptyData()

Contributing

Want to contribute? Yayy! 🎉

Please read and follow our Contributing Guidelines to learn what are the right steps to take before contributing your time, effort and code.

Thanks 🙏

Code Of Conduct

Be kind to each other and please read our code of conduct.

Contributors ✨

Thanks goes to these wonderful people (emoji key):

This project follows the all-contributors specification. Contributions of any kind welcome!

License

MIT