🍞 ✨
@hirez_io/lembas This library makes Smoke testing's DB seeding easier!
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
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?
-
You write the setup code for the smoke test (sending ajax requests to create entities)
-
You wrap with with a
lembasWrapper()
-
Next time you'll run the same test it'll skip the setup code, and will populate the DB initial state from the cache.
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
lembas.json
configuration file
Setup the 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):
Shai Reznik |
This project follows the all-contributors specification. Contributions of any kind welcome!
License
MIT