selectCascaderLevels function infrastructure ~ 70.6%

Last updated: 2026-03-04T23:21:38.380Z

Metrics

LOC: 35 Complexity: 6 Params: 1 Coverage: 70.6% (12/17 lines, 0x executed)

Signature

selectCascaderLevels(dropdown: HTMLElement): : Promise<boolean>

Source Code

async function selectCascaderLevels(dropdown: HTMLElement): Promise<boolean> {
  const MAX_LEVELS = 5;
  let level = 0;

  while (level < MAX_LEVELS) {
    const menus = dropdown.querySelectorAll<HTMLElement>(".ant-cascader-menu");
    const currentMenu = menus[level];
    if (!currentMenu) break;

    const items = currentMenu.querySelectorAll<HTMLElement>(
      ".ant-cascader-menu-item:not(.ant-cascader-menu-item-disabled)",
    );
    if (items.length === 0) {
      log.warn(`Nenhum item disponível no nível ${level} do cascader`);
      break;
    }

    // Pick a random item
    const idx = Math.floor(Math.random() * items.length);
    simulateClick(items[idx]);

    // Check if this item is a leaf (no expand icon)
    const isLeaf =
      !items[idx].querySelector(".ant-cascader-menu-item-expand-icon") ||
      items[idx].classList.contains("ant-cascader-menu-item-leaf");

    if (isLeaf) return true;

    // Wait for next menu to render
    await new Promise((r) => setTimeout(r, 100));
    level++;
  }

  return level > 0;
}

Dependencies (Outgoing)

graph LR selectCascaderLevels["selectCascaderLevels"] simulateClick["simulateClick"] selectCascaderLevels -->|calls| simulateClick style selectCascaderLevels fill:#dbeafe,stroke:#2563eb,stroke-width:2px click selectCascaderLevels "73af9106411d222c.html" click simulateClick "7c6c21320aaee4c4.html"
TargetType
simulateClick calls

Impact (Incoming)

graph LR selectCascaderLevels["selectCascaderLevels"] fill["fill"] fill -->|calls| selectCascaderLevels style selectCascaderLevels fill:#dbeafe,stroke:#2563eb,stroke-width:2px click selectCascaderLevels "73af9106411d222c.html" click fill "7a85157abe4e6b0a.html"
SourceType
fill calls