optimizeScript function exported ✓ 100.0%

Last updated: 2026-03-03T18:32:34.140Z

Metrics

LOC: 51 Complexity: 7 Params: 2 Coverage: 100.0% (26/26 lines, 12x executed)

Signature

optimizeScript( input: ScriptOptimizerInput, ): : Promise<string | null>

Summary

Optimizes an E2E test script using Chrome AI (Gemini Nano).

Tags

#@param input - Script content, framework, and optional page context#@returns Optimized script string, or `null` when AI is unavailable or fails

Source Code

export async function optimizeScript(
  input: ScriptOptimizerInput,
): Promise<string | null> {
  log.debug(
    `Otimizando script ${input.framework} (${input.script.length} chars)...`,
  );

  const session = await getOrCreateSession();
  if (!session) {
    log.warn("Sessão Chrome AI indisponível — otimização não realizada.");
    return null;
  }

  const prompt = scriptOptimizerPrompt.buildPrompt(input);

  log.groupCollapsed(`Prompt → otimização de script ${input.framework}`);
  log.debug("▶ Prompt completo:\n" + prompt);
  log.groupEnd();

  const controller = new AbortController();
  const timeoutId = setTimeout(() => controller.abort(), OPTIMIZE_TIMEOUT_MS);

  let raw: string;
  try {
    raw = await session.prompt(prompt, {
      signal: controller.signal,
    });
  } catch (err) {
    if (err instanceof Error && err.name === "AbortError") {
      log.warn(`Timeout (${OPTIMIZE_TIMEOUT_MS}ms) na otimização do script.`);
    } else {
      optimizerSession?.destroy();
      optimizerSession = null;
      log.warn("Erro na otimização:", (err as Error).message);
    }
    return null;
  } finally {
    clearTimeout(timeoutId);
  }

  const result = scriptOptimizerPrompt.parseResponse(raw);

  log.groupCollapsed(`Resposta ← otimização de script ${input.framework}`);
  log.debug("◄ Resposta raw:\n" + raw);
  log.debug(
    `◄ Resultado parsed: ${result ? `${result.length} chars` : "null"}`,
  );
  log.groupEnd();

  return result;
}

Dependencies (Outgoing)

graph LR optimizeScript["optimizeScript"] getOrCreateSession["getOrCreateSession"] optimizeScript -->|calls| getOrCreateSession style optimizeScript fill:#dbeafe,stroke:#2563eb,stroke-width:2px click optimizeScript "5a1335379abb3f1d.html" click getOrCreateSession "886f8a1b05bac08e.html"
TargetType
getOrCreateSession calls

Impact (Incoming)

graph LR optimizeScript["optimizeScript"] getLanguageModelApi["getLanguageModelApi"] getLanguageModelApi -->|uses| optimizeScript style optimizeScript fill:#dbeafe,stroke:#2563eb,stroke-width:2px click optimizeScript "5a1335379abb3f1d.html" click getLanguageModelApi "64fb30d22107f96b.html"
SourceType
getLanguageModelApi uses