UNPKG

skutter

Version:

Skutter: Opinionated BDD Browser based test framework

40 lines (39 loc) 1.7 kB
"use strict"; const page_element_searcher_1 = require("./page-element-searcher"); class DefinitionFinder { static getDefinition(context, target) { if (!context.inspectionStack) { if (!context.page.structure) { throw new Error("[DefinitionFinder].[getDefinition] context.page.structure is null and cannot be searched."); } return context.page.structure.find(target, true); } else { let inspectionStack = context.inspectionStack; let stackItem; if (inspectionStack) { page_element_searcher_1.PageElementSearcher.rewindStack(inspectionStack, target, false); let topItem = inspectionStack.topItem; if (topItem) { stackItem = topItem; if (!stackItem.definition) { throw new Error("definition is undefined for a valid stack item"); } if (stackItem.definition.name !== target) { console.log(`[getDefinition] Current inspection is not the desired. "${stackItem.definition.name}" vs "${target}".`); } } } if (!stackItem) { return context.page.structure.find(target, true); } let definitionFromStack = stackItem.definition.find(target, false); if (!definitionFromStack) { context.inspectionStack.reset(); return context.page.structure.find(target, true); } return definitionFromStack; } } } exports.DefinitionFinder = DefinitionFinder;