Developer commits can go directly to the dev branch, feature branch, or (in an unofficial setting) main, but ideally there is an autorun of unit tests. This can happen in a variety of ways. The options are endless via pre-commit hooks and commit hooks. However, as a result, code changes will not be accepted by the branch unless they pass unit tests.