Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
describe('unicode', function () {
let adb;
if (!process.env.TESTOBJECT_E2E_TESTS) {
adb = new ADB();
}
let initialIME;
let driver;
before(async function () {
// save the initial ime so we can make sure it is restored
if (adb) {
initialIME = await adb.defaultIME();
initialIME.should.not.eql('io.appium.settings/.UnicodeIME');
}
driver = await initSession(defaultUnicodeCaps);
});
after(async function () {
await deleteSession();
// make sure the IME has been restored
before(async function () {
// Don't test ADB on test object
if (process.env.TESTOBJECT_E2E_TESTS) {
this.skip();
}
// restarting doesn't work on Android 7+
adb = new ADB();
initialLocale = await getLocale(adb);
});
afterEach(async function () {
beforeEach(function () {
driver = new AndroidDriver();
driver.adb = new ADB();
driver.bootstrap = new helpers.bootstrap(driver.adb);
driver.settings = { update () {} };
driver.caps = {};
// create a fake bootstrap because we can't mock
// driver.bootstrap. in advance
let fakeBootstrap = {
start () {},
onUnexpectedShutdown: {catch () {}}
};
sandbox.stub(helpers, 'initDevice');
sandbox.stub(helpers, 'unlock');
sandbox.stub(helpers, 'bootstrap').returns(fakeBootstrap);
sandbox.stub(driver, 'initAUT');
sandbox.stub(driver, 'startAUT');
before(async function () {
if (process.env.TRAVIS) return this.skip(); // eslint-disable-line curly
let adb = new ADB();
if (!await adb.isAppInstalled('com.android.browser')) {
if (!await adb.isAppInstalled('com.android.chrome')) {
throw new Error('Neither default browser nor chrome available');
}
// `browser` is not available, so use `Chrome`
caps.browserName = 'Chrome';
urlId = 'com.android.chrome:id/url_bar';
}
driver = new AndroidDriver();
await driver.createSession(caps);
});
after(async function () {
async function killServer (adbPort) {
if (!process.env.TESTOBJECT_E2E_TESTS) {
let adb = await ADB.createADB({adbPort});
await adb.killServer();
if (process.env.CI) {
// on Travis this takes a while to get into a good state
await B.delay(10000);
}
}
}
async function initSession (caps, adbPort) {
if (TRAVIS && !CLOUD) {
let adb = await ADB.createADB({adbPort});
try {
// on Travis, sometimes we get the keyboard dying and the screen stuck
await adb.forceStop('com.android.inputmethod.latin');
await adb.shell(['pm', 'clear', 'com.android.inputmethod.latin']);
} catch (ign) {}
}
if (CLOUD) {
// on cloud tests, we want to set the `name` capability
if (!caps.name) {
caps.name = process.env.SAUCE_JOB_NAME || process.env.TRAVIS_JOB_NUMBER || 'unnamed';
}
}
// Create a WD driver
const host = getHost();
// Gets adb from npm package and setup logger
"use strict";
var ADB = require('appium-adb');
ADB.logger.init(require('../../server/logger').get('appium'));
module.exports = ADB;
// this list should be updated as ADB takes more arguments
const {
adbPort,
suppressKillServer,
remoteAdbHost,
clearDeviceLogsOnStart,
adbExecTimeout,
useKeystore,
keystorePath,
keystorePassword,
keyAlias,
keyPassword,
remoteAppsCacheLimit,
buildToolsVersion,
} = opts;
return await ADB.createADB({
adbPort,
suppressKillServer,
remoteAdbHost,
clearDeviceLogsOnStart,
adbExecTimeout,
useKeystore,
keystorePath,
keystorePassword,
keyAlias,
keyPassword,
remoteAppsCacheLimit,
buildToolsVersion,
});
};
describe('sharedPreferences', function () {
driver = new AndroidDriver();
let adb = new ADB();
driver.adb = adb;
let builder = new SharedPrefsBuilder();
describe('should skip setting sharedPreferences', withMocks({driver}, (mocks) => {
it('on undefined name', async function () {
driver.opts.sharedPreferences = {};
(await driver.setSharedPreferences()).should.be.false;
mocks.driver.verify();
});
}));
describe('should set sharedPreferences', withMocks({driver, adb, builder, fs}, (mocks) => {
it('on defined sharedPreferences object', async function () {
driver.opts.appPackage = 'io.appium.test';
driver.opts.sharedPreferences = {
name: 'com.appium.prefs',
prefs: [{type: 'string', name: 'mystr', value: 'appium rocks!'}]
};
describe('UiAutomator2 Driver Helpers', function () {
const adb = new ADB();
describe('ensureInternetPermissionForApp', withMocks({adb}, (mocks) => {
const app = '/path/to/app.apk';
afterEach(function () {
mocks.verify();
});
it('should do nothing if app has internet perms', async function () {
mocks.adb.expects('hasInternetPermissionFromManifest')
.once()
.withExactArgs(app)
.returns(true);
await helpers.ensureInternetPermissionForApp(adb, app);
});
it('should throw an error if app does not have internet perms', async function () {
mocks.adb.expects('hasInternetPermissionFromManifest')
.once()