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