Skip to content

Midscene JEV Runner

Community runner for Midscene Test adding jevAct, jevAssert and jevWaitFor nodes that use Jev over a bounded, non-text action space.

Pluginbeta

Overview

Midscene JEV Runner is a community integration for Midscene Test, independent of the Midscene project. It provides a bounded ReAct loop over a caller-owned Playwright page (runJev), a single read-only assertion against the current browser observation (evaluateJevAssertion), repeated read-only checks until a condition passes or times out (waitForJevAssertion), and registration of strict-schema jevAct, jevAssert and jevWaitFor nodes for Midscene tests.

jevAct is meant as a faster replacement for one atomic aiAct intent, not a whole-test planner; it may take a short bounded sequence when an interaction opens a menu, observing after each action until it reaches DONE, BLOCKED or a limit. Its action space is intentionally non-text: click, select, scroll, wait and dismiss; it does not type, clear inputs, navigate or close the page, so text input is composed separately with Midscene's aiInput. Version 0.2.0 removed earlier text actions. Offline Chromium scenes and safety regressions run in CI, and real-model end-to-end scenes gate stable releases. The key is read from the environment, never YAML.

What the decision model decides

TypeQuestionAnswers
ChoiceWhich non-text action should be taken next (click, select, scroll, wait, dismiss)?click · select · scroll · wait · dismiss
Yes / noDoes the current page satisfy this assertion?—
ChoiceIs the intent DONE, BLOCKED or should it continue?(inferred)DONE · BLOCKED · continue

How it works

  1. Register Jev nodes in a Midscene test
  2. jevAct observes the page and picks a bounded action
  3. Observe after each action until DONE, BLOCKED or limit
  4. jevAssert or jevWaitFor check observable conditions
  5. Text input is handled separately by aiInput

Strengths

  • Faster than generative aiAct for atomic intents
  • Bounded, non-text action space
  • Release gates include real-model scenes

Caveats

  • Pre-1.0 with breaking changes
  • Community project, not official Midscene
  • Requires a Jev key

Getting started

pnpm add @chlrc/midscene-jev-runner @midscene/test playwright, then export MIDSCENE_JEV_API_KEY.

At a glance

Type
Plugin
Status
beta
Language
TypeScript
Runtime
Node library for Midscene Test with Playwright
Has code
yes
Has tests
yes

Use cases and integrations

How curated lists describe it

  • Community-maintained JEV runner integration for Midscene Test.

    hellogumbo/awesome-jev
  • Community runner for Midscene Test that adds `jevAct`, `jevAssert` and `jevWaitFor` nodes over a Playwright page, with a bounded non-text action space: click, select, scroll, wait, dismiss.

    MrJev/awesome-jev

Frequently asked questions

Can it type text?

No, its actions are non-text; use Midscene's aiInput for typing.

Is it a full test planner?

No, jevAct replaces one atomic intent; workflows remain ordered Midscene steps.

Is it official?

No, it is community-maintained.

Related projects

  • CodexQA browser skill that indexes in-page controls and has Jev pick the operation and target each step, with no screenshots needed.

    Agent skillbeta
  • Goal-driven browser agent where each step is one Jev choice over the page's controls, then reviews the run for root causes.

    AppbetaTypeScript
  • Chinese UI test framework where Jev scores candidate page elements for each step of a natural-language test case.

    ProjectbetaPython
  • Cucumber runner where Jev resolves each Gherkin step against the live page and Playwright executes it, so tests need only the .feature file.

    ProjectbetaTypeScript
  • Browser tests written as user steps: Jev finds each control once, the path is recorded, and replays run without the model.

    ProjectbetaTypeScript
  • Node CLI for goal-driven E2E tests: Jev picks the next step from a code-generated action space, playwright-cli executes, code asserts.

    CLIbetaJavaScript