jev-ui-test
Chinese UI test framework where Jev scores candidate page elements for each step of a natural-language test case.
Overview
jev-ui-test is a UI automation testing framework where test cases are written in natural language (Chinese works) in YAML, executed by pytest and reported with Allure. A browser agent runs each case, and the Jev decision model makes every step's decision by scoring the candidate elements observed on the page, returning an operation and target with calibrated probabilities in one request. There are no selectors, site scripts or preset field values.
It is a fork of browser-use's jev-ultrafast (MIT), wrapping the agent core rather than rewriting it. The closed action space means the model can only select among candidate IDs; responses whose choice is not a valid candidate or not the most probable are rejected and re-sent. Pass or fail is decided by deterministic pytest assertions, with semantic evidence supplied as probabilities and thresholds kept in code. Reports include probabilities, request and response bodies, coordinates, recordings and a step timeline. The README reports a median of 458 ms per action decision, with 30 of 32 decisions under one second, versus a stated 4 to 5 seconds when an LLM drove execution directly.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Which operation should be performed next? | — |
| Choice | Which candidate page element is the target? | — |
How it works
- Write a test case in natural language YAML
- Agent snapshots the page into candidate elements
- Jev returns operation and target with probabilities; invalid responses re-sent
- pytest asserts outcomes deterministically; Allure reports each step
Strengths
- No selectors to maintain
- README reports median 458 ms per decision
- Structurally cannot click non-existent elements
- Detailed, auditable reports
Caveats
- Chinese-first documentation
- Baseline LLM timing is anecdotal per the README
At a glance
- Type
- Project
- Status
- beta
- Language
- Python
- Runtime
- pytest + browser agent
- Has code
- yes
- Has tests
- yes
Use cases and integrations
How curated lists describe it
Jev 决策模型驱动的 UI 自动化测试框架:不生成「下一步做什么」的文字,而是在候选元素里直接打分;一句话写用例,pytest 执行,Allure…
wh000wh000/awesome-jev-liveJev 决策模型驱动的 UI 自动化测试框架:不生成「下一步做什么」的文字,而是在候选元素里直接打分;一句话写用例,pytest 执行,Allure 出报告,每个操作决策中位 458 ms(UI test automation driven by the Jev decision model — scored decisions, not generated prose; ~458 ms per decision).
hellogumbo/awesome-jevUI test framework where cases are written as sentences and each step is scored against the page's candidate elements rather than generated, run by pytest with Allure reports. Chinese.
MrJev/awesome-jev
Frequently asked questions
How are tests written?
In natural language YAML; no selectors or site scripts are needed.
Who decides pass or fail?
Deterministic pytest assertions, with Jev probabilities used only as evidence.
How fast is each step?
The README reports a median of 458 ms per action decision.
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 skillbetaGoal-driven browser agent where each step is one Jev choice over the page's controls, then reviews the run for root causes.
AppbetaTypeScriptCucumber runner where Jev resolves each Gherkin step against the live page and Playwright executes it, so tests need only the .feature file.
ProjectbetaTypeScriptBrowser tests written as user steps: Jev finds each control once, the path is recorded, and replays run without the model.
ProjectbetaTypeScriptCommunity runner for Midscene Test adding jevAct, jevAssert and jevWaitFor nodes that use Jev over a bounded, non-text action space.
PluginbetaTypeScriptNode CLI for goal-driven E2E tests: Jev picks the next step from a code-generated action space, playwright-cli executes, code asserts.
CLIbetaJavaScript