The Tesults web app is designed for desktop browsers. Sign up and configure your project on a laptop or desktop. Use the iOS app or Android app to view results on the go.

Device farms

Use a cloud-based device farm if you can!

blog-title-image

I once setup and maintained a device farm consisting of 40 Playstation 4 development kits while working at a Sony Interactive Entertainment's London Studio. This enabled automated tests to be run in parallel to speed up test runs and was highly valuable. Maintaining the farm was a big job however and ultimately took up about a significant amount of my time. A GPU related crash caused by a shader change would need me to manually reboot kits rather than rely on the usual programmatic method. Not doing so quickly would potentially impact pending tests. There was a need to update firmware on kits regularly, look into any networking or power issues, swapping out problem kits as well as developing and maintaining allocation and distribution code. In general it was a huge distraction and it ate into development and test automation authoring time.

When possible I recommend using a cloud-based device farm. There are privacy and security reasons why this is sometimes not possible but where sensible the increase in productivity can be massive. Maintaining a device farm internally is a major undertaking, it is especially problematic when there cannot be dedicated team members assigned to the task.

While the video game industry has few options here, most teams writing end-to-end automated tests run them on PCs, Macs, Desktop browsers, mobile browsers and iOS and Android devices. There are a range of options available for these teams including BrowserStack, SauceLabs and AWS Device Farm.

Using a cloud-based device farm means your team is free to concentrate on writing bespoke test automation that no one else can do and should be the focus for most automated test developers. Using a device farm makes parallel scaling easy, and opens up options for running tests on a larger range of devices and browser versions.

Your test execution application can continue to run on either your local servers or on cloud servers and you usually only need to change a small amount of code, mostly whatever setups a device or browser interface, everything else such as Appium or Selenium calls can stay the same. There is also no disruption with respect to continuing to use Tesults for reporting results, files, managing test cases, assigning failing test cases and notifications.



By Ajeet Dhaliwal

Test automation reporting and failure intelligence

Consolidated test reporting for engineering teams. Store, track, and understand test results across every run and system.

Latest Posts

How to Group Failing Tests by Root Cause
How to Group Failing Tests by Root Cause
Why a flat list of failures is the wrong thing to triage, and how grouping failures by their underlying cause turns twenty red tests into a few real problems
How to Share Test Results With Your Team
How to Share Test Results With Your Team
Why screenshotting results into chat does not scale, and how to give a whole team live access to test results with roles, notifications, and one shared dashboard
How to Detect Test Regressions Between Builds
How to Detect Test Regressions Between Builds
How to find exactly which tests newly failed from one build to the next, instead of comparing two runs by eye, and tell a real regression from a flake
Why Do Flaky Tests Only Fail in CI
Why Do Flaky Tests Only Fail in CI
The CI conditions that turn a test flaky when it never flakes locally, and how to confirm a CI-only failure is flakiness rather than a real bug
Why Do Tests Pass on Retry but Fail the First Time
Why Do Tests Pass on Retry but Fail the First Time
What a test passing on retry is really telling you, why automatic retries hide flakiness rather than fix it, and how to see the pattern across runs
Why Cypress Tests Pass Locally but Fail in CI
Why Cypress Tests Pass Locally but Fail in CI
The environment differences that cause Cypress failures in CI, and how to tell a real bug from an environment flake
How to Track Test Pass Rate Over Time
How to Track Test Pass Rate Over Time
Why a single run cannot tell you if your test suite is getting healthier or worse, and how to track pass rate as a trend across runs so you can see the direction
How to Report WebdriverIO Test Results to a Dashboard
How to Report WebdriverIO Test Results to a Dashboard
Send WebdriverIO results somewhere durable and team-visible using the Tesults service, with the wdio.conf.js setup, enhanced reporting, and parallel run consolidation
How to Report Cypress Test Results to a Dashboard
How to Report Cypress Test Results to a Dashboard
Send Cypress results somewhere durable and team-visible using the Cypress Module API, with screenshots and videos attached and runs consolidated across CI
Why Playwright Tests Pass Locally but Fail in CI
Why Playwright Tests Pass Locally but Fail in CI
The real reasons Playwright tests go green on your machine and red in CI, how to debug each one, and how to tell a genuine failure from an environment flake
How to Detect and Handle Flaky Tests
How to Detect and Handle Flaky Tests
What makes a test flaky, how to detect flaky tests automatically instead of by memory, and how to handle them without disabling coverage
How to Report Vitest Test Results to a Dashboard
How to Report Vitest Test Results to a Dashboard
Send Vitest results somewhere durable and team-visible, with the setup details specific to Vitest, so multiple test jobs consolidate into one history you can act on