@hirez_io/lembas
v0.0.9
Published
a DB Seeding Util for more efficient Smoke Testing
Downloads
1
Maintainers
Readme
@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
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