generateNegativeTest function test ✓ 100.0%

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

Metrics

LOC: 41 Complexity: 6 Params: 4 Coverage: 100.0% (11/11 lines, 3x executed)

Signature

generateNegativeTest( actions: CapturedAction[], options: E2EGenerateOptions, useSmartSelectors: boolean, ): : string

Source Code

function generateNegativeTest(
  actions: CapturedAction[],
  options: E2EGenerateOptions,
  useSmartSelectors: boolean,
): string {
  const requiredActions = actions.filter((a) => a.required);
  if (requiredActions.length === 0) return "";

  const visitLine = options.pageUrl
    ? `            ->visit('${escapeString(options.pageUrl)}')\n`
    : "";

  const submitAction = actions.find(
    (a) => a.actionType === "click" || a.actionType === "submit",
  );
  const submitLine = submitAction
    ? `            ->click('${escapeString(resolveSelector(submitAction, useSmartSelectors))}')\n`
    : "";

  const assertionLines = (options.assertions ?? [])
    .filter((a) => a.type === "field-error")
    .map(assertionLine);

  return [
    ``,
    `test('should show validation errors for empty required fields', function () {`,
    `    $this->browse(function (Browser $browser) {`,
    `        $browser`,
    visitLine +
      `            // Leave required fields empty and submit\n` +
      submitLine,
    ...assertionLines,
    ...requiredActions.map((a) => {
      const sel = escapeString(resolveSelector(a, useSmartSelectors));
      return `            ->assertAttribute('${sel}', 'required', '')`;
    }),
    `        ;`,
    `    });`,
    `});`,
  ].join("\n");
}

Dependencies (Outgoing)

graph LR generateNegativeTest["generateNegativeTest"] escapeString["escapeString"] resolveSelector["resolveSelector"] generateNegativeTest -->|calls| escapeString generateNegativeTest -->|calls| resolveSelector style generateNegativeTest fill:#dbeafe,stroke:#2563eb,stroke-width:2px click generateNegativeTest "a2037c877154ed4a.html" click escapeString "5c2f25e3b4548c2d.html" click resolveSelector "361a4021ea67e76c.html"
TargetType
escapeString calls
resolveSelector calls

No incoming dependencies.