1. Extendable
  2. To support running on:
    1. Docker
    2. Cloud
  3. Containerizable
    1. To Dockerise the tests itself
  4. KISS
    1. Keep it simple and stupid)
  5. Updated Documentation
    1. Wiki
    2. Readme
    3. Setup Guide
  6. Maintainable
  7. Clean Code
  8. AAA Pattern for Scripting
    1. Arrange
    2. Act
    3. Assert
  9. Professional Report
    1. Multiple Views
    2. Dashboard
    3. HTML / Web Page
    4. Section for Environment & Other Details
  10. Coding Standards & Naming Conventions
  11. Solid Principles
    1. S - Single-Responsibility Principle
    2. O - Open-Closed Principle
    3. L - Liskov Substitution Principle
    4. I - Interface Segregation Principle
    5. D - Dependency Inversion Principle
  12. Relevant Design Patterns
  13. Support for Test Data Generation
    1. Ex: Faker, jfairy
    2. Fixture templates
    3. Dynamic Data Generation Libraries
    4. Avoid maintaining it in external files.
  14. Proper Exception Handling
    1. Throwing & Wrapping appropriate exceptions
    2. Using Exception Handlers.
  15. Leverage libraries to boost readability
    1. Ex: Fluent Assertions
  16. Unit Tests
    1. Helper Methods / Framework Libs
  17. Code Quality Check
    1. Ex: Sonarqube
  18. Ability to integrate with CI/CD/CT pipelines.
  19. Amuthan Sakthivel