Testing Modes

One engine, several ways to point it at your app. Each mode changes which actions Jevitate prefers — not how it verifies them.

Roadmap. The Jev-driven testing engine is in active development — this page describes the designed behavior. What ships today is the deterministic Journey engine (Journeys). The AI gateways it builds on are already in place.

Goal-directed journey testing

Give Jevitate a natural-language goal — "Create an account and verify the email", "Add a product to the cart and reach checkout". It continuously evaluates available actions relative to the goal and decides whether the goal was reached from observable application state — not because Jev returned DONE. It explores alternate paths when the obvious one is blocked, and changes strategy when repeated actions stop altering state.

Feature testing

Specify a capability instead of a sequence: "Test checkout", "Test team permissions". Jevitate discovers the relevant UI paths dynamically, exercises multiple valid routes, explores the boundary states around the feature, and records which states and transitions were actually hit.

Exploratory testing

No predefined destination. Jevitate maintains a set of visited states and prefers actions likely to reach unseen ones, discovering undocumented paths while detecting dead ends and loops. The objective flips:

maximize(new_states + new_transitions + new_behaviors)

# rather than
minimize(actions_to_goal)

Adversarial testing

Adversarial mode intentionally searches for unexpected behavior. It prioritizes:

  • Unusual but executable state transitions and ordering violations
  • Repeated and rapid interactions
  • Navigation during pending asynchronous operations
  • Boundary input values and contradictory UI actions
  • Alternate paths through multi-step workflows

All of it stays bounded by your configurable safety policy.

Regression verification

Reproducible failures become deterministic artifacts: minimal Playwright tests that reproduce the smallest reliable trigger, assert correct behavior (not the presence of the bug), and run in CI without Jev. See Regression & CI.

The strategy layer

Strategies are pluggable. The initial set:

StrategyPrefers
goalActions likely to advance a declared objective
exploreActions likely to expose new application states
adversarialUnusual transitions, boundaries, ordering violations, fragile states
coverageActions that expand known state-transition coverage
regressionActions related to previously discovered failure paths

Input strategies

TYPE_TEXT delegates to a configurable generator, and input values are chosen by field semantics — Jevitate never assumes every field should get arbitrary fuzz. Reusable strategies include normal, empty, boundary, long, unicode, whitespace, invalid format, duplicate, and previously used.

Loop prevention

Jevitate tracks visited states, state/action pairs, repeated transitions, consecutive no-ops, and time spent per state — with configurable limits on max steps, duration, repeated states, repeated actions, and model/network cost.