skutter
Version:
Skutter: Opinionated BDD Browser based test framework
40 lines (39 loc) • 1.7 kB
JavaScript
;
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;