|  | # Frontend testing | 
|  |  | 
|  | We have a mixture of typescript in the main website's code (located in `static/tests`) and Cypress (located in `cypress/integration`) to test and report on the workings of that code. | 
|  |  | 
|  | But there's always the possibility to use Cypress code to do UI checks and testing. | 
|  |  | 
|  | ## Recommended | 
|  |  | 
|  | The recommended way of testing is to use typescript to test the inner workings of the various interfaces that are available. | 
|  |  | 
|  | This has the advantage of having types and being able to verify your code is consistent with the rest of the website and probably going to run correctly - without having to startup the website and Cypress. | 
|  |  | 
|  | ## Adding a test | 
|  |  | 
|  | Steps to add a test: | 
|  |  | 
|  | * Create a new file in `static/tests` (copy paste from `static/tests/hello-world.ts`) | 
|  | * Make sure to change the `description` as well as the test | 
|  | * Add the file to the imports of `static/tests/_all.js` | 
|  | * Add a `runFrontendTest()` call with the new test description to `cypress/integration/frontend-testing.js` | 
|  |  | 
|  | ## Starting tests locally | 
|  |  | 
|  | You don't need to install an entire X server to actually run cypress (just xfvb). | 
|  |  | 
|  | You can find a complete list at https://docs.cypress.io/guides/getting-started/installing-cypress#System-requirements | 
|  |  | 
|  | If you have the prerequisites installed, you should be able to run `npx cypress run` - however, you will need to start the CE website separately in another terminal before that. |