Ever seen a developer logo this snazzy? ๐
Keploy is a next-gen E2E testing tool that provides an easy way to capture and generate tests(KTests) and data-mocks(KMocks) from real API calls. It automatically generates mocks and stubs, making the testing process simpler and more efficient.
๐ Merge KTests with your fave testing libraries to see that glorious combined test-coverage. ๐ญ KMocks are multi-talented โ use 'em in existing tests, as server tests, or just to impress your friends!
๐ฐ Fun fact: Keploy uses itself for testing! Check out our swanky coverage badge:
ย
From Go's gopher ๐น to Python's snake ๐, we support:
Our magical ๐งโโ๏ธ Keploy proxy captures and replays ALL(CRUD operations, including non-idempotent APIs) your app's network interactions.
Take a journey to How Keploy Works? to discover the tricks behind the curtain!
Become a Keploy pro with our Documentation.
Whether you're a newbie coder or a wizard ๐งโโ๏ธ, your perspective is golden. Take a peek at our:
โค๏ธ Code of Conduct
Filters noisy fields in API responses like (timestamps, random values) to ensure high quality tests.
Keploy ensures that redundant testcases are not generated.
Keploy can be utilized on Linux natively and through WSL on Windows.
AMD Architecture
curl --silent --location "https://github.com/keploy/keploy/releases/latest/download/keploy_linux_amd64.tar.gz" | tar xz -C /tmp
sudo mkdir -p /usr/local/bin && sudo mv /tmp/keploy /usr/local/bin && keploy
ARM Architecture
curl --silent --location "https://github.com/keploy/keploy/releases/latest/download/keploy_linux_arm64.tar.gz" | tar xz -C /tmp
sudo mkdir -p /usr/local/bin && sudo mv /tmp/keploy /usr/local/bin && keploy
To initiate the recording of API calls, execute this command in your terminal:
sudo -E keploy record -c "CMD_TO_RUN_APP"
For instance, if you're using a simple Golang program, the command would resemble:
sudo -E keploy record -c "go run main.go"
To run the testcases and generate a test coverage report, use this terminal command:
sudo -E keploy test -c "CMD_TO_RUN_APP" --delay 10
For example, if you're using a Golang framework, the command would be:
sudo -E keploy test -c "go run main.go" --delay 10
Keploy can be used on Linux &
Windows through Docker.
Note:
MacOS users please install Colima.
To establish a network for your application using Keploy on Docker, follow these steps.
If you're using a docker-compose network, replace keploy-network
with your app's docker_compose_network_name
below.
docker network create keploy-network
Then, create an alias for Keploy:
alias keploy='sudo docker run --pull always --name keploy-v2 -p 16789:16789 --network keploy-network --privileged --pid=host -it -v "$(pwd)":/files -v /sys/fs/cgroup:/sys/fs/cgroup -v /sys/kernel/debug:/sys/kernel/debug -v /sys/fs/bpf:/sys/fs/bpf -v /var/run/docker.sock:/var/run/docker.sock --rm ghcr.io/keploy/keploy'
Here are few points to consider before recording!
- If you're running via docker compose, ensure to include the
<CONTAINER_NAME>
under your application service in the docker-compose.yaml file like this. - Change the network name (
--network
flag) fromkeploy-network
to your custom network if you changed it above. Docker_CMD_to_run_user_container
refers to the Docker command for launching the application.
Utilize the keploy alias we created to capture testcases. Execute the following command within your application's root directory.
keploy record -c "Docker_CMD_to_run_user_container --network keploy-network" --containerName "<containerName>"
Perform API calls using tools like Hoppscotch, Postman, or cURL commands.
Keploy will capture the API calls you've conducted, generating test suites comprising testcases (KTests) and data mocks (KMocks) in YAML
format.
Now, use the keployV2 Alias we created to execute the testcases. Follow these steps in the root directory of your application.
When using docker-compose to start the application, it's important to ensure that the --containerName
parameter matches the container name in your docker-compose.yaml
file.
keploy test -c "Docker_CMD_to_run_user_container --network keploy-network" --containerName "<containerName>" --delay 20
Voilร ! ๐ง๐ปโ๐ป We have the tests with data mocks running! ๐ฐ๐
You'll be able to see the test-cases that ran with the results report on the console as well locally in the testReport
directory.
Reach out to us. We're here to help!
- Unit Testing: While Keploy is designed to run alongside unit testing frameworks (Go test, JUnit..) and can add to the overall code coverage, it still generates E2E tests.
- Production Lands: Keploy is currently focused on generating tests for developers. These tests can be captured from any environment, but we have not tested it on high volume production environments. This would need robust deduplication to avoid too many redundant tests being captured. We do have ideas on building a robust deduplication system #27
๐ค FAQs
๐ต๏ธโ๏ธ Why Keploy
โ๏ธ Installation Guide
๐ Contribution Guide