The choice of best acceptance testing practices can vary according to the project, organization and the system under test. I am not sure that the answer that follows would be used as a generic solution but surely does help in software testing domain.
1: Using regression test result as the acceptance criteria:
In most organizations, on integrating new features the functional tests are integrated into the regression test suite and are ran as a single test. This ensures the end to end test coverage of already existing features and the newly incorporated features. As we all know, these tests will obviously cover the user acceptance tests scenarios also.
So one of the best practice is to keep around 95%< pass rate as the acceptance criteria for the release candidate.
2: Using Keyword driven testing
Use frameworks like RobotFramework to create keyword-driven tests. Make product owners, and business analysts to write high-level keyword-driven test cases and hand it over to QA automation team, who then develops the low-level source code for this high-level test-cases.
2: Using Behaviour driven testing
Same approach like in KDD, but here BDD frameworks like cucumber is used. The PO and BA creates the high-level behavior driven test cases using feature files in gherkins (Given, When,Then) format, and QA team have to write the step-definitions.