@react-native-harness/platform-android 1.1.0-rc.4 → 1.1.0
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.
- package/dist/__tests__/adb.test.js +77 -5
- package/dist/adb.d.ts.map +1 -1
- package/dist/adb.js +43 -3
- package/dist/config.d.ts +16 -16
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/src/__tests__/adb.test.ts +133 -28
- package/src/adb.ts +72 -9
- package/dist/assertions.d.ts +0 -5
- package/dist/assertions.d.ts.map +0 -1
- package/dist/assertions.js +0 -6
- package/dist/emulator.d.ts +0 -6
- package/dist/emulator.d.ts.map +0 -1
- package/dist/emulator.js +0 -27
- package/dist/reader.d.ts +0 -6
- package/dist/reader.d.ts.map +0 -1
- package/dist/reader.js +0 -57
- package/dist/types.d.ts +0 -381
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -107
|
@@ -5,6 +5,7 @@ import { SubprocessError } from '@react-native-harness/tools';
|
|
|
5
5
|
import { createAvd, deleteAvd, emulatorProcess, getAppUid, getLogcatTimestamp, getStartAppArgs, hasAvd, installApp, startEmulator, waitForBoot, waitForEmulatorDisconnect, } from '../adb.js';
|
|
6
6
|
import * as tools from '@react-native-harness/tools';
|
|
7
7
|
import * as environment from '../environment.js';
|
|
8
|
+
import * as avdConfig from '../avd-config.js';
|
|
8
9
|
const createAbortError = () => new DOMException('The operation was aborted', 'AbortError');
|
|
9
10
|
const createMockChildProcess = () => {
|
|
10
11
|
const process = new EventEmitter();
|
|
@@ -101,9 +102,13 @@ describe('getStartAppArgs', () => {
|
|
|
101
102
|
]);
|
|
102
103
|
});
|
|
103
104
|
it('creates an AVD and appends config overrides', async () => {
|
|
105
|
+
vi.spyOn(avdConfig, 'readAvdConfig').mockResolvedValue({});
|
|
104
106
|
const spawnSpy = vi
|
|
105
107
|
.spyOn(tools, 'spawn')
|
|
106
|
-
.mockResolvedValue({})
|
|
108
|
+
.mockResolvedValue({})
|
|
109
|
+
.mockResolvedValueOnce({
|
|
110
|
+
stdout: 'id: 0 or "pixel_8"\n Name: Pixel 8\nid: 1 or "pixel_6"\n Name: Pixel 6\n',
|
|
111
|
+
});
|
|
107
112
|
const verifyAndroidEmulatorSdk = vi
|
|
108
113
|
.spyOn(environment, 'ensureAndroidSdkPackages')
|
|
109
114
|
.mockResolvedValue('/tmp/android-sdk');
|
|
@@ -121,17 +126,84 @@ describe('getStartAppArgs', () => {
|
|
|
121
126
|
'platforms;android-35',
|
|
122
127
|
'system-images;android-35;default;x86_64',
|
|
123
128
|
]);
|
|
124
|
-
expect(spawnSpy).toHaveBeenNthCalledWith(1, '
|
|
129
|
+
expect(spawnSpy).toHaveBeenNthCalledWith(1, expect.stringMatching(/avdmanager$/), ['list', 'device']);
|
|
130
|
+
expect(spawnSpy).toHaveBeenNthCalledWith(2, 'bash', [
|
|
125
131
|
'-lc',
|
|
126
|
-
expect.stringContaining('create avd --force --name "Pixel_8_API_35" --package "system-images;android-35;default;x86_64" --device "pixel_8"'),
|
|
132
|
+
expect.stringContaining('create avd --force --name "Pixel_8_API_35" --package "system-images;android-35;default;x86_64" --device "pixel_8" -p '),
|
|
127
133
|
]);
|
|
128
|
-
expect(spawnSpy).toHaveBeenNthCalledWith(
|
|
134
|
+
expect(spawnSpy).toHaveBeenNthCalledWith(3, 'bash', [
|
|
135
|
+
'-lc',
|
|
136
|
+
expect.stringContaining(`'avd.ini.encoding=UTF-8' 'path=`),
|
|
137
|
+
]);
|
|
138
|
+
expect(spawnSpy).toHaveBeenNthCalledWith(4, 'bash', [
|
|
139
|
+
'-lc',
|
|
140
|
+
expect.stringContaining(`'disk.dataPartition.size=1G' 'vm.heapSize=1G' >> `),
|
|
141
|
+
]);
|
|
142
|
+
});
|
|
143
|
+
it('recreates the companion ini file when avdmanager leaves it missing', async () => {
|
|
144
|
+
vi.spyOn(avdConfig, 'readAvdConfig').mockResolvedValue({});
|
|
145
|
+
const spawnSpy = vi
|
|
146
|
+
.spyOn(tools, 'spawn')
|
|
147
|
+
.mockResolvedValue({})
|
|
148
|
+
.mockResolvedValueOnce({
|
|
149
|
+
stdout: 'id: 0 or "pixel_6"\n Name: Pixel 6\n',
|
|
150
|
+
});
|
|
151
|
+
vi.spyOn(environment, 'ensureAndroidSdkPackages').mockResolvedValue('/tmp/android-sdk');
|
|
152
|
+
vi.spyOn(environment, 'getHostAndroidSystemImageArch').mockReturnValue('x86_64');
|
|
153
|
+
await createAvd({
|
|
154
|
+
name: 'Pixel_6_API_35',
|
|
155
|
+
apiLevel: 35,
|
|
156
|
+
profile: 'pixel_6',
|
|
157
|
+
diskSize: '1G',
|
|
158
|
+
heapSize: '1G',
|
|
159
|
+
});
|
|
160
|
+
expect(spawnSpy).toHaveBeenNthCalledWith(3, 'bash', [
|
|
161
|
+
'-lc',
|
|
162
|
+
expect.stringContaining(`'avd.ini.encoding=UTF-8' 'path=`),
|
|
163
|
+
]);
|
|
164
|
+
expect(spawnSpy).toHaveBeenNthCalledWith(4, 'bash', [
|
|
129
165
|
'-lc',
|
|
130
166
|
expect.stringContaining(`'disk.dataPartition.size=1G' 'vm.heapSize=1G' >> `),
|
|
131
167
|
]);
|
|
132
168
|
});
|
|
169
|
+
it('throws an actionable error when the requested AVD profile is unavailable', async () => {
|
|
170
|
+
vi.spyOn(tools, 'spawn').mockResolvedValueOnce({
|
|
171
|
+
stdout: 'id: 0 or "pixel_8"\n Name: Pixel 8\nid: 1 or "pixel_6"\n Name: Pixel 6\n',
|
|
172
|
+
});
|
|
173
|
+
vi.spyOn(environment, 'ensureAndroidSdkPackages').mockResolvedValue('/tmp/android-sdk');
|
|
174
|
+
vi.spyOn(environment, 'getHostAndroidSystemImageArch').mockReturnValue('x86_64');
|
|
175
|
+
await expect(createAvd({
|
|
176
|
+
name: 'Pixel_8_Pro_API_35',
|
|
177
|
+
apiLevel: 35,
|
|
178
|
+
profile: 'pixel_8_pro',
|
|
179
|
+
diskSize: '1G',
|
|
180
|
+
heapSize: '1G',
|
|
181
|
+
})).rejects.toThrow('Android AVD profile "pixel_8_pro" is not available on this machine. Available profiles: pixel_8, pixel_6');
|
|
182
|
+
});
|
|
183
|
+
it('throws a clear error when avdmanager does not create config.ini', async () => {
|
|
184
|
+
vi.spyOn(avdConfig, 'readAvdConfig').mockResolvedValue(null);
|
|
185
|
+
vi.spyOn(tools, 'spawn')
|
|
186
|
+
.mockResolvedValue({})
|
|
187
|
+
.mockResolvedValueOnce({
|
|
188
|
+
stdout: 'id: 0 or "pixel_6"\n Name: Pixel 6\n',
|
|
189
|
+
});
|
|
190
|
+
vi.spyOn(environment, 'ensureAndroidSdkPackages').mockResolvedValue('/tmp/android-sdk');
|
|
191
|
+
vi.spyOn(environment, 'getHostAndroidSystemImageArch').mockReturnValue('x86_64');
|
|
192
|
+
await expect(createAvd({
|
|
193
|
+
name: 'Pixel_6_API_35',
|
|
194
|
+
apiLevel: 35,
|
|
195
|
+
profile: 'pixel_6',
|
|
196
|
+
diskSize: '1G',
|
|
197
|
+
heapSize: '1G',
|
|
198
|
+
})).rejects.toThrow('Android AVD "Pixel_6_API_35" was created, but config.ini was not found at ');
|
|
199
|
+
});
|
|
133
200
|
it('creates an AVD with arm64 system image packages on arm64 hosts', async () => {
|
|
134
|
-
vi.spyOn(
|
|
201
|
+
vi.spyOn(avdConfig, 'readAvdConfig').mockResolvedValue({});
|
|
202
|
+
vi.spyOn(tools, 'spawn')
|
|
203
|
+
.mockResolvedValue({})
|
|
204
|
+
.mockResolvedValueOnce({
|
|
205
|
+
stdout: 'id: 0 or "pixel_8"\n Name: Pixel 8\n',
|
|
206
|
+
});
|
|
135
207
|
const ensureAndroidSdkPackages = vi
|
|
136
208
|
.spyOn(environment, 'ensureAndroidSdkPackages')
|
|
137
209
|
.mockResolvedValue('/tmp/android-sdk');
|
package/dist/adb.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adb.d.ts","sourceRoot":"","sources":["../src/adb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAG/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"adb.d.ts","sourceRoot":"","sources":["../src/adb.ts"],"names":[],"mappings":"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"}
|
package/dist/adb.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { spawn, SubprocessError } from '@react-native-harness/tools';
|
|
2
2
|
import { spawn as nodeSpawn } from 'node:child_process';
|
|
3
3
|
import { access, rm } from 'node:fs/promises';
|
|
4
|
+
import { getAvdConfigPath, getAvdDirectory, readAvdConfig, } from './avd-config.js';
|
|
4
5
|
import { ensureAndroidEmulatorAvailable, ensureAndroidSdkPackages, getAdbBinaryPath, getAndroidSystemImagePackage, getAvdManagerBinaryPath, getEmulatorBinaryPath, getHostAndroidSystemImageArch, getRequiredAndroidSdkPackages, } from './environment.js';
|
|
5
6
|
import { getEmulatorStartupArgs, } from './emulator-startup.js';
|
|
6
7
|
const wait = async (ms) => {
|
|
@@ -24,7 +25,6 @@ const waitWithSignal = async (ms, signal) => {
|
|
|
24
25
|
}
|
|
25
26
|
await Promise.race([wait(ms), waitForAbort(signal)]);
|
|
26
27
|
};
|
|
27
|
-
const getAvdConfigPath = (name) => `${process.env.ANDROID_AVD_HOME ?? `${process.env.HOME}/.android/avd`}/${name}.avd/config.ini`;
|
|
28
28
|
const EMULATOR_STARTUP_OBSERVATION_TIMEOUT_MS = 5000;
|
|
29
29
|
const EMULATOR_OUTPUT_BUFFER_LIMIT = 16 * 1024;
|
|
30
30
|
export const emulatorProcess = {
|
|
@@ -79,6 +79,43 @@ export const getRequiredEmulatorPackages = (apiLevel) => {
|
|
|
79
79
|
export const verifyAndroidEmulatorSdk = async (apiLevel) => {
|
|
80
80
|
await ensureAndroidSdkPackages(getRequiredEmulatorPackages(apiLevel));
|
|
81
81
|
};
|
|
82
|
+
const listAvdProfiles = async () => {
|
|
83
|
+
const { stdout } = await spawn(getAvdManagerBinaryPath(), ['list', 'device']);
|
|
84
|
+
return stdout
|
|
85
|
+
.split('\n')
|
|
86
|
+
.map((line) => line.match(/^id:\s+\d+\s+or\s+"([^"]+)"/i)?.[1]?.trim())
|
|
87
|
+
.filter((profile) => profile != null && profile !== '');
|
|
88
|
+
};
|
|
89
|
+
const ensureAvdProfileAvailable = async (profile) => {
|
|
90
|
+
const availableProfiles = await listAvdProfiles();
|
|
91
|
+
if (availableProfiles.includes(profile)) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const availableProfilesList = availableProfiles.length > 0
|
|
95
|
+
? availableProfiles.join(', ')
|
|
96
|
+
: 'None reported by avdmanager.';
|
|
97
|
+
throw new Error(`Android AVD profile "${profile}" is not available on this machine. Available profiles: ${availableProfilesList}`);
|
|
98
|
+
};
|
|
99
|
+
const ensureAvdConfigExists = async (name) => {
|
|
100
|
+
const configPath = getAvdConfigPath(name);
|
|
101
|
+
if ((await readAvdConfig(name)) == null) {
|
|
102
|
+
throw new Error(`Android AVD "${name}" was created, but config.ini was not found at ${configPath}.`);
|
|
103
|
+
}
|
|
104
|
+
return configPath;
|
|
105
|
+
};
|
|
106
|
+
const getAvdIniPath = (name) => {
|
|
107
|
+
const avdHome = process.env.ANDROID_AVD_HOME ?? `${process.env.HOME}/.android/avd`;
|
|
108
|
+
return `${avdHome}/${name}.ini`;
|
|
109
|
+
};
|
|
110
|
+
const ensureAvdIniExists = async ({ name, apiLevel, }) => {
|
|
111
|
+
const iniPath = getAvdIniPath(name);
|
|
112
|
+
const avdDirectory = getAvdDirectory(name);
|
|
113
|
+
await spawn('bash', [
|
|
114
|
+
'-lc',
|
|
115
|
+
`printf '%s\n%s\n%s\n%s\n' 'avd.ini.encoding=UTF-8' 'path=${avdDirectory}' 'path.rel=avd/${name}.avd' 'target=android-${apiLevel}' > "${iniPath}"`,
|
|
116
|
+
]);
|
|
117
|
+
return iniPath;
|
|
118
|
+
};
|
|
82
119
|
export const getStartAppArgs = (bundleId, activityName, options) => {
|
|
83
120
|
const args = [
|
|
84
121
|
'shell',
|
|
@@ -207,13 +244,16 @@ export const hasAvd = async (name) => {
|
|
|
207
244
|
export const createAvd = async ({ name, apiLevel, profile, diskSize, heapSize, }) => {
|
|
208
245
|
const systemImagePackage = getAndroidSystemImagePackage(apiLevel, getHostAndroidSystemImageArch());
|
|
209
246
|
await verifyAndroidEmulatorSdk(apiLevel);
|
|
247
|
+
await ensureAvdProfileAvailable(profile);
|
|
210
248
|
await spawn('bash', [
|
|
211
249
|
'-lc',
|
|
212
|
-
`printf 'no\n' | "${getAvdManagerBinaryPath()}" create avd --force --name "${name}" --package "${systemImagePackage}" --device "${profile}"`,
|
|
250
|
+
`printf 'no\n' | "${getAvdManagerBinaryPath()}" create avd --force --name "${name}" --package "${systemImagePackage}" --device "${profile}" -p "${getAvdDirectory(name)}"`,
|
|
213
251
|
]);
|
|
252
|
+
await ensureAvdIniExists({ name, apiLevel });
|
|
253
|
+
const configPath = await ensureAvdConfigExists(name);
|
|
214
254
|
await spawn('bash', [
|
|
215
255
|
'-lc',
|
|
216
|
-
`printf '%s\n%s\n' 'disk.dataPartition.size=${diskSize}' 'vm.heapSize=${heapSize}' >> "${
|
|
256
|
+
`printf '%s\n%s\n' 'disk.dataPartition.size=${diskSize}' 'vm.heapSize=${heapSize}' >> "${configPath}"`,
|
|
217
257
|
]);
|
|
218
258
|
};
|
|
219
259
|
export const deleteAvd = async (name) => {
|
package/dist/config.d.ts
CHANGED
|
@@ -68,8 +68,8 @@ export declare const AndroidEmulatorSchema: z.ZodObject<{
|
|
|
68
68
|
} | undefined;
|
|
69
69
|
}>>;
|
|
70
70
|
}, "strip", z.ZodTypeAny, {
|
|
71
|
-
name: string;
|
|
72
71
|
type: "emulator";
|
|
72
|
+
name: string;
|
|
73
73
|
avd?: {
|
|
74
74
|
apiLevel: number;
|
|
75
75
|
profile: string;
|
|
@@ -80,8 +80,8 @@ export declare const AndroidEmulatorSchema: z.ZodObject<{
|
|
|
80
80
|
} | undefined;
|
|
81
81
|
} | undefined;
|
|
82
82
|
}, {
|
|
83
|
-
name: string;
|
|
84
83
|
type: "emulator";
|
|
84
|
+
name: string;
|
|
85
85
|
avd?: {
|
|
86
86
|
apiLevel: number;
|
|
87
87
|
profile: string;
|
|
@@ -97,13 +97,13 @@ export declare const PhysicalAndroidDeviceSchema: z.ZodObject<{
|
|
|
97
97
|
manufacturer: z.ZodString;
|
|
98
98
|
model: z.ZodString;
|
|
99
99
|
}, "strip", z.ZodTypeAny, {
|
|
100
|
+
type: "physical";
|
|
100
101
|
manufacturer: string;
|
|
101
102
|
model: string;
|
|
102
|
-
type: "physical";
|
|
103
103
|
}, {
|
|
104
|
+
type: "physical";
|
|
104
105
|
manufacturer: string;
|
|
105
106
|
model: string;
|
|
106
|
-
type: "physical";
|
|
107
107
|
}>;
|
|
108
108
|
export declare const AndroidDeviceSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
|
|
109
109
|
type: z.ZodLiteral<"emulator">;
|
|
@@ -138,8 +138,8 @@ export declare const AndroidDeviceSchema: z.ZodDiscriminatedUnion<"type", [z.Zod
|
|
|
138
138
|
} | undefined;
|
|
139
139
|
}>>;
|
|
140
140
|
}, "strip", z.ZodTypeAny, {
|
|
141
|
-
name: string;
|
|
142
141
|
type: "emulator";
|
|
142
|
+
name: string;
|
|
143
143
|
avd?: {
|
|
144
144
|
apiLevel: number;
|
|
145
145
|
profile: string;
|
|
@@ -150,8 +150,8 @@ export declare const AndroidDeviceSchema: z.ZodDiscriminatedUnion<"type", [z.Zod
|
|
|
150
150
|
} | undefined;
|
|
151
151
|
} | undefined;
|
|
152
152
|
}, {
|
|
153
|
-
name: string;
|
|
154
153
|
type: "emulator";
|
|
154
|
+
name: string;
|
|
155
155
|
avd?: {
|
|
156
156
|
apiLevel: number;
|
|
157
157
|
profile: string;
|
|
@@ -166,13 +166,13 @@ export declare const AndroidDeviceSchema: z.ZodDiscriminatedUnion<"type", [z.Zod
|
|
|
166
166
|
manufacturer: z.ZodString;
|
|
167
167
|
model: z.ZodString;
|
|
168
168
|
}, "strip", z.ZodTypeAny, {
|
|
169
|
+
type: "physical";
|
|
169
170
|
manufacturer: string;
|
|
170
171
|
model: string;
|
|
171
|
-
type: "physical";
|
|
172
172
|
}, {
|
|
173
|
+
type: "physical";
|
|
173
174
|
manufacturer: string;
|
|
174
175
|
model: string;
|
|
175
|
-
type: "physical";
|
|
176
176
|
}>]>;
|
|
177
177
|
export declare const AndroidPlatformConfigSchema: z.ZodObject<{
|
|
178
178
|
name: z.ZodString;
|
|
@@ -209,8 +209,8 @@ export declare const AndroidPlatformConfigSchema: z.ZodObject<{
|
|
|
209
209
|
} | undefined;
|
|
210
210
|
}>>;
|
|
211
211
|
}, "strip", z.ZodTypeAny, {
|
|
212
|
-
name: string;
|
|
213
212
|
type: "emulator";
|
|
213
|
+
name: string;
|
|
214
214
|
avd?: {
|
|
215
215
|
apiLevel: number;
|
|
216
216
|
profile: string;
|
|
@@ -221,8 +221,8 @@ export declare const AndroidPlatformConfigSchema: z.ZodObject<{
|
|
|
221
221
|
} | undefined;
|
|
222
222
|
} | undefined;
|
|
223
223
|
}, {
|
|
224
|
-
name: string;
|
|
225
224
|
type: "emulator";
|
|
225
|
+
name: string;
|
|
226
226
|
avd?: {
|
|
227
227
|
apiLevel: number;
|
|
228
228
|
profile: string;
|
|
@@ -237,13 +237,13 @@ export declare const AndroidPlatformConfigSchema: z.ZodObject<{
|
|
|
237
237
|
manufacturer: z.ZodString;
|
|
238
238
|
model: z.ZodString;
|
|
239
239
|
}, "strip", z.ZodTypeAny, {
|
|
240
|
+
type: "physical";
|
|
240
241
|
manufacturer: string;
|
|
241
242
|
model: string;
|
|
242
|
-
type: "physical";
|
|
243
243
|
}, {
|
|
244
|
+
type: "physical";
|
|
244
245
|
manufacturer: string;
|
|
245
246
|
model: string;
|
|
246
|
-
type: "physical";
|
|
247
247
|
}>]>;
|
|
248
248
|
bundleId: z.ZodString;
|
|
249
249
|
activityName: z.ZodDefault<z.ZodString>;
|
|
@@ -257,8 +257,8 @@ export declare const AndroidPlatformConfigSchema: z.ZodObject<{
|
|
|
257
257
|
}, "strip", z.ZodTypeAny, {
|
|
258
258
|
name: string;
|
|
259
259
|
device: {
|
|
260
|
-
name: string;
|
|
261
260
|
type: "emulator";
|
|
261
|
+
name: string;
|
|
262
262
|
avd?: {
|
|
263
263
|
apiLevel: number;
|
|
264
264
|
profile: string;
|
|
@@ -269,9 +269,9 @@ export declare const AndroidPlatformConfigSchema: z.ZodObject<{
|
|
|
269
269
|
} | undefined;
|
|
270
270
|
} | undefined;
|
|
271
271
|
} | {
|
|
272
|
+
type: "physical";
|
|
272
273
|
manufacturer: string;
|
|
273
274
|
model: string;
|
|
274
|
-
type: "physical";
|
|
275
275
|
};
|
|
276
276
|
bundleId: string;
|
|
277
277
|
activityName: string;
|
|
@@ -281,8 +281,8 @@ export declare const AndroidPlatformConfigSchema: z.ZodObject<{
|
|
|
281
281
|
}, {
|
|
282
282
|
name: string;
|
|
283
283
|
device: {
|
|
284
|
-
name: string;
|
|
285
284
|
type: "emulator";
|
|
285
|
+
name: string;
|
|
286
286
|
avd?: {
|
|
287
287
|
apiLevel: number;
|
|
288
288
|
profile: string;
|
|
@@ -293,9 +293,9 @@ export declare const AndroidPlatformConfigSchema: z.ZodObject<{
|
|
|
293
293
|
} | undefined;
|
|
294
294
|
} | undefined;
|
|
295
295
|
} | {
|
|
296
|
+
type: "physical";
|
|
296
297
|
manufacturer: string;
|
|
297
298
|
model: string;
|
|
298
|
-
type: "physical";
|
|
299
299
|
};
|
|
300
300
|
bundleId: string;
|
|
301
301
|
activityName?: string | undefined;
|