How to use errorFromMJSONWPStatusCode method in Appium Base Driver

Best JavaScript code snippet using appium-base-driver

errors.js

Source:errors.js Github

copy

Full Screen

...607  }608  getActualError () {609    // If it's MJSONWP error, returns actual error cause for request failure based on `jsonwp.status`610    if (util.hasValue(this.jsonwp) && util.hasValue(this.jsonwp.status) && util.hasValue(this.jsonwp.value)) {611      return errorFromMJSONWPStatusCode(this.jsonwp.status, this.jsonwp.value);612    } else if (util.hasValue(this.w3c) && _.isNumber(this.w3cStatus) && this.w3cStatus >= 300) {613      return errorFromW3CJsonCode(this.w3c.error, this.w3c.message || this.message, this.w3c.stacktrace);614    }615    return new UnknownError(this.message);616  }617}618// map of error class name to error class619const errors = {NotYetImplementedError,620                NotImplementedError,621                BadParametersError,622                InvalidArgumentError,623                NoSuchDriverError,624                NoSuchElementError,625                UnknownCommandError,626                StaleElementReferenceError,627                ElementNotVisibleError,628                InvalidElementStateError,629                UnknownError,630                ElementIsNotSelectableError,631                ElementClickInterceptedError,632                ElementNotInteractableError,633                InsecureCertificateError,634                JavaScriptError,635                XPathLookupError,636                TimeoutError,637                NoSuchWindowError,638                NoSuchCookieError,639                InvalidCookieDomainError,640                InvalidCoordinatesError,641                UnableToSetCookieError,642                UnexpectedAlertOpenError,643                NoAlertOpenError,644                ScriptTimeoutError,645                InvalidElementCoordinatesError,646                IMENotAvailableError,647                IMEEngineActivationFailedError,648                InvalidSelectorError,649                SessionNotCreatedError,650                MoveTargetOutOfBoundsError,651                NoSuchAlertError,652                NoSuchContextError,653                InvalidContextError,654                NoSuchFrameError,655                UnableToCaptureScreen,656                UnknownMethodError,657                UnsupportedOperationError,658                ProxyRequestError};659// map of error code to error class660const jsonwpErrorCodeMap = {};661for (let ErrorClass of _.values(errors)) {662  if (ErrorClass.code) {663    jsonwpErrorCodeMap[ErrorClass.code()] = ErrorClass;664  }665}666const w3cErrorCodeMap = {};667for (let ErrorClass of _.values(errors)) {668  if (ErrorClass.error) {669    w3cErrorCodeMap[ErrorClass.error()] = ErrorClass;670  }671}672function isUnknownError (err) {673  return !err.constructor.name ||674         !_.values(errors).find(function equalNames (error) {675           return error.name === err.constructor.name;676         });677}678function isErrorType (err, type) {679  // `name` property is the constructor name680  if (type.name === ProtocolError.name) {681    // `jsonwpCode` is `0` on success682    return !!err.jsonwpCode;683  } else if (type.name === ProxyRequestError.name) {684    // `status` is `0` on success685    if (err.jsonwp) {686      return !!err.jsonwp.status;687    }688    if (_.isPlainObject(err.w3c)) {689      return _.isNumber(err.w3cStatus) && err.w3cStatus >= 300;690    }691    return false;692  }693  return err.constructor.name === type.name;694}695/**696 * Retrieve an error derived from MJSONWP status697 * @param {number} code JSONWP status code698 * @param {string|Object} value The error message, or an object with a `message` property699 * @return {ProtocolError} The error that is associated with provided JSONWP status code700 */701function errorFromMJSONWPStatusCode (code, value = '') {702  // if `value` is an object, pull message from it, otherwise use the plain703  // value, or default to an empty string, if null704  const message = (value || {}).message || value || '';705  if (code !== UnknownError.code() && jsonwpErrorCodeMap[code]) {706    mjsonwpLog.debug(`Matched JSONWP error code ${code} to ${jsonwpErrorCodeMap[code].name}`);707    return new jsonwpErrorCodeMap[code](message);708  }709  mjsonwpLog.debug(`Matched JSONWP error code ${code} to UnknownError`);710  return new UnknownError(message);711}712/**713 * Retrieve an error derived from W3C JSON Code714 * @param {string} code W3C error string (see https://www.w3.org/TR/webdriver/#handling-errors `JSON Error Code` column)715 * @param {string} message the error message716 * @param {?string} stacktrace an optional error stacktrace717 * @return {ProtocolError}  The error that is associated with the W3C error string718 */719function errorFromW3CJsonCode (code, message, stacktrace = null) {720  if (code && w3cErrorCodeMap[code.toLowerCase()]) {721    w3cLog.debug(`Matched W3C error code '${code}' to ${w3cErrorCodeMap[code.toLowerCase()].name}`);722    const resultError = new w3cErrorCodeMap[code.toLowerCase()](message);723    resultError.stacktrace = stacktrace;724    return resultError;725  }726  w3cLog.debug(`Matched W3C error code '${code}' to UnknownError`);727  const resultError = new UnknownError(message);728  resultError.stacktrace = stacktrace;729  return resultError;730}731/**732 * Convert an Appium error to proper W3C HTTP response733 * @param {ProtocolError} err The error that needs to be translated734 */735function getResponseForW3CError (err) {736  let httpStatus;737  // W3C defined error message (https://www.w3.org/TR/webdriver/#dfn-error-code)738  let w3cErrorString;739  if (!err.w3cStatus) {740    err = util.hasValue(err.status)741      // If it's a JSONWP error, find corresponding error742      ? errorFromMJSONWPStatusCode(err.status, err.value)743      : new errors.UnknownError(err.message);744  }745  if (isErrorType(err, errors.BadParametersError)) {746    // respond with a 400 if we have bad parameters747    w3cLog.debug(`Bad parameters: ${err}`);748    w3cErrorString = BadParametersError.error();749  } else {750    w3cErrorString = err.error;751  }752  httpStatus = err.w3cStatus;753  if (!w3cErrorString) {754    w3cErrorString = UnknownError.error();755  }756  let httpResBody = {...

Full Screen

Full Screen

protocol.js

Source:protocol.js Github

copy

Full Screen

...297      }298      // if the status is not 0,  throw the appropriate error for status code.299      if (util.hasValue(driverRes)) {300        if (util.hasValue(driverRes.status) && !isNaN(driverRes.status) && parseInt(driverRes.status, 10) !== 0) {301          throw errorFromMJSONWPStatusCode(driverRes.status, driverRes.value);302        } else if (_.isPlainObject(driverRes.value) && driverRes.value.error) {303          throw errorFromW3CJsonCode(driverRes.value.error, driverRes.value.message, driverRes.value.stacktrace);304        }305      }306      httpResBody.value = driverRes;307      SESSIONS_CACHE.getLogger(req.params.sessionId || newSessionId, currentProtocol).debug(`Responding ` +308        `to client with driver.${spec.command}() result: ${_.truncate(JSON.stringify(driverRes), {length: MAX_LOG_BODY_LENGTH})}`);309      if (spec.command === DELETE_SESSION_COMMAND) {310        // We don't want to keep the logger instance in the cache311        // after the session is deleted, because it contains the logging history312        // and consumes the memory313        SESSIONS_CACHE.resetLogger(req.params.sessionId);314      }315    } catch (err) {...

Full Screen

Full Screen

errors-specs.js

Source:errors-specs.js Github

copy

Full Screen

...251  for (let error of errorsList) {252    if (error.errorName !== 'NotYetImplementedError') {253      it(error.errorCode + ' should return correct error', function () {254        if (error.errorCode) {255          errorFromMJSONWPStatusCode(error.errorCode)256            .should.have.property('jsonwpCode', error.errorCode);257          errorFromMJSONWPStatusCode(error.errorCode)258            .should.have.property('message', error.errorMsg);259          if (!_.includes([13, 33], error.errorCode)) {260            errorFromMJSONWPStatusCode(error.errorCode, 'abcd')261              .should.have.property('jsonwpCode', error.errorCode);262            errorFromMJSONWPStatusCode(error.errorCode, 'abcd')263              .should.have.property('message', 'abcd');264          }265        } else {266          isErrorType(errorFromMJSONWPStatusCode(error.errorCode), errors.UnknownError).should.be.true;267        }268      });269    }270  }271  it('should throw unknown error for unknown code', function () {272    errorFromMJSONWPStatusCode(99)273      .should.have.property('jsonwpCode', 13);274    errorFromMJSONWPStatusCode(99)275      .should.have.property('message', 'An unknown server-side error occurred ' +276                                       'while processing the command.');277  });278});279describe('errorFromW3CJsonCode', function () {280  for (let error of errorsList) {281    if (error.errorName !== 'NotYetImplementedError') {282      it(error.errorName + ' should return correct error', function () {283        const {error: w3cError} = error;284        if (w3cError) {285          errorFromW3CJsonCode(w3cError).error.should.equal(error.error);286          errorFromW3CJsonCode(w3cError).should.have.property('message', error.errorMsg);287        } else {288          isErrorType(errorFromW3CJsonCode(w3cError), errors.UnknownError).should.be.true;...

Full Screen

Full Screen

proxy.js

Source:proxy.js Github

copy

Full Screen

...259        let message = resBodyObj.value;260        if (_.has(message, 'message')) {261          message = message.message;262        }263        throw errorFromMJSONWPStatusCode(status, _.isEmpty(message) ? getSummaryByCode(status) : message);264      }265    } else if (protocol === W3C) {266      // Got response in W3C format267      if (response.statusCode < 300) {268        return resBodyObj.value;269      }270      if (_.isPlainObject(resBodyObj.value) && resBodyObj.value.error) {271        throw errorFromW3CJsonCode(resBodyObj.value.error, resBodyObj.value.message, resBodyObj.value.stacktrace);272      }273    } else if (response.statusCode === 200) {274      // Unknown protocol. Keeping it because of the backward compatibility275      return resBodyObj;276    }277    throw new errors.UnknownError(`Did not know what to do with response code '${response.statusCode}' ` +...

Full Screen

Full Screen

utils.js

Source:utils.js Github

copy

Full Screen

...195    throw new Error(`Result has unexpected type: (${typeof res}).`);196  }197  if (res.status && res.status !== 0) {198    // we got some form of error.199    throw errorFromMJSONWPStatusCode(res.status, res.value.message || res.value);200  }201  // with either have an object with a `value` property (even if `null`),202  // or a plain object203  const value = _.has(res, 'value') ? res.value : res;204  // get rid of noisy functions on objects205  if (_.isObject(value)) {206    for (const property of ['ceil', 'clone', 'floor', 'round', 'scale', 'toString']) {207      delete value[property];208    }209  }210  return value;211}212export {213  appInfoFromDict, pageArrayFromDict, getDebuggerAppKey,...

Full Screen

Full Screen

index.js

Source:index.js Github

copy

Full Screen

1// transpile:main2// BaseDriver exports3import * as driver from './lib/basedriver/driver';4import * as image from './lib/basedriver/image-element';5import * as deviceSettings from './lib/basedriver/device-settings';6const { BaseDriver } = driver;7const { ImageElement } = image;8const { DeviceSettings, BASEDRIVER_HANDLED_SETTINGS } = deviceSettings;9export { BaseDriver, DeviceSettings, ImageElement, BASEDRIVER_HANDLED_SETTINGS };10export default BaseDriver;11// MJSONWP exports12import * as protocol from './lib/protocol';13const {14  Protocol, routeConfiguringFunction, errors, isErrorType,15  errorFromMJSONWPStatusCode, errorFromW3CJsonCode, ALL_COMMANDS, METHOD_MAP,16  routeToCommandName, NO_SESSION_ID_COMMANDS, isSessionCommand,17} = protocol;18export {19  Protocol, routeConfiguringFunction, errors, isErrorType,20  errorFromMJSONWPStatusCode, errorFromW3CJsonCode,21  errorFromMJSONWPStatusCode as errorFromCode, ALL_COMMANDS, METHOD_MAP,22  routeToCommandName, NO_SESSION_ID_COMMANDS, isSessionCommand };23// Express exports24import * as staticIndex from './lib/express/static';25const { STATIC_DIR } = staticIndex;26export { STATIC_DIR };27import * as serverIndex from './lib/express/server';28const { server } = serverIndex;29export { server };30// jsonwp-proxy exports31import * as proxyIndex from './lib/jsonwp-proxy/proxy';32const { JWProxy } = proxyIndex;33export { JWProxy };34// jsonwp-status exports35import * as statusIndex from './lib/jsonwp-status/status';36const { codes: statusCodes, getSummaryByCode } = statusIndex;37export { statusCodes, getSummaryByCode };38// W3C capabilities parser39import * as caps from './lib/basedriver/capabilities';40const { processCapabilities, isStandardCap } = caps;41export { processCapabilities, isStandardCap };42// Web socket helpers43import * as ws from './lib/express/websocket';44const { DEFAULT_WS_PATHNAME_PREFIX } = ws;...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1var BaseDriver = require('appium-base-driver');2var errorFromMJSONWPStatusCode = BaseDriver.errorFromMJSONWPStatusCode;3var errorFromW3CJsonCode = BaseDriver.errorFromW3CJsonCode;4var errorFromCode = BaseDriver.errorFromCode;5var MJSONWP = BaseDriver.MJSONWP;6var W3C = BaseDriver.W3C;7var APP = BaseDriver.APP;8var JSONWP = BaseDriver.JSONWP;9var BASE = BaseDriver.BASE;10var SELENIUM = BaseDriver.SELENIUM;11var HTTP = BaseDriver.HTTP;12var WD = BaseDriver.WD;13var IOS = BaseDriver.IOS;14console.log('Error from MJSONWP Status Code: ', errorFromMJSONWPStatusCode(6));15console.log('Error from W3C Json Code: ', errorFromW3CJsonCode(6));16console.log('Error from Code: ', errorFromCode(6));17console.log('MJSONWP Error Codes: ', MJSONWP);18console.log('W3C Error Codes: ', W3C);19console.log('Appium Error Codes: ', APP);20console.log('JSONWP Error Codes: ', JSONWP);21console.log('BaseDriver Error Codes: ', BASE);22console.log('Selenium Error Codes: ', SELENIUM);23console.log('HTTP Error Codes: ', HTTP);24console.log('WebDriver Error Codes: ', WD);25console.log('IOS Error Codes: ', IOS);

Full Screen

Using AI Code Generation

copy

Full Screen

1const { errorFromMJSONWPStatusCode } = require('appium-base-driver').errors;2const { errors } = require('appium-base-driver');3const { errorFromMJSONWPStatusCode } = require('appium-base-driver').errors;4const { errors } = require('appium-base-driver');5const { errorFromMJSONWPStatusCode } = require('appium-base-driver').errors;6const { errors } = require('appium-base-driver');7const { errorFromMJSONWPStatusCode } = require('appium-base-driver').errors;8const { errors } = require('appium-base-driver');9const { errorFromMJSONWPStatusCode } = require('appium-base-driver').errors;10const { errors } = require('appium-base-driver');11const { errorFromMJSONWPStatusCode } = require('appium-base-driver').errors;12const { errors } = require('appium-base-driver');13const { errorFromMJSONWPStatusCode } = require('appium-base-driver').errors;14const { errors } = require('appium-base-driver');15const { errorFromMJSONWPStatusCode } = require('appium-base-driver').errors;16const { errors } = require('appium-base-driver');17const { errorFromMJSONWPStatusCode } = require('appium-base-driver').errors;18const { errors } = require('appium-base-driver');19const { errorFromMJSONWPStatusCode } = require('appium-base-driver').errors;20const { errors } = require('appium-base-driver');21const { errorFromMJSONWPStatusCode } = require('appium-base-driver').errors

Full Screen

Using AI Code Generation

copy

Full Screen

1const {errorFromMJSONWPStatusCode} = require('./lib/basedriver/driver');2const err = errorFromMJSONWPStatusCode(13);3console.log(err);4const {errorFromW3CJsonCode} = require('./lib/basedriver/driver');5const err = errorFromW3CJsonCode(13);6console.log(err);7[HTTP] {"capabilities":{"alwaysMatch":{"platformName":"Android","appium:deviceName":"Android Emulator","appium:platformVersion":"7.1.1","appium:app":"/Users/MyUser/Downloads/ApiDemos-debug.apk","appium:automationName":"UiAutomator2"},"firstMatch":[{}]},"desiredCapabilities":{"platformName":"Android","deviceName":"Android Emulator","platformVersion":"7.1.1","app":"/Users/MyUser/Downloads/ApiDemos-debug.apk","automationName":"UiAutomator2"}}8[MJSONWP] Calling AppiumDriver.createSession() with args: [{"platformName":"Android","deviceName":"Android Emulator","platformVersion":"7.1.1","app":"/Users/MyUser/Downloads/ApiDemos-debug.apk","automationName":"UiAutomator2"},null,{"alwaysMatch":{"platformName":"Android","appium:deviceName":"Android Emulator","appium:platformVersion":"7.1.1","appium:app":"/Users/MyUser/Downloads/ApiDemos-debug.apk","appium:automationName":"UiAutomator2"},"firstMatch":[{}]}]9[BaseDriver] Event 'newSessionRequested' logged at 1549386450813 (13:40:50 GMT+0530 (IST))10[Appium] Appium v1.11.0 creating new AndroidUiautomator2Driver (v1.26.0) session

Full Screen

Using AI Code Generation

copy

Full Screen

1const { errorFromMJSONWPStatusCode } = require('appium-base-driver');2let error = errorFromMJSONWPStatusCode(6, 'message');3console.log(error);4{ Error: message5    at Object.errorFromMJSONWPStatusCode (/Users/krishna/Desktop/Projects/appium/node_modules/appium-base-driver/lib/mjsonwp/errors.js:124:11)6    at Object. (/Users/krishna/Desktop/Projects/appium/test.js:3:23)7    at Module._compile (internal/modules/cjs/loader.js:778:30)8    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)9    at Module.load (internal/modules/cjs/loader.js:653:32)10    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)11    at Function.Module._load (internal/modules/cjs/loader.js:585:3)12    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)13    at startup (internal/bootstrap/node.js:283:19)14    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)15  httpStatus: 500 }

Full Screen

Using AI Code Generation

copy

Full Screen

1const { errorFromMJSONWPStatusCode, errors } = require('appium-base-driver');2console.log(errorFromMJSONWPStatusCode(errors.NoSuchElement.code, 'test error message'));3const { errorFromW3CJsonCode, errors: w3cErrors } = require('appium-base-driver');4console.log(errorFromW3CJsonCode(w3cErrors.NoSuchElement.code, 'test error message'));5const { errorFromCode, errors: newErrors } = require('appium-base-driver');6console.log(errorFromCode(newErrors.NoSuchElement.code, 'test error message'));7const { AppiumError } = require('appium-base-driver');8console.log(new AppiumError('test error message'));9    at Object.errorFromMJSONWPStatusCode (/Users/username/Desktop/appium-base-driver/test.js:5:13)10    at Object.<anonymous> (/Users/username/Desktop/appium-base-driver/test.js:19:21)11    at Module._compile (internal/modules/cjs/loader.js:999:30)12    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)13    at Module.load (internal/modules/cjs/loader.js:863:32)14    at Function.Module._load (internal/modules/cjs/loader.js:708:14)15    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)16  jsonwp: { status: 7, value: [Object] },17  cause: null }18    at Object.errorFromW3CJsonCode (/Users/username/Desktop/appium-base-driver/test.js:9:13)19    at Object.<anonymous> (/Users/username/Desktop/appium-base-driver/test.js:20:21)20    at Module._compile (internal/modules/cjs/loader.js:999:30)21    at Object.Module._extensions..js (internal/modules/cjs

Full Screen

Using AI Code Generation

copy

Full Screen

1const {errorFromMJSONWPStatusCode} = require('appium-base-driver').errors;2let error = errorFromMJSONWPStatusCode(13, 'Custom error message');3console.log(error);4    at Object.errorFromMJSONWPStatusCode (/Users/isaacmurchie/Downloads/appium/node_modules/appium-base-driver/lib/protocol/errors.js:47:11)5    at Object. (/Users/isaacmurchie/Downloads/appium/test.js:4:26)6    at Module._compile (internal/modules/cjs/loader.js:1137:30)7    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)8    at Module.load (internal/modules/cjs/loader.js:985:32)9    at Function.Module._load (internal/modules/cjs/loader.js:878:14)10    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)

Full Screen

Using AI Code Generation

copy

Full Screen

1import { errorFromMJSONWPStatusCode } from 'appium-base-driver'2let error = errorFromMJSONWPStatusCode(13, null, 'en')3console.log(error)4import { errorFromMJSONWPStatusCode } from 'appium-base-driver'5let error = errorFromMJSONWPStatusCode(6, null, 'en')6console.log(error)

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Appium Base Driver automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful