| Just FYI I'm a mid-level SWE at this time. Not an expert. This is just what I've encountered (corp day job) and personal pains of my own code. I primarily use ReactJS. We used a domain-driven pattern. Although there is still that component parent hierarchy thing going on. TDD (tech design doc), write the code, linter, unit tests (Jest/Enzyme eg. render part of component take code snapshot, assert stuff) and then WDIO for visual regression testing (image diffs). It is a time consuming thing to setup but when you have like 600tests it's nice/assuring. Then it runs on a pipeline (Jenkins) for about an hour before it gets released to some domain. Personally I am still in the get it done/MVP stage. The above is ideal case when you're established/dealing with many other people changing code. I am going with a Selenium/functional test though personally for the thing I'm working on now (2-way real time interactive app). There's different ways to test stuff depends what your thing is. The TAs I worked with use Eggplant. The main thing though about separation of concerns is important when possible just to reduce cognitive load for the next stuff you add. |