exportRecording function exported

Last updated: 2026-03-05T23:42:26.235Z

Metrics

LOC: 66 Complexity: 9 Params: 1

Signature

exportRecording(framework: string): : Promise<void>

Source Code

export async function exportRecording(framework: string): Promise<void> {
  if (panelState.isOptimizing) return;

  try {
    const result = (await sendToPage({
      type: "EXPORT_RECORDING",
      payload: {
        framework,
        options: {
          includeAssertions: true,
          smartSelectors: true,
          smartWaits: true,
        },
      },
    })) as { script?: string; error?: string };

    if (!result?.script) {
      addLog(result?.error ?? t("logRecordExportError"), "error");
      return;
    }

    let finalScript = result.script;
    let wasOptimized = false;

    if (panelState.optimizeWithAI) {
      panelState.isOptimizing = true;
      renderRecordTab();
      addLog(t("logRecordOptimizing"), "info");

      try {
        const [pageUrl, pageTitle] = await getInspectedPageInfo();

        const optimized = (await sendToBackground({
          type: "AI_OPTIMIZE_SCRIPT",
          payload: {
            script: result.script,
            framework,
            pageUrl,
            pageTitle,
            pageContext: undefined,
          },
        })) as string | null;

        if (optimized) {
          finalScript = optimized;
          wasOptimized = true;
          addLog(`${t("logRecordOptimized")} (${framework})`, "success");
        } else {
          addLog(t("logRecordOptimizeFailed"), "warn");
        }
      } finally {
        panelState.isOptimizing = false;
      }
    }

    panelState.readyScript = {
      script: finalScript,
      framework: `${framework}${wasOptimized ? " ✨" : ""}`,
    };
    renderRecordTab();
  } catch (err) {
    panelState.isOptimizing = false;
    renderRecordTab();
    addLog(`${t("logRecordExportError")}: ${err}`, "error");
  }
}

Dependencies (Outgoing)

graph LR exportRecording["exportRecording"] renderRecordTab["renderRecordTab"] exportRecording -->|calls| renderRecordTab style exportRecording fill:#dbeafe,stroke:#2563eb,stroke-width:2px click exportRecording "6871701ae65ee93c.html" click renderRecordTab "55c03c4dd1c7d324.html"
TargetType
renderRecordTab calls

Impact (Incoming)

graph LR exportRecording["exportRecording"] renderRecordTab["renderRecordTab"] renderRecordTab -->|calls| exportRecording style exportRecording fill:#dbeafe,stroke:#2563eb,stroke-width:2px click exportRecording "6871701ae65ee93c.html" click renderRecordTab "55c03c4dd1c7d324.html"
SourceType
renderRecordTab calls