Introducing the Prowl Blog

Prowl Tools2 min read

We've been building Prowl — end-to-end testing for native macOS apps and web apps, driven from the same declarative YAML "hunt" — and it's time to start sharing what we're learning along the way.

Why a blog?

Desktop E2E testing has been the neglected corner of the toolchain. Web has Playwright; mobile has Maestro; native macOS testing means Swift and Xcode's XCUITest, locked to a language and an IDE. If you ship a Mac app and a web app, you end up maintaining two completely different testing stacks.

Prowl takes a different approach: one declarative YAML file describes a flow, and the same file can drive a native macOS app or a web app. Playwright drives the web target; Apple's Accessibility API drives the macOS target (experimental today). iOS and Android are experimental too. The steps are readable by both humans and AI agents, and the results are developer-ready — screenshots, traces, and repro steps you can act on.

What you'll find here

This blog will cover:

  • Stories from building Prowl — the technical decisions behind the tool, what worked, and what we had to rethink
  • How-to guides — practical walkthroughs, like testing a Mac app in CI or getting your first hunt running
  • Honest engineering write-ups — the hard parts of driving native apps through the Accessibility API, keeping flows deterministic, and BYOK AI-assisted generation
  • Product updates — new features, releases, and what's coming next

Who this is for

If you're a Mac developer who wants real E2E coverage without living in Xcode, a web developer who already scripts flows, or anyone building with AI agents who needs reliable, deterministic tests — this blog is for you.

Get started with Prowl

If you haven't tried Prowl yet:

npm install -g prowl-tools
prowl init
prowl run hello --headed

Check out the docs for the full getting-started guide.

We're glad you're here. More posts coming soon.