UNPKG

appium-geckodriver

Version:

Appium driver for Gecko-based browsers and web views

89 lines 3.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.androidSdkCheck = exports.AndroidSdkCheck = exports.androidHomeCheck = void 0; const support_1 = require("@appium/support"); const appium_adb_1 = require("appium-adb"); const ENVIRONMENT_VARS_TUTORIAL_URL = 'https://github.com/appium/java-client/blob/master/docs/environment.md'; const ANDROID_SDK_LINK1 = 'https://developer.android.com/studio#cmdline-tools'; const ANDROID_SDK_LINK2 = 'https://developer.android.com/studio/intro/update#sdk-manager'; class EnvVarAndPathCheck { log; varName; opts; constructor(varName, opts = {}) { this.varName = varName; this.opts = opts; } async diagnose() { const varValue = process.env[this.varName]; if (!varValue) { return support_1.doctor.nokOptional(`${this.varName} environment variable is NOT set!`); } if (!(await support_1.fs.exists(varValue))) { let errMsg = `${this.varName} is set to '${varValue}' but this path does not exist!`; if (support_1.system.isWindows() && varValue.includes('%')) { errMsg += ` Consider replacing all references to other environment variables with absolute paths.`; } return support_1.doctor.nokOptional(errMsg); } const stat = await support_1.fs.stat(varValue); if (this.opts.expectDir && !stat.isDirectory()) { return support_1.doctor.nokOptional(`${this.varName} is expected to be a valid folder, got a file path instead`); } if (this.opts.expectFile && stat.isDirectory()) { return support_1.doctor.nokOptional(`${this.varName} is expected to be a valid file, got a folder path instead`); } return support_1.doctor.okOptional(`${this.varName} is set to: ${varValue}`); } async fix() { return (`Make sure the environment variable ${this.varName} is properly configured for the Appium process. ` + `Android SDK is required if you want to run your tests on an Android device. ` + `Refer ${ENVIRONMENT_VARS_TUTORIAL_URL} for more details.`); } hasAutofix() { return false; } isOptional() { return true; } } exports.androidHomeCheck = new EnvVarAndPathCheck('ANDROID_HOME', { expectDir: true }); class AndroidSdkCheck { log; TOOL_NAMES = ['adb', 'emulator']; async diagnose() { const listOfTools = this.TOOL_NAMES.join(', '); const sdkRoot = (0, appium_adb_1.getSdkRootFromEnv)(); if (!sdkRoot) { return support_1.doctor.nokOptional(`${listOfTools} could not be found because ANDROID_HOME is NOT set!`); } this.log.info(` Checking ${listOfTools}`); const missingBinaries = []; for (const binary of this.TOOL_NAMES) { try { this.log.info(` '${binary}' exists in ${await (0, appium_adb_1.getAndroidBinaryPath)(binary)}`); } catch { missingBinaries.push(binary); } } if (missingBinaries.length > 0) { return support_1.doctor.nokOptional(`${missingBinaries.join(', ')} could NOT be found in '${sdkRoot}'!`); } return support_1.doctor.okOptional(`${listOfTools} exist in '${sdkRoot}'`); } async fix() { return (`Manually install Android SDK and set ANDROID_HOME enviornment variable. ` + `Android SDK is required if you want to run your tests on an Android device. ` + `Read ${[ANDROID_SDK_LINK1, ANDROID_SDK_LINK2].join(' and ')}.`); } hasAutofix() { return false; } isOptional() { return true; } } exports.AndroidSdkCheck = AndroidSdkCheck; exports.androidSdkCheck = new AndroidSdkCheck(); //# sourceMappingURL=optional-checks.js.map