@devicecloud.dev/dcd 5.5.0-beta.2 → 5.5.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -160,6 +160,10 @@ export declare const cloudCommand: import("citty").CommandDef<{
160
160
  readonly type: "string";
161
161
  readonly description: `[Android only] Android device to run your flow against (options: ${string})`;
162
162
  };
163
+ readonly 'render-engine': {
164
+ readonly type: "string";
165
+ readonly description: "[Android only] Software renderer the emulator boots with (options: lavapipe, swiftshader). Defaults to lavapipe; pick swiftshader if your app fails to render or the device drops out mid-run. Apps shipping the Flutter engine are detected and switched automatically, so this is only needed to override that.";
166
+ };
163
167
  readonly 'device-locale': {
164
168
  readonly type: "string";
165
169
  readonly description: "Locale that will be set to a device, ISO-639-1 code and uppercase ISO-3166-1 code e.g. \"de_DE\" for Germany";
@@ -42,6 +42,7 @@ const DOWNLOAD_OPTIONS = ['ALL', 'FAILED'];
42
42
  const REPORT_OPTIONS = ['allure', 'html', 'html-detailed', 'junit'];
43
43
  const ORIENTATION_OPTIONS = ['0', '90'];
44
44
  const RUNNER_TYPE_OPTIONS = ['default', 'm4', 'm1', 'gpu1', 'cpu1'];
45
+ const RENDER_ENGINE_OPTIONS = ['lavapipe', 'swiftshader'];
45
46
  /**
46
47
  * Primary CLI command for executing tests on DeviceCloud.
47
48
  * Orchestrates the complete test workflow:
@@ -159,6 +160,7 @@ export const cloudCommand = defineCommand({
159
160
  const report = validateEnum(args.report, REPORT_OPTIONS, 'report');
160
161
  let retry = parseIntFlag(args.retry, 'retry');
161
162
  const runnerType = validateEnum(args['runner-type'], RUNNER_TYPE_OPTIONS, 'runner-type') ?? 'default';
163
+ const renderEngine = validateEnum(args['render-engine'], RENDER_ENGINE_OPTIONS, 'render-engine');
162
164
  const showCrosshairs = Boolean(args['show-crosshairs']);
163
165
  const maestroChromeOnboarding = Boolean(args['maestro-chrome-onboarding']);
164
166
  const disableAnimations = Boolean(args['disable-animations']);
@@ -572,6 +574,7 @@ export const cloudCommand = defineCommand({
572
574
  showCrosshairs,
573
575
  maestroChromeOnboarding,
574
576
  disableAnimations,
577
+ renderEngine,
575
578
  });
576
579
  // Device-matrix cost preview: the server prices the exact fan-out (quote
577
580
  // == charge) so the user sees the cell count and estimated cost before the
@@ -10,6 +10,10 @@ export declare const deviceFlags: {
10
10
  readonly type: "string";
11
11
  readonly description: `[Android only] Android device to run your flow against (options: ${string})`;
12
12
  };
13
+ readonly 'render-engine': {
14
+ readonly type: "string";
15
+ readonly description: "[Android only] Software renderer the emulator boots with (options: lavapipe, swiftshader). Defaults to lavapipe; pick swiftshader if your app fails to render or the device drops out mid-run. Apps shipping the Flutter engine are detected and switched automatically, so this is only needed to override that.";
16
+ };
13
17
  readonly 'device-locale': {
14
18
  readonly type: "string";
15
19
  readonly description: "Locale that will be set to a device, ISO-639-1 code and uppercase ISO-3166-1 code e.g. \"de_DE\" for Germany";
@@ -15,6 +15,10 @@ export const deviceFlags = {
15
15
  type: 'string',
16
16
  description: `[Android only] Android device to run your flow against (options: ${androidDevices})`,
17
17
  },
18
+ 'render-engine': {
19
+ type: 'string',
20
+ description: '[Android only] Software renderer the emulator boots with (options: lavapipe, swiftshader). Defaults to lavapipe; pick swiftshader if your app fails to render or the device drops out mid-run. Apps shipping the Flutter engine are detected and switched automatically, so this is only needed to override that.',
21
+ },
18
22
  'device-locale': {
19
23
  type: 'string',
20
24
  description: 'Locale that will be set to a device, ISO-639-1 code and uppercase ISO-3166-1 code e.g. "de_DE" for Germany',
@@ -146,6 +146,10 @@ export declare const flags: {
146
146
  readonly type: "string";
147
147
  readonly description: `[Android only] Android device to run your flow against (options: ${string})`;
148
148
  };
149
+ readonly 'render-engine': {
150
+ readonly type: "string";
151
+ readonly description: "[Android only] Software renderer the emulator boots with (options: lavapipe, swiftshader). Defaults to lavapipe; pick swiftshader if your app fails to render or the device drops out mid-run. Apps shipping the Flutter engine are detected and switched automatically, so this is only needed to override that.";
152
+ };
149
153
  readonly 'device-locale': {
150
154
  readonly type: "string";
151
155
  readonly description: "Locale that will be set to a device, ISO-639-1 code and uppercase ISO-3166-1 code e.g. \"de_DE\" for Germany";
@@ -32,6 +32,12 @@ export interface TestSubmissionConfig {
32
32
  name?: string;
33
33
  orientation?: string;
34
34
  raw?: unknown;
35
+ /**
36
+ * Which emulator software renderer to boot with (Android only). Omitted
37
+ * means the server decides: lavapipe by default, or swiftshader when the
38
+ * binary is detected as shipping the Flutter engine.
39
+ */
40
+ renderEngine?: 'lavapipe' | 'swiftshader';
35
41
  report?: string;
36
42
  retry?: number;
37
43
  runnerType?: string;
@@ -20,7 +20,7 @@ export class TestSubmissionService {
20
20
  * @returns The flow zip buffer, its SHA-256, and the string-encoded fields
21
21
  */
22
22
  async buildTestPayload(config) {
23
- const { apiUrl, appBinaryId, encrypt = false, flowFile, executionPlan, commonRoot, cliVersion, env = [], metadata = [], googlePlay = false, androidApiLevel, androidDevice, androidNoSnapshot, iOSVersion, iOSDevice, name, runnerType, maestroVersion, deviceLocale, orientation, retry, continueOnFailure = true, report, showCrosshairs, maestroChromeOnboarding, raw, disableAnimations, deviceMatrix, debug = false, logger, } = config;
23
+ const { apiUrl, appBinaryId, encrypt = false, flowFile, executionPlan, commonRoot, cliVersion, env = [], metadata = [], googlePlay = false, androidApiLevel, androidDevice, androidNoSnapshot, iOSVersion, iOSDevice, name, runnerType, maestroVersion, deviceLocale, orientation, retry, continueOnFailure = true, renderEngine, report, showCrosshairs, maestroChromeOnboarding, raw, disableAnimations, deviceMatrix, debug = false, logger, } = config;
24
24
  const { allExcludeTags, allIncludeTags, flowMetadata, flowOverrides, flowsToRun: testFileNames, referencedFiles, sequence, workspaceConfig, } = executionPlan;
25
25
  const { flows: sequentialFlows = [] } = sequence ?? {};
26
26
  const envObject = this.parseKeyValuePairs(env);
@@ -131,6 +131,7 @@ export class TestSubmissionService {
131
131
  maestroVersion,
132
132
  orientation,
133
133
  raw: JSON.stringify(raw),
134
+ renderEngine,
134
135
  report,
135
136
  showCrosshairs,
136
137
  maestroChromeOnboarding,
package/package.json CHANGED
@@ -59,7 +59,7 @@
59
59
  "type": "git",
60
60
  "url": "https://devicecloud.dev"
61
61
  },
62
- "version": "5.5.0-beta.2",
62
+ "version": "5.5.0-beta.3",
63
63
  "bugs": {
64
64
  "url": "https://discord.gg/gm3mJwcNw8"
65
65
  },