The legacy approach is for “UAT” to be an activity done by “testers” after development (before releases) in a dedicated UAT environment. In the modern/agile approach, real users should be “testing” new features to ensure they are fit-for-purpose. Regardless (and particularly in the absence of real users being involved in the development cycle or immediately after release), it is important to define a shared view between PO, developer and tester of what user acceptance looks like for new features in the form of acceptance tests at the beginning of development. Ideally these tests would be automated as fast-running unit and integration tests/checks (creating a comprehensive regression test suite), with at least one end-to-end test for each feature, but at the very least they should describe how to test the feature in a common way, and form an evolving document which describes the correct/working behaviour of all aspects of the system from the user’s point of view.