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)
| Target | Type |
|---|---|
| getOrCreateSession | calls |
Impact (Incoming)
| Source | Type |
|---|---|
| getLanguageModelApi | uses |