This library makes Smoke testing's DB seeding easier!
yarn add -D @hirez_io/lembas
or
npm install -D @hirez_io/lembas
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.
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 😅🤦♂️)
-
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.
-
✅ 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.
In order to setup lembas
you'll need a lembas.json
file and
lembas-hooks/
folder with 3 files: empty.ts
, restore.ts
and snapshot.ts
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 () => {
})
}
Until we'll get to writing proper docs
Here's a working example of these libraries
. .
. .
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 🙏
Be kind to each other and please read our code of conduct.
Thanks goes to these wonderful people (emoji key):
Shai Reznik 💻 |
This project follows the all-contributors specification. Contributions of any kind welcome!
MIT