We write mostly behavioral tests, mocking out external dependencies (database and API calls), to test the bulk of our code.
We write unit tests when necessary.
We write contract tests for external dependencies, like APIs we call.
We write GUI or API end to end tests for critical workflows.
We do manual testing for almost everything.
We review all code pull requests.
We use continuous integration, running unit and behavioral tests. We use continuous deployment, running contract and end to end tests.