squally-reporter 0.9.0 → 0.10.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 CHANGED
@@ -178,6 +178,67 @@ nothing. A run that *does* execute and legitimately contains no tests — an
178
178
  empty shard, `--only-changed` with no changed test file, `--pass-with-no-tests`
179
179
  — is still reported, as a run with zero results.
180
180
 
181
+ **Timeouts and interrupted tests.** A test that runs out of time is reported
182
+ as failed, and Squally is told that it timed out and what its timeout was -
183
+ including a `test.setTimeout()` or `test.slow()` from inside the test. A test
184
+ that Playwright cuts off because the whole run is stopping (`maxFailures`
185
+ reached, Ctrl+C) is reported as skipped: it did not fail, and it does not
186
+ count against the test.
187
+
188
+ **Cancelled runs.** A run you stop with Ctrl+C, or a CI job cancelled with
189
+ SIGINT, shows in Squally as **Cancelled**: the reporter still sends what
190
+ finished and tells Squally the run was interrupted. Your exit code is
191
+ Playwright's own (130). A run stopped before its first test starts sends
192
+ nothing, like any run that never ran a test. A hard kill (SIGKILL), or
193
+ anything else that ends the process before Playwright finishes, leaves the
194
+ reporter no chance to report the end: the run stays *running* until
195
+ Squally's daily check marks it **incomplete** once the project's run timeout
196
+ (60 minutes by default) has passed. `globalTimeout` running out is not a
197
+ cancel - that run is simply failed.
198
+
199
+ ## Which CI, branch and commit a run is reported under
200
+
201
+ Squally counts **CI runs** in its test metrics, so the reporter works out
202
+ which CI system it is running on from that system's own environment:
203
+
204
+ | Provider | Recognised by | Shards grouped by | Branch | Commit |
205
+ |---|---|---|---|---|
206
+ | GitHub Actions | `GITHUB_ACTIONS` | `GITHUB_RUN_ID`-`GITHUB_RUN_ATTEMPT` | `GITHUB_REF_NAME`; pull requests: `GITHUB_HEAD_REF` | `GITHUB_SHA`; pull requests: the PR's head commit |
207
+ | GitLab CI | `GITLAB_CI` | `CI_PIPELINE_ID` | `CI_COMMIT_BRANCH`; merge requests: `CI_MERGE_REQUEST_SOURCE_BRANCH_NAME` | `CI_COMMIT_SHA`; merged-results pipelines: `CI_MERGE_REQUEST_SOURCE_BRANCH_SHA` |
208
+ | CircleCI | `CIRCLECI` | `CIRCLE_WORKFLOW_ID` | `CIRCLE_BRANCH` | `CIRCLE_SHA1` |
209
+ | Jenkins | `BUILD_TAG` (`jenkins-…`) | `BUILD_TAG` | `CHANGE_BRANCH`, else `BRANCH_NAME`, else `GIT_BRANCH` | `GIT_COMMIT` |
210
+ | Azure Pipelines | `TF_BUILD` | `BUILD_BUILDID` | `BUILD_SOURCEBRANCH`; pull requests: `SYSTEM_PULLREQUEST_SOURCEBRANCH` | `BUILD_SOURCEVERSION`; pull requests: `SYSTEM_PULLREQUEST_SOURCECOMMITID` |
211
+ | Bitbucket Pipelines | `BITBUCKET_BUILD_NUMBER` | `BITBUCKET_BUILD_NUMBER` | `BITBUCKET_BRANCH` | `BITBUCKET_COMMIT` |
212
+ | Buildkite | `BUILDKITE` | `BUILDKITE_BUILD_ID` | `BUILDKITE_BRANCH` | `BUILDKITE_COMMIT` |
213
+ | TeamCity | `TEAMCITY_VERSION` | - (set `SQUALLY_CI_RUN_ID`) | from git | `BUILD_VCS_NUMBER` |
214
+ | AWS CodeBuild | `CODEBUILD_BUILD_ID` | `CODEBUILD_BUILD_ID` | `CODEBUILD_WEBHOOK_HEAD_REF` | `CODEBUILD_RESOLVED_SOURCE_VERSION` |
215
+ | Travis CI | `TRAVIS` | `TRAVIS_BUILD_ID` | `TRAVIS_BRANCH`; pull requests: `TRAVIS_PULL_REQUEST_BRANCH` | `TRAVIS_COMMIT`; pull requests: `TRAVIS_PULL_REQUEST_SHA` |
216
+ | Drone | `DRONE` | `DRONE_BUILD_NUMBER` | `DRONE_BRANCH`; pull requests: `DRONE_SOURCE_BRANCH` | `DRONE_COMMIT_SHA` |
217
+ | any other CI | `CI=true` or `CI=1` | - (set `SQUALLY_CI_RUN_ID`) | from git | from git |
218
+
219
+ - **`CI` counts only as `true` or `1`.** `CI=false` or `CI=0` is a local run -
220
+ unless one of the providers above is recognised, which always wins. A run
221
+ that is none of these is local, and local runs are stored but not counted
222
+ in Squally's test metrics.
223
+ - **Pull requests are reported under their own head commit and source
224
+ branch**, not the merge commit CI checks out - that is the commit Squally's
225
+ GitHub check and pull-request comment have to find. The commit message and
226
+ author are that commit's too - never the "Merge … into …" message of the
227
+ checkout.
228
+ - **The head commit is fetched when the checkout lacks it.** With
229
+ `actions/checkout`'s default `fetch-depth: 1` the head commit is not in the
230
+ clone, so the reporter fetches that one commit from `origin`
231
+ (`git fetch --depth=1 --no-tags`), waits at most 3 seconds, and reads its
232
+ message and author. It only does so in a shallow checkout - fetching into a
233
+ full clone would make it shallow for the rest of your job - and never
234
+ changes `HEAD` or any branch. If the fetch fails or takes longer, the
235
+ message and author stay empty and the reporter says so once; the run and
236
+ its exit code are unaffected. Alternatives: `fetch-depth: 2` on the checkout
237
+ step puts the head commit in the clone, so nothing is fetched, and
238
+ `SQUALLY_DISABLE_HEAD_COMMIT_FETCH=true` turns the fetch off.
239
+ - **A tag build has no branch.** A detached checkout never reports `HEAD` as a
240
+ branch name, and `refs/heads/` or `origin/` prefixes are removed.
241
+
181
242
  ## Tests marked with `test.fail()`
182
243
 
183
244
  Playwright's `test.fail()` marks a test as *expected to fail*: it guards a bug
@@ -190,10 +251,13 @@ The reporter passes that marker on, so Squally reads such a test the same way
190
251
  Playwright does:
191
252
 
192
253
  - **Marked and still failing** - shown as passing, with an "expected failure"
193
- label. It does not count toward your failure numbers, your flakiness
194
- verdicts, or Squally's pull-request check.
254
+ label. It counts as a pass in the test's stability, not against its failure
255
+ rate, and it does not fail Squally's pull-request check.
195
256
  - **Marked and now passing** - shown as a failure, because the marker is out of
196
257
  date and should be removed.
258
+ - **Marked and timed out** - shown as a failure. Playwright does not count a
259
+ timeout as the expected failure either, so the marker is not passed on for
260
+ it.
197
261
 
198
262
  Both ways of marking a test are recognised: the `test.fail()` modifier and a
199
263
  `testInfo.fail()` call inside the test body. `test.skip()` and `test.fixme()`
@@ -212,12 +276,32 @@ them itself: all shards of one CI run are grouped together and shown as one
212
276
  run once every shard has finished, with the flip side of that guarantee being
213
277
  that the run only completes once every shard *has* reported.
214
278
 
215
- Correlation is based on an id read from your CI provider's own environment,
216
- so it costs you nothing on GitHub Actions, GitLab CI or CircleCI. If your
217
- provider is not one of those (or you shard locally across several separate
218
- `--shard` invocations), set `SQUALLY_CI_RUN_ID` to the same value for every
219
- shard of one run - anything unique per CI run and shared by its shards works,
220
- e.g. a build number your CI system already exposes.
279
+ Correlation is based on an id read from your CI provider's own environment
280
+ (the "Shards grouped by" column above), so it costs you nothing on every
281
+ provider in that table except TeamCity. On TeamCity, on a CI system not in the
282
+ table, or when you shard locally across several separate `--shard`
283
+ invocations, set `SQUALLY_CI_RUN_ID` to the same value for every shard of one
284
+ run - anything unique per CI run and shared by its shards works, e.g. a build
285
+ number your CI system already exposes.
286
+
287
+ **Several jobs in one CI run need their own id.** The id is shared by
288
+ everything in one CI run, so two jobs that are *not* shards of each other -
289
+ say a GitHub Actions matrix over browsers, run without `--shard` - would report
290
+ into the same Squally run, and the second job's results are refused once the
291
+ first job has finished it. The reporter then says so once and sends nothing
292
+ more for that job. Give each job its own id, shared only by its own shards:
293
+
294
+ ```yaml
295
+ env:
296
+ SQUALLY_CI_RUN_ID: ${{ github.run_id }}-${{ github.run_attempt }}-${{ matrix.browser }}
297
+ ```
298
+
299
+ The same refusal, and the same message, happens when a CI system re-runs a
300
+ job under the id of a run that has already completed: a GitLab job retry, an
301
+ Azure Pipelines re-run, a Bitbucket re-run of failed steps, a Buildkite retry.
302
+ On GitHub Actions each re-run attempt is its own run instead - with one catch
303
+ for sharded runs: "Re-run failed jobs" starts an attempt that contains only the
304
+ re-run shards, and a run that waits for all of its shards shows as incomplete.
221
305
 
222
306
  **`playwright merge-reports` is not part of this and is not recommended** for
223
307
  getting a single run in Squally - the automatic correlation above is the
@@ -236,34 +320,48 @@ problem: branch, commit, commit message and author are all read on whichever
236
320
  machine the reporter actually runs on - during a merge that is the merge job,
237
321
  not the shards - and without a checkout there (and without the CI provider's
238
322
  own commit variables) they all come out empty. A run with no branch is never
239
- counted as a run on your stable branch, which is what Squally's broken/healthy
240
- verdicts are based on - so a "merged" run could exist in the dashboard while
241
- silently contributing nothing to flakiness detection. The automatic
242
- correlation above reads that information from each shard's own environment
243
- instead, so this problem does not arise.
323
+ counted as a run on your stable branch - the branch the dashboard measures by
324
+ default - and no branch filter finds it, so a "merged" run could exist in the
325
+ dashboard while missing from everything Squally measures per branch: suite
326
+ stability, and each test's stability, flaky rate and failure rate on that
327
+ branch. The automatic correlation above reads that information from each
328
+ shard's own environment instead, so this problem does not arise.
244
329
 
245
330
  </details>
246
331
 
247
332
  ## Tested revision (optional)
248
333
 
249
- If your test-automation code lives in the same repo as the application it
250
- tests, Squally can already tell which commit was tested from the CI
251
- provider's own commit env vars. If they're **separate repos** (e.g. a
252
- dedicated E2E-test repo pointed at a deployed app), set one of the following
253
- so Squally knows which application state was actually tested:
334
+ The tested revision is the state of your **application** a run tested, as
335
+ opposed to the commit the run is reported under. Squally does not know it by
336
+ itself - it is **opt-in**, with one of these two:
254
337
 
255
338
  ```bash
256
- # Same repo as the application under test - Squally will trust this CI
257
- # job's own commit (GITHUB_SHA / CI_COMMIT_SHA) as the tested revision.
339
+ # The tests live in the same repo as the application: the commit this CI job
340
+ # checked out is the tested revision.
258
341
  SAME_REPO_AS_APP=true
259
342
 
260
- # Separate repos - pass the tested revision explicitly (a commit SHA, tag,
261
- # or branch name/ref).
343
+ # The tests live in a separate repo (e.g. a dedicated E2E repo pointed at a
344
+ # deployed app): pass the tested revision itself - a commit SHA, tag, or
345
+ # branch name/ref.
262
346
  TESTED_REVISION=v1.2.0
263
347
  ```
264
348
 
265
- Neither variable is required - without them, test results are still sent
266
- and stored exactly as before.
349
+ - **`SAME_REPO_AS_APP=true`** sends the commit your job checked out: your CI
350
+ provider's own variable for it (`GITHUB_SHA`, `CI_COMMIT_SHA`,
351
+ `CIRCLE_SHA1`, `GIT_COMMIT`, `BUILD_SOURCEVERSION`, `BITBUCKET_COMMIT`,
352
+ `BUILDKITE_COMMIT`, `BUILD_VCS_NUMBER`, `CODEBUILD_RESOLVED_SOURCE_VERSION`,
353
+ `TRAVIS_COMMIT`, `DRONE_COMMIT_SHA`), or `git rev-parse HEAD` where there is
354
+ none - including local runs. Only a commit SHA is sent; if neither yields
355
+ one, the run has no tested revision.
356
+ - **On a pull request the two commits differ, on purpose.** The run is
357
+ reported under the pull request's head commit (see the provider table
358
+ above) - that is what Squally's check and PR comment need. The tested
359
+ revision is the merge commit CI checked out, because that is what the tests
360
+ ran against. On a Bitbucket pull request and a GitHub `pull_request_target`
361
+ run it comes from `git rev-parse HEAD`.
362
+ - **`TESTED_REVISION` wins** when both are set.
363
+ - Neither variable is required - without them, test results are still sent
364
+ and stored exactly as before.
267
365
 
268
366
  **The value is normalised before it is stored**, so that the same revision
269
367
  written two ways still compares equal: it is lowercased, and a leading `v` or a
package/dist/index.d.ts CHANGED
@@ -26,6 +26,20 @@ interface AppendResultEntry {
26
26
  */
27
27
  expectedFailure?: boolean;
28
28
  durationMs: number | null;
29
+ /**
30
+ * The attempt's effective timeout in milliseconds, 0 for "no timeout" - see
31
+ * resolveTimeoutMs(). null when the runner does not expose a usable value.
32
+ * (0.10.0; squally-app strips it until it has a field for it.)
33
+ */
34
+ timeoutMs: number | null;
35
+ /**
36
+ * Playwright reported this attempt as `timedOut`. `status` still says
37
+ * "failed" for it - the app accepts three statuses - and this is what tells
38
+ * a timeout apart from any other failure. Always sent, false included: an
39
+ * absent field from an older reporter must stay distinguishable from "did
40
+ * not time out". (0.10.0; stripped by the app until it has a field for it.)
41
+ */
42
+ timedOut: boolean;
29
43
  errors?: AppendErrorEntry[];
30
44
  consoleOutput: string | null;
31
45
  tags?: string[];
@@ -49,6 +63,99 @@ declare function truncateOrNull(value: string | null, max: number): string | nul
49
63
  declare function flushIntervalFor(shardTotal: number | null): number;
50
64
  declare function warnIfKeyWillBeSerialized(config: FullConfig, keyCameFromOptions: boolean): void;
51
65
  declare function mapStatus(status: TestResult["status"]): AppendResultEntry["status"];
66
+ declare function isExpectedFailure(expectedStatus: TestCase["expectedStatus"] | undefined, status: TestResult["status"]): boolean;
67
+ /**
68
+ * The RUN's outcome for /complete, from Playwright's FullResult status (0.10.0).
69
+ *
70
+ * THE STATUS STAYS passed | failed, exactly as before: anything but "passed" is
71
+ * a failed run, and squally-app accepts no third value. What is new is the
72
+ * flag beside it.
73
+ *
74
+ * "interrupted" IS A STOP FROM OUTSIDE - Ctrl+C, or a CI job cancelled with
75
+ * SIGINT before its SIGTERM - and is sent as `interrupted: true`, which the app
76
+ * records as a cancelled run. MEASURED on 1.62.1: the runner's SIGINT handler
77
+ * ends the run "interrupted" and the CLI exits 130, whether the signal lands
78
+ * mid-test (that test ends "interrupted", the rest never start) or before any
79
+ * test began.
80
+ *
81
+ * "timedout" IS NOT ONE. It is `globalTimeout` running out: the suite's own
82
+ * configuration stopped it, nobody cancelled anything, and it stays an ordinary
83
+ * failed run. "failed" covers maxFailures too - Playwright stops the run
84
+ * itself there, and the test it cuts off ends "interrupted", but the RUN ends
85
+ * "failed".
86
+ */
87
+ declare function completionFor(status: FullResult["status"]): {
88
+ status: "passed" | "failed";
89
+ interrupted: boolean;
90
+ };
91
+ /**
92
+ * The attempt's effective timeout in ms, as Playwright applied it (0.10.0).
93
+ *
94
+ * TestCase.timeout, read at onTestEnd. MEASURED on 1.62.1 and on 1.30.0, this
95
+ * package's peer floor: it already includes a test.setTimeout() inside the
96
+ * test body (800 for a config timeout of 1500) and test.slow() (4500, three
97
+ * times 1500). 0 is Playwright's own "no timeout" and is sent as 0.
98
+ *
99
+ * Guarded anyway - a runner that does not hand over a whole number within what
100
+ * the app can store gets null, not a guess.
101
+ *
102
+ * NOT STORED YET, and sent anyway. squally-app's result schema has no field
103
+ * for it and strips unknown keys (its own test pins that:
104
+ * lib/ingest-v2-contract.test.ts). Usually the receiving side goes first here
105
+ * (see prepareConsoleOutput); this time the order is the other way round on
106
+ * purpose (26.09.2026): an absent field breaks nothing, and a reporter that
107
+ * already sends it lets the app's column fill from the first run after the app
108
+ * ships, without waiting for customers to upgrade a second time.
109
+ */
110
+ declare function resolveTimeoutMs(test: Pick<TestCase, "timeout"> | {
111
+ timeout?: unknown;
112
+ }): number | null;
113
+ declare function detectCiProvider(env: NodeJS.ProcessEnv): string | null;
114
+ interface GitContext {
115
+ branch: string | null;
116
+ commitSha: string | null;
117
+ commitMessage: string | null;
118
+ authorName: string | null;
119
+ }
120
+ /** Everything the git context reads from (and says to) the outside world -
121
+ * injected so the tests need neither a repository nor a CI job. */
122
+ interface GitContextIo {
123
+ git: (command: string) => string | null;
124
+ readFile: (filePath: string) => string;
125
+ warn: (message: string) => void;
126
+ /** Fetches one commit from origin; resolves true only when git succeeded in time. Never rejects. */
127
+ fetchCommit: (sha: string, timeoutMs: number) => Promise<boolean>;
128
+ }
129
+ /**
130
+ * `git fetch --depth=1 --no-tags origin <sha>`, bounded by `timeoutMs` no
131
+ * matter what git does. Resolves true only when git exited 0 in time; never
132
+ * rejects.
133
+ *
134
+ * ASYNC, UNLIKE THE OTHER GIT CALLS, and for the bound. A fetch is network:
135
+ * execSync would freeze the runner's event loop for the whole wait, and a
136
+ * synchronous spawn with a timeout still waits for its stdio pipes to close -
137
+ * which a remote helper git started can hold open past the kill. Here nothing
138
+ * is piped (stdio "ignore"), the answer is the child's "exit", and a timer
139
+ * settles the promise at the deadline even if git never exits at all.
140
+ *
141
+ * The timer is ref'd on purpose: this promise is awaited from beginRun, which
142
+ * onEnd waits for - see delay() for what an unref'd wait there once cost.
143
+ *
144
+ * GIT_TERMINAL_PROMPT=0: a remote that asks for credentials fails at once
145
+ * instead of waiting for an answer nobody will type.
146
+ */
147
+ declare function fetchCommitFromOrigin(sha: string, timeoutMs: number, cwd?: string): Promise<boolean>;
148
+ declare function normalizeBranch(raw: string | null | undefined): string | null;
149
+ declare function resolveGitContext(env: NodeJS.ProcessEnv, io?: GitContextIo): GitContext;
150
+ /**
151
+ * The run's git context, fetching a pull request's head commit when the
152
+ * checkout does not have it (0.10.0).
153
+ *
154
+ * Only a head commit is ever fetched: the one case where the reported commit
155
+ * is deliberately not the checked-out one, so the checkout cannot be expected
156
+ * to hold it - at actions/checkout's default depth of 1 it does not.
157
+ */
158
+ declare function resolveGitContextForRun(env: NodeJS.ProcessEnv, io?: GitContextIo): Promise<GitContext>;
52
159
  declare function detectCiRunId(env: NodeJS.ProcessEnv, generateFallback: () => string): string;
53
160
  interface ProjectSuiteLike {
54
161
  project(): {
@@ -61,7 +168,7 @@ interface ResolvedRevision {
61
168
  revision: string;
62
169
  source: "ci_native" | "passed_param";
63
170
  }
64
- declare function resolveTestedRevision(): ResolvedRevision | null;
171
+ declare function resolveTestedRevision(env?: NodeJS.ProcessEnv, io?: GitContextIo): ResolvedRevision | null;
65
172
  declare function toPosixPath(p: string): string;
66
173
  declare function stripAnsi(value: string): string;
67
174
  declare function maskSecrets(value: string): string;
@@ -149,6 +256,7 @@ export default class SquallyReporter implements Reporter {
149
256
  */
150
257
  private resultsProduced;
151
258
  private sendingDisabled;
259
+ private warnedAlreadyComplete;
152
260
  private flushTimerHandle;
153
261
  private inFlightFlushes;
154
262
  private runStarted;
@@ -192,8 +300,16 @@ export declare const __internal: {
192
300
  stripAnsi: typeof stripAnsi;
193
301
  normalizeRevision: typeof normalizeRevision;
194
302
  resolveTestedRevision: typeof resolveTestedRevision;
303
+ completionFor: typeof completionFor;
195
304
  toPosixPath: typeof toPosixPath;
196
305
  detectCiRunId: typeof detectCiRunId;
306
+ detectCiProvider: typeof detectCiProvider;
307
+ resolveGitContext: typeof resolveGitContext;
308
+ resolveGitContextForRun: typeof resolveGitContextForRun;
309
+ fetchCommitFromOrigin: typeof fetchCommitFromOrigin;
310
+ normalizeBranch: typeof normalizeBranch;
311
+ isExpectedFailure: typeof isExpectedFailure;
312
+ resolveTimeoutMs: typeof resolveTimeoutMs;
197
313
  resolveProjectName: typeof resolveProjectName;
198
314
  maskSecrets: typeof maskSecrets;
199
315
  prepareConsoleOutput: typeof prepareConsoleOutput;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}