UNPKG

nightwatch

Version:

Easy to use Node.js based end-to-end testing solution for web applications using the W3C WebDriver API.

59 lines (48 loc) 1.56 kB
const __RECURSION__ = 'recursion'; class LocateStrategy { static get Strategies() { return { ID: 'id', CSS_SELECTOR: 'css selector', LINK_TEXT: 'link text', PARTIAL_LINK_TEXT: 'partial link text', TAG_NAME: 'tag name', XPATH: 'xpath', NAME: 'name', CLASS_NAME: 'class name', // Appium-specific strategies ACCESSIBILITY_ID: 'accessibility id', ANDROID_UIAUTOMATOR: '-android uiautomator', IOS_PREDICATE_STRING: '-ios predicate string', IOS_CLASS_CHAIN: '-ios class chain' }; } static isValid(strategy) { return Object.keys(LocateStrategy.Strategies).some(key => { return String(strategy).toLocaleLowerCase() === LocateStrategy.Strategies[key]; }); } static getList() { return Object.keys(LocateStrategy.Strategies).map(k => LocateStrategy.Strategies[k]).join(', '); } static get XPATH() { return LocateStrategy.Strategies.XPATH; } static get CSS_SELECTOR() { return LocateStrategy.Strategies.CSS_SELECTOR; } static getDefault() { return LocateStrategy.CSS_SELECTOR; } static validate(strategy, apiMethod) { if (!LocateStrategy.isValid(strategy)) { const list = LocateStrategy.getList(); const forApiMethod = apiMethod ? ` for .${apiMethod}()` : ''; throw new Error(`Provided locating strategy "${strategy}" is not supported${forApiMethod}. It must be one of the following: ${list}.`); } } static get Recursion() { return __RECURSION__; } } module.exports = LocateStrategy;