2.8 KiB
End-to-End and Unit Testing Documentation for Home Monitor
Test Description
The Home Monitor project uses Cypress to automate both End-to-End (E2E) and unit tests. These tests ensure that the main features of the application work correctly, both from the user’s and the developer’s perspectives.
Types of Tests
- End-to-End (E2E) Tests: Simulate real user behavior on the web interface. They check critical user flows, data display, error handling, and the responsiveness of the application.
- Unit Tests: Verify the correct functioning of TypeScript components and functions in isolation.
Test Structure
- E2E tests are located in
web-app/cypress/e2e/ - Unit tests are located in
web-app/cypress/unit/ - Custom commands and global setup are in
web-app/cypress/support/ - Cypress configuration is in
web-app/cypress.config.ts
How to Run the Tests
Install Dependencies
cd ./web-app
npm install --inlude=dev
Before Running Tests
A test url is needed to perform the tests in local:
export CYPRESS_TEST_URL=http://your-test-url.com
Note: most of the time, if you are testing in local, you can use:
export CYPRESS_TEST_URL=http://localhost:8080/
Run unit Tests
npm run test:unit
Run E2E Tests
npm run test:e2e
Run All Tests
npm run test
Note
The cypress GUI can be launched with the command:
npx cypress open
Test Coverage
End-to-End (E2E) Tests
- Fetch Measurements Button:
- Verifies that the "Fetch Measurements" button is visible and functional on the main page.
- Tests fetching timeseries data with a valid user-room-device selection, ensuring the main chart is displayed and no "no data" message appears.
- Tests fetching timeseries data with an invalid user-room-device selection (e.g., changing the user to "Sylvan"), ensuring the main chart is not displayed and the "no data" message is shown.
Unit Tests
- Serie Component:
- Checks that a
Serieinstance initializes with the correct properties. - Validates that the correct label is returned for temperature and humidity types.
- Ensures the label "Unknown" is returned for unknown types.
- Verifies that temperature and humidity data are formatted correctly by
getSerie(), including label, color, and data structure. - Ensures unknown types are handled appropriately in
getSerie(), defaulting to the correct color and axis.
- Checks that a
Test in CI
All test are covered by the CI pipeline.
The unit tests are run on every commit and doesn't require any specific resources.
The E2E tests are run too on every commit, but they require a test URL to be set in the environment variable CYPRESS_TEST_URL which provide an access to a test instance of the web-app. Actually, these tests are running on the test development instance at https://app-dev.mse.kb28.ch/.