An open API service indexing awesome lists of open source software.

https://github.com/jonnymiller99/page-language-model

Open-source framework for defining Page Language Models (PLMs) for intelligent app understanding and AI-assisted testing.
https://github.com/jonnymiller99/page-language-model

automation developer-tools json-schema llm manual-testing open-source page-language-model page-object-model playwright plm pom selenium test-automation test-driven-development testing testing-framework testing-tools ui-testing

Last synced: about 1 month ago
JSON representation

Open-source framework for defining Page Language Models (PLMs) for intelligent app understanding and AI-assisted testing.

Awesome Lists containing this project

README

        

# πŸ“„ Page Language Model (PLM)

**Page Language Model (PLM)** is a new open-source format for describing the structure, behavior, and flow of pages in web and mobile applications β€” designed specifically for **AI-assisted testing, automation, and reasoning**.

It combines the familiar **Page Object Model (POM)** with the power of **Large Language Models (LLMs)** to give intelligent agents a structured, machine-readable understanding of your app.

---

## πŸ” Why PLM?

Modern apps can be too complex to test with raw selectors and brittle flows.

PLM solves this by providing:

- πŸ”— **Linked page flows** (what pages connect to what)
- πŸ”˜ **Detailed component maps** (inputs, buttons, modals, etc.)
- βœ… **Validation and requirement rules**
- 🧠 **AI-ready format** for test generation, analysis, and understanding

It's declarative, JSON-based, and version-controlled β€” built for developers, testers, and LLM-powered tools.

PLMs also support rich metadata like `description`, `intent`, `exampleInput`, and `llm_hint` to help LLMs understand the role and behavior of each component.

---

## 🧠 What Does a PLM Look Like?

Here’s a basic example for a login page, using both structural fields and LLM-aware metadata:

```json
{
"page": "LoginPage",
"url": "/login",
"components": [
{
"id": "emailInput",
"type": "input",
"label": "Email",
"required": true,
"validation": "must be a valid email",
"exampleInput": "[email protected]",
"description": "User's login email address",
"intent": "Capture the user's email for login"
},
{
"id": "passwordInput",
"type": "input",
"label": "Password",
"required": true,
"validation": "minimum 8 characters",
"exampleInput": "securepass123",
"description": "User's password",
"intent": "Collect secure password input"
},
{
"id": "loginButton",
"type": "button",
"label": "Log In",
"action": "submitLoginForm",
"transitionsTo": "DashboardPage",
"llm_hint": "Only enable after email and password fields are filled and valid",
"description": "Submits login credentials and redirects on success"
}
]
}
```

πŸ‘‰ See [`examples/login-page.json`](examples/login-page.json) for a full example.

---

## 🧱 What’s in This Repo?

- `schema/plm.schema.json` – the official v0.2 PLM JSON schema
- `examples/` – sample pages to learn from and fork
- `docs/` – deeper guides and best practices
- `cli/` – (coming soon) CLI tools for working with PLM files

---

## πŸš€ Coming Soon

- CLI to validate and scaffold PLMs
- PLM β†’ test case generators (Cypress, Playwright, etc.)
- Visual editor + LLM agent integrations

---

## ✨ Origin

PLM was created in 2025 by Jonathan Miller as a new standard to bridge the gap between UI automation, manual testing and AI reasoning.

> "Don't just test your UI β€” help AI understand it."

---

## 🀝 Want to Help?

- ⭐ Star the repo to follow along
- πŸ“‚ Try building your own PLM files
- πŸ“£ Open issues or discussions
- 🧠 Spread the word and help define the standard

---

πŸ‘‰ See [`docs/README.md`](docs/README.md) for the full PLM spec and advanced usage.

---

## πŸ“œ License

MIT License β€” free to use, modify, and build on.
If you're interested in contributing, collaborating, or helping shape this standard, [get in touch](https://github.com/JonnyMiller99).