Core Concepts

The GPAL Factory

Everything in GPAL starts with the GPAL static class. A single entry point that instantiates every subsystem and holds all global configuration through a clean fluent interface.

One Starting Point

GPAL is a static factory class. You never instantiate objects directly -- every subsystem is accessed through a top-level property on the GPAL class. Browser automation, desktop application automation, data grids, logging, email, Excel, format conversion, REST calls, and more all start from the same single entry point, and IDE autocomplete surfaces every available capability the moment you type GPAL.

How It Works

Each factory property returns a fluent interface for that subsystem. Settings chain together and the object is materialized when you call ToGPALObject(). Global settings cascade down to all subsystems unless overridden at a lower level.

// Global settings - configure before creating any objects

GPAL

.WithAutomationEngine(AutomationEngine.Selenium)

.WithPublishToConsole()

.WithStopOnNotFound(false);

// Factory usage - every subsystem from one entry point

var browser = GPAL.Browser.WithBrowserType(BrowserType.Chrome).ToGPALObject();

var app = GPAL.Application.Open("notepad.exe").ToGPALObject();

var grid = GPAL.Grid.ToGPALObject();

var logger = GPAL.Logger.WithFile("log.txt").ToGPALObject();

TIP

Typing GPAL. In your IDE surfaces every available subsystem immediately. The fluent interfaces then guide you through valid configuration options at each step. No documentation required for discovery.

Global Configuration

GPAL hosts global settings that cascade down to every Browser and Application instance created afterward. These cover things like which automation engine to use, how long to wait for elements, whether to stop or continue when something isn't found, and where to publish events. You set them once at the top of your workflow and they apply everywhere unless overridden at a lower level.

WARNING

Global settings configured after a Browser or Application instance is created will not affect that instance. Always configure GPAL-level settings first.