Agile development requires agile testing practices. One of the key elements of agile testing is automation, because of the necessity of running very frequent regression tests. As well as unit testing, and bearing in mind the test pyramid, teams must sooner or later start writing API and/or UI automation tests.
A Test framework is written using a technology stack (see below) to support the following key elements:
The typical technology stack is .NET or Java with Selenium WebDriver; however, we can align the test stack with the technologies used in the development stack. Thus, we can use RobotFramework for Python projects, Cypress.io for Javascript or Behat/Behave for Drupal or PHP frameworks. The crucial aspect is to have an interface to the continuous integration/deployment framework - we can integrate, for example, with MS Team Foundation Server, Atlassian Jira or Gitlab. In cases where desired, mobile support can be in place (using Appium).