Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
await Promise.all(esquery(file.ast, ELEMENT_ASSIGNMENT).map(async (assignment, index) => {
const elementMetaData = metaData.elements[index];
if (!elementMetaData) {
return;
}
if (elementMetaData.type === true) {
delete elementMetaData.type;
}
const [typedElement] = esquery(assignment, ELEMENT_TYPE_QUERY);
const [elementGroup] = esquery(assignment, ELEMENT_GROUP_QUERY);
const [typedElementGroup] = esquery(assignment, ELEMENT_GROUP_TYPE_QUERY);
if (elementGroup || typedElementGroup) {
elementMetaData.group = true;
}
if (typedElement || typedElementGroup) {
const typed = typedElement || typedElementGroup;
const [requireStatement] = esquery(file.ast, PAGE_OBJECT_REQUIRE_QUERY(typed.name));
const [requirePath] = requireStatement.arguments;
const pageObjectFilePath = path.resolve(path.dirname(file.path), requirePath.value);
const pageObjectDirectory = path.dirname(pageObjectFilePath);
const pageObjectFileStructure = new FileStructure(pageObjectDirectory);
const pageObject = new PageObjectFile(pageObjectFilePath, pageObjectFileStructure);
const { name } = await pageObject.meta();
elementMetaData.type = name;
}
return;
}
if (elementMetaData.type === true) {
delete elementMetaData.type;
}
const [typedElement] = esquery(assignment, ELEMENT_TYPE_QUERY);
const [elementGroup] = esquery(assignment, ELEMENT_GROUP_QUERY);
const [typedElementGroup] = esquery(assignment, ELEMENT_GROUP_TYPE_QUERY);
if (elementGroup || typedElementGroup) {
elementMetaData.group = true;
}
if (typedElement || typedElementGroup) {
const typed = typedElement || typedElementGroup;
const [requireStatement] = esquery(file.ast, PAGE_OBJECT_REQUIRE_QUERY(typed.name));
const [requirePath] = requireStatement.arguments;
const pageObjectFilePath = path.resolve(path.dirname(file.path), requirePath.value);
const pageObjectDirectory = path.dirname(pageObjectFilePath);
const pageObjectFileStructure = new FileStructure(pageObjectDirectory);
const pageObject = new PageObjectFile(pageObjectFilePath, pageObjectFileStructure);
const { name } = await pageObject.meta();
elementMetaData.type = name;
}
}));
function transformIdentifiers (file, oldName, newName) {
let query = `Identifier[name="${oldName}"]`;
_.each(esquery(file.ast, query), (identifier) => {
identifier.name = newName;
});
return file.save(file.ast);
}
function checkIfPending () {
this.isPending = false;
let pendingIdentifiers = esquery(this.ast, PENDING_QUERY);
pendingIdentifiers.forEach(pendingIdentifier => {
if (pendingIdentifier.value === PENDING_IDENTIFIER) {
this.isPending = true;
}
});
}
await Promise.all(esquery(file.ast, ELEMENT_ASSIGNMENT).map(async (assignment, index) => {
const elementMetaData = metaData.elements[index];
if (!elementMetaData) {
return;
}
const [elementGroup] = esquery(assignment, ELEMENT_GROUP_QUERY);
const [typedElementGroup] = esquery(assignment, ELEMENT_GROUP_TYPE_QUERY);
if (elementGroup) {
elementMetaData.type = true;
}
if (typedElementGroup) {
const [requireStatement] = esquery(file.ast, PAGE_OBJECT_REQUIRE_QUERY(typedElementGroup.name));
const [requirePath] = requireStatement.arguments;
const pageObjectFilePath = path.resolve(path.dirname(file.path), requirePath.value);
const pageObjectDirectory = path.dirname(pageObjectFilePath);
const pageObjectFileStructure = new FileStructure(pageObjectDirectory);
const pageObject = new PageObjectFile(pageObjectFilePath, pageObjectFileStructure);
const { name } = await pageObject.meta();
elementMetaData.type = name;
}
}));
function parseThen (ast) {
const cloned = clone(ast);
return {
args: esquery(cloned, CALL_EXPRESSION_WITH_ARGUMENTS_QUERY).map(callExpression => callExpression.arguments).flatten(),
expressions: esquery(cloned, ASSERTION_CALL_EXPRESSION_QUERY),
imports: esquery(cloned, PAGE_OBJECT_REQUIRE_STATEMENT_QUERY),
params: esquery(cloned, STEP_PARAMS_QUERY)
};
}
await Promise.all(esquery(file.ast, ELEMENT_ASSIGNMENT).map(async (assignment, index) => {
const elementMetaData = metaData.elements[index];
if (!elementMetaData) {
return;
}
if (elementMetaData.type === true) {
delete elementMetaData.type;
}
const [typedElement] = esquery(assignment, ELEMENT_TYPE_QUERY);
const [elementGroup] = esquery(assignment, ELEMENT_GROUP_QUERY);
const [typedElementGroup] = esquery(assignment, ELEMENT_GROUP_TYPE_QUERY);
if (elementGroup || typedElementGroup) {
elementMetaData.group = true;
}
if (typedElement || typedElementGroup) {
const typed = typedElement || typedElementGroup;
const [requireStatement] = esquery(file.ast, PAGE_OBJECT_REQUIRE_QUERY(typed.name));
const [requirePath] = requireStatement.arguments;
const pageObjectFilePath = path.resolve(path.dirname(file.path), requirePath.value);
const pageObjectDirectory = path.dirname(pageObjectFilePath);
const pageObjectFileStructure = new FileStructure(pageObjectDirectory);
const pageObject = new PageObjectFile(pageObjectFilePath, pageObjectFileStructure);
const { name } = await pageObject.meta();
elementMetaData.type = name;
}
}));
await Promise.all(esquery(file.ast, ELEMENT_ASSIGNMENT).map(async (assignment, index) => {
const elementMetaData = metaData.elements[index];
if (!elementMetaData) {
return;
}
const [elementGroup] = esquery(assignment, ELEMENT_GROUP_QUERY);
const [typedElementGroup] = esquery(assignment, ELEMENT_GROUP_TYPE_QUERY);
if (elementGroup) {
elementMetaData.type = true;
}
if (typedElementGroup) {
const [requireStatement] = esquery(file.ast, PAGE_OBJECT_REQUIRE_QUERY(typedElementGroup.name));
const [requirePath] = requireStatement.arguments;
const pageObjectFilePath = path.resolve(path.dirname(file.path), requirePath.value);
const pageObjectDirectory = path.dirname(pageObjectFilePath);
const pageObjectFileStructure = new FileStructure(pageObjectDirectory);
const pageObject = new PageObjectFile(pageObjectFilePath, pageObjectFileStructure);
const { name } = await pageObject.meta();
elementMetaData.type = name;
}
}));
function transformReferencePath (file, oldFromPath, oldToPath, newFromPath, newToPath) {
let oldRequirePath = getRelativeRequirePath(path.dirname(oldFromPath), oldToPath);
let newRequirePath = getRelativeRequirePath(path.dirname(newFromPath), newToPath);
let query = `CallExpression[callee.name="require"] Literal[value="${oldRequirePath}"]`;
_.each(esquery(file.ast, query), (requirePathLiteral) => {
requirePathLiteral.value = newRequirePath;
requirePathLiteral.raw = `'${newRequirePath}'`;
});
return file.save(file.ast);
}
return !!expressions.find(expression => esquery(expression, `Identifier[name="${identifier.name}"]`).length > 0);
})