It's hard to answer "what is typical" because there are different types of customers who have their own demands on how software is deployed in their systems. There is a gamut of what happens from companies that maintain and deploy their own software (like Netflix, AirBnB, Stack Exchange, etc.) to companies that require hand-off to third parties to deploy.
The idea behind Agile is that you can deploy as needed. DevOps expands on that idea and automates deployments and testing processes as much as possible. Taken to the full implementation, DevOps will push changes live once they have been promoted.
I work in an industry where we have to deploy on private networks, which means we can't really automate everything. In our situation, we do something like this:
- Development is done on feature branches and a pull request is made when it is complete
- Every change to the develop stream causes our CI server to build and deploy the software to test servers
- Automated tests run against that instance, followed by manual testing
- We deploy on staging servers in the customer network
- Customer performs UVT (User Verification Testing), only different from UAT in the sense that users can't stop a release
- Finally install instructions are provided to a 3rd party to perform the installation in production and there are formal meetings to approve that action.
Up to the point where we deploy on staging servers, we use DevOps to ensure the product is correct and we haven't regressed in any critical functionality. However, we do find things that only exist in the customer network when we deploy there. For that reason, we have to manually perform a full regression test for our customer.
You'll find that the additional testing is required when you don't have full control over the deployment environment. That's less common in the commercial world, and more common where the industry or customer is more conservative.