References

Choosing an Automation Engine

OttoMagic: JavaScript-First, No Drivers

OttoMagic runs automation commands as pure JavaScript inside the browser through the OttoMagic extension. GPALRestAPI -- a separate native application that must be installed on the machine -- acts as the REST relay between GPAL and the extension. No driver binary or browser version matching is required. Best choice when you want detection resistance: because automation runs as a browser extension rather than an external driver, sites are less likely to flag it.

GPAL.Browser

.WithAutomationEngine(AutomationEngine.OttoMagic)

.GoTo("https://example.com")

.Execute();

NOTE

Every engine has a hardware variant -- OttoMagicHW, PuppeteerPortHW, SeleniumHW -- that fires real mouse and keyboard hardware events instead of synthetic ones. Use an HW variant when a site detects and blocks JavaScript-driven or synthetic automation events.

Puppeteer: Chrome DevTools Protocol

Puppeteer communicates with the browser over the Chrome DevTools Protocol via a debugging port. No WebDriver binary required -- GPAL connects directly to Chrome or Edge's built-in debugging channel. All GPAL engines support headless operation and the full automation feature set; Puppeteer's advantage is that it runs out of the box with no additional installs beyond the browser itself, and is fairly lightweight.

GPAL.Browser

.WithAutomationEngine(AutomationEngine.PuppeteerPipe)

.Get("https://example.com") // runs headless

NOTE

PuppeteerPipe connects to the browser via a pipe rather than a TCP port and is still under development. Use PuppeteerPort for stable Puppeteer-based automation.

Selenium: W3C Standard, All Browsers

Selenium uses the W3C WebDriver standard and requires a matching driver binary (ChromeDriver, GeckoDriver, or EdgeDriver) installed alongside the browser. Best choice when you are integrating with external testing infrastructure (Selenium Grid, BrowserStack, NUnit) or your team already uses WebDriver tooling. Driver version management is the main operational cost -- the driver must match the installed browser version.

GPAL.Browser

.WithAutomationEngine(AutomationEngine.Selenium)

.GoTo("https://example.com")

.Execute();

NOTE

The automation engine is a browser-level setting. The selector and action workflow code is identical across all three engines. You can switch engines, compare behavior, or run different workflows on different engines in the same program without rewriting anything.

💬 Ask GPAL