It's important to have faith in your team, if you don't believe in them then they won't perform. If the CTO was carrying them then that's a way of showing them he didn't believe in them.
As team leader, facilitate their growth. It's actually a good learning opportunity for you.
I'll add one more to your list, Taiga, https://taiga.io/ . I started using it a couple of weeks ago with a small team and I really like it. It does burn down charts. And there is a self-hosted option.
Recognise that she is empowered by the organisation and you are not. Therefore, in your position, you will generally have to comply with what she wishes even if you feel it is wrong.
If you want to tough it out, I have a plan for you. Firstly, accept that your 'zone of influence' within the organisation is small. There are things that you can control and things that you can't control, and in your current situation there is not much you can control. Psychologically, what you can do is to choose not to be bothered by what you can't control. In other words, you can choose to abide by the maxim "Happiness is not getting what you want, but wanting what you get."
Also, you say you are in fear. Remind yourself that it is no big deal if she is upset, if you need to leave the company it is ok. You have nothing to lose. Try to see the humour of her overreactions. Of course, do not try to provoke her, but do it out of prudence rather than fear.
Remember, although you do not have much control within the organisation, you do have control over finding another job if you decide to do that.
Another thing I would do is arrange a short meeting with your report where you concisely outline the issue and how it is challenging you. This can be very difficult to do without causing more harm to the situation but it will help you if you raise the issue early. Keep the meeting short, you do not want to take up your boss's time with drama.
There are two key points you should make in the meeting. One is that the situation is challenging for you. You can literally say "I am challenged by this situation." Framing the situation in this way emphasises that you see it as a problem for yourself, not for the organisation, not for your boss and not for your PO. The second key point is to briefly outline what you will do to address the challenge. Generally this will mean focusing on your programming duties, being polite to your PO and being careful not to be a cause of conflict or distraction. Raising these two points will show your boss that you are being proactive about performing well in your job and addressing the interpersonal challenges of the workplace.
In this meeting you do not want your boss to go away thinking he should take action, such as disciplinary action or getting HR involved. Trust me, this would never go well for you. Therefore you should be careful not to create the impression in your boss that you would like him to take any action, you can also explicitly state that you don't want him to take action.
The purpose is to simply raise the issue and show that you are taking it on and dealing with it constructively. It opens a dialog with your boss about it. If your boss is a good boss you should be able to talk to him about challenges you are facing and not be afraid of him judging you unfairly, this is fundamental to a healthy relationship with your boss. Beyond this, having opened the dialog may help you in the future. For example, if at the end of the six months there are certain complaints raised that you can trace back to badmouthing by your PO, you can confidently and politely point that out. If you had never raised the issue of bulling prior to that time then you will have no credibility at all. Further, if the bulling reaches a level that you can no longer tolerate, you can go into a meeting stating that you've decided you need to leave the company. If your work has been good up until that point and your boss knows you've being trying to do the right thing, he may be able to move you to another project within the company. At the very least he will understand what's gone on and your resignation will not seem abrupt. Keep in mind it is quite possible he has no power to move you to another project to keep you away from the PO.
Good luck. Trust your instincts. If working for four more months and not getting extended seems like a waste of time you need to make that calculation for yourself and do what's best for your career.
I think the realisation comes that a good, experienced programmer doesn't say, when asked to do something, "Yep, it'll be easy!". Instead he demurs and says, "That could be a lot of work, it would be irresponsible for me to commit to it."
Hmmm... this is good but presumably react components are actually going to do things. But I suppose you're saying that the code that actually does things should be separated from the react code and should be tested separately from the react components.
1. TDD can make delivery timelines more predictable, as there is less chance of regressions being introduced as new features are added. This predictability can allow a team to scale up to larger and more lucrative projects.
2. TDD enhances the capacity for necessary refactoring to take place which reduces the complexity of the codebase. By reducing complexity we can increase development productivity.
3. TDD itself can speed up development. A developer will necessarily have to test the feature he is building. Manually testing this feature will be time consuming and repetitive. An automated test allows the developer to quickly test the specific element that is being built in a repeatable and verifiable manner.
4. You are saying that the QA team is not catching all the defects. What else is new, but if you are delivering poor quality product to your customers then this may have commercial consequences in the future, if not already.
5. TDD is best practice and is necessary for the professional development of the team. If TDD is not supported it will negatively impact the ability of the business to retain good developers.
But aside from that, if we are talking about software development inside large corporations, we are probably talking about half-baked internal projects that aren't going to go anywhere due to a variety of reasons. The are probably a whole host of things to change within any large corporate of which the introduction of TDD is but a minor concern.
It are right that it is a good idea to leave a job without saying negative things about them.
The line "I felt like it was time to move on" is an adequate reason for leaving, and it's not something anyone is going to argue with. After all, leaving is a personal decision. In addition to that, three years is an above average length of time to stay in a technology job.
If someone directly asks you what you don't like about working there (such as in an exit interview), simply state that you don't want to answer the question. If they push you, simply state that you have no comment. It's a good idea to decline to answer all the questions in an exit interview. They don't have the right to force you to answer such questions.
If you a nervous about the initial conversation with your boss, kick off the resignation by sending a short email to HR saying that you wish to resign and you are giving your notice from that day (or whenever you prefer). HR will fill you in on what the procedure is and notify all the relevant people for you.
Hi, it's your career and it's your responsibility to look after yourself. There are always better jobs. The longer you look for a job, the more likely you will get a job you really like. Some people like to quit first, because this makes it easier to look for work. There's plenty of work out there so you won't be looking for long.
It's pretty easy to look for work while you are working, so why not do that? There's usually not a good reason to bail immediately.
If you stick around you will have limited control over what happens with the company, so either the new investment works out well or it doesn't, but either way it's out of your hands. If you find a new job, you can select a job with the right circumstances for you.
As team leader, facilitate their growth. It's actually a good learning opportunity for you.