12.08 — Ocarina in the testing industry#

Ocarina isn’t a better pytest, isn’t a better Robot Framework, isn’t a better Cypress. It’s structurally elsewhere. This chapter tries to explain the shift it represents and the head start it takes.

1. The current industry map#

Three big e2e tool families#

FamilyExamplesModel
Text DSLsRobot Framework, Cucumber + GherkinPermanent translation layer between text and code
Runner pluginspytest-selenium, pytest-playwright, pytest-bddGrafted onto pytest, inherit its lifecycle
Vendor SaaSBrowserStack, Sauce Labs, LambdaTest, Cypress DashboardLocal runner + paid execution cloud

Three shared friction surfaces#

FrictionManifestation
Marketing > TechnicalTools sold on demos, conferences, and oriented certifications. Hype drives adoption.
Vendor lock-inOnce adopted, refactor is costly, hostage taking.
Misplaced cognitive effortUnderstanding the tool takes longer than doing the work.

2. Ocarina’s technical bet#

  1. No text DSL → pure Python, embedded DSL.
  2. No pytest plugin → integrated runner, absolute ISTQB fidelity.
  3. No async/await → simplicity, Selenium-synchronous compatibility, no “geek tricks”.
  4. No SaaS → all local, very dense core, white box.

See also: ../11-independence/03-explicit-refusals.md

None of these refusals is without reason. Each is justified by an explicit trade-off, and their combination produces a solution with no direct equivalent on the market.

3. The shift Ocarina represents#

First axis: return to the vocabulary of testing (ISTQB)#

The modern e2e industry has a mixed vocabulary: “pytest fixture”, “Gherkin step def”, etc. No business actor (ISTQB-certified functional tester) has this vocabulary in mind.

ISTQBOcarina
Test stepact
Test caseTest
Test suiteTestSuite
CampaignTestCampaign
CycleTestCycle

It’s a shift: the code becomes readable by a functional tester.
Not just by a Python developer.

Second axis: make strict typing a business discipline#

No popular e2e framework has mypy strict = true as a prerequisite.
Ocarina does.

  • Errors are caught before execution.
  • The DSL is enforced by the compiler (mixing heterogeneous POMs in a drive_page is a mypy error, not a runtime error).
  • Maintenance is extremely guided (the type checker rechecks consistency after every change).

It’s a shift: we move the effort from when it breaks to when it’s written.

Third axis: make AI a first-class client#

Ocarina actively exposes to LLMs:

  • llms.txt, llms-full.txt.
  • CLAUDE.md, CLAUDE.slim.md.
  • 40+ versioned skills (SKILL.md).
  • An entire e2e suite co-written by Claude (ocarina-with-ai-example).

No competing test framework has this AI surface.
It’s a shift: we design the DSL to be consumable by AI and human, not just human.

Fourth axis: make grammatical sovereignty a promise#

Ocarina doesn’t ship a fixed DSL. It ships:

  • ChainRunner[T] as the extension point.
  • Project adapter” pattern as convention.
  • Closure-based composition rather than inheritance.

Each project writes its own framework on top of the framework (act, match_page, TestSuite adapter, TestCampaign adapter, EnvGetters).

It’s a shift: we give the grammar back to the project, rather than fully entrusting it to the tool.

4. Head start#

Where Ocarina is ahead#

AxisEstimated lead vs the industry
Strict typing in e2e5-10 years (most frameworks stay Any-everywhere)
AI-first2-5 years (others start exposing MCP/AI hooks, though with a questionable approach)
Embedded vs text DSLPermanent (philosophical difference, no catch-up planned)
ISTQB vocabularyPermanent (philosophical difference)
Auditability (1 runtime dep)Permanent (philosophical difference)
ROP as core5-10 years (most use classic exceptions)

Where Ocarina isn’t ahead#

AxisReality
NotorietyNone in the mainstream. Target audience: advanced testers.
Plugin ecosystemDeliberately minimal. The Python ecosystem is one of the industry’s largest and can be directly embedded in an Ocarina project without friction.
Cloud-as-a-serviceNone (deliberate). On the other hand, Ocarina is natively built for horizontal scaling.
Multi-languagePython only (deliberate).

Vision#

Ocarina starts from the following hypotheses:

  1. The market will shift toward fewer platforms, more clean code, more internal development. The Sanity → Markdown evolution (Lee Robinson, Cursor, December 2025, confirmed by Sanity themselves in their public response) is a signal.
  2. AI will replace frameworks with long learning curves. Why learn Robot Framework if Claude can write a Python test in 5 seconds? That’s what the author calls a Juicero press.
  3. Functional testers will be revalued because they’ll carry the business vision, while AI carries the technique.

If these three hypotheses hold (and there are signals they will), Ocarina is exactly in the right place.

If they don’t, Ocarina will remain a niche project, but the author accepts that explicitly ("It’s my car").

5. The market — honest analysis#

Short term (2026-2028)#

  • Ocarina will remain niche. No enterprise tooling, no SLAs, no paid support.
  • Adoption by consultants who want a portable tool ("Ocarina in your pocket").
  • Adoption by functional testers who want to deliver rather than waste time on endless “geek tricks”.
  • Adoption by solo devs / boutique agencies who write their own tests.
  • Adoption by security-paranoid teams that can’t use SaaS.

Medium term (2028-2032)#

Three scenarios:

Scenario A — Ocarina stays niche#

  • 500-2000 users.
  • Small but tight-knit community.
  • No market influence.
  • The author doesn’t give a damn. The adventure continues. The code stays auditable.

Scenario B — Ocarina influences without being adopted#

  • More likely. Ocarina’s ideas (strict typing in e2e, ISTQB vocabulary, AI-first) diffuse and are picked up by more popular frameworks.
  • Ocarina isn’t massively adopted, but becomes the intellectual reference that gets cited.
  • Like Hindley-Milner for programming languages: few people write it in practice, but all modern languages are heirs.

Scenario C — Ocarina is widely adopted#

  • Less likely. Requires a triggering event.
  • If it happens: Ocarina will have waited for its moment.

Long term (2032+)#

Ocarina is built to outlive its author. The code is small, audited, MIT. Fork it, pick it up, maintain it.

6. Qualitative comparison with some alternatives#

AspectOcarinaRobot FrameworkPlaywrightCypressSelenium IDE
Text DSL❌ Pure Python✅ .robot files❌ Pure TS❌ Pure JS✅ Steps file
Runner plugin❌ Internal runner❌ Internal runner✅ Jest/Mocha❌ Internal runner(UI)
Strict typing (mypy/strict)✅ ALL❌ (Python typing still rare)⚠️ TS support but POMs often any-typed⚠️ JSDoc rare
ROP✅ Central❌ Exceptions❌ Exceptions❌ Exceptions
AI-first✅ documented, technology designed for it from the start⚠️ Playwright CodeGen⚠️ Third-party AI tooling
ISTQB vocabulary✅ strict⚠️ partial❌ Jest-like❌ describe/it
Vendor lock-in❌ None❌ None⚠️ Microsoft⚠️ Cypress.io⚠️ Selenium project
Auditability✅ 1 runtime dep❌ Internal ecosystem❌ Massive Node deps❌ Cypress runtime⚠️
Async/await❌ Refused✅ Mandatory✅ Mandatory
Parallelization✅ ThreadPool + Semaphore + simple parallelization strategy, customizable by the user, no magic⚠️ pabot✅ JS Workers✅ Parallel CI
Native anti-flakiness approach✅ Parallelization + Test cloning + Fine AI analysis

7. Values Ocarina carries#

Test code:

  • must be readable by functional testers (ISTQB vocabulary)
  • must first and foremost be a cross-team communication tool (same)
  • must be readable by AI (strict typing + strict linter + well-defined grammar)
  • must remain maintainable (very strong content/form separation)
  • must be driven by the test strategy without compromise (huge skill battery)
  • must be auditable and portable (a single dep, MIT, copyable)
  • doesn’t need a platform to work
  • doesn’t have to reinvent the wheel (back to fundamentals)