Skip to content
/ lembas Public

Cost Effective Data Seeding Util For Smoke Tests

License

Notifications You must be signed in to change notification settings

hirezio/lembas

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
Nov 8, 2022
Jun 8, 2022
Jun 7, 2022
Aug 20, 2022
Nov 8, 2022
May 22, 2022
Aug 10, 2022
May 8, 2022
May 22, 2022
May 8, 2022
Aug 10, 2022
May 18, 2022
May 8, 2022
May 8, 2022
Jun 7, 2022
May 14, 2022
May 8, 2022
May 8, 2022
Jun 8, 2022
May 14, 2022
Jun 14, 2022
Aug 10, 2022
May 8, 2022
Aug 20, 2022
Jun 7, 2022
Aug 20, 2022
Aug 20, 2022
Aug 20, 2022
Aug 20, 2022
May 14, 2022

Repository files navigation

@hirez_io/lembas 🍞✨

This library makes Smoke testing's DB seeding easier!

npm version npm downloads License: MIT codecov All Contributors


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 () => {

  })
}

Example:

Until we'll get to writing proper docs

Here's a working example of these libraries

. .

Want more Advanced & Enterprise features? πŸ”₯πŸ’ͺ

. .

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