CrossBrowserTesting offers a cloud-based manual and automated browser test platform based on virtual machines running on real physical devices. It appears to be the only provider offering manual testing on physical iOS and Android (Nexus 5, 7, 9 and Galaxy S3, S4, S5 and Tab2) devices. Automated testing works uses Selenium and works on Android (physical devices) and iOS (simulators). Other features include recording videos, capturing network traffic, and taking screenshots.
Ranked in these QuestionsQuestion Ranking
Pro Automate browser *extension* testing
Can automate tests for Chrome and Firefox extensions using Selenium.
Pro Free manual testing for CodePen projects
Put your code on CodePen and you can manually test it with CBT from the "Choose a View menu".
Pro Uses real browsers, not emulators
CBT uses real, physical devices for live (manual tests). Check the pictures on their blog post.
Automated tests use real Android devices (Nexus, Galaxy) and iPad and iPhone simulators.
Pro Community / forum
Only 350 users, likely because the Forum isn't linked prominently in the top nav menu and because it uses a crappy engine.
Pro Record videos
Record videos of a URL in the browser/OS combination manually or automatically via the API.
Pro Screenshot comparisons
Automated screenshot comparisons report differences in layout. Manual side-by-side comparison also available.
Pro Selenium testing
Selenium automation for mobile and desktop browsers, using scripts easily recoded with Selenium Builder.
Con Slow and unstable
Con Not a sponsor of the Selenium project
Con Can't change physical iOS device orientation
All iOS devices are physical and arranged in portrait mode. Emulators/simulators and Android devices can change their orientation via a button or keyboard combination.
Con Very slightly misleading Selenium examples / documentation
The Selenium WebDriver script examples, by default, don't explain what to put in
os_api_name. This leads to an
UnknownError: Invalid browser_api_name / os_api_name combination specified error, if you just copy and paste the script.
Instead, first select an OS and browser combination, and the script wizard will fill in the '?'s for you.
Con Typos in the documentation