REST Resource: testEnvironmentCatalog

Resource: TestEnvironmentCatalog

A description of a test environment.

JSON representation
{

  // Union field environment_catalog can be only one of the following:
  "androidDeviceCatalog": {
    object (AndroidDeviceCatalog)
  },
  "iosDeviceCatalog": {
    object (IosDeviceCatalog)
  },
  "networkConfigurationCatalog": {
    object (NetworkConfigurationCatalog)
  },
  "softwareCatalog": {
    object (ProvidedSoftwareCatalog)
  },
  "deviceIpBlockCatalog": {
    object (DeviceIpBlockCatalog)
  }
  // End of list of possible types for union field environment_catalog.
}
Fields
Union field environment_catalog. Output only. environment_catalog can be only one of the following:
androidDeviceCatalog

object (AndroidDeviceCatalog)

Supported Android devices.

iosDeviceCatalog

object (IosDeviceCatalog)

Supported iOS devices.

networkConfigurationCatalog

object (NetworkConfigurationCatalog)

Supported network configurations.

softwareCatalog

object (ProvidedSoftwareCatalog)

The software test environment provided by TestExecutionService.

deviceIpBlockCatalog

object (DeviceIpBlockCatalog)

The IP blocks used by devices in the test environment.

AndroidDeviceCatalog

The currently supported Android devices.

JSON representation
{
  "models": [
    {
      object (AndroidModel)
    }
  ],
  "versions": [
    {
      object (AndroidVersion)
    }
  ],
  "runtimeConfiguration": {
    object (AndroidRuntimeConfiguration)
  }
}
Fields
models[]

object (AndroidModel)

The set of supported Android device models.

versions[]

object (AndroidVersion)

The set of supported Android OS versions.

runtimeConfiguration

object (AndroidRuntimeConfiguration)

The set of supported runtime configurations.

AndroidModel

A description of an Android device tests may be run on.

JSON representation
{
  "id": string,
  "name": string,
  "manufacturer": string,
  "brand": string,
  "codename": string,
  "form": enum (DeviceForm),
  "formFactor": enum (DeviceFormFactor),
  "perVersionInfo": [
    {
      object (PerAndroidVersionInfo)
    }
  ],
  "screenX": integer,
  "screenY": integer,
  "screenDensity": integer,
  "lowFpsVideoRecording": boolean,
  "supportedVersionIds": [
    string
  ],
  "supportedAbis": [
    string
  ],
  "tags": [
    string
  ],
  "thumbnailUrl": string
}
Fields
id

string

The unique opaque id for this model. Use this for invoking the TestExecutionService.

name

string

The human-readable marketing name for this device model. Examples: "Nexus 5", "Galaxy S5".

manufacturer

string

The manufacturer of this device.

brand

string

The company that this device is branded with. Example: "Google", "Samsung".

codename

string

The name of the industrial design. This corresponds to android.os.Build.DEVICE.

form

enum (DeviceForm)

Whether this device is virtual or physical.

formFactor

enum (DeviceFormFactor)

Whether this device is a phone, tablet, wearable, etc.

perVersionInfo[]

object (PerAndroidVersionInfo)

Version-specific information of an Android model.

screenX

integer

Screen size in the horizontal (X) dimension measured in pixels.

screenY

integer

Screen size in the vertical (Y) dimension measured in pixels.

screenDensity

integer

Screen density in DPI. This corresponds to ro.sf.lcd_density

lowFpsVideoRecording

boolean

True if and only if tests with this model are recorded by stitching together screenshots. See use_low_spec_video_recording in device config.

supportedVersionIds[]

string

The set of Android versions this device supports.

supportedAbis[]

string

The list of supported ABIs for this device. This corresponds to either android.os.Build.SUPPORTED_ABIS (for API level 21 and above) or android.os.Build.CPU_ABI/CPU_ABI2. The most preferred ABI is the first element in the list.

Elements are optionally prefixed by "versionId:" (where versionId is the id of an AndroidVersion), denoting an ABI that is supported only on a particular version.

tags[]

string

Tags for this dimension. Examples: "default", "preview", "deprecated".

thumbnailUrl

string

URL of a thumbnail image (photo) of the device.

DeviceForm

Whether the device is physical or virtual.

Enums
DEVICE_FORM_UNSPECIFIED Do not use. For proto versioning only.
VIRTUAL Android virtual device using Compute Engine native virtualization. Firebase Test Lab only.
PHYSICAL Actual hardware.
EMULATOR Android virtual device using emulator in nested virtualization. Equivalent to Android Studio.

DeviceFormFactor

The form factor of a device.

Enums
DEVICE_FORM_FACTOR_UNSPECIFIED Do not use. For proto versioning only.
PHONE This device has the shape of a phone.
TABLET This device has the shape of a tablet.
WEARABLE This device has the shape of a watch or other wearable.

PerAndroidVersionInfo

A version-specific information of an Android model.

JSON representation
{
  "versionId": string,
  "deviceCapacity": enum (DeviceCapacity),
  "interactiveDeviceAvailabilityEstimate": string,
  "directAccessVersionInfo": {
    object (DirectAccessVersionInfo)
  }
}
Fields
versionId

string

An Android version.

deviceCapacity

enum (DeviceCapacity)

The number of online devices for an Android version.

interactiveDeviceAvailabilityEstimate

string (Duration format)

Output only. The estimated wait time for a single interactive device session using Direct Access.

A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".

directAccessVersionInfo

object (DirectAccessVersionInfo)

Output only. Identifies supported clients for DirectAccess for this Android version.

DeviceCapacity

Capacity based on the number of online devices in the lab.

Important: device capacity does not directly reflect the length of the queue at a moment in time. It does not take into account current traffic or the state of the devices.

For physical devices, the number is the average of online devices in the last 30 days.

Enums
DEVICE_CAPACITY_UNSPECIFIED The value of device capacity is unknown or unset.
DEVICE_CAPACITY_HIGH

Devices that are high in capacity (The lab has a large number of these devices).

These devices are generally suggested for running a large number of simultaneous tests (e.g. more than 100 tests).

Please note that high capacity devices do not guarantee short wait times due to several factors: 1. Traffic (how heavily they are used at any given moment) 2. High capacity devices are prioritized for certain usages, which may cause user tests to be slower than selecting other similar device types.

DEVICE_CAPACITY_MEDIUM

Devices that are medium in capacity (The lab has a decent number of these devices, though not as many as high capacity devices).

These devices are suitable for fewer test runs (e.g. fewer than 100 tests) and only for low shard counts (e.g. less than 10 shards).

DEVICE_CAPACITY_LOW

Devices that are low in capacity (The lab has a small number of these devices).

These devices may be used if users need to test on this specific device model and version. Please note that due to low capacity, the tests may take much longer to finish, especially if a large number of tests are invoked at once. These devices are not suitable for test sharding.

DEVICE_CAPACITY_NONE

Devices that are completely missing from the lab.

These devices are unavailable either temporarily or permanently and should not be requested. If the device is also marked as deprecated, this state is very likely permanent.

DirectAccessVersionInfo

Denotes whether Direct Access is supported, and by which client versions.

DirectAccessService is currently available as a preview to select developers. You can register today on behalf of you and your team at https://developer.android.com/studio/preview/android-device-streaming

JSON representation
{
  "directAccessSupported": boolean,
  "minimumAndroidStudioVersion": string
}
Fields
directAccessSupported

boolean

Whether direct access is supported at all. Clients are expected to filter down the device list to only android models and versions which support Direct Access when that is the user intent.

minimumAndroidStudioVersion

string

Output only. Indicates client-device compatibility, where a device is known to work only with certain workarounds implemented in the Android Studio client. Expected format "major.minor.micro.patch", e.g. "5921.22.2211.8881706".

AndroidVersion

A version of the Android OS.

JSON representation
{
  "id": string,
  "versionString": string,
  "apiLevel": integer,
  "codeName": string,
  "releaseDate": {
    object (Date)
  },
  "distribution": {
    object (Distribution)
  },
  "tags": [
    string
  ]
}
Fields
id

string

An opaque id for this Android version. Use this id to invoke the TestExecutionService.

versionString

string

A string representing this version of the Android OS. Examples: "4.3", "4.4".

apiLevel

integer

The API level for this Android version. Examples: 18, 19.

codeName

string

The code name for this Android version. Examples: "JellyBean", "KitKat".

releaseDate

object (Date)

The date this Android version became available in the market.

distribution

object (Distribution)

Market share for this version.

tags[]

string

Tags for this dimension. Examples: "default", "preview", "deprecated".

Date

Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following:

  • A full date, with non-zero year, month, and day values.
  • A month and day, with a zero year (for example, an anniversary).
  • A year on its own, with a zero month and a zero day.
  • A year and month, with a zero day (for example, a credit card expiration date).

Related types:

JSON representation
{
  "year": integer,
  "month": integer,
  "day": integer
}
Fields
year

integer

Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.

month

integer

Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.

day

integer

Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.

Distribution

Data about the relative number of devices running a given configuration of the Android platform.

JSON representation
{
  "measurementTime": string,
  "marketShare": number
}
Fields
measurementTime

string (Timestamp format)

Output only. The time this distribution was measured.

A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".

marketShare

number

Output only. The estimated fraction (0-1) of the total market with this configuration.

AndroidRuntimeConfiguration

Android configuration that can be selected at the time a test is run.

JSON representation
{
  "locales": [
    {
      object (Locale)
    }
  ],
  "orientations": [
    {
      object (Orientation)
    }
  ]
}
Fields
locales[]

object (Locale)

The set of available locales.

orientations[]

object (Orientation)

The set of available orientations.

Locale

A location/region designation for language.

JSON representation
{
  "id": string,
  "name": string,
  "region": string,
  "tags": [
    string
  ]
}
Fields
id

string

The id for this locale. Example: "en_US".

name

string

A human-friendly name for this language/locale. Example: "English".

region

string

A human-friendly string representing the region for this locale. Example: "United States". Not present for every locale.

tags[]

string

Tags for this dimension. Example: "default".

Orientation

Screen orientation of the device.

JSON representation
{
  "id": string,
  "name": string,
  "tags": [
    string
  ]
}
Fields
id

string

The id for this orientation. Example: "portrait".

name

string

A human-friendly name for this orientation. Example: "portrait".

tags[]

string

Tags for this dimension. Example: "default".

IosDeviceCatalog

The currently supported iOS devices.

JSON representation
{
  "models": [
    {
      object (IosModel)
    }
  ],
  "versions": [
    {
      object (IosVersion)
    }
  ],
  "xcodeVersions": [
    {
      object (XcodeVersion)
    }
  ],
  "runtimeConfiguration": {
    object (IosRuntimeConfiguration)
  }
}
Fields
models[]

object (IosModel)

The set of supported iOS device models.

versions[]

object (IosVersion)

The set of supported iOS software versions.

xcodeVersions[]

object (XcodeVersion)

The set of supported Xcode versions.

runtimeConfiguration

object (IosRuntimeConfiguration)

The set of supported runtime configurations.

IosModel

A description of an iOS device tests may be run on.

JSON representation
{
  "id": string,
  "name": string,
  "supportedVersionIds": [
    string
  ],
  "tags": [
    string
  ],
  "deviceCapabilities": [
    string
  ],
  "screenX": integer,
  "screenY": integer,
  "screenDensity": integer,
  "formFactor": enum (DeviceFormFactor),
  "perVersionInfo": [
    {
      object (PerIosVersionInfo)
    }
  ]
}
Fields
id

string

The unique opaque id for this model. Use this for invoking the TestExecutionService.

name

string

The human-readable name for this device model. Examples: "iPhone 4s", "iPad Mini 2".

supportedVersionIds[]

string

The set of iOS major software versions this device supports.

tags[]

string

Tags for this dimension. Examples: "default", "preview", "deprecated".

deviceCapabilities[]

string

Device capabilities. Copied from https://developer.apple.com/library/archive/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/DeviceCompatibilityMatrix/DeviceCompatibilityMatrix.html

screenX

integer

Screen size in the horizontal (X) dimension measured in pixels.

screenY

integer

Screen size in the vertical (Y) dimension measured in pixels.

screenDensity

integer

Screen density in DPI.

formFactor

enum (DeviceFormFactor)

Whether this device is a phone, tablet, wearable, etc.

perVersionInfo[]

object (PerIosVersionInfo)

Version-specific information of an iOS model.

PerIosVersionInfo

A version-specific information of an iOS model.

JSON representation
{
  "versionId": string,
  "deviceCapacity": enum (DeviceCapacity)
}
Fields
versionId

string

An iOS version.

deviceCapacity

enum (DeviceCapacity)

The number of online devices for an iOS version.

IosVersion

An iOS version.

JSON representation
{
  "id": string,
  "majorVersion": integer,
  "minorVersion": integer,
  "tags": [
    string
  ],
  "supportedXcodeVersionIds": [
    string
  ]
}
Fields
id

string

An opaque id for this iOS version. Use this id to invoke the TestExecutionService.

majorVersion

integer

An integer representing the major iOS version. Examples: "8", "9".

minorVersion

integer

An integer representing the minor iOS version. Examples: "1", "2".

tags[]

string

Tags for this dimension. Examples: "default", "preview", "deprecated".

supportedXcodeVersionIds[]

string

The available Xcode versions for this version.

XcodeVersion

An Xcode version that an iOS version is compatible with.

JSON representation
{
  "version": string,
  "tags": [
    string
  ]
}
Fields
version

string

The id for this version. Example: "9.2".

tags[]

string

Tags for this Xcode version. Example: "default".

IosRuntimeConfiguration

iOS configuration that can be selected at the time a test is run.

JSON representation
{
  "locales": [
    {
      object (Locale)
    }
  ],
  "orientations": [
    {
      object (Orientation)
    }
  ]
}
Fields
locales[]

object (Locale)

The set of available locales.

orientations[]

object (Orientation)

The set of available orientations.

NetworkConfigurationCatalog

JSON representation
{
  "configurations": [
    {
      object (NetworkConfiguration)
    }
  ]
}
Fields
configurations[]

object (NetworkConfiguration)

NetworkConfiguration

JSON representation
{
  "id": string,
  "upRule": {
    object (TrafficRule)
  },
  "downRule": {
    object (TrafficRule)
  }
}
Fields
id

string

The unique opaque id for this network traffic configuration.

upRule

object (TrafficRule)

The emulation rule applying to the upload traffic.

downRule

object (TrafficRule)

The emulation rule applying to the download traffic.

TrafficRule

Network emulation parameters.

JSON representation
{
  "delay": string,
  "packetLossRatio": number,
  "packetDuplicationRatio": number,
  "bandwidth": number,
  "burst": number
}
Fields
delay

string (Duration format)

Packet delay, must be >= 0.

A duration in seconds with up to nine fractional digits, ending with 's'. Example: "3.5s".

packetLossRatio

number

Packet loss ratio (0.0 - 1.0).

packetDuplicationRatio

number

Packet duplication ratio (0.0 - 1.0).

bandwidth

number

Bandwidth in kbits/second.

burst

number

Burst size in kbits.

ProvidedSoftwareCatalog

The currently provided software environment on the devices under test.

JSON representation
{
  "orchestratorVersion": string,
  "androidxOrchestratorVersion": string
}
Fields
orchestratorVersion
(deprecated)

string

Deprecated: Use AndroidX Test Orchestrator going forward.

A string representing the current version of Android Test Orchestrator that is used in the environment. The package is available at https://maven.google.com/web/index.html#com.android.support.test:orchestrator.

androidxOrchestratorVersion

string

A string representing the current version of AndroidX Test Orchestrator that is used in the environment. The package is available at https://maven.google.com/web/index.html#androidx.test:orchestrator.

DeviceIpBlockCatalog

List of IP blocks used by the Firebase Test Lab

JSON representation
{
  "ipBlocks": [
    {
      object (DeviceIpBlock)
    }
  ]
}
Fields
ipBlocks[]

object (DeviceIpBlock)

The device IP blocks used by Firebase Test Lab

DeviceIpBlock

A single device IP block

JSON representation
{
  "block": string,
  "form": enum (DeviceForm),
  "addedDate": {
    object (Date)
  }
}
Fields
block

string

An IP address block in CIDR notation eg: 34.68.194.64/29

form

enum (DeviceForm)

Whether this block is used by physical or virtual devices

addedDate

object (Date)

The date this block was added to Firebase Test Lab

Methods

get

Gets the catalog of supported test environments.