From 417d96a7ead0debeb978a9d63946227e4915ad41 Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Thu, 19 Feb 2026 10:12:59 -0700 Subject: [PATCH 1/2] docs: adding a testing ADR for frontend --- .../0003AutomatedTestingFrontend.md | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 architectureDecisionRecords/0003AutomatedTestingFrontend.md diff --git a/architectureDecisionRecords/0003AutomatedTestingFrontend.md b/architectureDecisionRecords/0003AutomatedTestingFrontend.md new file mode 100644 index 0000000000..e4d80b4e1f --- /dev/null +++ b/architectureDecisionRecords/0003AutomatedTestingFrontend.md @@ -0,0 +1,31 @@ +# Title + +Automated testing frontend + +## Date proposed + +02-19-2026 + +## Context + +We can't have confidence that our product will continue to work when we change things without tests. + +## Decision + +We will use the following technologies to test: + +1. [Cypress](https://www.cypress.io/) for end to end tests and api tests +1. [Vitest](https://vitest.dev/) for unit/integration tests +1. [MSW](https://mswjs.io/docs/getting-started/) for api mocking in unit/integration tests + +We will mock as little as possible in our tests and [prefer integration tests over unit tests](https://kentcdodds.com/blog/write-tests). The bulk of our tests will be integration tests, because they provide the best performance to confidence ratio. + +The purpose of our end to end tests will be to validate that the frontend is working with the backend properly, and that apis are working together properly. We don't need to test every edge case in our end to end tests, because using MSW allows us to test those edge cases in our integration tests. + +The purpose of our tests is to give us confidence to make changes without breaking things. We will write enough tests that we can be confident in deploying changes without manual testing. + +## Consequences + +Contributors will need some time to learn the prescribed testing technologies. It will take more time to contribute to the repository. + +We will be able to make changes without the fear of breaking things, and our code will be more reliable. From 98693fe865ffa502ca992810ebc61b7fde06c606 Mon Sep 17 00:00:00 2001 From: Wes Risenmay Date: Fri, 20 Feb 2026 09:50:18 -0700 Subject: [PATCH 2/2] modify some language --- architectureDecisionRecords/0003AutomatedTestingFrontend.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/architectureDecisionRecords/0003AutomatedTestingFrontend.md b/architectureDecisionRecords/0003AutomatedTestingFrontend.md index e4d80b4e1f..42f35724d8 100644 --- a/architectureDecisionRecords/0003AutomatedTestingFrontend.md +++ b/architectureDecisionRecords/0003AutomatedTestingFrontend.md @@ -22,7 +22,7 @@ We will mock as little as possible in our tests and [prefer integration tests ov The purpose of our end to end tests will be to validate that the frontend is working with the backend properly, and that apis are working together properly. We don't need to test every edge case in our end to end tests, because using MSW allows us to test those edge cases in our integration tests. -The purpose of our tests is to give us confidence to make changes without breaking things. We will write enough tests that we can be confident in deploying changes without manual testing. +The purpose of our tests is to give us confidence to make changes without breaking things. We will write tests so that we can be confident in deploying changes without manual testing. ## Consequences