getmomentum / momentum-core

visually integration test your backend
https://app.momentum.sh
Apache License 2.0
115 stars 9 forks source link
ai backend integration-testing knowledge-graph python testing-library

Momentum logo Momentum Logo light


pypi package Apache 2.0

The open-source integration testing tool for your backend code

From git push to production-ready: See the unseen, test the untested


Explore the docs »

Report Bug · Request Feature · Join Our Discord · Roadmap · X

[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/getmomentum/momentum-core)

Momentum is an open-source tool designed to generate and understand powerful insights into your codebase. It helps you understand changes and their impacts, generate test behaviours and integration test code and much more.

Table of Contents

Introduction

momentum analyses your codebase and understands intended code behavior and tests it at every git push to ensure the code is ready for production. It generates visualisation and precise context for test plans and test cases for all entry points detected in the system.

What is a behavior?

A behavior is defined as a task or functionality you were trying to create using your code. Examples could be deleting a document using a deleting API or creating a new user in the database. Behaviors can also be more complex sometimes where third-party dependencies are associated for example fetching data from a payment API to check the status. Behaviours must be independently executable tasks.

Here's how momentum can help you!

blast radius dependency visualisation behaviour detection code generation

Installation

To get started with Momentum, follow these steps:

Steps

  1. Clone the repository:

    git clone https://github.com/getmomentum/momentum-core.git
    cd momentum-core
  2. Set up the database via Docker:

    docker-compose up
  3. Set up environment:

    python -m venv .venv
    source .venv/bin/activate
    pip install -r requirements.txt
  4. Run migrations: Create a .env inside /server based on .env.template

    alembic upgrade head
  5. Setup keys: You will have to setup keys for services like firebase auth, github app, Open AI, portkey among others. Follow the detailed instructions here

  6. Start the application:

    uvicorn server.main:app --host 0.0.0.0 --port 8001

Build Instructions with docker

  1. Set Up the Environment: Configure your environment variables by creating a .env file based on the .env.template provided in the repository. This file should include all necessary configuration settings for the application.

  2. Google Cloud Authentication: Log in to your Google Cloud account and set up Application Default Credentials (ADC). You can find detailed instructions here.

  3. Build Docker Image: Build the Docker image using the following command:

    docker build -t momentum .
  4. Bring the required infrastructure up:

    docker-compose up
  5. Run migrations: Ensure .env is correctly setup

    alembic upgrade head
  6. Run Momentum

    ./run-momentum.sh

    Note: (a) Read the shell script to modify google cloud credentials if needed (b) You might need to make it an executable, do it by running chmod +x run-momentum.sh

Usage

After installation, you can access Momentum at http://localhost:8001. Key functionalities include:

For detailed usage instructions, visit the Momentum Documentation.

Contributing

We welcome contributions from the community. Contributions can be of the form:

  1. Documentation : Help improve our docs! If you fixed a problem, chances are others faced it too.
  2. Code : Help us make improvements to existing features and build new features for momentum.
  3. Tests : Help us make momentum resilient by contributing tests.

To contribute:

  1. Fork the repository.
  2. Create a new branch (git checkout -b feature-branch).
  3. Commit your changes (git commit -am 'Add new feature').
  4. Push to the branch (git push origin feature-branch).
  5. Open a Pull Request.

Refer to the Contributing Guide for more details.

License

This project is licensed under the Apache 2.0 License - see the LICENSE file for details.

💪 Thanks To All Contributors

Thanks a lot for spending your time helping build momentum. Keep rocking 🥂

Contributors