End-to-end test tool which allows writing test for web apps from a user point of view. Open source and free.

Install and Start:

npm install --save-dev cypress

npx cypress open

Sample of test:

simple cypress test

Selecting elements:
The best practice for selecting elements on a page is to use data attribute: data-cy=”unique-value” and then cy.get('data-cy="unique_value"')

For readability use aliases:
cy.get('data-cy="unique_value"').as('some_element') then use cy.get('@some_element')

Select as jQuery element:





  • better understanding the scope of the solution
  • the same page with other developers: eliminates explaining design to other engineers and stockholders.
  • better chance to find the best approach in the concrete implementation


  • faster progress in implementation
  • easier to involve new people in the project
  • limits future complications


  • clean retrospection
  • measuring progress
  • for sure, the final result started from designing will be better and faster than without one


  • Gather as much as possible about a problem domain
  • Understand clearly what problem solution should solve
  • What is customer expectation?
  • Risk assessment
  • Data model involved in the solution
  • Business Logic
  • Presentation Layer
  • Scaling of the solution
  • Error handling and recovering
  • Test plan
  • CI/CD
  • Rollback plan
  • Security, privacy, and accessibility consideration