appium-geckodriver
Version:
Appium driver for Gecko-based browsers and web views
89 lines • 3.88 kB
JavaScript
;
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