# Testing process
### Start early
When planning out new features and user stories, think about the following:
- Existing tests - will it break them?
- New tests - what tests should we add?
- Testability - how will we test this? How will we automate this? Do we need to add test ids?
- Test data - What test data is going to be needed to test this manually, automated
- Monitoring: how will we know if this is broken?
### Create tasks for testing
Pre-development:
* Sub-tasks for adding Integration, E2E tests - define coverage together with the team
* Sub-tasks for acceptance testing and manual checks, exploratory testing
* Create checklists, e.g.:
> Story-1: User can submit a German propery
>
> 1. Check happy path: submit a property with German address
> 1. Check happy path: purchase property via invest app from unlock to BO accepted
> 1. Check address formatting in both sell/invest apps
> 2. Post release: check on sell happy path on prod
Instructions:
1. What to test
2. How to test: feature flags, test data, URLs
### Sharing findings
Agree to a common method of reporting. Use bug templates.
### Workflow
1. Define and design tests
2. Develop code / tests
3. Open PR for tests, Open PR for app
4. Merge tests, merge app change
5. Monitor
### A Guide to Hypercare After Code Deployment
Deploying new code to production is an exciting step, but it's essential to remain alert and prepared for potential issues. Hypercare is the practice of being extra vigilant after releasing new features or updates that could impact our systems. This way, we can react quickly if something goes wrong.
- **Monitor Sentry Error**s
*Keep an eye out for new errors in Sentry. Identifying and addressing these errors promptly can prevent them from escalating into bigger issues.*
- **Check monitors for performance**
*Monitor system performance and watch for any increase in latency, response times etc. This could indicate a problem with the new code or an unexpected interaction with existing systems.*
- **Test on Production (if possible)**
*If feasible, perform tests on the production environment to ensure everything is running smoothly and as intended.*
- **Notify 1st Level Support, affected teams**
*In case you detect any issues, promptly inform the 1st level support team. This way, they can be prepared to notify clients who may contact them about the issue. What is more, notify the affected teams so they could react accordingly.*
**Responsibilities**:
The person responsible for the code change should oversee hypercare and, if necessary, conduct a post-mortem analysis in case of an incident.
### TBD
E2E test PR <-> App PR