Agent Instructions: Execute TESTME.md Tests
Defines a Markdown-based test specification format and instructs an AI agent to discover, parse, and execute those tests in a codebase.
What this file does
Defines a Markdown-based test specification format and instructs an AI agent to discover, parse, and execute those tests in a codebase.
When to use it
- You want AI agents to run human-readable test specs without a test framework
- You need a portable test convention that works across any project or language
- You are building tooling that lets non-developers write executable tests in Markdown
- You want to automate end-to-end UI tests with step-by-step natural language instructions
Agent Instructions: Execute TESTME.md Tests
You are tasked with finding and executing TESTME.md test specifications in this codebase.
What is TESTME.md?
TESTME.md is a convention for writing human-readable test specifications that AI agents can execute. Tests are written in plain Markdown with clear steps and expectations.
Project: https://github.com/evilsocket/testme.md Specification: https://github.com/evilsocket/testme.md/blob/main/SPECS.md
Your Task
- Find all TESTME.md files in the codebase
- Parse each file according to the specification
- Execute the tests following the steps described
- Report results clearly
Discovery
Search for test files in this order:
TESTME.mdin repository rootTESTME.mdintests/,test/,e2e/,spec/directories- Any
*.testme.mdfiles recursively
Execution Flow
For each TESTME.md file found:
1. Read and parse the file
2. Verify Prerequisites (abort if any fail)
3. Execute Setup steps in order
4. Run each Test:
- Perform the steps
- Verify expectations
- Record pass/fail
5. Execute Teardown steps
6. Report results
File Structure
A TESTME.md file contains these sections:
| Section | Required | Purpose |
|---|---|---|
| Header | Yes | Suite name and description |
| Prerequisites | No | System requirements to verify |
| Setup | No | Environment preparation steps |
| Environment | No | Variables and configuration |
| Tests | Yes | Test cases with steps and expectations |
| Teardown | No | Cleanup steps |
Interpreting Steps
| Step Phrase | Action |
|---|---|
"Go to /path" | Navigate to the URL |
"Navigate to /path" | Navigate to the URL |
| "Click [button/link]" | Find and click the element |
| "Enter [value]" | Type into the focused or specified input |
| "Fill [field] with [value]" | Enter value in the named field |
| "Wait for [element/condition]" | Wait until condition is met |
| "Select [option]" | Choose from dropdown/select |
| "(any unique value)" | Generate a unique value (use timestamp) |
"from VAR env var" | Read from environment variable |
Interpreting Expectations
| Expectation | Verification |
|---|---|
| "is visible" | Element exists and is displayed |
| "is not visible" | Element hidden or not present |
| "URL contains X" | Current URL includes the string |
| "URL changes to X" | Navigation occurred to that path |
| "shows [text]" | Element contains the text |
| "error message appears" | Error UI is displayed |
Handling Ambiguity
When steps are unclear:
- Make reasonable assumptions based on context
- Use common UI patterns (submit buttons, form fields, etc.)
- Document any assumptions in your report
- If truly blocked, note it and continue to next test
Result Reporting
Report results in this format:
TESTME Results: [Suite Name]
=====================================
File: [path/to/TESTME.md]
Prerequisites: PASSED (or FAILED with details)
Setup: PASSED (or FAILED with details)
Tests:
PASS: [Test Name]
PASS: [Test Name]
FAIL: [Test Name]
Step: [Which step failed]
Expected: [What was expected]
Actual: [What happened]
Teardown: PASSED (or SKIPPED)
Summary: X tests, Y passed, Z failed
=====================================
Error Handling
| Scenario | Action |
|---|---|
| Prerequisite fails | Report failure, skip this file |
| Setup fails | Report failure, run teardown, skip tests |
| Test step fails | Record failure, continue to next test |
| Assertion fails | Record failure, continue to next test |
| Teardown fails | Log warning, complete report |
Environment Variables
If an Environment section exists, use the specified defaults when variables are not set:
## Environment
| Variable | Default | Description |
|----------|---------|-------------|
| BASE_URL | http://localhost:3000 | App URL |
| ADMIN_EMAIL | admin@example.com | Admin account |
Use http://localhost:3000 if BASE_URL is not set.
Begin
Find all TESTME.md files in this codebase and execute them now. Report results for each file found.
What's inside
8 sections (header, prerequisites, setup, environment, tests, teardown, step interpretations, expectation interpretations) plus execution flow and error handling rules
Change this for your project
- Replace
http://localhost:3000with your application's default base URL - Replace
admin@example.comwith your own default admin email - Replace
evilsocket/testme.mdwith your own repository name and specification URL
Where it goes
Keep in docs/ or alongside the feature. Agents read it to implement against a defined contract.
Worth borrowing
- Mapping natural language step phrases (e.g. 'Click [button]') to concrete actions makes specs readable by humans and executable by agents
- A required 'Tests' section with optional prerequisites, setup, and teardown mirrors standard test lifecycle patterns
Related Documents
Community AI Agent Skills Discovery Sources
Catalogs 50+ platforms, repositories, directories, and communities for discovering and sharing AI agent skills across multiple coding tools.
GPU Selection Guide for Large Language Models (LLMs)
Guides GPU selection for LLM inference, fine-tuning, and training by mapping model sizes, precision levels, and budgets to VRAM requirements.
ReleaseKit - Technical Requirements Document
Specifies a Go library and CLI for release automation with conventional commit parsing, validation checks, and workflow orchestration.
Python Development Environment Setup with Ruff
Defines a complete Python development environment using Ruff for linting and formatting, with pytest, mypy, pre-commit hooks, and VSCode configuration.