> For the complete documentation index, see [llms.txt](https://docs.stoobly.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.stoobly.com/developer-guide/submitting-change-requests.md).

# Submitting Change Requests

## Run Tests

After cloning the source code and making your changes, you can run the unit and integration tests with:

```bash
poetry run pytest stoobly_agent/test
```

The output should pass and look similar to this:

```bash
$ poetry run pytest stoobly_agent/test

================================================== test session starts ==================================================
platform linux -- Python 3.8.10, pytest-7.3.0, pluggy-1.0.0
rootdir: /home/user/Downloads/github/stoobly/stoobly-agent
collected 59 items                                                                                                      

app/models/adapters/python/request/mitmproxy_adapter_test.py ..                                                   [  3%]
app/models/adapters/python/request/stoobly_adapter_test.py ..                                                     [  6%]
app/models/schemas/request_test.py ......                                                                         [ 16%]
app/proxy/mitmproxy/request_facade_test.py ...                                                                    [ 22%]
app/proxy/replay/body_parser_service_test.py ..                                                                   [ 25%]
app/proxy/replay/rewrite_params_service_test.py ...                                                               [ 30%]
app/proxy/replay/visitor_test.py ...............                                                                  [ 55%]
app/proxy/upload/request_string_test.py ..                                                                        [ 59%]
app/proxy/upload/response_string_test.py .                                                                        [ 61%]
app/test/matchers/contract_test.py .......                                                                        [ 72%]
app/test/matchers/diff_test.py ...........                                                                        [ 91%]
app/test/matchers/fuzzy_test.py .....                                                                             [100%]

=================================================== warnings summary ====================================================
stoobly_agent/test/app/proxy/replay/rewrite_params_service_test.py::Test::test_rewrites_dict
stoobly_agent/test/app/proxy/replay/rewrite_params_service_test.py::Test::test_rewrites_list_of_dicts
stoobly_agent/test/app/proxy/replay/rewrite_params_service_test.py::Test::test_rewrites_dict_of_list_of_dicts_of_dicts
  /home/user/.local/lib/python3.8/site-packages/orator/orm/model.py:2282: DeprecationWarning: Call to deprecated function to_dict.
    def to_dict(self):

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
============================================ 59 passed, 3 warnings in 4.94s =======================
```

## Steps to Create a Change Request

1. Fork our project and commit your changes into one of your forked repository's branches.
2. Test changes locally and create automated tests.
3. Submit a pull request at <https://github.com/Stoobly/stoobly-agent/pulls> with a description of your change.
4. Tag the maintainers.
