Run all the tests just right after the build as soon as possible, before deploying to the test environment. Developers should have feedback about their check-ins as soon as possible. Also you say the test-env is used for manual testing, why would you want to risk deploying a non working build. Certainly if you could have run the tests first.
In short the ideal flow looks like:
- Check-in new code
- Build
- Run all tests
- First the unit-tests
- Second the slower acceptance tests
- Deploy to test-env
- Run small test to see deploy was successful
Unless both environments are really different I see no need to run al the tests again in the test-env.
To save power I would not run the acceptance tests and deployment if the unit-tests are already failing. Make it a priority to always keep all the test passing.
This makes sure the test-env always works and manual testers will not be wasting time reporting broken builds which are already covered by automated tests.