Building an E2E Test Framework using some good Design Patterns