# Testing ## Unit testing and integration testing Using `vitest`, there are some unit and integration tests done for both the client and the server. These tests can be found by looking for the corresponding `.spec.ts` in the same directory as the source file.

To run the server-side tests:

npm run server:test

To view the code coverage for the server:

npm run server:coverage

Afterwards, a friendly HTML report can be found in /coverage/index.html.

To run the client-side tests:

npm run client:test

To view the code coverage for the client:

npm run client:coverage

Afterwards, a friendly HTML report can be found in /src/public/app/coverage/index.html.

To run both client and server-side tests: ``` npm run test ``` Note that some integration tests rely on an in-memory database in order to function.  ### REST API testing for the server Some original work was done by Zadam in `/test-etapi`, using `.http` files. New effort using `vitest` and `supertest` to initialize the Express server and run assertions without having to make actual requests to the server. An important aspect is that we have access to the Express `app` which allows for interesting assertions such as checking the state of the server, registering debug middleware and so on. One example is `src/share/routes.spec.ts`. These integration tests are run alongside unit tests. ## End-to-end testing * This tests both the client and the server, by running the server and then using Playwright to query the state of the page. * These can be found in `/e2e`.