Final manual check showed preventDefault was stopping form submission in onsubmit when all valid. I had changed to onsubmit from addEventListener as it was more testable.