You will never be "done", and your version of done will vary by feature at different points in a product's life cycle. Early prototypes might not have exhaustive tests or pixel perfect styling. Once you start releasing your code to the "public" you need to tighten things up. Here's what to look for:
*Designs reviewed and understood by the business and developers
*Unit tests are written and are green (make sure it works)
*Acceptance tests written for common cases (Selenium or Appium)
*Final art/content in place (make it gorgeous)
*Peer review of the code changes, code adheres to style and security best practices
*Security scan shows no high or medium findings
*Features are manually tested and accepted in the QA environment
If you do all of that and everything looks good, ship and repeat!