### Purpose
We are starting to have too many features on the application to robustly test each time we deploy. At the same time we're also shipping really fast and without as much review as we'd like and using Cursor extensively. With a robust testing suite we can make sure that we aren't breaking anything.
### Principles
- Robust. The goal is to have something robust and thorough so that we don't have to worry about testing as much and can ship as fast as possible.
### Outcome Visioning
Without too much time we write a good test suite that tests out UI layer, the API layer, security measures, as well as performance. We add this to the deployment pipeline and can ship features faster than ever.
### Brainstorming
- What do I already know about this project? I don't actually know a lot about writing good tests. The last time I wrote was at my internship in Tilt.
- What don’t I know that I need to find out? I need to figure out what are the best libraries out there to write the tests.
- Who can I talk to who might provide insights? Abhishek is a good person to discuss with. Can potentially talk to Gabe as well and see if he has any thoughts. There are some groups I'm a part of as well that can be helpful.
- What can I read or listen to for relevant ideas? Theo from T3, Guillermo from Vercel, ShadCN dude are all good resources for web development. I'm sure Claude and ChatGPT have some good ideas as well.
### Actions
- Identify platform to perform UI checks and simulating user behaviour @someday
- Identify platform to perform API testing @someday
- Figure out how to do security checking @someday
- Load testing Vercel @someday
- Load testing Reasoning Engine @someday
- Write tests for login @someday
- Write tests for Google login @someday
- Write tests for sign up @someday
- Write tests for email verification @someday
- Write tests for forgot password @someday
- Write tests for onboarding @someday
- Write tests for classroom creation @someday
- Write tests for activity library page @someday
- Write tests for leaderboard page empty state view @someday
- Write tests for leaderboard page view @someday
- Write tests for leaderboard API call @someday
- Write tests for leaderboard table sorting @someday
- Write tests for analytics page empty state view @someday
- Write tests for analytics page view @someday
- Write tests for spider diagram @someday
- Write tests for concept graph @someday
- Write tests for submission list @someday
- Write tests for topic filter @someday
- Write tests for documentation page view @someday
- Write tests for settings page view @someday
- Write tests for updating settings @someday
- Write tests for archiving classroom @someday
- Write tests for removing student from classroom @someday
- Write tests for student not able to access classroom they were removed from @someday
- Write tests for adding student to classroom @someday
- Write tests for account settings page @someday
- Write tests for logging out @someday
- Write tests for app side bar for student @someday
- Write tests for app side bar for teacher @someday
- Write tests for classroom switcher @someday
- Write tests for home page for student @someday
- Write tests for home page for teacher @someday
- Write tests for activity library page for student @someday
- Write tests for activity library page for teacher @someday
- Write tests for lesson plan upload @someday
- Write tests for Knowledge Zap student @someday
- Write tests for Knowledge Zap teacher @someday
- Write tests for Knowledge Zap submission @someday
- Write tests for Knowledge Zap analytics @someday
- Write tests for flagging Knowledge Zap question @someday
- Write tests for Knowledge revision @someday
- Write tests for Step Solve student @someday
- Write tests for Step Solve teacher @someday
- Write tests for Step Solve submission @someday
- Write tests for Step Solve analytics @someday
- Write tests for flagging Step Solve question @someday
- Write tests for Step Solve revision @someday
- Write tests for Concept Mapping student @someday
- Write tests for Concept Mapping teacher @someday
- Write tests for Concept Mapping submission @someday
- Write tests for Concept Mapping analytics @someday
- Write tests for flagging Concept Mapping question @someday
- Write tests for Concept Mapping revision @someday
- Write tests for Reason Trace student @someday
- Write tests for Reason Trace teacher @someday
- Write tests for Reason Trace submission @someday
- Write tests for Reason Trace analytics @someday
- Write tests for flagging Reason Trace question @someday
- Write tests for Reason Trace revision @someday
- Write tests for Learn by Teaching student @someday
- Write tests for Learn by Teaching teacher @someday
- Write tests for Learn by Teaching submission @someday
- Write tests for Learn by Teaching analytics @someday
- Write tests for flagging Learn by Teaching question @someday
- Write tests for Learn by Teaching revision @someday
- Write tests for Read and Relay student @someday
- Write tests for Read and Relay teacher @someday
- Write tests for Read and Relay submission @someday
- Write tests for Read and Relay analytics @someday
- Write tests for flagging Read and Relay question @someday
- Write tests for Read and Relay revision @someday