Example #1
0
        private static async Task ConfigureForAndroidTests(TestConfiguration config, int?androidSdk, string headBin, CancellationToken cancellationToken)
        {
            // Ensure WebDrivers are installed
            await SdkManager.InstallWebDriver(cancellationToken).ConfigureAwait(false);

            // Ensure latest CmdLine tools are installed
            await SdkManager.InstallLatestCommandLineTools(cancellationToken).ConfigureAwait(false);

            var sdkVersion = ApkHelper.GetAndroidSdkVersion(androidSdk, headBin);

            Logger.WriteLine($"Targeting Android Sdk: {sdkVersion}", LogLevel.Minimal);
            var appActivity = ApkHelper.GetAppActivity(headBin);

            if (!config.Capabilities.ContainsKey("appActivity"))
            {
                config.Capabilities.Add("appActivity", appActivity);
            }

            var emulatorName = $"{AvdManager.DefaultUITestEmulatorName}{sdkVersion}";

            // Check for connected device
            if (await Adb.DeviceIsConnected(cancellationToken))
            {
                var androidDevice = (await Adb.ListDevices(cancellationToken).ConfigureAwait(false)).First();
                config.DeviceName = androidDevice.Name;
                config.UDID       = androidDevice.Id;
                config.OSVersion  = $"{androidDevice.SdkVersion}";
            }
            else
            {
                // Ensure SDK Installed
                await SdkManager.EnsureSdkIsInstalled(sdkVersion, cancellationToken).ConfigureAwait(false);

                // Ensure Emulator Exists
                if (!(await Emulator.ListEmulators(cancellationToken)).Any(x => x == emulatorName))
                {
                    await AvdManager.InstallEmulator(emulatorName, sdkVersion, cancellationToken);
                }

                // Let Appium Start and control the Emulator
                config.DeviceName = emulatorName;
                config.OSVersion  = $"{sdkVersion}";

                if (!config.Capabilities.ContainsKey("avd"))
                {
                    config.Capabilities.Add("avd", emulatorName);
                }
            }
        }