/** * QA360 Page Object Model (POM) - Loader * * Dynamically loads Page Objects from TypeScript/JavaScript files. * * @see https://qa360.dev/docs/pom */ import type { IPageObject, PageObjectCollection, PageObjectLoaderOptions, PageObjectMetadata, PageObjectRegistry, PageObjectValidationResult } from './types.js'; /** * Page Object Loader * * Loads and manages Page Objects from external files. */ export declare class PageObjectLoader implements PageObjectRegistry { private cwd; private baseUrl; private cacheEnabled; private timeout; private pages; private metadata; private patternCache; constructor(options?: PageObjectLoaderOptions); /** * Get page by name */ get(name: string): IPageObject | undefined; /** * Get page metadata */ getMetadata(name: string): PageObjectMetadata | undefined; /** * Register a page */ register(name: string, page: IPageObject, metadata: PageObjectMetadata): void; /** * List all registered pages */ list(): string[]; /** * Clear registry */ clear(): void; /** * Load page objects from a directory */ loadFromDirectory(directory: string, options?: { pattern?: string; recursive?: boolean; }): Promise; /** * Load page objects from a collection config */ loadFromCollection(collection: PageObjectCollection): Promise; /** * Load a single page from a file */ loadFromFile(filePath: string): Promise<{ valid: boolean; errors: string[]; warnings: string[]; loadedCount: number; }>; /** * Extract page classes from a module */ private extractPagesFromModule; /** * Check if a class is a Page Object class */ private isPageObjectClass; /** * Check if instance implements IPageObject */ private isValidPageObject; /** * Extract metadata from page instance */ private extractMetadata; /** * Find page files matching pattern */ private findPageFiles; /** * Convert glob pattern to regex */ private globToRegex; /** * Clear require cache for a file */ private clearRequireCache; /** * Validate a page object */ validate(pageName: string): Promise<{ valid: boolean; errors: string[]; }>; /** * Get all page metadata */ getAllMetadata(): PageObjectMetadata[]; /** * Export pages as JSON (for debugging) */ toJSON(): Record; } /** * Create a Page Object Loader */ export declare function createPageObjectLoader(options?: PageObjectLoaderOptions): PageObjectLoader; /** * Get or create default loader */ export declare function getDefaultLoader(options?: PageObjectLoaderOptions): PageObjectLoader; /** * Reset default loader (useful for testing) */ export declare function resetDefaultLoader(): void;