# Testing ### Test Organization **Parallel Tests** (can run simultaneously): * Client tests * Package tests * E2E tests (isolated databases) **Sequential Tests** (shared resources): * Server tests (shared database) * CKEditor plugin tests ### Test Frameworks * **Vitest** - Unit and integration tests * **Playwright** - E2E tests * **Happy-DOM** - DOM testing environment ## Test locations ``` apps/ ├── server/ │ └── src/**/*.spec.ts # Server tests ├── client/ │ └── src/**/*.spec.ts # Client tests └── server-e2e/ │ └── tests/**/*.spec.ts # E2E tests └── desktop/ └── e2e └── tests/**/*.spec.ts # E2E tests ``` ## Running tests At project root: ``` pnpm test:all # All tests pnpm test:parallel # Fast parallel tests pnpm test:sequential # Sequential tests only ``` ## 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 API tests are handled via `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`, or for the ETAPI in `apps/server/spec/etapi`. These integration tests are run alongside unit tests. ## End-to-end testing See End-to-end tests.