Skip to content
This repository has been archived by the owner on Aug 5, 2020. It is now read-only.

What's the best way to pass arguments to condition in the waitForCondition command? #83

Open
anatoliyarkhipov opened this issue Apr 6, 2018 · 0 comments

Comments

@anatoliyarkhipov
Copy link

For example, in a condition like this I want to pass the selector argument:

const condition = (selector) => {
  return !! $(selector).attr('disabled')
}

But it looks like there is no way to do this except of constructing condition as string:

// like this
const condition = `return !! $(${selector}).attr('disabled')`

// or this
const conditionFunc = () => {
  return !! $({{SELECTOR}}).attr('disabled')
}

const condition = conditionFunc.toString().replace('{{SELECTOR}}', selector)

Not a big deal in the exampe, but there might be really big condition functions where such constructing can really bother.

Wouldn't it be as simple to add support for arguments as to add the extra argument for the execute call here?

this.protocol.execute.call(this.client, this.condition, function(result) {
var now = new Date().getTime();
if (result.status === 0 && result.value !== 'undefined') {
setTimeout(function() {
var msg = self.messages.success + (now - self.startTimer) + ' milliseconds.';
self.cb.call(self.client.api, result.value);
self.client.assertion(true, !!result.value, false, msg, true);
return self.emit('complete');
}, self.timeout);
} else if (now - self.startTimer < self.ms) {
setTimeout(function() {
self.check();
}, 500);
} else {
var msg = self.messages.timeout + self.ms + ' milliseconds.';
self.cb.call(self.client.api, false);
self.client.assertion(false, false, false, msg, true);
return self.emit('complete');
}
});

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Development

No branches or pull requests

1 participant