Files
MSE-SoftwEng/web-app/test.md
fastium b03368aa6f test(webapp): update documentation
- Change the description about the environment test
2025-06-24 21:13:51 +02:00

2.8 KiB
Raw Permalink Blame History

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 users and the developers 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 Serie instance 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.

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/.