recordedStepLine function ✓ 100.0%

Last updated: 2026-03-01T23:25:47.084Z

Metrics

LOC: 50 Complexity: 31 Params: 3 Coverage: 100.0% (20/20 lines, 35x executed)

Signature

recordedStepLine( step: RecordedStep, useSmartSelectors: boolean, ): : string

Architecture violations

View all

  • [warning] max-cyclomatic-complexity: 'recordedStepLine' has cyclomatic complexity 31 (max 10)

Source Code

function recordedStepLine(
  step: RecordedStep,
  useSmartSelectors: boolean,
): string {
  const sel =
    step.smartSelectors?.length && useSmartSelectors
      ? escapeString(pickBestSelector(step.smartSelectors, step.selector ?? ""))
      : escapeString(step.selector ?? "");
  const val = escapeString(step.value ?? "");
  const comment = step.label ? `  // ${step.label}` : "";

  switch (step.type) {
    case "navigate":
      return `  await page.goto('${escapeString(step.url ?? "")}');${comment}`;
    case "fill":
      return `  await page.locator('${sel}').fill('${val}');${comment}`;
    case "click":
      return `  await page.locator('${sel}').click();${comment}`;
    case "select":
      return `  await page.locator('${sel}').selectOption('${val}');${comment}`;
    case "check":
      return `  await page.locator('${sel}').check();${comment}`;
    case "uncheck":
      return `  await page.locator('${sel}').uncheck();${comment}`;
    case "clear":
      return `  await page.locator('${sel}').clear();${comment}`;
    case "submit":
      return `  await page.locator('${sel}').click();${comment}`;
    case "hover":
      return `  await page.locator('${sel}').hover();${comment}`;
    case "press-key":
      return `  await page.keyboard.press('${escapeString(step.key ?? "")}');${comment}`;
    case "wait-for-element":
      return `  await page.locator('${sel}').waitFor({ state: 'visible', timeout: ${step.waitTimeout ?? 5000} });${comment}`;
    case "wait-for-hidden":
      return `  await page.locator('${sel}').waitFor({ state: 'hidden', timeout: ${step.waitTimeout ?? 10000} });${comment}`;
    case "wait-for-url":
      return `  await page.waitForURL('${escapeString(step.url ?? step.value ?? "")}');${comment}`;
    case "wait-for-network-idle":
      return `  await page.waitForLoadState('networkidle');${comment}`;
    case "scroll":
      return step.scrollPosition
        ? `  await page.evaluate(() => window.scrollTo(${step.scrollPosition.x}, ${step.scrollPosition.y}));${comment}`
        : `  // scroll${comment}`;
    case "assert":
      return step.assertion
        ? assertionLine(step.assertion)
        : `  // assert${comment}`;
  }
}

Dependencies (Outgoing)

graph LR recordedStepLine["recordedStepLine"] escapeString["escapeString"] assertionLine["assertionLine"] recordedStepLine -->|calls| escapeString recordedStepLine -->|calls| assertionLine style recordedStepLine fill:#dbeafe,stroke:#2563eb,stroke-width:2px click recordedStepLine "b05ab4bbb41f5984.html" click escapeString "5c2f25e3b4548c2d.html" click assertionLine "0f28f576e085ec59.html"
TargetType
escapeString calls
assertionLine calls

Impact (Incoming)

graph LR recordedStepLine["recordedStepLine"] generateFromRecording["generateFromRecording"] generateFromRecording -->|calls| recordedStepLine generateFromRecording -->|calls| recordedStepLine generateFromRecording -->|calls| recordedStepLine style recordedStepLine fill:#dbeafe,stroke:#2563eb,stroke-width:2px click recordedStepLine "b05ab4bbb41f5984.html" click generateFromRecording "016d088e01773d17.html"