@react-native-harness/platform-android 1.4.0-rc.1 → 1.4.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-wait.test.d.ts +2 -0
- package/dist/__tests__/adb-wait.test.d.ts.map +1 -0
- package/dist/__tests__/adb-wait.test.js +69 -0
- package/dist/__tests__/app-session.test.d.ts +2 -0
- package/dist/__tests__/app-session.test.d.ts.map +1 -0
- package/dist/__tests__/app-session.test.js +57 -0
- package/dist/__tests__/avd-config.test.js +58 -0
- package/dist/__tests__/emulator-startup.test.js +30 -3
- package/dist/__tests__/instance.test.js +10 -4
- package/dist/adb.d.ts +3 -1
- package/dist/adb.d.ts.map +1 -1
- package/dist/adb.js +30 -21
- package/dist/app-session.d.ts +11 -2
- package/dist/app-session.d.ts.map +1 -1
- package/dist/app-session.js +17 -12
- package/dist/avd-config.d.ts +1 -0
- package/dist/avd-config.d.ts.map +1 -1
- package/dist/avd-config.js +11 -0
- package/dist/emulator-startup.d.ts +23 -0
- package/dist/emulator-startup.d.ts.map +1 -1
- package/dist/emulator-startup.js +58 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/instance.d.ts.map +1 -1
- package/dist/instance.js +21 -15
- package/dist/runner.d.ts +2 -2
- package/dist/runner.d.ts.map +1 -1
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/src/__tests__/adb-wait.test.ts +95 -0
- package/src/__tests__/app-session.test.ts +76 -0
- package/src/__tests__/avd-config.test.ts +70 -0
- package/src/__tests__/emulator-startup.test.ts +53 -6
- package/src/__tests__/instance.test.ts +107 -108
- package/src/adb.ts +72 -65
- package/src/app-session.ts +28 -12
- package/src/avd-config.ts +17 -0
- package/src/emulator-startup.ts +74 -0
- package/src/index.ts +1 -0
- package/src/instance.ts +30 -16
- package/src/runner.ts +5 -9
|
@@ -12,9 +12,13 @@ import * as adb from '../adb.js';
|
|
|
12
12
|
import * as avdConfig from '../avd-config.js';
|
|
13
13
|
import * as sharedPrefs from '../shared-prefs.js';
|
|
14
14
|
import { HarnessAppPathError, HarnessEmulatorConfigError } from '../errors.js';
|
|
15
|
+
import * as emulatorStartup from '../emulator-startup.js';
|
|
16
|
+
const { getEmulatorCpuCores } = emulatorStartup;
|
|
15
17
|
|
|
16
18
|
const createLogcatProcess = (lines: string[] = []): Subprocess => {
|
|
17
|
-
|
|
19
|
+
// Mirrors nano-spawn's real Subprocess, which is both a Promise and an
|
|
20
|
+
// async iterable, since app-session.ts relies on it being thenable.
|
|
21
|
+
const process = Object.assign(Promise.resolve(undefined), {
|
|
18
22
|
nodeChildProcess: Promise.resolve({
|
|
19
23
|
kill: vi.fn(),
|
|
20
24
|
}),
|
|
@@ -23,7 +27,7 @@ const createLogcatProcess = (lines: string[] = []): Subprocess => {
|
|
|
23
27
|
yield line;
|
|
24
28
|
}
|
|
25
29
|
},
|
|
26
|
-
};
|
|
30
|
+
});
|
|
27
31
|
|
|
28
32
|
return process as unknown as Subprocess;
|
|
29
33
|
};
|
|
@@ -46,15 +50,19 @@ describe('Android platform instance', () => {
|
|
|
46
50
|
vi.useRealTimers();
|
|
47
51
|
vi.spyOn(
|
|
48
52
|
await import('../environment.js'),
|
|
49
|
-
'ensureAndroidEmulatorAvailable'
|
|
53
|
+
'ensureAndroidEmulatorAvailable'
|
|
50
54
|
).mockResolvedValue('/tmp/android-sdk');
|
|
55
|
+
vi.spyOn(
|
|
56
|
+
emulatorStartup,
|
|
57
|
+
'warnIfEmulatorAccelerationUnavailable'
|
|
58
|
+
).mockResolvedValue(undefined);
|
|
51
59
|
});
|
|
52
60
|
|
|
53
61
|
it('reuses a running emulator and does not shut it down on dispose', async () => {
|
|
54
62
|
const ensureAndroidEmulatorEnvironment = vi
|
|
55
63
|
.spyOn(
|
|
56
64
|
await import('../environment.js'),
|
|
57
|
-
'ensureAndroidEmulatorEnvironment'
|
|
65
|
+
'ensureAndroidEmulatorEnvironment'
|
|
58
66
|
)
|
|
59
67
|
.mockResolvedValue('/tmp/android-sdk');
|
|
60
68
|
vi.spyOn(adb, 'getDeviceIds').mockResolvedValue(['emulator-5554']);
|
|
@@ -64,14 +72,12 @@ describe('Android platform instance', () => {
|
|
|
64
72
|
vi.spyOn(adb, 'reversePort').mockResolvedValue(undefined);
|
|
65
73
|
vi.spyOn(adb, 'setHideErrorDialogs').mockResolvedValue(undefined);
|
|
66
74
|
vi.spyOn(adb, 'getAppUid').mockResolvedValue(10234);
|
|
67
|
-
vi.spyOn(adb, 'getLogcatTimestamp').mockResolvedValue(
|
|
68
|
-
'01-01 00:00:00.000',
|
|
69
|
-
);
|
|
75
|
+
vi.spyOn(adb, 'getLogcatTimestamp').mockResolvedValue('01-01 00:00:00.000');
|
|
70
76
|
vi.spyOn(sharedPrefs, 'applyHarnessDebugHttpHost').mockResolvedValue(
|
|
71
|
-
undefined
|
|
77
|
+
undefined
|
|
72
78
|
);
|
|
73
79
|
vi.spyOn(sharedPrefs, 'clearHarnessDebugHttpHost').mockResolvedValue(
|
|
74
|
-
undefined
|
|
80
|
+
undefined
|
|
75
81
|
);
|
|
76
82
|
vi.spyOn(adb, 'stopApp').mockResolvedValue(undefined);
|
|
77
83
|
const stopEmulator = vi.spyOn(adb, 'stopEmulator').mockResolvedValue();
|
|
@@ -93,7 +99,7 @@ describe('Android platform instance', () => {
|
|
|
93
99
|
activityName: '.MainActivity',
|
|
94
100
|
},
|
|
95
101
|
harnessConfig,
|
|
96
|
-
init
|
|
102
|
+
init
|
|
97
103
|
);
|
|
98
104
|
|
|
99
105
|
await instance.dispose();
|
|
@@ -105,7 +111,7 @@ describe('Android platform instance', () => {
|
|
|
105
111
|
it('creates and boots an emulator when missing and shuts it down on dispose', async () => {
|
|
106
112
|
vi.spyOn(
|
|
107
113
|
await import('../environment.js'),
|
|
108
|
-
'ensureAndroidEmulatorEnvironment'
|
|
114
|
+
'ensureAndroidEmulatorEnvironment'
|
|
109
115
|
).mockResolvedValue('/tmp/android-sdk');
|
|
110
116
|
vi.spyOn(adb, 'getDeviceIds').mockResolvedValue([]);
|
|
111
117
|
vi.spyOn(adb, 'hasAvd').mockResolvedValue(false);
|
|
@@ -118,14 +124,12 @@ describe('Android platform instance', () => {
|
|
|
118
124
|
vi.spyOn(adb, 'reversePort').mockResolvedValue(undefined);
|
|
119
125
|
vi.spyOn(adb, 'setHideErrorDialogs').mockResolvedValue(undefined);
|
|
120
126
|
vi.spyOn(adb, 'getAppUid').mockResolvedValue(10234);
|
|
121
|
-
vi.spyOn(adb, 'getLogcatTimestamp').mockResolvedValue(
|
|
122
|
-
'01-01 00:00:00.000',
|
|
123
|
-
);
|
|
127
|
+
vi.spyOn(adb, 'getLogcatTimestamp').mockResolvedValue('01-01 00:00:00.000');
|
|
124
128
|
vi.spyOn(sharedPrefs, 'applyHarnessDebugHttpHost').mockResolvedValue(
|
|
125
|
-
undefined
|
|
129
|
+
undefined
|
|
126
130
|
);
|
|
127
131
|
vi.spyOn(sharedPrefs, 'clearHarnessDebugHttpHost').mockResolvedValue(
|
|
128
|
-
undefined
|
|
132
|
+
undefined
|
|
129
133
|
);
|
|
130
134
|
vi.spyOn(adb, 'stopApp').mockResolvedValue(undefined);
|
|
131
135
|
const stopEmulator = vi.spyOn(adb, 'stopEmulator').mockResolvedValue();
|
|
@@ -147,7 +151,7 @@ describe('Android platform instance', () => {
|
|
|
147
151
|
activityName: '.MainActivity',
|
|
148
152
|
},
|
|
149
153
|
harnessConfig,
|
|
150
|
-
init
|
|
154
|
+
init
|
|
151
155
|
);
|
|
152
156
|
|
|
153
157
|
expect(createAvd).toHaveBeenCalledWith({
|
|
@@ -168,7 +172,7 @@ describe('Android platform instance', () => {
|
|
|
168
172
|
const ensureAndroidEmulatorEnvironment = vi
|
|
169
173
|
.spyOn(
|
|
170
174
|
await import('../environment.js'),
|
|
171
|
-
'ensureAndroidEmulatorEnvironment'
|
|
175
|
+
'ensureAndroidEmulatorEnvironment'
|
|
172
176
|
)
|
|
173
177
|
.mockResolvedValue('/tmp/android-sdk');
|
|
174
178
|
vi.spyOn(adb, 'getDeviceIds').mockResolvedValue([]);
|
|
@@ -182,11 +186,9 @@ describe('Android platform instance', () => {
|
|
|
182
186
|
vi.spyOn(adb, 'reversePort').mockResolvedValue(undefined);
|
|
183
187
|
vi.spyOn(adb, 'setHideErrorDialogs').mockResolvedValue(undefined);
|
|
184
188
|
vi.spyOn(adb, 'getAppUid').mockResolvedValue(10234);
|
|
185
|
-
vi.spyOn(adb, 'getLogcatTimestamp').mockResolvedValue(
|
|
186
|
-
'01-01 00:00:00.000',
|
|
187
|
-
);
|
|
189
|
+
vi.spyOn(adb, 'getLogcatTimestamp').mockResolvedValue('01-01 00:00:00.000');
|
|
188
190
|
vi.spyOn(sharedPrefs, 'applyHarnessDebugHttpHost').mockResolvedValue(
|
|
189
|
-
undefined
|
|
191
|
+
undefined
|
|
190
192
|
);
|
|
191
193
|
|
|
192
194
|
await expect(
|
|
@@ -207,8 +209,8 @@ describe('Android platform instance', () => {
|
|
|
207
209
|
activityName: '.MainActivity',
|
|
208
210
|
},
|
|
209
211
|
harnessConfig,
|
|
210
|
-
init
|
|
211
|
-
)
|
|
212
|
+
init
|
|
213
|
+
)
|
|
212
214
|
).resolves.toBeDefined();
|
|
213
215
|
|
|
214
216
|
expect(ensureAndroidEmulatorEnvironment).toHaveBeenCalledWith(35);
|
|
@@ -220,11 +222,11 @@ describe('Android platform instance', () => {
|
|
|
220
222
|
vi.stubEnv('HARNESS_AVD_CACHING', 'true');
|
|
221
223
|
vi.spyOn(
|
|
222
224
|
await import('../environment.js'),
|
|
223
|
-
'getHostAndroidSystemImageArch'
|
|
225
|
+
'getHostAndroidSystemImageArch'
|
|
224
226
|
).mockReturnValue('arm64-v8a');
|
|
225
227
|
vi.spyOn(
|
|
226
228
|
await import('../environment.js'),
|
|
227
|
-
'ensureAndroidEmulatorEnvironment'
|
|
229
|
+
'ensureAndroidEmulatorEnvironment'
|
|
228
230
|
).mockResolvedValue('/tmp/android-sdk');
|
|
229
231
|
vi.spyOn(adb, 'getDeviceIds').mockResolvedValue([]);
|
|
230
232
|
vi.spyOn(adb, 'hasAvd').mockResolvedValue(true);
|
|
@@ -234,6 +236,7 @@ describe('Android platform instance', () => {
|
|
|
234
236
|
hwDeviceName: 'pixel_8',
|
|
235
237
|
diskDataPartitionSize: '1G',
|
|
236
238
|
vmHeapSize: '1G',
|
|
239
|
+
hwCpuNcore: String(getEmulatorCpuCores()),
|
|
237
240
|
});
|
|
238
241
|
vi.spyOn(adb, 'startEmulator').mockResolvedValue(undefined);
|
|
239
242
|
vi.spyOn(adb, 'waitForBoot').mockResolvedValue('emulator-5554');
|
|
@@ -241,11 +244,9 @@ describe('Android platform instance', () => {
|
|
|
241
244
|
vi.spyOn(adb, 'reversePort').mockResolvedValue(undefined);
|
|
242
245
|
vi.spyOn(adb, 'setHideErrorDialogs').mockResolvedValue(undefined);
|
|
243
246
|
vi.spyOn(adb, 'getAppUid').mockResolvedValue(10234);
|
|
244
|
-
vi.spyOn(adb, 'getLogcatTimestamp').mockResolvedValue(
|
|
245
|
-
'01-01 00:00:00.000',
|
|
246
|
-
);
|
|
247
|
+
vi.spyOn(adb, 'getLogcatTimestamp').mockResolvedValue('01-01 00:00:00.000');
|
|
247
248
|
vi.spyOn(sharedPrefs, 'applyHarnessDebugHttpHost').mockResolvedValue(
|
|
248
|
-
undefined
|
|
249
|
+
undefined
|
|
249
250
|
);
|
|
250
251
|
|
|
251
252
|
await expect(
|
|
@@ -267,14 +268,14 @@ describe('Android platform instance', () => {
|
|
|
267
268
|
activityName: '.MainActivity',
|
|
268
269
|
},
|
|
269
270
|
harnessConfig,
|
|
270
|
-
init
|
|
271
|
-
)
|
|
271
|
+
init
|
|
272
|
+
)
|
|
272
273
|
).resolves.toBeDefined();
|
|
273
274
|
|
|
274
275
|
expect(adb.startEmulator).toHaveBeenCalledTimes(1);
|
|
275
276
|
expect(adb.startEmulator).toHaveBeenCalledWith(
|
|
276
277
|
'Pixel_8_API_35',
|
|
277
|
-
'snapshot-reuse'
|
|
278
|
+
'snapshot-reuse'
|
|
278
279
|
);
|
|
279
280
|
});
|
|
280
281
|
|
|
@@ -282,7 +283,7 @@ describe('Android platform instance', () => {
|
|
|
282
283
|
vi.stubEnv('HARNESS_AVD_CACHING', 'true');
|
|
283
284
|
vi.spyOn(
|
|
284
285
|
await import('../environment.js'),
|
|
285
|
-
'ensureAndroidEmulatorEnvironment'
|
|
286
|
+
'ensureAndroidEmulatorEnvironment'
|
|
286
287
|
).mockResolvedValue('/tmp/android-sdk');
|
|
287
288
|
vi.spyOn(adb, 'getDeviceIds').mockResolvedValue([]);
|
|
288
289
|
vi.spyOn(adb, 'hasAvd').mockResolvedValue(true);
|
|
@@ -305,11 +306,9 @@ describe('Android platform instance', () => {
|
|
|
305
306
|
vi.spyOn(adb, 'reversePort').mockResolvedValue(undefined);
|
|
306
307
|
vi.spyOn(adb, 'setHideErrorDialogs').mockResolvedValue(undefined);
|
|
307
308
|
vi.spyOn(adb, 'getAppUid').mockResolvedValue(10234);
|
|
308
|
-
vi.spyOn(adb, 'getLogcatTimestamp').mockResolvedValue(
|
|
309
|
-
'01-01 00:00:00.000',
|
|
310
|
-
);
|
|
309
|
+
vi.spyOn(adb, 'getLogcatTimestamp').mockResolvedValue('01-01 00:00:00.000');
|
|
311
310
|
vi.spyOn(sharedPrefs, 'applyHarnessDebugHttpHost').mockResolvedValue(
|
|
312
|
-
undefined
|
|
311
|
+
undefined
|
|
313
312
|
);
|
|
314
313
|
|
|
315
314
|
await expect(
|
|
@@ -331,8 +330,8 @@ describe('Android platform instance', () => {
|
|
|
331
330
|
activityName: '.MainActivity',
|
|
332
331
|
},
|
|
333
332
|
harnessConfig,
|
|
334
|
-
init
|
|
335
|
-
)
|
|
333
|
+
init
|
|
334
|
+
)
|
|
336
335
|
).resolves.toBeDefined();
|
|
337
336
|
|
|
338
337
|
expect(deleteAvd).toHaveBeenCalledWith('Pixel_8_API_35');
|
|
@@ -340,17 +339,17 @@ describe('Android platform instance', () => {
|
|
|
340
339
|
expect(stopEmulator).toHaveBeenCalledWith('emulator-5554');
|
|
341
340
|
expect(waitForEmulatorDisconnect).toHaveBeenCalledWith(
|
|
342
341
|
'emulator-5554',
|
|
343
|
-
init.signal
|
|
342
|
+
init.signal
|
|
344
343
|
);
|
|
345
344
|
expect(adb.startEmulator).toHaveBeenNthCalledWith(
|
|
346
345
|
1,
|
|
347
346
|
'Pixel_8_API_35',
|
|
348
|
-
'clean-snapshot-generation'
|
|
347
|
+
'clean-snapshot-generation'
|
|
349
348
|
);
|
|
350
349
|
expect(adb.startEmulator).toHaveBeenNthCalledWith(
|
|
351
350
|
2,
|
|
352
351
|
'Pixel_8_API_35',
|
|
353
|
-
'snapshot-reuse'
|
|
352
|
+
'snapshot-reuse'
|
|
354
353
|
);
|
|
355
354
|
});
|
|
356
355
|
|
|
@@ -358,7 +357,7 @@ describe('Android platform instance', () => {
|
|
|
358
357
|
vi.stubEnv('HARNESS_AVD_CACHING', 'true');
|
|
359
358
|
vi.spyOn(
|
|
360
359
|
await import('../environment.js'),
|
|
361
|
-
'ensureAndroidEmulatorEnvironment'
|
|
360
|
+
'ensureAndroidEmulatorEnvironment'
|
|
362
361
|
).mockResolvedValue('/tmp/android-sdk');
|
|
363
362
|
vi.spyOn(adb, 'getDeviceIds').mockResolvedValue([]);
|
|
364
363
|
vi.spyOn(adb, 'hasAvd').mockResolvedValue(false);
|
|
@@ -375,11 +374,9 @@ describe('Android platform instance', () => {
|
|
|
375
374
|
vi.spyOn(adb, 'reversePort').mockResolvedValue(undefined);
|
|
376
375
|
vi.spyOn(adb, 'setHideErrorDialogs').mockResolvedValue(undefined);
|
|
377
376
|
vi.spyOn(adb, 'getAppUid').mockResolvedValue(10234);
|
|
378
|
-
vi.spyOn(adb, 'getLogcatTimestamp').mockResolvedValue(
|
|
379
|
-
'01-01 00:00:00.000',
|
|
380
|
-
);
|
|
377
|
+
vi.spyOn(adb, 'getLogcatTimestamp').mockResolvedValue('01-01 00:00:00.000');
|
|
381
378
|
vi.spyOn(sharedPrefs, 'applyHarnessDebugHttpHost').mockResolvedValue(
|
|
382
|
-
undefined
|
|
379
|
+
undefined
|
|
383
380
|
);
|
|
384
381
|
|
|
385
382
|
await expect(
|
|
@@ -401,24 +398,24 @@ describe('Android platform instance', () => {
|
|
|
401
398
|
activityName: '.MainActivity',
|
|
402
399
|
},
|
|
403
400
|
harnessConfig,
|
|
404
|
-
init
|
|
405
|
-
)
|
|
401
|
+
init
|
|
402
|
+
)
|
|
406
403
|
).resolves.toBeDefined();
|
|
407
404
|
|
|
408
405
|
expect(startEmulator).toHaveBeenNthCalledWith(
|
|
409
406
|
1,
|
|
410
407
|
'Pixel_8_API_35',
|
|
411
|
-
'clean-snapshot-generation'
|
|
408
|
+
'clean-snapshot-generation'
|
|
412
409
|
);
|
|
413
410
|
expect(stopEmulator).toHaveBeenCalledWith('emulator-5554');
|
|
414
411
|
expect(waitForEmulatorDisconnect).toHaveBeenCalledWith(
|
|
415
412
|
'emulator-5554',
|
|
416
|
-
init.signal
|
|
413
|
+
init.signal
|
|
417
414
|
);
|
|
418
415
|
expect(startEmulator).toHaveBeenNthCalledWith(
|
|
419
416
|
2,
|
|
420
417
|
'Pixel_8_API_35',
|
|
421
|
-
'snapshot-reuse'
|
|
418
|
+
'snapshot-reuse'
|
|
422
419
|
);
|
|
423
420
|
});
|
|
424
421
|
|
|
@@ -446,8 +443,8 @@ describe('Android platform instance', () => {
|
|
|
446
443
|
activityName: '.MainActivity',
|
|
447
444
|
},
|
|
448
445
|
harnessConfig,
|
|
449
|
-
init
|
|
450
|
-
)
|
|
446
|
+
init
|
|
447
|
+
)
|
|
451
448
|
).rejects.toBeInstanceOf(HarnessAppPathError);
|
|
452
449
|
});
|
|
453
450
|
|
|
@@ -476,8 +473,8 @@ describe('Android platform instance', () => {
|
|
|
476
473
|
activityName: '.MainActivity',
|
|
477
474
|
},
|
|
478
475
|
harnessConfig,
|
|
479
|
-
init
|
|
480
|
-
)
|
|
476
|
+
init
|
|
477
|
+
)
|
|
481
478
|
).rejects.toBeInstanceOf(HarnessAppPathError);
|
|
482
479
|
});
|
|
483
480
|
|
|
@@ -496,8 +493,8 @@ describe('Android platform instance', () => {
|
|
|
496
493
|
activityName: '.MainActivity',
|
|
497
494
|
},
|
|
498
495
|
harnessConfig,
|
|
499
|
-
init
|
|
500
|
-
)
|
|
496
|
+
init
|
|
497
|
+
)
|
|
501
498
|
).rejects.toBeInstanceOf(HarnessEmulatorConfigError);
|
|
502
499
|
});
|
|
503
500
|
|
|
@@ -505,7 +502,7 @@ describe('Android platform instance', () => {
|
|
|
505
502
|
vi.useFakeTimers();
|
|
506
503
|
vi.spyOn(
|
|
507
504
|
await import('../environment.js'),
|
|
508
|
-
'ensureAndroidEmulatorEnvironment'
|
|
505
|
+
'ensureAndroidEmulatorEnvironment'
|
|
509
506
|
).mockResolvedValue('/tmp/android-sdk');
|
|
510
507
|
vi.spyOn(adb, 'getDeviceIds').mockResolvedValue(['emulator-5554']);
|
|
511
508
|
vi.spyOn(adb, 'getEmulatorName').mockResolvedValue('Pixel_8_API_35');
|
|
@@ -514,11 +511,9 @@ describe('Android platform instance', () => {
|
|
|
514
511
|
vi.spyOn(adb, 'reversePort').mockResolvedValue(undefined);
|
|
515
512
|
vi.spyOn(adb, 'setHideErrorDialogs').mockResolvedValue(undefined);
|
|
516
513
|
vi.spyOn(adb, 'getAppUid').mockResolvedValue(10234);
|
|
517
|
-
vi.spyOn(adb, 'getLogcatTimestamp').mockResolvedValue(
|
|
518
|
-
'01-01 00:00:00.000',
|
|
519
|
-
);
|
|
514
|
+
vi.spyOn(adb, 'getLogcatTimestamp').mockResolvedValue('01-01 00:00:00.000');
|
|
520
515
|
vi.spyOn(sharedPrefs, 'applyHarnessDebugHttpHost').mockResolvedValue(
|
|
521
|
-
undefined
|
|
516
|
+
undefined
|
|
522
517
|
);
|
|
523
518
|
const stopApp = vi.spyOn(adb, 'stopApp').mockResolvedValue(undefined);
|
|
524
519
|
const startApp = vi.spyOn(adb, 'startApp').mockResolvedValue(undefined);
|
|
@@ -544,7 +539,7 @@ describe('Android platform instance', () => {
|
|
|
544
539
|
activityName: '.MainActivity',
|
|
545
540
|
},
|
|
546
541
|
harnessConfigWithoutNativeCrashDetection,
|
|
547
|
-
init
|
|
542
|
+
init
|
|
548
543
|
);
|
|
549
544
|
|
|
550
545
|
const listener = vi.fn();
|
|
@@ -552,18 +547,22 @@ describe('Android platform instance', () => {
|
|
|
552
547
|
appSession.addListener(listener);
|
|
553
548
|
await vi.advanceTimersByTimeAsync(0);
|
|
554
549
|
|
|
555
|
-
expect(startLogcat).toHaveBeenCalledWith(
|
|
556
|
-
'
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
550
|
+
expect(startLogcat).toHaveBeenCalledWith(
|
|
551
|
+
'emulator-5554',
|
|
552
|
+
[
|
|
553
|
+
'logcat',
|
|
554
|
+
'-v',
|
|
555
|
+
'threadtime',
|
|
556
|
+
'-b',
|
|
557
|
+
'crash',
|
|
558
|
+
'--uid=10234',
|
|
559
|
+
'-T',
|
|
560
|
+
'01-01 00:00:00.000',
|
|
561
|
+
],
|
|
562
|
+
{ signal: expect.any(AbortSignal) }
|
|
563
|
+
);
|
|
565
564
|
expect(startLogcat.mock.invocationCallOrder[0]).toBeLessThan(
|
|
566
|
-
startApp.mock.invocationCallOrder[0]
|
|
565
|
+
startApp.mock.invocationCallOrder[0]
|
|
567
566
|
);
|
|
568
567
|
await expect(appSession.getState()).resolves.toEqual({
|
|
569
568
|
status: 'running',
|
|
@@ -580,7 +579,7 @@ describe('Android platform instance', () => {
|
|
|
580
579
|
vi.useFakeTimers();
|
|
581
580
|
vi.spyOn(
|
|
582
581
|
await import('../environment.js'),
|
|
583
|
-
'ensureAndroidEmulatorEnvironment'
|
|
582
|
+
'ensureAndroidEmulatorEnvironment'
|
|
584
583
|
).mockResolvedValue('/tmp/android-sdk');
|
|
585
584
|
vi.spyOn(adb, 'getDeviceIds').mockResolvedValue(['emulator-5554']);
|
|
586
585
|
vi.spyOn(adb, 'getEmulatorName').mockResolvedValue('Pixel_8_API_35');
|
|
@@ -589,11 +588,9 @@ describe('Android platform instance', () => {
|
|
|
589
588
|
vi.spyOn(adb, 'reversePort').mockResolvedValue(undefined);
|
|
590
589
|
vi.spyOn(adb, 'setHideErrorDialogs').mockResolvedValue(undefined);
|
|
591
590
|
vi.spyOn(adb, 'getAppUid').mockResolvedValue(10234);
|
|
592
|
-
vi.spyOn(adb, 'getLogcatTimestamp').mockResolvedValue(
|
|
593
|
-
'01-01 00:00:00.000',
|
|
594
|
-
);
|
|
591
|
+
vi.spyOn(adb, 'getLogcatTimestamp').mockResolvedValue('01-01 00:00:00.000');
|
|
595
592
|
vi.spyOn(sharedPrefs, 'applyHarnessDebugHttpHost').mockResolvedValue(
|
|
596
|
-
undefined
|
|
593
|
+
undefined
|
|
597
594
|
);
|
|
598
595
|
vi.spyOn(adb, 'stopApp').mockResolvedValue(undefined);
|
|
599
596
|
vi.spyOn(adb, 'startApp').mockResolvedValue(undefined);
|
|
@@ -603,7 +600,7 @@ describe('Android platform instance', () => {
|
|
|
603
600
|
'--------- beginning of crash',
|
|
604
601
|
'Process: com.harnessplayground, PID: 7777',
|
|
605
602
|
'FATAL EXCEPTION: main',
|
|
606
|
-
])
|
|
603
|
+
])
|
|
607
604
|
);
|
|
608
605
|
|
|
609
606
|
const instance = await getAndroidEmulatorPlatformInstance(
|
|
@@ -623,7 +620,7 @@ describe('Android platform instance', () => {
|
|
|
623
620
|
activityName: '.MainActivity',
|
|
624
621
|
},
|
|
625
622
|
harnessConfig,
|
|
626
|
-
init
|
|
623
|
+
init
|
|
627
624
|
);
|
|
628
625
|
|
|
629
626
|
const listener = vi.fn();
|
|
@@ -658,11 +655,9 @@ describe('Android platform instance', () => {
|
|
|
658
655
|
vi.spyOn(adb, 'reversePort').mockResolvedValue(undefined);
|
|
659
656
|
vi.spyOn(adb, 'setHideErrorDialogs').mockResolvedValue(undefined);
|
|
660
657
|
vi.spyOn(adb, 'getAppUid').mockResolvedValue(10234);
|
|
661
|
-
vi.spyOn(adb, 'getLogcatTimestamp').mockResolvedValue(
|
|
662
|
-
'01-01 00:00:00.000',
|
|
663
|
-
);
|
|
658
|
+
vi.spyOn(adb, 'getLogcatTimestamp').mockResolvedValue('01-01 00:00:00.000');
|
|
664
659
|
vi.spyOn(sharedPrefs, 'applyHarnessDebugHttpHost').mockResolvedValue(
|
|
665
|
-
undefined
|
|
660
|
+
undefined
|
|
666
661
|
);
|
|
667
662
|
vi.spyOn(adb, 'stopApp').mockResolvedValue(undefined);
|
|
668
663
|
vi.spyOn(adb, 'startApp').mockResolvedValue(undefined);
|
|
@@ -682,7 +677,7 @@ describe('Android platform instance', () => {
|
|
|
682
677
|
bundleId: 'com.harnessplayground',
|
|
683
678
|
activityName: '.MainActivity',
|
|
684
679
|
},
|
|
685
|
-
harnessConfigWithoutNativeCrashDetection
|
|
680
|
+
harnessConfigWithoutNativeCrashDetection
|
|
686
681
|
);
|
|
687
682
|
|
|
688
683
|
const listener = vi.fn();
|
|
@@ -690,16 +685,20 @@ describe('Android platform instance', () => {
|
|
|
690
685
|
appSession.addListener(listener);
|
|
691
686
|
await vi.advanceTimersByTimeAsync(0);
|
|
692
687
|
|
|
693
|
-
expect(startLogcat).toHaveBeenCalledWith(
|
|
694
|
-
'
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
688
|
+
expect(startLogcat).toHaveBeenCalledWith(
|
|
689
|
+
'012345',
|
|
690
|
+
[
|
|
691
|
+
'logcat',
|
|
692
|
+
'-v',
|
|
693
|
+
'threadtime',
|
|
694
|
+
'-b',
|
|
695
|
+
'crash',
|
|
696
|
+
'--uid=10234',
|
|
697
|
+
'-T',
|
|
698
|
+
'01-01 00:00:00.000',
|
|
699
|
+
],
|
|
700
|
+
{ signal: expect.any(AbortSignal) }
|
|
701
|
+
);
|
|
703
702
|
await expect(appSession.getState()).resolves.toEqual({
|
|
704
703
|
status: 'running',
|
|
705
704
|
pid: 8765,
|
|
@@ -712,7 +711,7 @@ describe('Android platform instance', () => {
|
|
|
712
711
|
it('grants permissions when permissions are enabled for emulator', async () => {
|
|
713
712
|
vi.spyOn(
|
|
714
713
|
await import('../environment.js'),
|
|
715
|
-
'ensureAndroidEmulatorEnvironment'
|
|
714
|
+
'ensureAndroidEmulatorEnvironment'
|
|
716
715
|
).mockResolvedValue('/tmp/android-sdk');
|
|
717
716
|
vi.spyOn(adb, 'getDeviceIds').mockResolvedValue(['emulator-5554']);
|
|
718
717
|
vi.spyOn(adb, 'getEmulatorName').mockResolvedValue('Pixel_8_API_35');
|
|
@@ -722,7 +721,7 @@ describe('Android platform instance', () => {
|
|
|
722
721
|
vi.spyOn(adb, 'setHideErrorDialogs').mockResolvedValue(undefined);
|
|
723
722
|
vi.spyOn(adb, 'getAppUid').mockResolvedValue(10234);
|
|
724
723
|
vi.spyOn(sharedPrefs, 'applyHarnessDebugHttpHost').mockResolvedValue(
|
|
725
|
-
undefined
|
|
724
|
+
undefined
|
|
726
725
|
);
|
|
727
726
|
const grantPermissions = vi
|
|
728
727
|
.spyOn(adb, 'grantPermissions')
|
|
@@ -750,19 +749,19 @@ describe('Android platform instance', () => {
|
|
|
750
749
|
activityName: '.MainActivity',
|
|
751
750
|
},
|
|
752
751
|
harnessConfigWithPermissions,
|
|
753
|
-
init
|
|
752
|
+
init
|
|
754
753
|
);
|
|
755
754
|
|
|
756
755
|
expect(grantPermissions).toHaveBeenCalledWith(
|
|
757
756
|
'emulator-5554',
|
|
758
|
-
'com.harnessplayground'
|
|
757
|
+
'com.harnessplayground'
|
|
759
758
|
);
|
|
760
759
|
});
|
|
761
760
|
|
|
762
761
|
it('does not grant permissions when permissions are disabled for emulator', async () => {
|
|
763
762
|
vi.spyOn(
|
|
764
763
|
await import('../environment.js'),
|
|
765
|
-
'ensureAndroidEmulatorEnvironment'
|
|
764
|
+
'ensureAndroidEmulatorEnvironment'
|
|
766
765
|
).mockResolvedValue('/tmp/android-sdk');
|
|
767
766
|
vi.spyOn(adb, 'getDeviceIds').mockResolvedValue(['emulator-5554']);
|
|
768
767
|
vi.spyOn(adb, 'getEmulatorName').mockResolvedValue('Pixel_8_API_35');
|
|
@@ -772,7 +771,7 @@ describe('Android platform instance', () => {
|
|
|
772
771
|
vi.spyOn(adb, 'setHideErrorDialogs').mockResolvedValue(undefined);
|
|
773
772
|
vi.spyOn(adb, 'getAppUid').mockResolvedValue(10234);
|
|
774
773
|
vi.spyOn(sharedPrefs, 'applyHarnessDebugHttpHost').mockResolvedValue(
|
|
775
|
-
undefined
|
|
774
|
+
undefined
|
|
776
775
|
);
|
|
777
776
|
const grantPermissions = vi
|
|
778
777
|
.spyOn(adb, 'grantPermissions')
|
|
@@ -795,7 +794,7 @@ describe('Android platform instance', () => {
|
|
|
795
794
|
activityName: '.MainActivity',
|
|
796
795
|
},
|
|
797
796
|
harnessConfig,
|
|
798
|
-
init
|
|
797
|
+
init
|
|
799
798
|
);
|
|
800
799
|
|
|
801
800
|
expect(grantPermissions).not.toHaveBeenCalled();
|
|
@@ -812,7 +811,7 @@ describe('Android platform instance', () => {
|
|
|
812
811
|
vi.spyOn(adb, 'setHideErrorDialogs').mockResolvedValue(undefined);
|
|
813
812
|
vi.spyOn(adb, 'getAppUid').mockResolvedValue(10234);
|
|
814
813
|
vi.spyOn(sharedPrefs, 'applyHarnessDebugHttpHost').mockResolvedValue(
|
|
815
|
-
undefined
|
|
814
|
+
undefined
|
|
816
815
|
);
|
|
817
816
|
const grantPermissions = vi
|
|
818
817
|
.spyOn(adb, 'grantPermissions')
|
|
@@ -834,12 +833,12 @@ describe('Android platform instance', () => {
|
|
|
834
833
|
bundleId: 'com.harnessplayground',
|
|
835
834
|
activityName: '.MainActivity',
|
|
836
835
|
},
|
|
837
|
-
harnessConfigWithPermissions
|
|
836
|
+
harnessConfigWithPermissions
|
|
838
837
|
);
|
|
839
838
|
|
|
840
839
|
expect(grantPermissions).toHaveBeenCalledWith(
|
|
841
840
|
'012345',
|
|
842
|
-
'com.harnessplayground'
|
|
841
|
+
'com.harnessplayground'
|
|
843
842
|
);
|
|
844
843
|
});
|
|
845
844
|
});
|