Best JavaScript code snippet using appium-base-driver
server.js
Source:server.js
1import path from 'path';2import express from 'express';3import http from 'http';4import favicon from 'serve-favicon';5import bodyParser from 'body-parser';6import methodOverride from 'method-override';7import log from './logger';8import { startLogFormatter, endLogFormatter } from './express-logging';9import { allowCrossDomain, fixPythonContentType, catchAllHandler,10 catch404Handler, catch4XXHandler } from './middleware';11import { guineaPig, guineaPigScrollable, welcome, STATIC_DIR } from './static';12import { produceError, produceCrash } from './crash';13async function server (configureRoutes, port, hostname = null) {14 // create the actual http server15 let app = express();16 let httpServer = http.createServer(app);17 return await new Promise((resolve, reject) => {18 httpServer.on('error', (err) => {19 if (err.code === 'EADDRNOTAVAIL') {20 log.error('Could not start REST http interface listener. ' +21 'Requested address is not available.');22 } else {23 log.error('Could not start REST http interface listener. The requested ' +24 'port may already be in use. Please make sure there is no ' +25 'other instance of this server running already.');26 }27 reject(err);28 });29 httpServer.on('connection', (socket) => {30 socket.setTimeout(600 * 1000); // 10 minute timeout31 });32 configureServer(app, configureRoutes);33 let serverArgs = [port];34 if (hostname) {35 // If the hostname is omitted, the server will accept36 // connections on any IP address37 serverArgs.push(hostname);38 }39 httpServer.listen(...serverArgs, (err) => {40 if (err) {41 reject(err);42 }43 resolve(httpServer);44 });45 });46}47function configureServer (app, configureRoutes) {48 app.use(endLogFormatter);49 // set up static assets50 app.use(favicon(path.resolve(STATIC_DIR, 'favicon.ico')));51 app.use(express.static(STATIC_DIR));52 // crash routes, for testing53 app.use('/wd/hub/produce_error', produceError);54 app.use('/wd/hub/crash', produceCrash);55 // add middlewares56 app.use(allowCrossDomain);57 app.use(fixPythonContentType);58 app.use(bodyParser.urlencoded({extended: true}));59 app.use(methodOverride());60 app.use(catch4XXHandler);61 app.use(catchAllHandler);62 // make sure appium never fails because of a file size upload limit63 app.use(bodyParser.json({limit: '1gb'}));64 // set up start logging (which depends on bodyParser doing its thing)65 app.use(startLogFormatter);66 configureRoutes(app);67 // dynamic routes for testing, etc.68 app.all('/welcome', welcome);69 app.all('/test/guinea-pig', guineaPig);70 app.all('/test/guinea-pig-scrollable', guineaPigScrollable);71 // catch this last, so anything that falls through is 404ed72 app.use(catch404Handler);73}...
middleware.js
Source:middleware.js
1import log from './logger';2import { errors } from 'mobile-json-wire-protocol';3function allowCrossDomain (req, res, next) {4 try {5 res.header('Access-Control-Allow-Origin', '*');6 res.header('Access-Control-Allow-Methods', 'GET,POST,PUT,OPTIONS,DELETE');7 res.header('Access-Control-Allow-Headers', 'origin, content-type, accept');8 // need to respond 200 to OPTIONS9 if ('OPTIONS' === req.method) {10 res.sendStatus(200);11 } else {12 next();13 }14 } catch (err) {15 log.error(`Unexpected error: ${err.stack}`);16 next();17 }18}19function fixPythonContentType (req, res, next) {20 // hack because python client library gives us wrong content-type21 if (/^\/wd/.test(req.path) && /^Python/.test(req.headers['user-agent'])) {22 if (req.headers['content-type'] === 'application/x-www-form-urlencoded') {23 req.headers['content-type'] = 'application/json';24 }25 }26 next();27}28function catchAllHandler (err, req, res, next) {29 log.error(`Uncaught error: ${err.message}`);30 log.error('Sending generic error response');31 try {32 res.status(500).send({33 status: errors.UnknownError.code(),34 value: `ERROR running Appium command: ${err.message}`35 });36 log.error(err);37 } catch (ign) {38 next(ign);39 }40}41function catch4XXHandler (err, req, res, next) {42 if (err.status >= 400 && err.status < 500) {43 // set the content type to `text/plain`44 // https://code.google.com/p/selenium/wiki/JsonWireProtocol#Responses45 log.debug(`Setting content type to 'text/plain' for HTTP status '${err.status}'`);46 res.set('Content-Type', 'text/plain');47 res.status(err.status).send(`Unable to process request: ${err.message}`);48 } else {49 next(err);50 }51}52function catch404Handler (req, res) {53 // set the content type to `text/plain`54 // https://code.google.com/p/selenium/wiki/JsonWireProtocol#Responses55 log.debug('No route found. Setting content type to \'text/plain\'');56 res.set('Content-Type', 'text/plain');57 res.status(404).send(`The URL '${req.originalUrl}' did not map to a valid resource`);58}...
Using AI Code Generation
1const { BaseDriver } = require('appium-base-driver');2const { fixPythonContentType } = BaseDriver;3const { BaseDriver } = require('appium-base-driver');4const { fixPythonContentType } = BaseDriver;5const { BaseDriver } = require('appium-base-driver');6const { fixPythonContentType } = BaseDriver;7const { BaseDriver } = require('appium-base-driver');8const { fixPythonContentType } = BaseDriver;9const { BaseDriver } = require('appium-base-driver');10const { fixPythonContentType } = BaseDriver;11const { BaseDriver } = require('appium-base-driver');12const { fixPythonContentType } = BaseDriver;13const { BaseDriver } = require('appium-base-driver');14const { fixPythonContentType } = BaseDriver;15const { BaseDriver } = require('appium-base-driver');16const { fixPythonContentType } = BaseDriver;17const { BaseDriver } = require('appium-base-driver');18const { fixPythonContentType } = BaseDriver;19const { BaseDriver } = require('appium-base-driver');20const { fixPythonContentType } = BaseDriver;21const { BaseDriver } = require('appium-base-driver');22const { fixPythonContentType } = BaseDriver;23const { BaseDriver } = require('appium-base-driver');24const { fixPythonContentType } = BaseDriver;25const { BaseDriver } = require('appium-base-driver');26const { fixPythonContentType } = BaseDriver;27const { BaseDriver } = require('appium-base-driver');28const { fixPython
Using AI Code Generation
1const { BaseDriver } = require('appium-base-driver');2const { fixPythonContentType } = BaseDriver;3const { util } = require('appium-support');4const path = require('path');5const fs = require('fs');6const pythonScript = path.resolve(__dirname, 'python_script.py');7const pythonScriptContent = fs.readFileSync(pythonScript, 'utf8');8const fixedPythonScriptContent = fixPythonContentType(pythonScriptContent);9(async () => {10 const { stdout } = await util.exec('python', ['-c', fixedPythonScriptContent]);11 console.log(stdout);12})();
Using AI Code Generation
1var AppiumBaseDriver = require('appium-base-driver');2AppiumBaseDriver.prototype.fixPythonContentType = function (contentType) {3 return contentType.replace(/'/g, '"');4};5var AppiumBaseDriver = require('appium-base-driver');6AppiumBaseDriver.prototype.fixPythonContentType = function (contentType) {7 return contentType.replace(/'/g, '"');8};9var AppiumBaseDriver = require('appium-base-driver');10AppiumBaseDriver.prototype.fixPythonContentType = function (contentType) {11 return contentType.replace(/'/g, '"');12};13var AppiumBaseDriver = require('appium-base-driver');14AppiumBaseDriver.prototype.fixPythonContentType = function (contentType) {15 return contentType.replace(/'/g, '"');16};17var AppiumBaseDriver = require('appium-base-driver');18AppiumBaseDriver.prototype.fixPythonContentType = function (contentType) {19 return contentType.replace(/'/g, '"');20};21var AppiumBaseDriver = require('appium-base-driver');22AppiumBaseDriver.prototype.fixPythonContentType = function (contentType) {23 return contentType.replace(/'/g, '"');24};25var AppiumBaseDriver = require('appium-base-driver');26AppiumBaseDriver.prototype.fixPythonContentType = function (contentType) {27 return contentType.replace(/'/g, '"');28};29var AppiumBaseDriver = require('appium-base-driver');30AppiumBaseDriver.prototype.fixPythonContentType = function (contentType) {31 return contentType.replace(/'/g, '"');32};33var AppiumBaseDriver = require('appium-base-driver');34AppiumBaseDriver.prototype.fixPythonContentType = function (contentType) {35 return contentType.replace(/'/g, '"');36};37var AppiumBaseDriver = require('appium-base-driver');38AppiumBaseDriver.prototype.fixPythonContentType = function (contentType) {
Using AI Code Generation
1var BaseDriver = require('appium-base-driver');2var driver = new BaseDriver();3driver.fixPythonContentType('{"status": 0, "value": "value"}');4var BaseDriver = require('appium-base-driver');5var driver = new BaseDriver();6driver.fixPythonContentType('{"status": 0, "value": "value"}');7var BaseDriver = require('appium-base-driver');8var driver = new BaseDriver();9driver.jwpProxyActive = true;10driver.jwpProxyAvoid = ['getSession'];11driver.jwpProxyAvoid = ['getSession', 'getStatus'];12driver.jwpProxyAvoid = ['getSession', 'getStatus', 'getCommand'];13var BaseDriver = require('appium-base-driver');14var driver = new BaseDriver();15driver.jwpProxyActive = true;16driver.jwpProxyAvoid = ['getSession'];17driver.jwpProxyAvoid = ['getSession', 'getStatus'];18driver.jwpProxyAvoid = ['getSession', 'getStatus', 'getCommand'];19var BaseDriver = require('appium-base-driver');20var driver = new BaseDriver();21driver.jwpProxyActive = true;22driver.jwpProxyAvoid = ['getSession'];23driver.jwpProxyAvoid = ['getSession', 'getStatus'];24driver.jwpProxyAvoid = ['getSession', 'getStatus', 'getCommand'];25var BaseDriver = require('appium-base-driver');26var driver = new BaseDriver();27driver.jwpProxyActive = true;28driver.jwpProxyAvoid = ['getSession'];29driver.jwpProxyAvoid = ['getSession', 'getStatus'];30driver.jwpProxyAvoid = ['getSession', 'getStatus', 'getCommand'];31var BaseDriver = require('appium-base-driver');32var driver = new BaseDriver();33driver.jwpProxyActive = true;34driver.jwpProxyAvoid = ['getSession'];35driver.jwpProxyAvoid = ['getSession', 'getStatus'];36driver.jwpProxyAvoid = ['getSession', 'getStatus', 'getCommand'];37var BaseDriver = require('appium-base-driver');38var driver = new BaseDriver();39driver.jwpProxyActive = true;40driver.jwpProxyAvoid = ['getSession'];41driver.jwpProxyAvoid = ['getSession', 'getStatus'];
Using AI Code Generation
1const { BaseDriver } = require('appium-base-driver');2const { util } = require('appium-support');3const { fixPythonContentType } = util;4const driver = new BaseDriver();5const pythonString = 'b\'{"value": "Hello World!"}\'';6const fixedPythonString = fixPythonContentType(pythonString);7console.log(fixedPythonString);
Using AI Code Generation
1const { fixPythonContentType } = require('appium-base-driver');2const pythonContentType = fixPythonContentType('image/png');3const { fixImageOrientation } = require('appium-base-driver');4const fixedImageOrientation = fixImageOrientation(imageBuffer, orientation);5const { isShowingLockscreen } = require('appium-base-driver');6const isLockscreen = isShowingLockscreen(imageBuffer);7const { getScreenshotDataForXCUITest } = require('appium-base-driver');8const screenshotData = getScreenshotDataForXCUITest(imageBuffer, orientation);9const { getScreenshotDataForW3C } = require('appium-base-driver');10const screenshotData = getScreenshotDataForW3C(imageBuffer, orientation);11const { getScreenshotData } = require('appium-base-driver');12const screenshotData = getScreenshotData(imageBuffer, orientation, platformName);13const { getScreenshotOrientation } = require('appium-base-driver');14const screenshotOrientation = getScreenshotOrientation(imageBuffer, orientation);15const { getScreenshotOrientationForXCUITest } = require('appium-base-driver');16const screenshotOrientation = getScreenshotOrientationForXCUITest(imageBuffer, orientation);17const { getScreenshotOrientationForW3C } =
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.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!