@restormel/testing-github-action 0.1.0 → 0.1.1

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/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) Allotment Technology Ltd
3
+ Copyright (c) 2026 Adam Boon
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -4,31 +4,38 @@ Composite GitHub Action that runs the **same inline runner** as the local CLI (`
4
4
 
5
5
  There is **no hosted control plane** in this MVP; `poll_interval_seconds` and `timeout_minutes` inputs are reserved for documentation alignment only.
6
6
 
7
+ ## HTTP `/v1/runs` or curl pollers
8
+
9
+ The MVP runner executes **inside the Actions job** (or your CI shell) via this action or `testing run`. We do **not** ship a supported `POST`/`GET` HTTP runs API in `0.1.x`. If you previously used a vendor script that polls a remote run endpoint, migrate to the composite action or CLI so you do not fork around a non-existent API. Public background: [Restormel Testing docs — HTTP runs vs Action](https://restormel.dev/testing/docs/guides/http-runs-and-actions) (same content as the dashboard).
10
+
7
11
  ## Usage
8
12
 
9
13
  Prerequisites in your workflow (before this action):
10
14
 
11
15
  1. Checkout the repository.
12
16
  2. Install Node (20+) and pnpm (or your package manager).
13
- 3. `pnpm install` and `pnpm run build:packages` so `packages/github-action/dist/` exists.
17
+ 3. `pnpm install` and build this package so `packages/testing-github-action/dist/` exists (e.g. `pnpm run build:testing-packages` from the monorepo root, or your package build script).
14
18
  4. `pnpm --filter @restormel/testing-browser-playwright exec playwright install chromium` (or equivalent) for browser goals.
15
19
 
16
- **Keys / `judge_rubric` (optional):** pass through env (never log values), e.g.:
20
+ **Keys / `judge_rubric` (only when needed):** purely deterministic browser goals (URL + DOM / structured checks without a judge) do **not** require `RESTORMEL_KEYS_*`. Add the block below when any goal uses `judge_rubric` or Keys HTTP resolution. Never log values:
17
21
 
18
22
  ```yaml
19
23
  env:
20
24
  RESTORMEL_KEYS_API_BASE_URL: ${{ secrets.RESTORMEL_KEYS_API_BASE_URL }}
21
25
  RESTORMEL_KEYS_API_TOKEN: ${{ secrets.RESTORMEL_KEYS_API_TOKEN }}
26
+ RESTORMEL_PROJECT_ID: ${{ secrets.RESTORMEL_PROJECT_ID }} # from Keys dashboard → Restormel Testing
22
27
  ```
23
28
 
24
- Or set `RESTORMEL_TESTING_OPENAI_FALLBACK=1` and `OPENAI_API_KEY` only with explicit team approval (documented escape hatch).
29
+ Or set `RESTORMEL_TESTING_OPENAI_FALLBACK=1` and `OPENAI_API_KEY` only with explicit team approval (documented escape hatch). Full guide: [docs/keys-testing-onboarding.md](../../docs/keys-testing-onboarding.md).
25
30
 
26
31
  Then:
27
32
 
28
33
  ```yaml
29
- - uses: ./packages/github-action
34
+ - uses: ./packages/testing-github-action
30
35
  with:
31
36
  suite: web-critical
37
+ # Or run several suites in one step (artefacts under per-suite subfolders):
38
+ # suites: ci-smoke,web-critical
32
39
  environment: local
33
40
  target_url: ${{ secrets.PREVIEW_URL }} # optional; never log the secret value
34
41
  commit_sha: ${{ github.sha }}
@@ -42,7 +49,8 @@ Then:
42
49
 
43
50
  | Input | Purpose |
44
51
  |--------|---------|
45
- | `suite` | **Required.** Suite id from config. |
52
+ | `suite` | Single suite id when `suites` is empty. |
53
+ | `suites` | Comma-separated suite ids; when non-empty, `suite` is ignored and each suite gets its own artefact subdirectory. |
46
54
  | `environment` | Optional environment id (defaults to suite’s). |
47
55
  | `target_url` | Optional safe `base_url` override (e.g. preview). |
48
56
  | `commit_sha` | Recorded on the run (defaults to `GITHUB_SHA`). |
@@ -55,6 +63,12 @@ Then:
55
63
  | `poll_interval_seconds` | Ignored (reserved). |
56
64
  | `timeout_minutes` | Ignored (reserved); use job timeout. |
57
65
 
66
+ ## Multiple suite runs in one job
67
+
68
+ **Preferred:** pass **`suites: a,b,c`** (or a single `suite`) on **one** action step — artefacts go under per-suite subfolders of the same base directory.
69
+
70
+ **Alternative:** invoke this action more than once with a **unique** `RESTORMEL_TESTING_ARTIFACT_DIR` per step (or separate jobs) so `report.json` and siblings are not overwritten.
71
+
58
72
  ## Outputs
59
73
 
60
74
  - `verdict` — `passed` \| `failed` \| `indeterminate` \| `skipped` \| `error`
@@ -71,7 +85,7 @@ Then:
71
85
 
72
86
  On `pull_request` workflows from **forks**, GitHub does not expose your repository secrets to the job. The default **`fork_pr_policy: skip`** avoids running browser suites when `is_fork_pr` is true, so contributors are not blocked by missing secrets or unreachable private URLs.
73
87
 
74
- Set **`fork_pr_policy: run`** only when the suite is safe without secrets and targets a **public** URL. Do not rely on this for `pull_request_target` without a separate security review.
88
+ Set **`fork_pr_policy: run`** only when the suite is safe without secrets and targets a **public** URL. Do not rely on this for `pull_request_target` without a separate security review. Reader-oriented summary: [Fork PRs and workflow triggers](https://restormel.dev/testing/docs/guides/ci-security).
75
89
 
76
90
  ## GitHub Checks API
77
91
 
package/action.yml CHANGED
@@ -12,8 +12,16 @@ branding:
12
12
 
13
13
  inputs:
14
14
  suite:
15
- description: Suite id from your restormel-testing config (required).
16
- required: true
15
+ description: >
16
+ Single suite id when `suites` is empty. When `suites` is non-empty, this input is ignored.
17
+ required: false
18
+ default: ""
19
+ suites:
20
+ description: >
21
+ Comma-separated suite ids. When non-empty, runs each suite in sequence; artefacts go under
22
+ per-suite subfolders of the artefact directory (avoids overwriting when running multiple suites in one step).
23
+ required: false
24
+ default: ""
17
25
  environment:
18
26
  description: Environment id to run against (omit to use the suite default).
19
27
  required: false
@@ -82,9 +90,10 @@ runs:
82
90
  steps:
83
91
  - id: exec
84
92
  shell: bash
85
- run: node "${{ github.action_path }}/dist/main.js"
86
93
  env:
94
+ RESTORMEL_TESTING_ACTION_MAIN_JS: ${{ github.action_path }}/dist/main.js
87
95
  RESTORMEL_TESTING_SUITE: ${{ inputs.suite }}
96
+ RESTORMEL_TESTING_SUITES: ${{ inputs.suites }}
88
97
  RESTORMEL_TESTING_ENVIRONMENT: ${{ inputs.environment }}
89
98
  RESTORMEL_TESTING_TARGET_URL: ${{ inputs.target_url }}
90
99
  RESTORMEL_TESTING_COMMIT_SHA: ${{ inputs.commit_sha }}
@@ -96,3 +105,4 @@ runs:
96
105
  RESTORMEL_TESTING_IS_FORK_PR: ${{ inputs.is_fork_pr }}
97
106
  RESTORMEL_TESTING_POLL_INTERVAL_SECONDS: ${{ inputs.poll_interval_seconds }}
98
107
  RESTORMEL_TESTING_TIMEOUT_MINUTES: ${{ inputs.timeout_minutes }}
108
+ run: node "$RESTORMEL_TESTING_ACTION_MAIN_JS"
@@ -1 +1 @@
1
- {"version":3,"file":"run-ci.d.ts","sourceRoot":"","sources":["../src/run-ci.ts"],"names":[],"mappings":"AAoCA;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAiIpD"}
1
+ {"version":3,"file":"run-ci.d.ts","sourceRoot":"","sources":["../src/run-ci.ts"],"names":[],"mappings":"AAqCA;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAqKpD"}
package/dist/run-ci.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { appendFileSync, mkdirSync } from "node:fs";
2
2
  import { join } from "node:path";
3
+ import { sanitizePathSegment } from "@restormel/testing-core";
3
4
  import { keysAdapterOptionsFromProcessEnv } from "@restormel/testing-keys-adapter";
4
5
  import { buildGithubStepSummaryMarkdown, writeRunReportBundle } from "@restormel/testing-report";
5
6
  import { runLocalSuite } from "@restormel/testing-runner";
@@ -54,11 +55,20 @@ export async function runCiFromEnv() {
54
55
  const wd = getenv("RESTORMEL_TESTING_WORKING_DIRECTORY") ?? ".";
55
56
  const root = join(workspace, wd);
56
57
  process.chdir(root);
57
- const suite = getenv("RESTORMEL_TESTING_SUITE");
58
- if (!suite) {
59
- console.error("RESTORMEL_TESTING_SUITE is required when the action runs the suite.");
58
+ const suitesCsv = getenv("RESTORMEL_TESTING_SUITES")?.trim();
59
+ const suiteSingle = getenv("RESTORMEL_TESTING_SUITE")?.trim();
60
+ const suiteList = suitesCsv
61
+ ? suitesCsv
62
+ .split(",")
63
+ .map((s) => s.trim())
64
+ .filter((s) => s.length > 0)
65
+ : suiteSingle
66
+ ? [suiteSingle]
67
+ : [];
68
+ if (suiteList.length === 0) {
69
+ console.error("Set `suite` or comma-separated `suites` input when the action runs.");
60
70
  appendSummary("## Restormel Testing");
61
- appendSummary("**Error:** `suite` input is required.");
71
+ appendSummary("**Error:** `suite` or `suites` is required.");
62
72
  appendOutput({ verdict: "error", run_id: "", skipped: "false" });
63
73
  return EXIT_USAGE;
64
74
  }
@@ -73,69 +83,90 @@ export async function runCiFromEnv() {
73
83
  if (pollHint !== undefined || timeoutHint !== undefined) {
74
84
  console.warn("Note: poll_interval_seconds and timeout_minutes are ignored for the inline MVP; use the job / workflow timeout instead.");
75
85
  }
76
- const artifactDir = getenv("RESTORMEL_TESTING_ARTIFACT_DIR") ??
86
+ const baseArtifactDir = getenv("RESTORMEL_TESTING_ARTIFACT_DIR") ??
77
87
  join(workspace, ".restormel-testing", "runs", `gha-${process.env.GITHUB_RUN_ID ?? "local"}-${process.env.GITHUB_RUN_ATTEMPT ?? "0"}`);
78
- mkdirSync(artifactDir, { recursive: true });
88
+ mkdirSync(baseArtifactDir, { recursive: true });
79
89
  const keysAdapterOptions = keysAdapterOptionsFromProcessEnv();
80
- const result = await runLocalSuite({
81
- configPath,
82
- suiteId: suite,
83
- environmentId,
84
- targetUrlOverride: targetUrl,
85
- commitSha,
86
- repository,
87
- trigger: "ci",
88
- artifactDir,
89
- headless: true,
90
- keysAdapterOptions,
91
- });
92
- if (!result.ok || result.run === undefined) {
93
- appendSummary("## Restormel Testing");
94
- appendSummary("");
95
- appendSummary("**Verdict:** error (config or runner failure)");
96
- appendSummary("");
97
- appendSummary("```text");
98
- appendSummary(result.errors.join("\n") || "(no message)");
99
- appendSummary("```");
100
- appendOutput({ verdict: "error", run_id: "", skipped: "false" });
90
+ const repoHint = repository ?? "org/repo";
91
+ let lastRunId = "";
92
+ let aggregateVerdict = "passed";
93
+ for (let i = 0; i < suiteList.length; i++) {
94
+ const suite = suiteList[i];
95
+ const safe = sanitizePathSegment(suite) || `suite-${i}`;
96
+ const artifactDir = join(baseArtifactDir, safe);
97
+ mkdirSync(artifactDir, { recursive: true });
98
+ const result = await runLocalSuite({
99
+ configPath,
100
+ suiteId: suite,
101
+ environmentId,
102
+ targetUrlOverride: targetUrl,
103
+ commitSha,
104
+ repository,
105
+ trigger: "ci",
106
+ artifactDir,
107
+ headless: true,
108
+ keysAdapterOptions,
109
+ });
110
+ if (!result.ok || result.run === undefined) {
111
+ appendSummary("## Restormel Testing");
112
+ appendSummary("");
113
+ appendSummary(`**Suite:** \`${suite}\` — error (config or runner failure)`);
114
+ appendSummary("");
115
+ appendSummary("```text");
116
+ appendSummary(result.errors.join("\n") || "(no message)");
117
+ appendSummary("```");
118
+ appendOutput({ verdict: "error", run_id: "", skipped: "false" });
119
+ for (const w of result.warnings)
120
+ console.warn(w);
121
+ return EXIT_USAGE;
122
+ }
123
+ const run = result.run;
124
+ lastRunId = run.id;
125
+ if (run.verdict === "failed") {
126
+ aggregateVerdict = "failed";
127
+ }
128
+ else if (run.verdict === "indeterminate" && aggregateVerdict === "passed") {
129
+ aggregateVerdict = "indeterminate";
130
+ }
131
+ let reproduce = `testing run --suite ${suite} --config ${configPath} --ci`;
132
+ if (environmentId !== undefined)
133
+ reproduce += ` --environment ${environmentId}`;
134
+ if (targetUrl !== undefined)
135
+ reproduce += ` --target-url '${targetUrl.replace(/'/g, "'\\''")}'`;
136
+ reproduce += ` --commit-sha <sha> --repository ${repoHint}`;
137
+ await writeRunReportBundle(artifactDir, {
138
+ run,
139
+ traces: result.traces,
140
+ warnings: result.warnings.length > 0 ? result.warnings : undefined,
141
+ suite: result.suiteMeta,
142
+ reproduction: {
143
+ report_command: `testing report ${artifactDir}`,
144
+ notes: reproduce,
145
+ },
146
+ });
147
+ const summaryMd = buildGithubStepSummaryMarkdown({
148
+ run,
149
+ suite: result.suiteMeta,
150
+ warnings: result.warnings.length > 0 ? result.warnings : undefined,
151
+ ciContext: { prNumber, targetUrl },
152
+ reproduceCommand: reproduce,
153
+ artifactDirHint: artifactDir,
154
+ });
155
+ const summaryPath = process.env.GITHUB_STEP_SUMMARY;
156
+ if (summaryPath) {
157
+ appendFileSync(summaryPath, suiteList.length > 1 ? `### Suite \`${suite}\`\n\n${summaryMd}\n\n` : `${summaryMd}\n`, "utf8");
158
+ }
101
159
  for (const w of result.warnings)
102
160
  console.warn(w);
103
- return EXIT_USAGE;
104
161
  }
105
- const run = result.run;
106
- const repoHint = repository ?? "org/repo";
107
- let reproduce = `testing run --suite ${suite} --config ${configPath} --ci`;
108
- if (environmentId !== undefined)
109
- reproduce += ` --environment ${environmentId}`;
110
- if (targetUrl !== undefined)
111
- reproduce += ` --target-url '${targetUrl.replace(/'/g, "'\\''")}'`;
112
- reproduce += ` --commit-sha <sha> --repository ${repoHint}`;
113
- await writeRunReportBundle(artifactDir, {
114
- run,
115
- traces: result.traces,
116
- warnings: result.warnings.length > 0 ? result.warnings : undefined,
117
- suite: result.suiteMeta,
118
- reproduction: {
119
- report_command: `testing report ${artifactDir}`,
120
- notes: reproduce,
121
- },
122
- });
123
- const summaryMd = buildGithubStepSummaryMarkdown({
124
- run,
125
- suite: result.suiteMeta,
126
- warnings: result.warnings.length > 0 ? result.warnings : undefined,
127
- ciContext: { prNumber, targetUrl },
128
- reproduceCommand: reproduce,
129
- artifactDirHint: artifactDir,
130
- });
131
- const summaryPath = process.env.GITHUB_STEP_SUMMARY;
132
- if (summaryPath) {
133
- appendFileSync(summaryPath, `${summaryMd}\n`, "utf8");
162
+ if (suiteList.length > 1) {
163
+ const summaryPath = process.env.GITHUB_STEP_SUMMARY;
164
+ if (summaryPath) {
165
+ appendFileSync(summaryPath, `\n---\n\n**Multi-suite:** ${suiteList.length} suite(s). Base artefact dir: \`${baseArtifactDir}\`. Aggregate verdict: **${aggregateVerdict}**.\n`, "utf8");
166
+ }
134
167
  }
135
- appendOutput({ verdict: run.verdict, run_id: run.id, skipped: "false" });
136
- for (const w of result.warnings)
137
- console.warn(w);
138
- if (run.verdict !== "passed") {
168
+ appendOutput({ verdict: aggregateVerdict, run_id: lastRunId, skipped: "false" });
169
+ if (aggregateVerdict !== "passed") {
139
170
  return EXIT_FAILED;
140
171
  }
141
172
  return EXIT_OK;
@@ -1 +1 @@
1
- {"version":3,"file":"run-ci.js","sourceRoot":"","sources":["../src/run-ci.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-ci.js","sourceRoot":"","sources":["../src/run-ci.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@restormel/testing-github-action",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "GitHub Action entrypoint for Restormel / Testing (inline runner MVP).",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
8
- "url": "https://github.com/Allotment-Technology-Ltd/restormel-testing.git",
9
- "directory": "packages/github-action"
8
+ "url": "https://github.com/Allotment-Technology-Ltd/restormel-keys.git",
9
+ "directory": "packages/testing-github-action"
10
10
  },
11
11
  "bugs": {
12
- "url": "https://github.com/Allotment-Technology-Ltd/restormel-testing/issues"
12
+ "url": "https://github.com/Allotment-Technology-Ltd/restormel-keys/issues"
13
13
  },
14
- "homepage": "https://github.com/Allotment-Technology-Ltd/restormel-testing/tree/main/packages/github-action#readme",
14
+ "homepage": "https://github.com/Allotment-Technology-Ltd/restormel-testing/tree/main/packages/testing-github-action#readme",
15
15
  "publishConfig": {
16
16
  "access": "public"
17
17
  },
@@ -26,9 +26,10 @@
26
26
  "node": ">=20"
27
27
  },
28
28
  "dependencies": {
29
- "@restormel/testing-keys-adapter": "0.1.0",
30
- "@restormel/testing-report": "0.1.0",
31
- "@restormel/testing-runner": "0.1.0"
29
+ "@restormel/testing-core": "0.1.1",
30
+ "@restormel/testing-report": "0.1.1",
31
+ "@restormel/testing-runner": "0.1.1",
32
+ "@restormel/testing-keys-adapter": "0.1.1"
32
33
  },
33
34
  "devDependencies": {
34
35
  "typescript": "^5.7.0"