@ia-qa/pal 0.9.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -0
- package/ROADMAP.md +121 -0
- package/TUTORIAL.md +62 -1
- package/dist/cli/index.js +19 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/skill.d.ts +16 -0
- package/dist/cli/skill.js +57 -0
- package/dist/cli/skill.js.map +1 -0
- package/dist/history.js +4 -0
- package/dist/history.js.map +1 -1
- package/dist/htmlReport.js +20 -14
- package/dist/htmlReport.js.map +1 -1
- package/dist/plan.d.ts +9 -0
- package/dist/plan.js +2 -0
- package/dist/plan.js.map +1 -1
- package/dist/report.d.ts +11 -0
- package/dist/report.js +48 -1
- package/dist/report.js.map +1 -1
- package/dist/run.d.ts +1 -0
- package/dist/run.js +3 -1
- package/dist/run.js.map +1 -1
- package/dist/tour.d.ts +27 -0
- package/dist/tour.js +60 -3
- package/dist/tour.js.map +1 -1
- package/package.json +5 -3
- package/skills/ia-qa-pal/SKILL.md +120 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ia-qa-pal
|
|
3
|
+
description: >-
|
|
4
|
+
Run one command that walks a web app, maps every page, checks it, compares it with the last
|
|
5
|
+
tour and reports what broke, what needs a person and what it could not see. Use when asked
|
|
6
|
+
to watch an app for regressions, to set up QA on a project that has none, to run a QA round
|
|
7
|
+
or tour, or to find out what a test suite never visits. Requires @ia-qa/pal (`ia-qa-pal`).
|
|
8
|
+
Runs entirely on the user's machine; no LLM is ever called.
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# ia-qa-pal — one tour, one report, no engine of its own
|
|
12
|
+
|
|
13
|
+
## 1. What it is, and what it is not
|
|
14
|
+
|
|
15
|
+
pal **composes** `@ia-qa/self-healing`: every verdict it prints comes from that package's own
|
|
16
|
+
functions. It adds no scoring, no heuristic and no second opinion. If a number here disagrees
|
|
17
|
+
with `ia-qa-heal`, that is a bug, not a nuance.
|
|
18
|
+
|
|
19
|
+
A tour is minutes, not seconds — it drives a real browser over every configured page. Always
|
|
20
|
+
start it in the background and follow it, or you block your own session:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npx -p @ia-qa/pal ia-qa-pal tour --background
|
|
24
|
+
npx -p @ia-qa/pal ia-qa-pal status
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Through MCP: `pal_project`, `pal_setup`, `pal_tour` (always background), `pal_status`.
|
|
28
|
+
|
|
29
|
+
## 2. The order, and it is not negotiable
|
|
30
|
+
|
|
31
|
+
| Step | Command | Why it must come first |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| 1 | `ia-qa-pal project` | is this project set up at all, and is a tour already running? **Call this first.** |
|
|
34
|
+
| 2 | `ia-qa-pal setup …` | writes `.ia-qa/config.json`. Never overwrites one. |
|
|
35
|
+
| 3 | `ia-qa-pal tour --background` | first tour = **baseline**. It is never a pass. |
|
|
36
|
+
| 4 | `ia-qa-pal status` | follow it; the report lands here |
|
|
37
|
+
| 5 | later tours | the same command. Now it compares. |
|
|
38
|
+
|
|
39
|
+
`tour` in an unset project returns a typed `setupRequired` with exit 2 rather than guessing an
|
|
40
|
+
answer. That is your cue to run step 2 — after asking the human, never before.
|
|
41
|
+
|
|
42
|
+
## 3. Setting a project up — ask, never assume
|
|
43
|
+
|
|
44
|
+
`setup` needs three answers, and **all three are the human's**:
|
|
45
|
+
|
|
46
|
+
1. **Where the app lives** — the URL you would type in a browser.
|
|
47
|
+
2. **How it logs in** — one of:
|
|
48
|
+
- `none` — public pages only
|
|
49
|
+
- `browser` — a person logs in by hand. Hand them `npx -p @ia-qa/self-healing ia-qa-heal login`; **you cannot run it** (§5.1)
|
|
50
|
+
- `session` — their suite already writes a Playwright `storageState`; ask for its path
|
|
51
|
+
3. **Where their end-to-end tests are** — only if they have some. Skip it rather than guess.
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
npx -p @ia-qa/pal ia-qa-pal setup --url <their app> --login <their answer> --yes
|
|
55
|
+
# add --tests <folder> when they have a suite
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
It reads the pages from the app's sitemap, falling back to a same-origin crawl (≤ 50 pages).
|
|
59
|
+
Never type a URL, a credential or a test folder the human did not give you. **No setup field
|
|
60
|
+
ever takes a secret**: a login is a `storageState` path or a variable name, never a value.
|
|
61
|
+
|
|
62
|
+
## 4. Reading the report
|
|
63
|
+
|
|
64
|
+
Four sections, each appearing only when it holds something — plus one above them all.
|
|
65
|
+
|
|
66
|
+
| Section | What it means |
|
|
67
|
+
|---|---|
|
|
68
|
+
| 🧭 **Read this first** | the thing to act on before anything else. Relay it verbatim |
|
|
69
|
+
| 🔴 **Broken** | the app answered with an error, or the suite failed under `--suite` |
|
|
70
|
+
| ⛔ **To decide** | drift and findings a person must judge |
|
|
71
|
+
| 🔧 **Ready to repair** | proposed rewrites to the suite's selectors — **proposed, never applied** |
|
|
72
|
+
| 🔍 **Not seen** | pages not explored, not mapped, not compared, or the suite never visits |
|
|
73
|
+
|
|
74
|
+
Exit codes: `0` answered · `1` something failed · `2` **could not answer**. Reading a `2` as a
|
|
75
|
+
`1` turns an unanswered question into a red build.
|
|
76
|
+
|
|
77
|
+
## 5. Never do this
|
|
78
|
+
|
|
79
|
+
1. **Never run `ia-qa-heal login` or `ia-qa-heal ui` yourself.** Both wait for a person at a
|
|
80
|
+
browser; in your shell they hang. Give the human the command.
|
|
81
|
+
2. **Never call a first tour a pass.** It says *Baseline established* because nothing was
|
|
82
|
+
compared — there was nothing to compare with.
|
|
83
|
+
3. **Never drop the "Not seen" section** from a green report. A tour that measured a third of
|
|
84
|
+
the app and found nothing is not a green app, and that section is where the denominator is.
|
|
85
|
+
4. **Never apply the repairs** in *Ready to repair* without the human reviewing them. pal never
|
|
86
|
+
edits a test file; neither should you on its behalf.
|
|
87
|
+
5. **Never add `--suite` without asking.** It runs *their* test command on *their* machine, and
|
|
88
|
+
a full suite can be twenty minutes. If they want a shorter one, it goes in their config as
|
|
89
|
+
`"pal": { "testCommand": "…" }` — read from the file, never from your flag.
|
|
90
|
+
6. **Never re-run a tour to "get a cleaner result".** Only one runs per project; a second is
|
|
91
|
+
refused while the first is alive. Follow with `status`.
|
|
92
|
+
7. **Never promote a baseline to clear a BLOCK.** `ia-qa-pal accept <page…>` exists for drift a
|
|
93
|
+
**person** reviewed and decided was intended. It is CLI-only and has no MCP tool on purpose.
|
|
94
|
+
8. **When every page failed to map, stop and read the cause.** pal refuses before running the
|
|
95
|
+
suite in that case and names it — usually the session. Do not re-run; run
|
|
96
|
+
`npx -p @ia-qa/self-healing ia-qa-heal session --check`, which separates *expired* (log in
|
|
97
|
+
again) from *wrong-host* (the session and the app's URL are different applications — logging
|
|
98
|
+
in again changes nothing) from *rotated*. If the human only wanted the coverage measurement,
|
|
99
|
+
`ia-qa-pal tour --suite-only` runs their suite without any of the comparison.
|
|
100
|
+
|
|
101
|
+
## 6. What leaves the machine
|
|
102
|
+
|
|
103
|
+
Nothing. pal drives a local headless browser against the app the user configured, and runs
|
|
104
|
+
their own test command only when asked. No LLM is called and nothing is sent to ia-qa.com.
|
|
105
|
+
|
|
106
|
+
The one secret it can touch is a session file — live cookies, gitignored on creation. Never
|
|
107
|
+
print it, never copy it, never commit it.
|
|
108
|
+
|
|
109
|
+
## 7. Where each thing actually lives
|
|
110
|
+
|
|
111
|
+
| Path | What it is |
|
|
112
|
+
|---|---|
|
|
113
|
+
| `.ia-qa/config.json` | the project: URL, pages, login, test command |
|
|
114
|
+
| `.ia-qa/mapping/`, `.ia-qa/baseline/` | the contracts, and the reference they are compared to |
|
|
115
|
+
| `.ia-qa/pal/run.json` | the live tour: phase, progress, then the final report |
|
|
116
|
+
| `.ia-qa/pal/history.jsonl` | one line per finished tour |
|
|
117
|
+
| `.ia-qa/session.json` | **secret** — live cookies |
|
|
118
|
+
|
|
119
|
+
For anything about locators, verdicts or repairs themselves, the deeper instructions are in
|
|
120
|
+
`@ia-qa/self-healing`: `npx -p @ia-qa/self-healing ia-qa-heal skill --print`.
|