- Delete old Vite+Svelte frontend - Initialize new SvelteKit project with TypeScript - Configure Tailwind CSS v4 + DaisyUI - Implement JWT authentication with auto-refresh - Create login page with form validation (Zod) - Add protected route guards - Update Docker configuration for single-stage build - Add E2E tests with Playwright (6/11 passing) - Fix Svelte 5 reactivity with $state() runes Known issues: - 5 E2E tests failing (timing/async issues) - Token refresh implementation needs debugging - Validation error display timing
70 lines
2.3 KiB
TypeScript
70 lines
2.3 KiB
TypeScript
import IBrowserSettings from '../types/IBrowserSettings.cjs';
|
|
import DetachedBrowserContext from './DetachedBrowserContext.cjs';
|
|
import IOptionalBrowserSettings from '../types/IOptionalBrowserSettings.cjs';
|
|
import DetachedBrowserPage from './DetachedBrowserPage.cjs';
|
|
import IBrowser from '../types/IBrowser.cjs';
|
|
import IBrowserFrame from '../types/IBrowserFrame.cjs';
|
|
import BrowserWindow from '../../window/BrowserWindow.cjs';
|
|
import * as PropertySymbol from '../../PropertySymbol.cjs';
|
|
import BrowserExceptionObserver from '../utilities/BrowserExceptionObserver.cjs';
|
|
/**
|
|
* Detached browser used when constructing a Window instance without a browser.
|
|
*/
|
|
export default class DetachedBrowser implements IBrowser {
|
|
readonly contexts: DetachedBrowserContext[];
|
|
readonly settings: IBrowserSettings;
|
|
readonly console: Console | null;
|
|
readonly windowClass: new (browserFrame: IBrowserFrame, options?: {
|
|
url?: string;
|
|
width?: number;
|
|
height?: number;
|
|
}) => BrowserWindow | null;
|
|
[PropertySymbol.exceptionObserver]: BrowserExceptionObserver | null;
|
|
/**
|
|
* Constructor.
|
|
*
|
|
* @param windowClass Window class.
|
|
* @param [options] Options.
|
|
* @param [options.settings] Browser settings.
|
|
* @param [options.console] Console.
|
|
*/
|
|
constructor(windowClass: new (browserFrame: IBrowserFrame, options?: {
|
|
url?: string;
|
|
width?: number;
|
|
height?: number;
|
|
}) => BrowserWindow, options?: {
|
|
settings?: IOptionalBrowserSettings;
|
|
console?: Console;
|
|
});
|
|
/**
|
|
* Returns the default context.
|
|
*
|
|
* @returns Default context.
|
|
*/
|
|
get defaultContext(): DetachedBrowserContext;
|
|
/**
|
|
* Aborts all ongoing operations and destroys the browser.
|
|
*/
|
|
close(): Promise<void>;
|
|
/**
|
|
* Returns a promise that is resolved when all resources has been loaded, fetch has completed, and all async tasks such as timers are complete.
|
|
*
|
|
* @returns Promise.
|
|
*/
|
|
waitUntilComplete(): Promise<void>;
|
|
/**
|
|
* Aborts all ongoing operations.
|
|
*/
|
|
abort(): Promise<void>;
|
|
/**
|
|
* Creates a new incognito context.
|
|
*/
|
|
newIncognitoContext(): DetachedBrowserContext;
|
|
/**
|
|
* Creates a new page.
|
|
*
|
|
* @returns Page.
|
|
*/
|
|
newPage(): DetachedBrowserPage;
|
|
}
|
|
//# sourceMappingURL=DetachedBrowser.d.ts.map
|