| id | contribution-guide | |||
|---|---|---|---|---|
| title | Contribution Guide | |||
| sidebar_label | Contribution Guide | |||
| tags |
|
Welcome to the world of Keploy development! Here, we'll get you up and running smoothly, making your Keploy journey a breeze.
Running Keploy on macOS or Windows? No problem! You'll need to create a Linux VM.
Note: Linux Users are good to go.
First things first, ensure you have Golang installed.
Time to get your hands on Keploy! Run these commands to clone the repository and download those Go dependencies:
git clone https://github.com/keploy/keploy.git && cd keploy
go mod downloadThe Keploy CLI operates by capturing all network traffic between your application and its dependencies. It meticulously records API calls, database queries, and any other interactions your application engages in.
Once the recording phase is complete, Keploy can effortlessly generate test cases and data mocks in YAML format.
record: Capture Keploy test cases from API calls.test: Execute recorded test cases and validate assertions.
To dive into Keploy, you can use the gin-mongo URL Shortener sample application:
git clone https://github.com/keploy/samples-go.git && cd samples-go/gin-mongo
go mod download # Download dependencies:
go build -o gin-mongo-binary # Generate binary of the application: go run -exec "sudo -E env 'PATH=$PATH'" -tags=viper_bind_struct main.go record -c "path/to/go/binary/of/application"After entering record mode, send requests to your application to generate test cases.
go run -exec "sudo -E env 'PATH=$PATH'" -tags=viper_bind_struct main.go test -c "path/to/go/binary/of/application" --delay 10Run Keploy server to expose test APIs:
go run -exec "sudo -E env 'PATH=$PATH'" -tags=viper_bind_struct main.go test -c "path/to/go/binary/of/application" --delay 10 --coverageGenerated test cases can be found inside the Keploy directory.
go build -race -tags=viper_bind_struct -o keploy . && sudo mv keploy /usr/local/binsudo -E env PATH="$PATH" keploy record -c "path/to/go/binary"sudo -E env PATH="$PATH" keploy test -c "path/to/go/binary" --delay 10Note: Use the --debug flag to run Keploy in debug mode for detailed logs.
docker pull ghcr.io/keploy/keployalias keployV2='sudo docker run --pull always --name keploy-v2 -p 16789:16789 --network keploy-network --privileged --pid=host -it -v $(pwd):$(pwd) -w $(pwd) -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'keployV2 record -c "docker run -p 8080:8080 --name <containerName> --network keploy-network --rm <imageName>"" --containerName <containerName>keployV2 test --c "docker run -p 8080:8080 --name <containerName> --network keploy-network --rm <imageName>" --delay 10Run the below command inside the keploy repository and make sure there is no directory by the name of keploy inside the main keploy repository.
sudo docker image build -t ghcr.io/keploy/keploy:v2-dev .alias keployV2='sudo docker run --name keploy-v2 -p 16789:16789 --privileged --pid=host -it -v $(pwd):$(pwd) -w $(pwd) -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 -v '"$HOME"'/.keploy-config:/root/.keploy-config -v '"$HOME"'/.keploy:/root/.keploy --rm ghcr.io/keploy/keploy:v2-dev'Remember setting up the Keploy binary. See Setup Keploy using Binary for details.
sudo -E env PATH="$PATH" keployV2 record -c "docker run -p 8080:8080 --name <containerName> --network keploy-network --rm <imageName>"" --containerName <containerName>sudo -E env PATH="$PATH" keployV2 test --c "docker run -p 8080:8080 --name <containerName> --network keploy-network --rm <imageName>" --delay 10There you have it! With this guide, you're all set to dive into Keploy development. Happy testing! 🧪🔍💻
Note :- Run
go run github.com/99designs/gqlgen generate --config pkg/graph/gqlgen.ymlto generate the graphql server stubs which can be used when working with unit testing libraries like JUnit, PyTest, etc..
Hope this helps you out, if you still have any questions, reach out to us .