For developers

Agent-compatibility testing, in your pipeline.

Playwright replays scripts you maintain. Frictionary sends real frontier-model agents at your app with no script, tells you, task by task, model by model, whether they can complete it and where the risk is, and fails the build when they can’t.

The compatibility matrix

Every run answers two questions per task × model: can an agent complete it, and how safe was the path? A task can pass at high risk, completed, but the agent took a destructive or flaky route, which success/fail alone hides.

               gpt-5.4-mini   claude-haiku-4-5   gemini
add to cart         ✓               ~?              ✓
checkout            ✗!              ✗!              ✗!
sign up             ✓               ✓               ✓
   ✓ completes   ~ detours   ✗ fails    ! high-risk   ? medium-risk
Step 1

Config as code

Commit a frictionary.json next to your code, the target project, the pass bar, what fails the build.
// frictionary.json
{
  "projectId": "<from the app>",
  "minScore": 80,
  "failOnBlocking": true
}
Step 2

Gate in CI

Add the check to any runner. It runs the matrix and exits non-zero below your bar.
# .github/workflows/frictionary.yml
- name: Agent-readiness gate
  env:
    FRICTIONARY_API_KEY: ${{ secrets.FRICTIONARY_API_KEY }}
  run: npx frictionary test --min-score 80
Step 3

Or call the API

A plain REST API, key-authed. The run returns the score and the full matrix.
# Start a run
curl -X POST https://frictionary.ai/v1/runs \
  -H "Authorization: Bearer $FRICTIONARY_API_KEY" \
  -H "content-type: application/json" \
  -d '{"projectId":"..."}'

# Poll, returns score + the compatibility matrix
curl https://frictionary.ai/v1/runs/<id> \
  -H "Authorization: Bearer $FRICTIONARY_API_KEY"
Why it belongs in the pipeline

Agents are becoming the client

You test that browsers can render your app. Agents are the next runtime, test that they can operate it, before your customers’ agents find out they can’t.

No scripts to maintain

Tests are intents (“complete checkout”), not brittle step-by-step selectors. The agent figures out the path; you learn where it breaks.

Across the models that matter

GPT, Claude, and Gemini attempt each task. Cross-model disagreement is a finding a single-model test can never surface.

Readiness as CI history

Runs carry the commit and branch, so agent-readiness reads like any other check, green on main, red on the PR that broke it.

Make “agents can use it” a test you pass.