Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
commands.postDismissAlert = async function postDismissAlert (opts = {}) {
try {
let params = {};
if (opts.buttonLabel) {
params.name = opts.buttonLabel;
}
return await this.proxyCommand('/alert/dismiss', 'POST', params);
} catch (err) {
if (!this.isWebContext()) {
throw new errors.NoAlertOpenError();
}
let alert = await this.getAlert();
if (alert.close) {
return await alert.close();
}
await alert.cancel();
}
};
helpers.getAlert = async function getAlert () {
const possibleAlert = await this.findNativeElementOrElements('class name',
'XCUIElementTypeScrollView', true);
if (possibleAlert.length !== 1) {
throw new errors.NoAlertOpenError();
}
const possibleAlertButtons = await this.findNativeElementOrElements('class name',
'XCUIElementTypeButton', true, util.unwrapElement(possibleAlert[0]));
if (possibleAlertButtons.length < 1 || possibleAlertButtons.length > 2) {
throw new errors.NoAlertOpenError();
}
const assertButtonName = async (button, expectedName) => {
button = util.unwrapElement(button);
const name = await this.proxyCommand(`/element/${button}/attribute/name`, 'GET');
if (_.isNil(name) || name.toLowerCase() !== expectedName) {
throw new errors.NoAlertOpenError();
}
};
commands.getAlertButtons = async function getAlertButtons () {
try {
return await this.proxyCommand('/wda/alert/buttons', 'GET');
} catch (err) {
throw new errors.NoAlertOpenError();
}
};
commands.postAcceptAlert = async function postAcceptAlert (opts = {}) {
try {
let params = {};
if (opts.buttonLabel) {
params.name = opts.buttonLabel;
}
return await this.proxyCommand('/alert/accept', 'POST', params);
} catch (err) {
if (!this.isWebContext()) {
throw new errors.NoAlertOpenError();
}
let alert = await this.getAlert();
if (alert.close) {
return await alert.close();
}
await alert.ok();
}
};
function handleError (err) {
if (err.message && err.message.match(/not open/)) {
throw new errors.NoAlertOpenError();
} else {
throw err;
}
}