test-app

test-app is a skill for Claude Code, Codex from mendixlabs/mxcli. It costs 45 tokens per session (4,574 once invoked), scanned A, original, Apache-2.0.

A guide to testing a running Mendix app in a browser with Playwright, a tool that automates browser actions, plus OQL checks for stored data.

In plain words
What is it for?
Use it for end-to-end tests such as opening pages, filling forms, clicking controls, and confirming the resulting data.
Why use it?
It verifies that pages render, user interactions work, and data is saved correctly instead of testing only the underlying model.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/mendixlabs/mxcli/test-app
Any agent
npx skills add mendixlabs/mxcli --skill test-app
Clone the repo
git clone --depth 1 https://github.com/mendixlabs/mxcli

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for test-app

README.md
[![agentmods](https://agentmods.dev/badge/skills/mendixlabs/mxcli/test-app.svg)](https://agentmods.dev/skills/mendixlabs/mxcli/test-app)
Your own site
<a href="https://agentmods.dev/skills/mendixlabs/mxcli/test-app"><img src="https://agentmods.dev/badge/skills/mendixlabs/mxcli/test-app.svg" alt="Measured on agentmods" height="20"></a>
Per session 45 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 4,574 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00045 $0.04574
Opus 5 $0.00023 $0.02287
Sonnet 5 $0.00009 $0.00915
Haiku 4.5 $0.00005 $0.00457

Measured yesterday against content hash 265c440af00b, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

test-app scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.claude/skills/mendix/test-app/SKILL.md · 467 lines

How it starts

The opening of the file, as written. The whole thing — 467 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Test App Skill

This skill guides you through verifying a running Mendix application using playwright-cli for browser automation and mxcli oql for data assertions.

When to Use This Skill

Use this when:

  • The user asks to test, verify, or validate a running Mendix app in the browser
  • The user wants to confirm that generated pages and widgets actually render
  • The user asks for end-to-end or integration tests involving the UI
  • The user wants to verify that data is persisted correctly after UI interactions
  • You have generated MDL that creates pages and want to close the feedback loop

For microflow logic testing (business rules, calculations, entity operations — no browser needed), use the test-microflows skill and mxcli test instead.

Prerequisites

The devcontainer created by mxcli init installs:

  • Node.js (LTS) — via the base image
  • playwright-cli — installed globally, pinned to a known-good version (npm install -g @playwright/[email protected]; the package's CLI surface shifts between releases, so it is deliberately not @latest)
  • Chromium (headless shell) — installed via @playwright/cli's bundled playwright-core, into a shared PLAYWRIGHT_BROWSERS_PATH, and exposed at the stable path /usr/local/bin/mx-headless-shell. The generated .playwright/cli.config.json pins executablePath to that symlink.
  • Docker-in-Docker — Mendix + PostgreSQL running via mxcli docker run

If the app calls an external REST API, that endpoint is a prerequisite too — a verification run that depends on a live third party is not repeatable. See mock-rest-apis.

The app must be running before verification:

mxcli docker run -p app.mpr --wait

run-code vs eval — read this first

@playwright/cli has two evaluation commands with different contexts:

Command Runs in Use for
playwright-cli eval "() => ..." browser page (document, window exist) DOM assertions, clicks, filling fields, reading .mx-name-*
playwright-cli run-code "..." Node (Playwright API; document is undefined) Playwright-level scripting, not page DOM

Read the full file on GitHub · 467 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. yesterday First seen · 467 lines · 45 tokens per session scan A 265c440af00b

Subscribe to this mod's changes

test-app is a skill published in the GitHub repository mendixlabs/mxcli (115 stars, last pushed 2d ago), licensed Apache-2.0. It adds 45 tokens to every session and 4,574 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.

Related

Other skills, from other repositories

11-browser-qa

Run post-review browser QA and produce short named videos for a locked happy path and sourced browser edge cases. Use when the user wants concise reviewer evidence for a web journey. Not for API, CLI, automated tests, diff review, or application fixes.

ai-driven-dev/framework · 55 tokens

fixtures

Playwright fixture conventions for the Playwright scaffold — dependency-injection pattern, the single import point from fixtures/pom/test-options.ts (merged via mergeTests), the three fixture categories (page objects in fixtures/pom/, API request in fixtures/api/, lifecycle setup/teardown in fixtures/helper/), and the…

idavidov13/agentic-playwright · 156 tokens

selectors

Selector strategy, exploration-first workflow, locator priority order (getByRole then getByLabel then getByPlaceholder then getByText then getByTestId), and feedback/validation-message selector rules for Playwright page objects. Use when creating page objects, writing or updating locators, generating UI tests, or…

idavidov13/agentic-playwright · 136 tokens

06-test

Write and iterate tests until they pass, or validate a user journey end to end in the browser. Use when the user wants to add coverage, find what's untested, or walk a flow. Not for auditing test health or debugging a failure.

ai-driven-dev/framework · 52 tokens

test-engineer

Automated E2E testing with Playwright including the auto-fix loop — generate test cases from the UI, run them, fix failures and re-run until passing, then produce a human-readable report. Test until it passes, not just test and report. Drives /toh-test; use whenever tests must be written, run, or made green.

wasintoh/toh-framework · 75 tokens

run-dashboard-e2e-local-changes

Run Playwright E2E (tests/e2e/) against the docker/ all-in-one harness so it reflects LOCAL code changes, not a stale cached image.

BlackBeltTechnology/pi-agent-dashboard · 42 tokens