xsignon-autoheal 0.3.2 → 0.5.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/CHANGELOG.md CHANGED
@@ -2,6 +2,41 @@
2
2
 
3
3
  All notable changes to AutoHeal AI. Versions follow [semantic versioning](https://semver.org/).
4
4
 
5
+ ## 0.5.0 (2026-11-04)
6
+
7
+ ### Security
8
+ - **Tests run in a sandbox.** On Linux runners with passwordless sudo (GitHub-hosted Ubuntu), a new "Prepare the sandbox" step creates the user `autoheal-sb`. The engine, which runs your tests and every proposed fix, starts as that user with only the filtered environment. AutoHeal's own process keeps the AI key and runs as the runner user, so a test or a fix can no longer read the key from `/proc`. The sandbox can read and write the project but not `.git`. New input `sandbox`: `auto` (default; runs without the sandbox where it cannot be set up, and the PR says so), `user` (required), `off`.
9
+ - **npm provenance.** Releases are published by `.github/workflows/release.yml` on a version tag. It uses npm trusted publishing (no token), adds provenance, checks that the tag matches `package.json` and is on `main`, and creates the GitHub release. The job that publishes installs nothing and runs no project code.
10
+
11
+ ### Changed
12
+ - The "AI key proxy" from the roadmap is not needed. With the sandbox, the key never reaches a process that runs test code.
13
+
14
+ ## 0.4.0 (2026-11-04)
15
+
16
+ ### Added
17
+ - **Guard v2: runtime checks.** After a fix passes the code scan and the stability rerun, AutoHeal runs the fixed test once more with `--trace=on` and compares the two traces. It records which assertions ran, on which elements, against which values and on which page, and where each action landed. A fix is blocked when the fixed run:
18
+ - skips an assertion the failed run made, or checks another value (`runtime-fewer-checks`, `runtime-no-checks`);
19
+ - runs a shared step on another page (`runtime-other-page`);
20
+ - lands an action that worked before somewhere else on the page (`runtime-other-element`).
21
+ - **Before/after evidence in the PR.** A "Runtime guard" row says what was compared and where the fixed step acted. A "Screenshots" row links the failed run's screenshot and the fixed run's at the same step, saved as the run artifact `<result-name>-evidence` (14 days). New input `screenshots` (default `true`) turns this off.
22
+
23
+ ### Limits
24
+ - The failed run's trace stops at the failure, so steps after it are checked by the code scan only. A step that failed (for example a click on a renamed button) has no earlier position to compare with.
25
+ - Needs a Playwright Test trace from the failed run. pytest fixes keep the code and rerun checks.
26
+
27
+ ## 0.3.3 (2026-11-04)
28
+
29
+ ### Security
30
+ Closes the holes from the third audit:
31
+ - **What an assertion looks at is an expected value.** The text in `getByText`, `getByLabel`, `hasText` or `name` inside `expect(...)`, `text=` selectors, and state options such as `checked` or `visible`, can no longer change. A test id or CSS selector inside `expect` still can.
32
+ - **Navigation constants are followed.** `const HOME = '/'` changed to another page is blocked like a changed `goto`. Protocol-relative URLs (`//host`) count as URLs.
33
+ - **Actions can't be neutered.** The action methods (`click`, `fill`…) must stay the same, and no `await` may be removed.
34
+ - **Publish checks git's own reading.** The file list must match `git apply --numstat`, and after applying, `git status` must show exactly those files.
35
+ - **Regression set.** `test/bypasses/corpus.mjs` holds every bypass from all three audits (27) and real fixes that must still pass. CI runs it on every change.
36
+
37
+ ### Fixed
38
+ - The `autoheal` command was dropped from the npm package: npm 12 removes a `bin` path that starts with `./`. The path is now `dist/cli.js`, so `npx xsignon-autoheal` works.
39
+
5
40
  ## 0.3.2 (2026-11-03)
6
41
 
7
42
  ### Security
package/README.md CHANGED
@@ -26,12 +26,20 @@ It is MIT licensed and runs entirely on your GitHub runner. No AutoHeal server,
26
26
  - points the test at another page (a changed `goto`, `route` or `waitForURL`, or any URL written into the test);
27
27
  - deletes a user action such as a click or fill;
28
28
  - widens a locator with `.or()` or a whole-page selector;
29
+ - changes what an assertion looks at (the text, role name or state inside `expect(...)`), or changes an action (`click` to `hover`) or drops an `await`;
29
30
  - adds code a test fix never needs (environment variables, processes, system modules, raw network calls) or hides such code behind built-up names and globals.
30
31
 
31
- On top of those rules, a fix may only *add* locators, waits, literals and names the file already uses (a token-level allowlist), so a fake comment inside a string or a split-up string cannot hide new code. Fixed waits, `force: true` and retries are blocked; raised timeouts are blocked unless you allow warnings. The scan is a strong filter, not a proof. The stability rerun and your review of the draft PR are the other two layers.
32
+ On top of those rules, a fix may only *add* locators, waits, literals and names the file already uses (a token-level allowlist), so a fake comment inside a string or a split-up string cannot hide new code. Fixed waits, `force: true` and retries are blocked; raised timeouts are blocked unless you allow warnings. Every bypass found in our audits is in [`test/bypasses/corpus.mjs`](test/bypasses/corpus.mjs), and CI checks each one is blocked. The scan is a strong filter, not a proof. The stability rerun and your review of the draft PR are the other two layers.
33
+ - **Runtime guard.** The code scan reads text; the runtime guard watches what the test actually does. After a fix passes the scan and the stability rerun, AutoHeal runs the fixed test once more with a trace and compares it with the failed run's trace. It blocks the fix if:
34
+ - an assertion the failed run made does not run again, or runs against another value (fewer or different checks);
35
+ - a step both runs share happens on another page;
36
+ - an action that worked before the failure now lands somewhere else on the page (another element).
37
+
38
+ The PR shows what was compared, and links a screenshot of the failed run next to one of the fixed run at the same step. The failed run's trace stops at the failure, so steps after it can only be checked by the code scan. Needs `trace: 'retain-on-failure'` (or `on`) in your Playwright config; without a trace the PR says the runtime check was skipped. pytest fixes are checked by code and reruns only.
32
39
  - **Stability proof.** A fix is kept only if the test passes `--repeat-each=5` and the rest of the file does not get worse. A fix to a page object or helper also reruns every spec that imports it. A rerun that crashes or runs no tests counts as a failure. Anything else is reverted before the model even sees the result. The repeats run back to back, so tests must clean up after themselves. If a test shares a database or other state without resetting it, a good fix can fail the proof and be reverted (lower `repeat-each`, or isolate the data). A bad fix is never kept because of this.
40
+ - **Tests run in a sandbox.** On Linux runners with passwordless sudo (GitHub-hosted Ubuntu), your tests and every proposed fix run as a separate user, `autoheal-sb`. AutoHeal's own process, which holds the AI key, runs as the runner user, and Linux does not let one user read another user's process memory or environment. So a test, or a fix the AI wrote, cannot read the key or the runner's tokens, and it cannot change `.git`. Where the sandbox cannot be set up (macOS, Windows, self-hosted runners without sudo), AutoHeal runs without it and the PR says so. Set `sandbox: user` to fail instead.
33
41
  - **Secrets are scrubbed.** Before anything goes to the AI or into a PR, issue, comment or job summary, AutoHeal redacts known credential shapes: API keys, GitHub, AWS, Slack and Stripe tokens, JWTs, private keys, `Bearer` headers, `password=` values and passwords in URLs. It also redacts the value of every secret-looking environment variable on the runner.
34
- - **It sees the page.** When a test fails, the AI is shown the page at that moment: Playwright's own failure screenshot, or the last frame from the trace before the failing step. So it can tell that a button moved, was renamed or is hidden behind a dialog, instead of guessing from the error text. The image comes from your run's own files (no extra browser run) and goes only to your AI provider. It never goes into a PR, issue, comment or the dashboard. It is on for Anthropic and OpenAI; turn it off with `vision: false`. Keep `screenshot: 'only-on-failure'` or a trace with screenshots in your config so there is something to see.
42
+ - **It sees the page.** When a test fails, the AI is shown the page at that moment: Playwright's own failure screenshot, or the last frame from the trace before the failing step. So it can tell that a button moved, was renamed or is hidden behind a dialog, instead of guessing from the error text. The image comes from your run's own files (no extra browser run) and goes only to your AI provider. It never goes into a PR text, issue, comment or the dashboard. (The before/after screenshots of the runtime guard are a separate, optional run artifact; see `screenshots`.) It is on for Anthropic and OpenAI; turn it off with `vision: false`. Keep `screenshot: 'only-on-failure'` or a trace with screenshots in your config so there is something to see.
35
43
  - **Triage first, AI second.** Most failures are classified with no AI at all. Locator fixes that the engine can verify against the trace are applied by rules, using no tokens. The model is only asked when it is actually needed.
36
44
  - **Repo memory.** Fixes that worked are saved in your repo, one small file per fix under `.autoheal/memory/`, so two open fix PRs never conflict. The agent reads them next time, so it learns your app's naming habits.
37
45
  - **Hard budgets.** The cost limit per job (`max-usd`, default $1), the number of AI calls and the number of tokens are all capped. Each failure gets an equal share of what is left, so one hard failure cannot use up the whole job. Before every AI call, AutoHeal checks that call's worst case (its estimated input plus the full output allowance), so no single call can cross the limit. The cost is an estimate from public prices; set `price-in` and `price-out` if yours differ (required for models it has no price for). When a limit stops the job, the report says so and nothing half-done is kept.
@@ -91,7 +99,7 @@ PRs opened with the default `GITHUB_TOKEN` do not start other workflows; GitHub
91
99
  with:
92
100
  app-id: ${{ vars.AUTOHEAL_APP_ID }}
93
101
  private-key: ${{ secrets.AUTOHEAL_APP_KEY }}
94
- - uses: xsignon-secure/AutoHeal-AI/publish@v0.3.2
102
+ - uses: xsignon-secure/AutoHeal-AI/publish@v0.5.0
95
103
  with:
96
104
  github-token: ${{ steps.app-token.outputs.token }}
97
105
  # ...the other inputs from the template
@@ -111,7 +119,7 @@ AutoHeal never pushes to your base branch, never auto-merges, and never runs on
111
119
 
112
120
  ## Inputs
113
121
 
114
- **Heal action** (`xsignon-secure/AutoHeal-AI@v0.3.2`):
122
+ **Heal action** (`xsignon-secure/AutoHeal-AI@v0.5.0`):
115
123
 
116
124
  | Input | Default | |
117
125
  |---|---|---|
@@ -126,6 +134,8 @@ AutoHeal never pushes to your base branch, never auto-merges, and never runs on
126
134
  | `price-in`, `price-out` | | USD per million tokens, required for a model AutoHeal has no price for (`0` for a local model) |
127
135
  | `effort` | `medium` | Anthropic effort: `low` to `max` |
128
136
  | `vision` | `auto` | Show the AI the failure screenshot: `auto` (on for Anthropic and OpenAI, off for other endpoints), `true` or `false` |
137
+ | `screenshots` | `true` | Save a before and after screenshot of each kept fix as the run artifact `<result-name>-evidence` (14 days) and link it from the PR. `false` turns it off |
138
+ | `sandbox` | `auto` | Run tests and fixes as a separate Linux user that cannot read the AI key: `auto` (on where possible, otherwise off and the PR says so), `user` (required) or `off` |
129
139
  | `max-failures` | `3` | Failures to work on per run |
130
140
  | `repeat-each` | `5` | Runs in a row a fix must pass |
131
141
  | `max-usd` | `1.00` | AI cost limit per job (estimate) |
@@ -140,7 +150,7 @@ AutoHeal never pushes to your base branch, never auto-merges, and never runs on
140
150
 
141
151
  Outputs: `outcome` (`fixed`, `blocked`, `app-bug`, `quarantined`, `unfixed`, `nothing-to-do` or `error`), `fixed`, `blocked`, `has-result`.
142
152
 
143
- **Publish action** (`xsignon-secure/AutoHeal-AI/publish@v0.3.2`): `result-dir`, `mode`, `base-branch`, `run-id`, `commit`, `pr-number`, `blocked`, `open-issues`, `allowed-paths`, `allow-warn`, `quarantine-days`, `github-token`, `dashboard-url`, `dashboard-secret`. Output: `pr-url`.
153
+ **Publish action** (`xsignon-secure/AutoHeal-AI/publish@v0.5.0`): `result-dir`, `mode`, `base-branch`, `run-id`, `commit`, `pr-number`, `blocked`, `open-issues`, `allowed-paths`, `allow-warn`, `quarantine-days`, `github-token`, `dashboard-url`, `dashboard-secret`. Output: `pr-url`.
144
154
 
145
155
  `allowed-paths` limits which files a fix may change. The default is `**/tests/**, **/test/**, **/e2e/**, **/playwright/**, **/*.spec.*, **/*.test.*, **/test_*.py, **/*_test.py`. If your page objects live somewhere else (for example `src/pages/**`), add that folder. Files that tools load or run on their own (configs, `conftest.py`, `__init__.py`, setup and teardown files, `.pnpmfile.cjs`, gulp and grunt files) are never patched. Keep `allow-warn` and `quarantine-days` the same as in the heal job.
146
156
 
@@ -207,6 +217,8 @@ npm run simulate # end-to-end runs against a dummy shop app with real Playwri
207
217
 
208
218
  The simulation copies `simulation/fixture` (a small shop app with a renamed button, a moved element, a changed price and a flaky badge). It runs the real suite, heals it, and checks every outcome. That includes a scripted AI that tries to cheat, and both jobs of the GitHub Action run against a local git remote and a fake `gh`, including eight tampered patches the publish job must refuse. See [CONTRIBUTING.md](CONTRIBUTING.md).
209
219
 
220
+ **Releases** are published by [`.github/workflows/release.yml`](.github/workflows/release.yml) when a `vX.Y.Z` tag is pushed after the release PR is merged. It checks that the tag matches `package.json` and is on `main`, runs the tests, then publishes to npm through npm trusted publishing (no token) with [provenance](https://docs.npmjs.com/generating-provenance-statements), and creates the GitHub release. `npm view xsignon-autoheal --json` shows the provenance attestation.
221
+
210
222
  ## License
211
223
 
212
224
  MIT © XSignOn
package/SECURITY.md CHANGED
@@ -21,9 +21,10 @@ AutoHeal runs an AI model against your code inside CI, so it is designed on the
21
21
  - code a test fix never needs: environment variables, processes, system modules, raw network calls, `eval`, paths such as `.git/` and `/proc/`, or any of these hidden behind built-up names, globals or decoding.
22
22
 
23
23
  The scans are pattern based, so a determined obfuscation could still slip through. That is why every fix also runs without any token, must pass the stability rerun, and arrives as a draft PR for a person to review.
24
+ - **Runtime guard.** Each kept fix is run once more with a trace and compared with the failed run: every assertion the failed run made must run again with the same value, shared steps must stay on the same pages, and actions that worked must hit the same spot on the page. A fix that checks less, or checks another page or element, is reverted. This catches a cheat the code scan cannot see in text, but only for the part of the test the failed run reached.
24
25
  - **Short-lived push token.** Use a GitHub App token, installed on the one repository and expiring after an hour, rather than a PAT. See the README.
25
26
  - **Secrets stay out of test runs.** Your tests, and every proposed fix, run in a child process without the AI key, the dashboard secret, `GITHUB_TOKEN`/`GH_TOKEN`, the Actions runtime tokens or `GITHUB_ENV`/`GITHUB_PATH`/`GITHUB_OUTPUT` (so they cannot change later steps). A run given as a URL is downloaded by a separate engine process that runs no tests. The workflow checks out with `persist-credentials: false`.
26
- - **Screenshots go only to your AI provider.** With vision on (the default for Anthropic and OpenAI), the failure screenshot from your run's own artifacts is sent to the provider with the prompt. Text in an image cannot be scrubbed, so if your test pages show real customer data or secrets, set `vision: false`. Screenshots are never written to a PR, issue, comment, `summary.json` or the dashboard, and text in the image is treated as data like everything else.
27
+ - **Screenshots go only to your AI provider.** With vision on (the default for Anthropic and OpenAI), the failure screenshot from your run's own artifacts is sent to the provider with the prompt. Text in an image cannot be scrubbed, so if your test pages show real customer data or secrets, set `vision: false`. Screenshots are never written into a PR, issue, comment, `summary.json` or the dashboard, and text in the image is treated as data like everything else. The runtime guard saves a before and after screenshot of each kept fix as a run artifact (`<result-name>-evidence`, 14 days), which anyone who can read the repository's Actions artifacts can download, like the traces your test job uploads. Set `screenshots: false` if that is too much.
27
28
  - **Live page checks stay on your app.** With `app-url` set, the model can only open pages on that origin.
28
29
  - **The model cannot quarantine.** Only real reruns that pass and fail on the same code can mark a test flaky.
29
30
  - **Nothing is merged.** Fixes arrive as a (draft) PR for a human to review.
@@ -35,7 +36,9 @@ AutoHeal runs an AI model against your code inside CI, so it is designed on the
35
36
  - The page sends a strict Content-Security-Policy and runs no scripts.
36
37
  - Run it behind HTTPS.
37
38
  - **Secrets are scrubbed** from everything that leaves the runner: the AI prompt, PRs, issues, comments, the job summary and `summary.json`. The scrubber knows common credential shapes and the values of every secret-looking environment variable. It is pattern based, so keep secrets out of test output in the first place.
38
- - **Known limits.** The AI key is in the heal job's main process. Code running in that job as the same user (a test, or a proposed fix during its rerun) could read it from `/proc`, so use a key with a spend limit. The write token is never in that job. Reruns assume tests are isolated; shared state can make a good fix fail its proof, but it cannot make a bad fix pass. The mock check compares shapes only, so it is a triage hint, not proof. The cost limit is an estimate from public prices, and the job refuses to start with a model that has no price unless you set one. Third-party actions in the template and in this repo's workflows are pinned to commit SHAs (Dependabot keeps them current). They run on Node 24, so self-hosted runners need version 2.327.1 or newer. The template refers to AutoHeal itself by tag; pin that to a commit SHA too if your policy requires it. The heal job uses no dependency cache, so nothing it saves can reach your other workflows.
39
+ - **Tests run as another user.** On Linux runners with passwordless sudo, the action creates the user `autoheal-sb` and runs the engine (your tests and every proposed fix) as that user. It can read and write the project folder, but `.git` is read-only, and it can only read the engine, Node and the browsers. The AI key stays in AutoHeal's own process, which runs as the runner user, and Linux does not let `autoheal-sb` read that process's environment or memory. The sandbox user has no sudo. With `sandbox: auto` (the default), a runner where this cannot be set up runs without it, and the PR says so. `sandbox: user` fails the job instead.
40
+ - **Signed releases.** Each npm release is published from this repository's release workflow with npm provenance, so `npm audit signatures` can check that a version was built from a commit on `main`. No npm token is stored anywhere; publishing uses npm trusted publishing (OIDC). The job that holds the publish token installs nothing and runs no project code.
41
+ - **Known limits.** The AI key is in the heal job's main process. With the sandbox on, tests and fixes cannot read it. Without the sandbox (macOS, Windows, or self-hosted runners without sudo), code running as the same user (a test, or a proposed fix during its rerun) could read it from `/proc`, so use a key with a spend limit. The sandbox user can still use the network, so a test can still send what it can read (your project's files) to another host. The write token is never in that job. Reruns assume tests are isolated; shared state can make a good fix fail its proof, but it cannot make a bad fix pass. The mock check compares shapes only, so it is a triage hint, not proof. The cost limit is an estimate from public prices, and the job refuses to start with a model that has no price unless you set one. Third-party actions in the template and in this repo's workflows are pinned to commit SHAs (Dependabot keeps them current). They run on Node 24, so self-hosted runners need version 2.327.1 or newer. The template refers to AutoHeal itself by tag; pin that to a commit SHA too if your policy requires it. The heal job uses no dependency cache, so nothing it saves can reach your other workflows.
39
42
 
40
43
  ## Reporting a vulnerability
41
44
 
package/action.yml CHANGED
@@ -30,6 +30,12 @@ inputs:
30
30
  vision:
31
31
  description: "Show the AI the page at the moment of failure (Playwright's failure screenshot or the trace's last frame). auto (default) = on for Anthropic and OpenAI, off for other endpoints; true or false."
32
32
  default: auto
33
+ sandbox:
34
+ description: "Run your tests and every proposed fix as a separate Linux user that cannot read the AI key or the runner's tokens. auto (default) = on when the runner is Linux with passwordless sudo (GitHub-hosted Ubuntu), otherwise off and the PR says so; user = required (fail if it cannot be set up); off."
35
+ default: auto
36
+ screenshots:
37
+ description: Save before/after screenshots of each kept fix as a run artifact (<result-name>-evidence, kept 14 days) and link them from the PR. They come from the same traces your test job uploads. 'false' turns this off.
38
+ default: 'true'
33
39
  effort:
34
40
  description: Anthropic effort (low, medium, high, xhigh, max).
35
41
  default: medium
@@ -107,6 +113,19 @@ runs:
107
113
  # dist/ is prebuilt and committed, so only runtime packages are installed, with no install scripts.
108
114
  npm ci --omit=dev --ignore-scripts --no-audit --no-fund --loglevel=error
109
115
 
116
+ # A separate user for your tests and the proposed fixes (scripts/sandbox-setup.sh).
117
+ - name: Prepare the sandbox
118
+ id: sandbox
119
+ if: inputs.sandbox != 'off'
120
+ shell: bash
121
+ working-directory: ${{ inputs.working-directory }}
122
+ env:
123
+ MODE: ${{ inputs.sandbox }}
124
+ run: |
125
+ PROJECT="$PWD" ACTION_PATH="$GITHUB_ACTION_PATH" bash "$GITHUB_ACTION_PATH/scripts/sandbox-setup.sh" && exit 0
126
+ if [ "$MODE" = user ]; then exit 1; fi
127
+ echo "::notice::AutoHeal sandbox setup failed; running without it (the PR says so)."
128
+
110
129
  - name: Heal
111
130
  id: heal
112
131
  shell: bash
@@ -120,6 +139,11 @@ runs:
120
139
  AUTOHEAL_MODEL: ${{ inputs.model }}
121
140
  AUTOHEAL_EFFORT: ${{ inputs.effort }}
122
141
  AUTOHEAL_VISION: ${{ inputs.vision }}
142
+ AUTOHEAL_SCREENSHOTS: ${{ inputs.screenshots }}
143
+ AUTOHEAL_SANDBOX: ${{ inputs.sandbox }}
144
+ AUTOHEAL_SANDBOX_USER: ${{ steps.sandbox.outputs.user }}
145
+ AUTOHEAL_SANDBOX_HOME: ${{ steps.sandbox.outputs.home }}
146
+ AUTOHEAL_SANDBOX_BROWSERS: ${{ steps.sandbox.outputs.browsers }}
123
147
  AUTOHEAL_MAX_FAILURES: ${{ inputs.max-failures }}
124
148
  AUTOHEAL_REPEAT_EACH: ${{ inputs.repeat-each }}
125
149
  AUTOHEAL_MAX_USD: ${{ inputs.max-usd }}
@@ -136,6 +160,7 @@ runs:
136
160
  AUTOHEAL_COMMIT: ${{ inputs.commit || github.event.workflow_run.head_sha || github.sha }}
137
161
  AUTOHEAL_BRANCH: ${{ inputs.branch || github.event.workflow_run.head_branch || github.ref_name }}
138
162
  AUTOHEAL_OWNER: '@${{ github.event.workflow_run.actor.login || github.actor }}'
163
+ AUTOHEAL_EVIDENCE_ARTIFACT: ${{ inputs.result-name }}-evidence
139
164
  GITHUB_TOKEN: ${{ inputs.github-token }}
140
165
  run: |
141
166
  set +e
@@ -161,6 +186,17 @@ runs:
161
186
  # The heal job only uploads a patch. The publish job (publish/action.yml)
162
187
  # checks it in a fresh checkout and opens the PR, so the token that can
163
188
  # push never shares a job with your tests or the AI's proposed fixes.
189
+ # Before/after screenshots of kept fixes, linked from the PR. Only images
190
+ # AutoHeal itself wrote from the traces; the upload never fails the job.
191
+ - name: Upload before/after screenshots
192
+ if: always() && steps.heal.outputs.exit-code != ''
193
+ uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
194
+ with:
195
+ name: ${{ inputs.result-name }}-evidence
196
+ path: ${{ runner.temp }}/autoheal-out/evidence
197
+ retention-days: 14
198
+ if-no-files-found: ignore
199
+
164
200
  - name: Upload the result for the publish job
165
201
  if: always() && steps.package.outputs.result-dir != ''
166
202
  uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
package/dist/agent.d.ts CHANGED
@@ -12,7 +12,7 @@ import type { ToolCaller } from './mcp.js';
12
12
  import type { Part, Provider, ToolSpec, Turn } from './providers/types.js';
13
13
  import { type Screenshot } from './vision.js';
14
14
  import type { Triage } from './triage.js';
15
- import type { FailureInfo, GuardInfo } from './types.js';
15
+ import type { FailureInfo, GuardInfo, RuntimeInfo } from './types.js';
16
16
  export interface VerifyOutcome {
17
17
  kept: boolean;
18
18
  blocked: boolean;
@@ -23,6 +23,7 @@ export interface VerifyOutcome {
23
23
  passed: boolean;
24
24
  detail: string;
25
25
  };
26
+ runtime?: RuntimeInfo;
26
27
  }
27
28
  export interface AgentContext {
28
29
  mcp: ToolCaller;
@@ -50,6 +51,7 @@ export interface AgentResult {
50
51
  passed: boolean;
51
52
  detail: string;
52
53
  };
54
+ runtime?: RuntimeInfo;
53
55
  blockedAttempts: number;
54
56
  log: string[];
55
57
  }
package/dist/agent.js CHANGED
@@ -294,6 +294,7 @@ export async function aiFix(ctx) {
294
294
  log,
295
295
  ...(outcome.guard ? { guard: outcome.guard } : {}),
296
296
  ...(outcome.stability ? { stability: outcome.stability } : {}),
297
+ ...(outcome.runtime ? { runtime: outcome.runtime } : {}),
297
298
  };
298
299
  results.push({ type: 'tool_result', id: call.id, content: 'Kept: the fix passed both anti-cheat scans and the stability rerun. You are done.' });
299
300
  }
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
package/dist/cheat.d.ts CHANGED
@@ -29,4 +29,5 @@ export interface CheatReport {
29
29
  /** Strip comments so commented-out code neither counts nor hides. */
30
30
  export declare function stripComments(source: string): string;
31
31
  export declare function expectations(source: string): string[];
32
+ export declare function assertionSubjects(source: string): string[];
32
33
  export declare function scanChange(before: string, after: string, file?: string): CheatReport;
package/dist/cheat.js CHANGED
@@ -91,7 +91,7 @@ const COMPUTED_TEST = /\b(?:test|it|describe)(?:\s*\.\s*describe)?\s*\[/;
91
91
  */
92
92
  const NAVIGATION = /\.(?:goto|waitForURL|wait_for_url|route|routeFromHAR|route_from_har|newPage|new_page|setContent|set_content|expect_navigation|waitForNavigation)\s*\(([^()]*(?:\([^()]*\)[^()]*)*)\)/g;
93
93
  /** A URL written into the test. Locators never need one. */
94
- const URL_LITERAL = /['"`]\s*(?:data|javascript|blob|file|about|https?|wss?|ftp):[^'"`]*['"`]/gi;
94
+ const URL_LITERAL = /['"`]\s*(?:(?:data|javascript|blob|file|about|https?|wss?|ftp):|\/\/|\\\\)[^'"`]*['"`]/gi;
95
95
  /** User actions. Deleting one removes a step of what the test checks. */
96
96
  const ACTION = /\.(?:click|dblclick|fill|press|pressSequentially|press_sequentially|type|check|uncheck|setChecked|set_checked|hover|tap|selectOption|select_option|setInputFiles|set_input_files|dragTo|drag_to|dispatchEvent|dispatch_event|focus|blur|clear|goto|selectText|select_text|down|up|insertText|insert_text)\s*\(/;
97
97
  /** Ways to make a locator match more than it did: .or(), or a whole-page selector. */
@@ -108,7 +108,10 @@ const TRIVIAL = /\bexpect(?:\.soft)?\s*\(\s*(?:true|false|null|undefined|-?\d+(?
108
108
  * of Python asserts. A fix may change how an element is found, never what the
109
109
  * test expects to see; a changed expectation is how an app bug gets hidden.
110
110
  */
111
- const EXPECTATION = /\.(?:not\.)?(?:toHaveText|toContainText|toHaveValue|toHaveValues|toHaveURL|toHaveTitle|toHaveCount|toHaveAttribute|toHaveClass|toHaveCSS|toHaveId|toHaveJSProperty|toHaveAccessibleName|toHaveAccessibleDescription|toHaveRole|toEqual|toStrictEqual|toBe|toMatch|toContain|toHaveLength|toHaveProperty|toBeGreaterThan|toBeGreaterThanOrEqual|toBeLessThan|toBeLessThanOrEqual|toBeCloseTo|to_have_text|to_contain_text|to_have_value|to_have_values|to_have_url|to_have_title|to_have_count|to_have_attribute|to_have_class|to_have_css|to_have_id|to_have_js_property|to_have_accessible_name|to_have_role)\s*\(([^()]*(?:\([^()]*\)[^()]*)*)\)|^\s*assert\s+(.+)$/gm;
111
+ const EXPECTATION = /\.(?:not\.)?(?:to[A-Z]\w*|to_[a-z_]+)\s*\(([^()]*(?:\([^()]*\)[^()]*)*)\)|^\s*assert\s+(.+)$/gm;
112
+ /** What an assertion looks at: the argument of expect(...). Changing it retargets the check. */
113
+ const EXPECT_SUBJECT = /\bexpect(?:\.soft|\.poll)?\s*\(((?:[^()]|\((?:[^()]|\([^()]*\))*\))*)\)/g;
114
+ const LITERAL = /'(?:[^'\\\n]|\\.)*'|"(?:[^"\\\n]|\\.)*"|`[^`]*`|\b(?:true|false|True|False)\b|-?\b\d+(?:\.\d+)?\b/g;
112
115
  function declaration(source, name) {
113
116
  const n = name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
114
117
  const js = new RegExp(`\\b(?:const|let|var)\\s+${n}\\s*(?::[^=\\n]+)?=\\s*([^;\\n]+)`).exec(source);
@@ -126,7 +129,8 @@ export function expectations(source) {
126
129
  const parts = value.split(/\s(?:==|!=|>=|<=|>|<|not in|in|is not|is)\s/);
127
130
  value = parts.length > 1 ? (parts[parts.length - 1] ?? value) : value;
128
131
  }
129
- value = value.replace(/\s+/g, ' ').trim();
132
+ // A raised timeout is a warning of its own, not a changed expectation.
133
+ value = value.replace(/\btimeout\s*[:=]\s*[\d_]+\s*,?/g, '').replace(/\s+/g, ' ').trim();
130
134
  out.push(value);
131
135
  // Follow a variable to where it is set in this file, so moving the
132
136
  // expected value into `const price = '$12'` changes the expectation too.
@@ -140,6 +144,48 @@ export function expectations(source) {
140
144
  }
141
145
  return out;
142
146
  }
147
+ /**
148
+ * The content an assertion is about: the text in getByText / getByLabel /
149
+ * hasText / name inside expect(...), 'text=' selectors, and state options
150
+ * such as checked or visible. Changing one changes what is checked, so it is
151
+ * an expected value. A test id or CSS selector is identity, not content, and
152
+ * may change.
153
+ */
154
+ const SUBJECT_CONTENT = /\b(?:getBy(?:Text|Label|Placeholder|AltText|Title)|get_by_(?:text|label|placeholder|alt_text|title))\s*\(\s*('(?:[^'\\\n]|\\.)*'|"(?:[^"\\\n]|\\.)*"|`[^`]*`|\/(?:[^/\\\n]|\\.)+\/[a-z]*|[A-Za-z_$][\w$]*)|\b(?:hasText|has_text|hasNotText|has_not_text|name)\s*[:=]\s*('(?:[^'\\\n]|\\.)*'|"(?:[^"\\\n]|\\.)*"|`[^`]*`|\/(?:[^/\\\n]|\\.)+\/[a-z]*|[A-Za-z_$][\w$]*)|\b(checked|pressed|selected|expanded|disabled|visible|includeHidden|include_hidden|exact)\s*[:=]\s*(true|false|True|False)|(['"`]\s*text\s*=[^'"`]*['"`])/g;
155
+ export function assertionSubjects(source) {
156
+ const out = [];
157
+ for (const m of source.matchAll(EXPECT_SUBJECT)) {
158
+ for (const c of (m[1] ?? '').matchAll(SUBJECT_CONTENT)) {
159
+ const value = c[1] ?? c[2] ?? (c[3] ? `${c[3]}=${c[4]}` : c[5]) ?? '';
160
+ out.push(value);
161
+ if (/^[A-Za-z_$][\w$]*$/.test(value) && !/^(?:true|false|True|False)$/.test(value)) {
162
+ const init = declaration(source, value);
163
+ if (init !== undefined)
164
+ out.push(`${value} = ${init}`);
165
+ }
166
+ }
167
+ }
168
+ return out;
169
+ }
170
+ /** Where each navigation call goes, following a constant back to its value. */
171
+ function navigationTargets(source) {
172
+ const out = [];
173
+ for (const m of source.matchAll(NAVIGATION)) {
174
+ const arg = (m[1] ?? '').replace(/\s+/g, ' ').trim();
175
+ out.push(arg);
176
+ for (const name of arg.replace(LITERAL, '').match(/\b[A-Za-z_$][\w$]*\b/g) ?? []) {
177
+ if (/^(?:await|this|page|self|timeout|waitUntil|wait_until)$/.test(name))
178
+ continue;
179
+ const init = declaration(source, name);
180
+ if (init !== undefined)
181
+ out.push(`${name} = ${init}`);
182
+ }
183
+ }
184
+ return out;
185
+ }
186
+ function actionNames(source) {
187
+ return [...source.matchAll(new RegExp(ACTION.source, 'g'))].map((m) => m[0].replace(/[\s(.]/g, '')).sort();
188
+ }
143
189
  function missing(before, after) {
144
190
  const left = new Map();
145
191
  for (const x of after)
@@ -174,8 +220,8 @@ export function scanChange(before, after, file) {
174
220
  block('skip-added', 'a skip, only, fixme, fail or xfail marker was added');
175
221
  if (count(b, COMPUTED_TEST) > count(a, COMPUTED_TEST))
176
222
  block('skip-added', "test[...] was added, which can call skip, only or fixme without naming them");
177
- const navBefore = [...a.matchAll(NAVIGATION)].map((m) => (m[1] ?? '').replace(/\s+/g, ' ').trim());
178
- const navAfter = [...b.matchAll(NAVIGATION)].map((m) => (m[1] ?? '').replace(/\s+/g, ' ').trim());
223
+ const navBefore = navigationTargets(a);
224
+ const navAfter = navigationTargets(b);
179
225
  const navChanged = missing(navBefore, navAfter).concat(missing(navAfter, navBefore));
180
226
  if (navChanged.length) {
181
227
  block('navigation-changed', `where the test navigates changed (${navChanged.slice(0, 2).map((x) => JSON.stringify(x.slice(0, 60))).join(', ')}); a fix may change how an element is found, never which page is tested`);
@@ -183,10 +229,19 @@ export function scanChange(before, after, file) {
183
229
  const urls = missing((b.match(URL_LITERAL) ?? []).map((u) => u.toLowerCase()), (a.match(URL_LITERAL) ?? []).map((u) => u.toLowerCase()));
184
230
  if (urls.length)
185
231
  block('url-added', `a URL was written into the test (${urls[0]?.slice(0, 60)}); locators never need one`);
186
- const actionsBefore = count(a, ACTION);
187
- const actionsAfter = count(b, ACTION);
188
- if (actionsAfter < actionsBefore)
189
- block('step-removed', `user actions went from ${actionsBefore} to ${actionsAfter}; a fix may retarget a step, not delete it`);
232
+ const actionsBefore = actionNames(a);
233
+ const actionsAfter = actionNames(b);
234
+ if (actionsAfter.length < actionsBefore.length)
235
+ block('step-removed', `user actions went from ${actionsBefore.length} to ${actionsAfter.length}; a fix may retarget a step, not delete it`);
236
+ else if (actionsAfter.join() !== actionsBefore.join()) {
237
+ block('action-changed', `the actions changed (${missing(actionsBefore, actionsAfter).join(', ')} → ${missing(actionsAfter, actionsBefore).join(', ')}); a fix may change which element is used, not what is done to it`);
238
+ }
239
+ if (count(b, /\bawait\b/) < count(a, /\bawait\b/))
240
+ block('await-removed', 'an await was removed, so a step or check may no longer be waited for');
241
+ const subjectsGone = missing(assertionSubjects(a), assertionSubjects(b));
242
+ if (subjectsGone.length) {
243
+ block('assertion-retargeted', `what an assertion looks at changed (${subjectsGone.slice(0, 2).map((x) => JSON.stringify(x.slice(0, 60))).join(', ')}); a check must stay on the same text, test id or state`);
244
+ }
190
245
  if (count(b, WIDENING) > count(a, WIDENING))
191
246
  block('locator-widened', 'a locator was widened with .or() or a whole-page selector, so it can match something other than the intended element');
192
247
  const added = addedLines(a, b);
package/dist/cheat.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cheat.js","sourceRoot":"","sources":["../src/cheat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cheat.js","sourceRoot":"","sources":["../src/cheat.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts CHANGED
@@ -3,5 +3,5 @@
3
3
  * autoheal: command line for the heal job, the dashboard upload and the
4
4
  * self-hosted dashboard.
5
5
  */
6
- export declare const USAGE = "autoheal 0.3.2: free, self-hosted AI agent that fixes failing Playwright tests\n\nUsage:\n autoheal heal --report <path|run URL> [options]\n autoheal upload --summary <summary.json> [--pr-url URL] [--issues issues.json]\n autoheal dashboard [--port 8080] [--host 0.0.0.0] [--db autoheal.db]\n autoheal --version\n\nheal options (each also reads the AUTOHEAL_* variable in brackets):\n --report <p> JSON report, blob-report folder, artifacts folder, or a\n GitHub Actions / GitLab run URL (needs GITHUB_TOKEN)\n --project <dir> project root (default: current directory)\n --mode <m> comment | draft-pr | pr (default draft-pr) [AUTOHEAL_MODE]\n --out <dir> where summary.json and the Markdown go (default .autoheal-out)\n --max-failures <n> failures to work on per run (default 3) [AUTOHEAL_MAX_FAILURES]\n --repeat-each <n> stability runs a fix must pass (default 5) [AUTOHEAL_REPEAT_EACH]\n --quarantine-days <n> quarantine length for flaky tests (default 14) [AUTOHEAL_QUARANTINE_DAYS]\n --max-usd <x> AI cost limit per job (default 1.00) [AUTOHEAL_MAX_USD]\n --max-steps <n> AI calls per job (default 30) [AUTOHEAL_MAX_STEPS]\n --max-tokens <n> AI tokens per job (default 400000) [AUTOHEAL_MAX_TOKENS]\n --app-url <url> running app for live locator checks [AUTOHEAL_APP_URL]\n --mocks-base-url <u> live API to compare mocks with [AUTOHEAL_MOCKS_BASE_URL]\n --no-flaky-check skip the flaky rerun\n --allow-warn accept anti-cheat WARN findings (default: block them)\n\nAlso read: AUTOHEAL_PRICE_IN, AUTOHEAL_PRICE_OUT (USD per million tokens; required\nfor models with no built-in price), AUTOHEAL_OPEN_ISSUES, AUTOHEAL_ISSUE_MIN_CONFIDENCE,\nAUTOHEAL_VISION (auto | true | false: show the AI the failure screenshot).\n\nAI provider (bring your own key; none = deterministic fixes only):\n ANTHROPIC_API_KEY (default model claude-opus-5-5), or OPENAI_API_KEY + AUTOHEAL_MODEL,\n or AUTOHEAL_BASE_URL + AUTOHEAL_MODEL for a local OpenAI-compatible server.\n\nExit codes: 0 done, 1 error, 2 bad usage, 3 a fix was blocked by the anti-cheat guard.\n";
6
+ export declare const USAGE = "autoheal 0.5.0: free, self-hosted AI agent that fixes failing Playwright tests\n\nUsage:\n autoheal heal --report <path|run URL> [options]\n autoheal upload --summary <summary.json> [--pr-url URL] [--issues issues.json]\n autoheal dashboard [--port 8080] [--host 0.0.0.0] [--db autoheal.db]\n autoheal --version\n\nheal options (each also reads the AUTOHEAL_* variable in brackets):\n --report <p> JSON report, blob-report folder, artifacts folder, or a\n GitHub Actions / GitLab run URL (needs GITHUB_TOKEN)\n --project <dir> project root (default: current directory)\n --mode <m> comment | draft-pr | pr (default draft-pr) [AUTOHEAL_MODE]\n --out <dir> where summary.json and the Markdown go (default .autoheal-out)\n --max-failures <n> failures to work on per run (default 3) [AUTOHEAL_MAX_FAILURES]\n --repeat-each <n> stability runs a fix must pass (default 5) [AUTOHEAL_REPEAT_EACH]\n --quarantine-days <n> quarantine length for flaky tests (default 14) [AUTOHEAL_QUARANTINE_DAYS]\n --max-usd <x> AI cost limit per job (default 1.00) [AUTOHEAL_MAX_USD]\n --max-steps <n> AI calls per job (default 30) [AUTOHEAL_MAX_STEPS]\n --max-tokens <n> AI tokens per job (default 400000) [AUTOHEAL_MAX_TOKENS]\n --app-url <url> running app for live locator checks [AUTOHEAL_APP_URL]\n --mocks-base-url <u> live API to compare mocks with [AUTOHEAL_MOCKS_BASE_URL]\n --no-flaky-check skip the flaky rerun\n --allow-warn accept anti-cheat WARN findings (default: block them)\n\nAlso read: AUTOHEAL_PRICE_IN, AUTOHEAL_PRICE_OUT (USD per million tokens; required\nfor models with no built-in price), AUTOHEAL_OPEN_ISSUES, AUTOHEAL_ISSUE_MIN_CONFIDENCE,\nAUTOHEAL_VISION (auto | true | false: show the AI the failure screenshot).\n\nAI provider (bring your own key; none = deterministic fixes only):\n ANTHROPIC_API_KEY (default model claude-opus-5-5), or OPENAI_API_KEY + AUTOHEAL_MODEL,\n or AUTOHEAL_BASE_URL + AUTOHEAL_MODEL for a local OpenAI-compatible server.\n\nExit codes: 0 done, 1 error, 2 bad usage, 3 a fix was blocked by the anti-cheat guard.\n";
7
7
  export declare function main(argv: string[]): Promise<number>;
package/dist/cli.js CHANGED
@@ -4,7 +4,7 @@
4
4
  * self-hosted dashboard.
5
5
  */
6
6
  import { realpathSync } from 'node:fs';
7
- import { appendFile, mkdir, readFile, stat, writeFile } from 'node:fs/promises';
7
+ import { appendFile, mkdir, readFile, rm, stat, writeFile } from 'node:fs/promises';
8
8
  import path from 'node:path';
9
9
  import { pathToFileURL } from 'node:url';
10
10
  import { parseArgs } from 'node:util';
@@ -15,6 +15,7 @@ import { ConfigError, providerFromEnv } from './providers/index.js';
15
15
  import { redactDeep } from './redact.js';
16
16
  import { findReport } from './report-files.js';
17
17
  import { eventsFrom, uploadEvents } from './upload.js';
18
+ import { chooseSandbox, sandboxMode } from './sandbox.js';
18
19
  import { VERSION } from './version.js';
19
20
  export const USAGE = `autoheal ${VERSION}: free, self-hosted AI agent that fixes failing Playwright tests
20
21
 
@@ -162,6 +163,16 @@ async function cmdHeal(argv) {
162
163
  log(`AutoHeal ${VERSION} · mode ${mode} · provider ${provider ? `${provider.name} (${provider.model})` : 'none (deterministic fixes only)'}`);
163
164
  const appUrl = values['app-url'] ?? env.AUTOHEAL_APP_URL;
164
165
  const mocksBaseUrl = values['mocks-base-url'] ?? env.AUTOHEAL_MOCKS_BASE_URL;
166
+ // Screenshots from an earlier run in the same folder would be mixed up with this run's.
167
+ await rm(path.join(outDir, 'evidence'), { recursive: true, force: true });
168
+ let sandboxChoice;
169
+ try {
170
+ sandboxChoice = chooseSandbox(sandboxMode(env.AUTOHEAL_SANDBOX));
171
+ }
172
+ catch (error) {
173
+ throw new ConfigError(error instanceof Error ? error.message : String(error));
174
+ }
175
+ log(`Sandbox: ${sandboxChoice.note}`);
165
176
  const rawSummary = await heal({
166
177
  projectRoot,
167
178
  report,
@@ -184,6 +195,9 @@ async function cmdHeal(argv) {
184
195
  provider,
185
196
  run: runInfo(),
186
197
  log,
198
+ sandbox: sandboxChoice.sandbox,
199
+ sandboxNote: sandboxChoice.note,
200
+ ...(env.AUTOHEAL_SCREENSHOTS === 'false' ? {} : { evidenceDir: path.join(outDir, 'evidence') }),
187
201
  });
188
202
  // Belt and braces: scrub every string before anything is written or posted.
189
203
  const summary = redactDeep(rawSummary);