Perfecto Cloud Device Lab: Real Devices, Browser Coverage, and Pricing Explained

Perfecto Cloud Device Lab: Real Devices, Browser Coverage, and Pricing Explained

Cloud device testing has become the backbone of modern mobile QA. Running tests against real hardware—without maintaining a physical device lab—is the value proposition every cloud platform pitches. Perfecto (by Perforce) is one of the older players in this space, with an enterprise focus that shapes everything from its device inventory to how it prices access. This post breaks down what Perfecto's cloud lab actually offers, how sessions work, and whether the pricing model fits your team.

What the Perfecto Device Lab Actually Contains

Perfecto maintains a pool of real physical devices hosted in secured data centers. The emphasis is on real—not emulators or simulators, though those are available as lower-cost options for teams that need them.

iOS coverage:

  • iPhone models from iPhone 8 through current flagship (iPhone 15 series at time of writing)
  • iPad Pro, iPad Air, iPad mini across several generations
  • iOS versions typically spanning the last 4–5 major releases (iOS 14 through 18)

Android coverage:

  • Samsung Galaxy S and A series (S21 through S24, A54, A34)
  • Google Pixel 4a through Pixel 8
  • OnePlus, Motorola, Huawei (selected models)
  • Android versions from 10 through 14

The inventory isn't static. Perfecto rotates devices as new hardware releases, and older devices phase out. Enterprise contracts include priority access to new devices, which matters if you're testing cutting-edge OS features on launch day.

Browser coverage: Perfecto's browser testing layer covers:

  • Chrome (stable, beta, canary channels)
  • Firefox ESR and release
  • Safari (via real iOS devices and macOS)
  • Edge (Chromium-based)
  • Mobile Chrome and Mobile Safari on real devices

Unlike some competitors, Perfecto's browser testing is deeply tied to its device infrastructure—mobile browser tests run on real phones, not desktop browser simulations of mobile viewports.

Session Management

Every test in Perfecto runs inside a session. Understanding session mechanics determines how you architect your test infrastructure.

Session Lifecycle

Acquire device → Establish session → Run test commands → Release session

Sessions are acquired via the Perfecto REST API or Appium/Selenium WebDriver protocol. A typical session initialization:

# Using Appium with Perfecto capabilities
desired_caps = {
    "platformName": "Android",
    "deviceName": "Samsung Galaxy S23",
    "platformVersion": "13",
    "perfecto:securityToken": "$PERFECTO_TOKEN",
    "perfecto:host": "yourcompany.perfectomobile.com",
    "app": "PUBLIC:apps/MyApp.apk"
}

Session Concurrency

Perfecto operates on a concurrency model, not per-minute billing (unlike some competitors). Your plan defines how many simultaneous sessions you can run. This is critical for CI/CD pipelines where you want to parallelize test suites.

Plan Tier Concurrent Sessions Device Pool Access
Starter 5 Shared pool
Professional 25 Shared + priority
Enterprise Custom Dedicated + shared

Dedicated devices—where a physical device is reserved exclusively for your organization—are available at the Enterprise tier. This eliminates queue wait times and guarantees device state consistency between runs.

Session Timeouts and Reconnection

Default session timeout is 15 minutes of inactivity. For long-running integration tests, you'll need to configure keepalives:

// Perfecto Appium Java client - keepalive example
driver.executeScript("mobile:handset:info", new HashMap<>());
// Call periodically to prevent session timeout

Sessions that exceed the inactivity threshold are terminated automatically, and any test data in that session is preserved in Perfecto's reporting system.

App Management

Perfecto provides a repository for storing test artifacts:

# Upload APK to Perfecto repository
curl -X POST \
  "https://yourcompany.perfectomobile.com/services/repositories/media/PUBLIC:apps/MyApp.apk" \
  -H "Authorization: Bearer $PERFECTO_TOKEN" \
  -F "content=@./build/MyApp.apk"

Apps in the repository are versioned and accessible across all your sessions. You can reference them by path in your capabilities, eliminating the need to upload artifacts on every test run.

Network Simulation

Real-device testing without network simulation misses a significant class of bugs. Perfecto includes network condition simulation:

// Simulate 3G network conditions
await driver.executeScript("mobile:network:set", {
  "profile": "3G",
  "downlink": "1500",
  "uplink": "400",
  "latency": "150"
});

Available network profiles include 2G, 3G, 4G LTE, WiFi, and custom configurations. This is available on both iOS and Android real devices—a capability that emulators handle imperfectly due to network stack differences.

CI/CD Integration

Perfecto integrates with every major CI/CD system:

Jenkins:

// Jenkinsfile snippet
stage('Mobile Tests') {
    steps {
        perfectoConnect credentialsId: 'perfecto-token',
                        cloudName: 'yourcompany'
        sh 'mvn test -Dperfecto.host=yourcompany.perfectomobile.com'
    }
}

GitHub Actions:

- name: Run Perfecto Tests
  env:
    PERFECTO_TOKEN: ${{ secrets.PERFECTO_TOKEN }}
    PERFECTO_HOST: yourcompany.perfectomobile.com
  run: |
    mvn test -Dperfecto.host=$PERFECTO_HOST \
             -Dperfecto.token=$PERFECTO_TOKEN

Native plugins exist for Jenkins, Bamboo, Azure DevOps, and CircleCI. The GitHub Actions integration requires manual environment variable wiring but works without a dedicated plugin.

Pricing Model

Perfecto doesn't publish list pricing publicly—enterprise SaaS, so everything is custom. Based on publicly available information and community reports:

What You're Buying Model
Concurrent sessions Primary billing unit
Device access Shared pool (included) or dedicated (add-on)
Execution minutes Included in session concurrency bundles
Storage (app repo) Included up to a limit, then per-GB
Support tier SLA varies by contract

Annual contracts are standard. Month-to-month is available for smaller teams but at a significant premium. The pricing model favors teams running high-volume, parallel test suites—if you're running 50 tests serially, you're paying for concurrency you don't use.

Cost comparison signal: Teams consistently report Perfecto pricing 20–40% higher than BrowserStack equivalents for similar concurrency levels, but with additional enterprise features (SSO, audit logs, dedicated CSM) included.

Security and Compliance

For enterprise procurement, Perfecto offers:

  • SOC 2 Type II certification
  • GDPR compliance (EU data residency options)
  • SAML/SSO integration with Okta, Azure AD, Ping Identity
  • Device isolation: sessions are sandboxed; devices are wiped between sessions
  • VPN/tunnel support for testing against internal staging environments

The device wipe between sessions is enforced at the hardware level for iOS (Supervised mode) and via MDM profiles on Android. This matters for regulated industries testing apps that handle PII.

When Perfecto's Device Lab Makes Sense

Perfecto's cloud lab is well-suited for:

  • Enterprise teams with strict security requirements (SSO, audit trails, compliance)
  • Teams needing real devices for precise sensor, camera, or biometric testing
  • High-concurrency CI/CD pipelines where you're running hundreds of parallel test sessions per day
  • Organizations standardizing on Perforce's broader toolchain (Helix Core, Helix QAC)

It's less suited for:

  • Small teams or startups where self-service onboarding and pay-as-you-go pricing matter
  • Teams primarily doing web testing with no mobile component
  • Projects where community resources and free tiers (BrowserStack Automate Free) are sufficient

The device lab is mature, the infrastructure is reliable, and the enterprise support model works for large organizations. The tradeoff is pricing opacity and contract complexity that smaller teams find frustrating.

Read more

Start now free