Skip to content

Commit

Permalink
US-9484 Added Install/Delete/Launch/Close commands for BlueSky
Browse files Browse the repository at this point in the history
  • Loading branch information
simongranger committed Dec 10, 2018
1 parent cd0def8 commit 4845e2e
Show file tree
Hide file tree
Showing 3 changed files with 127 additions and 44 deletions.
76 changes: 76 additions & 0 deletions lib/bluesky.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
import logger from './logger';
import commands from './commands/index';

let bluesky = {};

bluesky.startSession = function (caps) {
logger.info("BlueSky: Start Session");
let channelId = 'dev';
if (caps.channelId) {
logger.info("caps.channelId: " + caps.channelId);
channelId = caps.channelId;
}
// Check if app is installed
let devAppInstalled = this.isAppInstalled(caps.youiEngineAppAddress, channelId);

if (caps.fullReset || !devAppInstalled) {
this.installApp(caps.username, caps.password, caps.app, caps.youiEngineAppAddress);
} else{
this.launchApp(caps.youiEngineAppAddress, channelId);
}
};

bluesky.endSession = function (caps) {
logger.info("BlueSky: End Session");
if (caps.fullReset) {
this.removeApp(caps.username, caps.password, caps.youiEngineAppAddress);
} else {
this.closeApp(caps.youiEngineAppAddress);
}
};

bluesky.removeApp = function (username, password, youiEngineAppAddress, channelId = 'dev') {
logger.info("BlueSky: Delete app");
let shell = require('shelljs');
let bluesky_delete_script = "curl --user " + username + ":" + password + " --digest --progress-bar --show-error -F 'mysubmit=Delete' -F 'archive=' --output /tmp/dev_server_out --write-out '%{http_code}' 'http://" + youiEngineAppAddress + "/plugin_install'";
shell.exec(bluesky_delete_script);
};

bluesky.installApp = async function (username, password, app, youiEngineAppAddress, channelId = 'dev') {
logger.info("BlueSky: Installing and launching app");
if (this.isAppInstalled(youiEngineAppAddress, channelId)){
this.removeApp();
}
let bluesky_install_script = "curl -v -# -f -i --user '" + username + ":" + password + "' --digest --progress-bar -F 'mysubmit=Install' -F 'archive=@" + app + "' -F 'passwd=' http://" + youiEngineAppAddress + "/plugin_install | grep '<font color' | sed 's/<font color=\'red\'>//' "; // eslint-disable-line no-useless-escape
let shell = require('shelljs');
shell.exec(bluesky_install_script);
};

bluesky.launchApp = function (youiEngineAppAddress, channelId = 'dev') {
logger.info("BlueSky: Launch app");
let shell = require('shelljs');
let bluesky_install_script = "curl -d '' http://" + youiEngineAppAddress + ":8060/launch/" + channelId;
logger.info("BlueSky: Launch app " + bluesky_install_script);
shell.exec(bluesky_install_script);
};

bluesky.isAppInstalled = function (youiEngineAppAddress, channelId = 'dev') {
logger.info("BlueSky: Check if App is installed");
// Check if app is installed
let devAppInstalled = false;
let shell = require('shelljs');
let installedApps = shell.exec("curl http://" + youiEngineAppAddress + ":8060/query/apps");
if (installedApps.includes("id=\"" + channelId + "\"")){
devAppInstalled = true;
}
return devAppInstalled;
};

bluesky.closeApp = function (youiEngineAppAddress) {
logger.info("BlueSky: Close App");
let shell = require('shelljs');
logger.info("Returning to Home Screen");
shell.exec("curl -d '' http://" + youiEngineAppAddress + ":8060/keypress/home");
};

export default bluesky;
46 changes: 46 additions & 0 deletions lib/commands/general.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,53 @@
import { youiEngineDriverReturnValues } from '../utils';
import logger from '../logger';
import bluesky from '../bluesky';

let commands = {};

commands.installApp = async function () {
switch(this.caps.platformName) {
case 'bluesky':
await bluesky.installApp(this.caps.username, this.caps.password, this.caps.app, this.caps.youiEngineAppAddress);
break;
default:
let msg = 'platform (' + this.caps.platformName + ') does not support this command';
logger.errorAndThrow(msg);
}
}

commands.removeApp = async function (appID) {
switch(this.caps.platformName) {
case 'bluesky':
await bluesky.removeApp(this.caps.username, this.caps.password, this.caps.youiEngineAppAddress, appID);
break;
default:
let msg = 'platform (' + this.caps.platformName + ') does not support this command';
logger.errorAndThrow(msg);
}
}

commands.closeApp = async function () {
switch(this.caps.platformName) {
case 'bluesky':
await bluesky.closeApp(this.caps.youiEngineAppAddress);
break;
default:
let msg = 'platform (' + this.caps.platformName + ') does not support this command';
logger.errorAndThrow(msg);
}
}

commands.launchApp = async function () {
switch(this.caps.platformName) {
case 'bluesky':
await bluesky.launchApp(this.caps.youiEngineAppAddress);
break;
default:
let msg = 'platform (' + this.caps.platformName + ') does not support this command';
logger.errorAndThrow(msg);
}
}

commands.getPageSource = async function () {

let source;
Expand Down
49 changes: 5 additions & 44 deletions lib/driver.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import AndroidDriver from 'appium-android-driver';
import IOSDriver from 'appium-ios-driver';
import XCUITestDriver from 'appium-xcuitest-driver';
import MacDriver from 'appium-mac-driver';
import bluesky from './bluesky';



Expand All @@ -24,6 +25,7 @@ const TO_PROXY_COMMON = [
'getLogTypes',
'getOrientation',
'getStrings',
'installApp',
'launchApp',
'lock',
'removeApp',
Expand Down Expand Up @@ -83,6 +85,7 @@ class YouiEngineDriver extends BaseDriver {
// setup proxies - if platformName is not empty, make it less case sensitive
if (caps.platformName !== null) {
let appPlatform = caps.platformName.toLowerCase();
this.validateAppLocation(caps.app);
if (appPlatform === "ios") {
await this.startIOSSession(caps);
} else if (appPlatform === "android") {
Expand All @@ -92,7 +95,7 @@ class YouiEngineDriver extends BaseDriver {
} else if (appPlatform === "yimac") {
this.startYIMacSession(caps);
} else if (appPlatform === "bluesky") {
this.startBlueSkySession(caps);
bluesky.startSession(caps);
} else if (appPlatform === "yitvos") {
this.startYITVOSSession(caps);
}
Expand Down Expand Up @@ -129,7 +132,7 @@ class YouiEngineDriver extends BaseDriver {
} else if (appPlatform === "yitvos") {
this.endYITVOSSession(this.caps);
} else if (appPlatform === "bluesky") {
this.endBlueSkySession(this.caps);
bluesky.endSession(this.caps);
}
}

Expand Down Expand Up @@ -291,7 +294,6 @@ class YouiEngineDriver extends BaseDriver {
shell.exec("killall " + process_name);

logger.info("Launching macOS app");
this.validateAppLocation(caps.app);
let spawn = require('child_process').spawn,
ls = spawn(caps.app);

Expand Down Expand Up @@ -323,48 +325,8 @@ class YouiEngineDriver extends BaseDriver {
shell.exec("killall " + process_name);
}

startBlueSkySession (caps) {
this.validateAppLocation(caps.app);

let channelId = 'dev';
if (caps.channelId) {
channelId = caps.channelId;
}
let shell = require('shelljs');

// Check if app is installed
let devAppInstalled = false;
let installedApps = shell.exec("curl http://" + caps.youiEngineAppAddress + ":8060/query/apps");
if (installedApps.includes("id=\"" + channelId + "\"")){
devAppInstalled = true;
}

let bluesky_install_script;
if (caps.fullReset || !devAppInstalled) {
logger.info("Installing and launching BlueSky app");
bluesky_install_script = "curl -v -# -f -i --user '" + caps.username + ":" + caps.password + "' --digest --progress-bar -F 'mysubmit=Install' -F 'archive=@" + caps.app + "' -F 'passwd=' http://" + caps.youiEngineAppAddress + "/plugin_install | grep '<font color' | sed 's/<font color=\'red\'>//' "; // eslint-disable-line no-useless-escape
} else{
logger.info("Launching BlueSky app");
bluesky_install_script = "curl -d '' http://" + caps.youiEngineAppAddress + ":8060/launch/" + channelId;
}
shell.exec(bluesky_install_script);
}

endBlueSkySession (caps) {
let shell = require('shelljs');
if (caps.fullReset) {
logger.info("Deleting app");
let bluesky_delete_script = "curl --user " + caps.username + ":" + caps.password + " --digest --progress-bar --show-error -F 'mysubmit=Delete' -F 'archive=' --output /tmp/dev_server_out --write-out '%{http_code}' 'http://" + caps.youiEngineAppAddress + "/plugin_install'";
shell.exec(bluesky_delete_script);
} else {
logger.info("Returning to Home Screen");
shell.exec("curl -d '' http://" + caps.youiEngineAppAddress + ":8060/keypress/home");
}
}

startYITVOSSession (caps) {
logger.info("Launching tvOS app");
this.validateAppLocation(caps.app);
let shell = require('shelljs');
if (caps.udid) {
shell.exec("ios-deploy --id " + caps.udid + " --uninstall --justlaunch --bundle " + caps.app);
Expand Down Expand Up @@ -501,5 +463,4 @@ class YouiEngineDriver extends BaseDriver {
for (let [cmd, fn] of _.toPairs(commands)) {
YouiEngineDriver.prototype[cmd] = fn;
}

export { YouiEngineDriver };

0 comments on commit 4845e2e

Please sign in to comment.