The TL;DR is it's a time-intensive process, especially when making large changes.
Right now the styles through Stack Overflow and Stack Exchange are rather fractured. While they might look fairly close, a lot of them are implemented in different ways and use different CSS classes. This isn't a huge problem when making more localized changes (to just Q&A or just Documentation). Yet when we want to standardize core elements such as colors, type, and form styles — that becomes much harder.
As the OP mentioned, Stack Overflow doesn't employ people who are tasked strictly with QA. Instead that burden is shared across the product team. We have to double-check every potentially affected page manually. Most of the time this isn't a huge deal because we learn fairly quickly what pages are affected; yet there's always a few "I never even knew this existed" moments.
The core tools available to each designer are:
- A design system. This is a newer tool for us. As the team has grown, we've seen a need for standardizing and documenting our design system so that the whole team is using the same style. Amongst other projects, we've spent the last 6-8 months creating and implementing this new system. We're not finished yet, but we're close. This system documents all UI elements, UI components, and UX patterns used throughout Stack Overflow and Stack Exchange. We've already standardized colors, buttons, tabs, and soon form/input styles. Most of these updates you hopefully haven't noticed (though a few have).
- The last thing is the team. We help each other review work and bring up potential issues. Jin Yang and Kurtis Beavers also work a lot with the team to make sure new and old designs are in line with our design styles.
The typical process for a design once it has been approved and is ready to be implemented is this:
- Designer(s), engineer(s), and product manager come up with a plan.
- Designers usually do most of the front-end code.
- Designer(s), engineer(s), and product manager QA the new feature together, reporting visual or coding bugs.
- Feature is released to the rest of the teams internally for further testing.
- If more bugs are reported, they're addressed.
- If everything looks good and we're ready, we push it out to production.
I hope that answers your question.
Do you consciously use a mix of VMs (Windows/Mac/Android/iOS/Linux flavors) and browsers as part of this, or does it just fall out naturally (people on your team use different configurations already)?
We all use the same setup for the most part. We all use MacBook Pros or iMacs with a Windows VM with all the major browsers installed locally (on the Mac) and within the VM. For mobile, certain people test using specific hardware. We also ask the team to help out when testing. We haven't had a need to develop Linux or Ubuntu VMs for testing since browsers are fairly standardized at this point except for font rendering.