src/lib/e2e-export/e2e-generator-registry.ts

Total Symbols
3
Lines of Code
48
Avg Complexity
2.0
Avg Coverage
100.0%

File Relationships

graph LR generateE2EScript["generateE2EScript"] getE2EGenerator["getE2EGenerator"] generateE2EFromRecording["generateE2EFromRecording"] generateE2EScript -->|calls| getE2EGenerator generateE2EFromRecording -->|calls| getE2EGenerator click generateE2EScript "../symbols/c9ac85b4b0e60177.html" click getE2EGenerator "../symbols/4430350759e1bdc8.html" click generateE2EFromRecording "../symbols/76951e0e805e216b.html"

Symbols by Kind

function 3

All Symbols

Name Kind Visibility Status Lines Signature
getE2EGenerator function exported- 27-29 getE2EGenerator(framework: E2EFramework): : E2EGenerator | null
generateE2EScript function exported- 31-38 generateE2EScript( framework: E2EFramework, actions: CapturedAction[], options?: E2EGenerateOptions, ): : string | null
generateE2EFromRecording function exported- 40-47 generateE2EFromRecording( framework: E2EFramework, steps: RecordedStep[], options?: RecordingGenerateOptions, ): : string | null

Full Source

/**
 * E2E Generator Registry — maps framework names to generators.
 */

import type {
  CapturedAction,
  E2EFramework,
  E2EGenerateOptions,
  E2EGenerator,
  RecordedStep,
  RecordingGenerateOptions,
} from "./e2e-export.types";
import { playwrightGenerator } from "./framework/playwright-generator";
import { cypressGenerator } from "./framework/cypress-generator";
import { pestGenerator } from "./framework/pest-generator";

export const E2E_GENERATORS: ReadonlyArray<E2EGenerator> = [
  playwrightGenerator,
  cypressGenerator,
  pestGenerator,
];

const registryMap = new Map<E2EFramework, E2EGenerator>(
  E2E_GENERATORS.map((g) => [g.name, g]),
);

export function getE2EGenerator(framework: E2EFramework): E2EGenerator | null {
  return registryMap.get(framework) ?? null;
}

export function generateE2EScript(
  framework: E2EFramework,
  actions: CapturedAction[],
  options?: E2EGenerateOptions,
): string | null {
  const generator = getE2EGenerator(framework);
  return generator ? generator.generate(actions, options) : null;
}

export function generateE2EFromRecording(
  framework: E2EFramework,
  steps: RecordedStep[],
  options?: RecordingGenerateOptions,
): string | null {
  const generator = getE2EGenerator(framework);
  return generator ? generator.generateFromRecording(steps, options) : null;
}