xref: /expo/tools/src/FirebaseTestLab.ts (revision eeffdb10)
1*eeffdb10STomasz Sapetaimport path from 'path';
2*eeffdb10STomasz Sapetaimport spawnAsync from '@expo/spawn-async';
3*eeffdb10STomasz Sapeta
4*eeffdb10STomasz Sapetaimport { getExpoRepositoryRootDir } from './Directories';
5*eeffdb10STomasz Sapeta
6*eeffdb10STomasz Sapetaconst ANDROID_DIR = path.join(getExpoRepositoryRootDir(), 'android');
7*eeffdb10STomasz Sapeta
8*eeffdb10STomasz Sapetaexport async function runAndroidTestsAsync(
9*eeffdb10STomasz Sapeta  pathToAppApk: string,
10*eeffdb10STomasz Sapeta  pathToTestApk: string
11*eeffdb10STomasz Sapeta): Promise<void> {
12*eeffdb10STomasz Sapeta  await spawnAsync(
13*eeffdb10STomasz Sapeta    'gcloud',
14*eeffdb10STomasz Sapeta    [
15*eeffdb10STomasz Sapeta      'firebase',
16*eeffdb10STomasz Sapeta      'test',
17*eeffdb10STomasz Sapeta      'android',
18*eeffdb10STomasz Sapeta      'run',
19*eeffdb10STomasz Sapeta      '--type',
20*eeffdb10STomasz Sapeta      'instrumentation',
21*eeffdb10STomasz Sapeta      '--app',
22*eeffdb10STomasz Sapeta      pathToAppApk,
23*eeffdb10STomasz Sapeta      '--test',
24*eeffdb10STomasz Sapeta      pathToTestApk,
25*eeffdb10STomasz Sapeta      '--device',
26*eeffdb10STomasz Sapeta      'model=Nexus6,version=25,locale=en,orientation=portrait',
27*eeffdb10STomasz Sapeta    ],
28*eeffdb10STomasz Sapeta    {
29*eeffdb10STomasz Sapeta      stdio: 'inherit',
30*eeffdb10STomasz Sapeta    }
31*eeffdb10STomasz Sapeta  );
32*eeffdb10STomasz Sapeta}
33*eeffdb10STomasz Sapeta
34*eeffdb10STomasz Sapetaexport async function buildLocalAndroidAndRunTestAsync(
35*eeffdb10STomasz Sapeta  env: { [key: string]: any } = {}
36*eeffdb10STomasz Sapeta): Promise<void> {
37*eeffdb10STomasz Sapeta  await spawnAsync('./gradlew', [':app:assembleDebug'], {
38*eeffdb10STomasz Sapeta    cwd: ANDROID_DIR,
39*eeffdb10STomasz Sapeta    env: {
40*eeffdb10STomasz Sapeta      ...process.env,
41*eeffdb10STomasz Sapeta      ...env,
42*eeffdb10STomasz Sapeta    },
43*eeffdb10STomasz Sapeta  });
44*eeffdb10STomasz Sapeta
45*eeffdb10STomasz Sapeta  await spawnAsync('./gradlew', [':app:assembleDebugAndroidTest'], {
46*eeffdb10STomasz Sapeta    cwd: ANDROID_DIR,
47*eeffdb10STomasz Sapeta    env: {
48*eeffdb10STomasz Sapeta      ...process.env,
49*eeffdb10STomasz Sapeta      ...env,
50*eeffdb10STomasz Sapeta    },
51*eeffdb10STomasz Sapeta  });
52*eeffdb10STomasz Sapeta
53*eeffdb10STomasz Sapeta  return await runAndroidTestsAsync(
54*eeffdb10STomasz Sapeta    path.join(ANDROID_DIR, 'app/build/outputs/apk/debug/app-debug.apk'),
55*eeffdb10STomasz Sapeta    path.join(ANDROID_DIR, 'app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk')
56*eeffdb10STomasz Sapeta  );
57*eeffdb10STomasz Sapeta}
58