Developers who create Apps that look at the agent string may be wasting their employers time. This ties in with my first approach point.
Sometimes it is valid to check versions. I used to be a capabilities by version kind of person, but have lately switch paradigm to capabilities by discovery. When you look under the hood, you will for example in the video use case find that the video player will raise events back to the caller to progress the video stream data channel. It will also need to control “furniture” such as a the play mark indicator and handle events to reposition the play head. It’s much simpler to write some code and a timer to check if those events are firing and then tell the user, “Sorry, try a different browser!”, than to guess at which browser versions do or don’t play video.
I’m thus asserting that if you as a tester do follow that trail, and your dev team used a solid approach, you wont need to test hundreds of browsers. You will only need to test that the error message itself is appearing in the correct place, language and so on. Paring it down to only test the one thing is admittedly the hardest part.