squally-reporter 0.5.2 → 0.7.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
@@ -1,189 +1,242 @@
1
- # squally-reporter
2
-
3
- Playwright reporter that sends test results to your Squally dashboard.
4
-
5
- Learn more at [squally-app.vercel.app](https://squally-app.vercel.app).
6
-
7
- ## Requirements
8
-
9
- - Node.js >= 22.19.0 (required by the `undici` dependency)
10
- - `@playwright/test` >= 1.30.0
11
-
12
- ## Install
13
-
14
- ```bash
15
- npm install -D squally-reporter
16
- ```
17
-
18
- ## Config
19
-
20
- Set two env vars (e.g. in CI secrets or `.env`):
21
-
22
- ```bash
23
- SQUALLY_API_URL=https://squally-app.vercel.app
24
- SQUALLY_API_KEY=your-project-api-key
25
- ```
26
-
27
- Find your API key on your project's Settings page in the Squally dashboard.
28
-
29
- Then add the reporter to `playwright.config.ts`:
30
-
31
- ```ts
32
- import { defineConfig } from "@playwright/test";
33
-
34
- export default defineConfig({
35
- reporter: [
36
- ["list"],
37
- ["squally-reporter"],
38
- ],
39
- });
40
- ```
41
-
42
- Alternatively, pass config explicitly instead of using env vars - **only if
43
- `apiKey` itself comes from an env var or secret store at runtime, never as a
44
- literal string in a committed file:**
45
-
46
- ```ts
47
- reporter: [
48
- ["squally-reporter", { apiUrl: "https://squally-app.vercel.app", apiKey: process.env.SQUALLY_API_KEY }],
49
- ],
50
- ```
51
-
52
- That's it - run your tests as usual (`npx playwright test`) and results will
53
- be sent to Squally after the run finishes.
54
-
55
- ## Screenshot/trace upload
56
-
57
- If your `playwright.config.ts` captures screenshots or traces, the reporter
58
- uploads them to Squally so they show up next to the failing test in the
59
- dashboard - no separate setup beyond the two env vars above.
60
-
61
- **Only from attempts worth looking at:** screenshots/traces are uploaded
62
- only for attempts that **failed**, or that **needed a retry** (even if that
63
- retry then passed) - never for an attempt that passed on its first try,
64
- regardless of how `screenshot`/`trace` are configured. Nobody looks at a
65
- screenshot of a test that just passed, and uploading one anyway would only
66
- eat into your organization's storage for no benefit.
67
-
68
- **You need to actually enable capture in `playwright.config.ts`** - without
69
- it, Playwright doesn't produce any attachments, so there's nothing for the
70
- reporter to find or upload (no error either way, it's a silent no-op):
71
-
72
- ```ts
73
- export default defineConfig({
74
- use: {
75
- screenshot: "only-on-failure",
76
- trace: "retain-on-failure",
77
- },
78
- // ...
79
- });
80
- ```
81
-
82
- **Limits:**
83
- - 50 MB per individual file. Larger files are skipped (logged as a
84
- `console.warn`, the test result itself is still reported as usual).
85
- - A total storage cap per organization, depending on your Squally plan.
86
- Once reached, further uploads are skipped the same way until you either
87
- free up space or upgrade.
88
- - Two minutes per upload, and 30 seconds for the calls that surround it. An
89
- unreachable or very slow server means a skipped upload and a `console.warn`,
90
- not a CI job waiting indefinitely.
91
-
92
- Upload is best-effort and fully non-blocking, same principle as the rest of
93
- this reporter - a failed or skipped upload never fails your test run or
94
- changes its exit code, it only logs a `console.warn` explaining what
95
- happened.
96
-
97
- ## How results reach Squally
98
-
99
- Results stream to Squally as your suite runs, not all at once at the end:
100
- each test's result is sent in a small batch (at most every 25 results or 2
101
- seconds, whichever comes first), so the "running" view in the dashboard stays
102
- close to real time even for a long suite. There is no longer a single-request
103
- size limit that could discard a whole run - a very large suite simply takes
104
- more, smaller requests. As a courtesy the reporter still warns if a run's
105
- result count climbs well past 5,000, since that usually means retries are
106
- configured higher than intended rather than a suite that's actually that
107
- large.
108
-
109
- If Squally is unreachable partway through, results already sent stay in the
110
- dashboard; only what could not be delivered is lost, and your test run's exit
111
- code is never affected either way.
112
-
113
- **Only actual test runs appear.** A run shows up in Squally once your first
114
- test starts, so commands that never run a test create nothing: `--list`,
115
- a `globalSetup` or `webServer` that fails to start, a `--grep` that matches
116
- nothing. A run that *does* execute and legitimately contains no tests — an
117
- empty shard, `--only-changed` with no changed test file, `--pass-with-no-tests`
118
- — is still reported, as a run with zero results.
119
-
120
- ## Sharding
121
-
122
- **Handled automatically - no extra setup needed.** Each shard is still a
123
- separate process with its own reporter instance, but Squally now correlates
124
- them itself: all shards of one CI run are grouped together and shown as one
125
- run once every shard has finished, with the flip side of that guarantee being
126
- that the run only completes once every shard *has* reported.
127
-
128
- Correlation is based on an id read from your CI provider's own environment,
129
- so it costs you nothing on GitHub Actions, GitLab CI or CircleCI. If your
130
- provider is not one of those (or you shard locally across several separate
131
- `--shard` invocations), set `SQUALLY_CI_RUN_ID` to the same value for every
132
- shard of one run - anything unique per CI run and shared by its shards works,
133
- e.g. a build number your CI system already exposes.
134
-
135
- **`playwright merge-reports` is not part of this and is not recommended** for
136
- getting a single run in Squally - the automatic correlation above is the
137
- supported path, and produces correct per-shard timing/branch/commit
138
- information that a merge job cannot (see the historical note below). Nothing
139
- stops you from using `merge-reports` for Playwright's own HTML report if you
140
- want that separately; just don't point this reporter at the merged result
141
- expecting Squally to treat it specially.
142
-
143
- <details>
144
- <summary>Why not just use `merge-reports`, historically</summary>
145
-
146
- An earlier version of this reporter recommended `playwright merge-reports` as
147
- the way to get one Squally run out of a sharded job. That path has a real
148
- problem: branch, commit, commit message and author are all read on whichever
149
- machine the reporter actually runs on - during a merge that is the merge job,
150
- not the shards - and without a checkout there (and without the CI provider's
151
- own commit variables) they all come out empty. A run with no branch is never
152
- counted as a run on your stable branch, which is what Squally's broken/healthy
153
- verdicts are based on - so a "merged" run could exist in the dashboard while
154
- silently contributing nothing to flakiness detection. The automatic
155
- correlation above reads that information from each shard's own environment
156
- instead, so this problem does not arise.
157
-
158
- </details>
159
-
160
- ## Tested revision (optional)
161
-
162
- If your test-automation code lives in the same repo as the application it
163
- tests, Squally can already tell which commit was tested from the CI
164
- provider's own commit env vars. If they're **separate repos** (e.g. a
165
- dedicated E2E-test repo pointed at a deployed app), set one of the following
166
- so Squally knows which application state was actually tested:
167
-
168
- ```bash
169
- # Same repo as the application under test - Squally will trust this CI
170
- # job's own commit (GITHUB_SHA / CI_COMMIT_SHA) as the tested revision.
171
- SAME_REPO_AS_APP=true
172
-
173
- # Separate repos - pass the tested revision explicitly (a commit SHA, tag,
174
- # or branch name/ref).
175
- TESTED_REVISION=v1.2.0
176
- ```
177
-
178
- Neither variable is required - without them, test results are still sent
179
- and stored exactly as before.
180
-
181
- ## Support
182
-
183
- Found a bug or have a question? Please open an issue on
184
- [GitHub Issues](https://github.com/squallydev-admin/squally-reporter/issues) -
185
- that's the primary way to report problems or ask questions.
186
-
187
- ## License
188
-
189
- MIT - see [LICENSE](./LICENSE).
1
+ # squally-reporter
2
+
3
+ Playwright reporter that sends test results to your Squally dashboard.
4
+
5
+ Learn more at [app.squally.dev](https://app.squally.dev).
6
+
7
+ ## Requirements
8
+
9
+ - Node.js >= 22.19.0 (required by the `undici` dependency)
10
+ - `@playwright/test` >= 1.30.0
11
+
12
+ ## Install
13
+
14
+ ```bash
15
+ npm install -D squally-reporter
16
+ ```
17
+
18
+ ## Config
19
+
20
+ Set two env vars (e.g. in CI secrets or `.env`):
21
+
22
+ ```bash
23
+ SQUALLY_API_URL=https://app.squally.dev
24
+ SQUALLY_API_KEY=your-project-api-key
25
+ ```
26
+
27
+ Find your API key on your project's Settings page in the Squally dashboard.
28
+
29
+ Then add the reporter to `playwright.config.ts`:
30
+
31
+ ```ts
32
+ import { defineConfig } from "@playwright/test";
33
+
34
+ export default defineConfig({
35
+ reporter: [
36
+ ["list"],
37
+ ["squally-reporter"],
38
+ ],
39
+ });
40
+ ```
41
+
42
+ Alternatively, pass config explicitly instead of using env vars - **only if
43
+ `apiKey` itself comes from an env var or secret store at runtime, never as a
44
+ literal string in a committed file:**
45
+
46
+ ```ts
47
+ reporter: [
48
+ ["squally-reporter", { apiUrl: "https://app.squally.dev", apiKey: process.env.SQUALLY_API_KEY }],
49
+ ],
50
+ ```
51
+
52
+ That's it - run your tests as usual (`npx playwright test`) and results will
53
+ be sent to Squally after the run finishes.
54
+
55
+ ## Screenshot/trace upload
56
+
57
+ If your `playwright.config.ts` captures screenshots or traces, the reporter
58
+ uploads them to Squally so they show up next to the failing test in the
59
+ dashboard - no separate setup beyond the two env vars above.
60
+
61
+ **Only from attempts worth looking at:** screenshots/traces are uploaded
62
+ only for attempts that **failed**, or that **needed a retry** (even if that
63
+ retry then passed) - never for an attempt that passed on its first try,
64
+ regardless of how `screenshot`/`trace` are configured. Nobody looks at a
65
+ screenshot of a test that just passed, and uploading one anyway would only
66
+ eat into your organization's storage for no benefit.
67
+
68
+ **You need to actually enable capture in `playwright.config.ts`** - without
69
+ it, Playwright doesn't produce any attachments, so there's nothing for the
70
+ reporter to find or upload (no error either way, it's a silent no-op):
71
+
72
+ ```ts
73
+ export default defineConfig({
74
+ use: {
75
+ screenshot: "only-on-failure",
76
+ trace: "retain-on-failure",
77
+ },
78
+ // ...
79
+ });
80
+ ```
81
+
82
+ **Limits.** None of these are enforced by the reporter - Squally applies them
83
+ when the upload is requested and answers with a reason, which is what the
84
+ reporter prints. The numbers below are therefore Squally's current ones rather
85
+ than anything this package guarantees, and can change server-side without a new
86
+ release of it:
87
+
88
+ - **50 MB per individual file**, the same on every plan. A larger screenshot or
89
+ trace is rejected before any bytes are uploaded; the reporter logs a
90
+ `console.warn` naming the file and moves on. The test result itself is
91
+ reported as usual, and the run's outcome and exit code are untouched. In the
92
+ dashboard that artifact is shown as skipped, with the reason, rather than
93
+ silently missing.
94
+ - **A total storage cap per organization, depending on your Squally plan.**
95
+ Once it is reached, further uploads are rejected the same way until you free
96
+ up space or upgrade.
97
+ - Two minutes per upload, and 30 seconds for the calls that surround it. An
98
+ unreachable or very slow server means a skipped upload and a `console.warn`,
99
+ not a CI job waiting indefinitely.
100
+
101
+ Upload is best-effort and fully non-blocking, same principle as the rest of
102
+ this reporter - a failed or skipped upload never fails your test run or
103
+ changes its exit code, it only logs a `console.warn` explaining what
104
+ happened.
105
+
106
+ ## How results reach Squally
107
+
108
+ Results stream to Squally as your suite runs, not all at once at the end:
109
+ each test's result is sent in a small batch, so the "running" view in the
110
+ dashboard stays close to real time even for a long suite. A batch goes out on
111
+ whichever of these comes first:
112
+
113
+ - **25 results.** Fixed, and the same whether you shard or not.
114
+ - **A timer, 2 seconds × the number of shards, capped at 30 seconds.** An
115
+ unsharded run flushes every 2 seconds; four shards every 8; eight shards
116
+ every 16; fifteen shards and above every 30, where the cap holds it.
117
+
118
+ Only the timer scales. All shards of a run share one rate budget on Squally's
119
+ side, so without this a sixteen-shard suite would send sixteen times the
120
+ requests of an unsharded one and throttle itself. The 25-result threshold is
121
+ left alone deliberately: it bounds how long a *fast* suite waits, and
122
+ stretching it would delay results without bounding the burst any better.
123
+
124
+ There is no longer a single-request size limit that could discard a whole run -
125
+ a very large suite simply takes more, smaller requests. As a courtesy the
126
+ reporter still warns if a run's result count climbs well past 5,000, since that
127
+ usually means retries are configured higher than intended rather than a suite
128
+ that's actually that large.
129
+
130
+ If Squally is unreachable partway through, results already sent stay in the
131
+ dashboard; only what could not be delivered is lost, and your test run's exit
132
+ code is never affected either way.
133
+
134
+ **Only actual test runs appear.** A run shows up in Squally once your first
135
+ test starts, so commands that never run a test create nothing: `--list`,
136
+ a `globalSetup` or `webServer` that fails to start, a `--grep` that matches
137
+ nothing. A run that *does* execute and legitimately contains no tests — an
138
+ empty shard, `--only-changed` with no changed test file, `--pass-with-no-tests`
139
+ — is still reported, as a run with zero results.
140
+
141
+ ## Tests marked with `test.fail()`
142
+
143
+ Playwright's `test.fail()` marks a test as *expected to fail*: it guards a bug
144
+ you already know about, and Playwright runs the test anyway to check that it
145
+ does still fail. The interesting moment is the opposite one - when someone
146
+ fixes the bug, the test starts passing and Playwright turns it red so you
147
+ remember to delete the marker.
148
+
149
+ The reporter passes that marker on, so Squally reads such a test the same way
150
+ Playwright does:
151
+
152
+ - **Marked and still failing** - shown as passing, with an "expected failure"
153
+ label. It does not count toward your failure numbers, your flakiness
154
+ verdicts, or Squally's pull-request check.
155
+ - **Marked and now passing** - shown as a failure, because the marker is out of
156
+ date and should be removed.
157
+
158
+ Both ways of marking a test are recognised: the `test.fail()` modifier and a
159
+ `testInfo.fail()` call inside the test body. `test.skip()` and `test.fixme()`
160
+ are a different statement and are not affected.
161
+
162
+ Nothing is reported for an unmarked test, so an ordinary suite is unchanged.
163
+ Note also that Playwright itself treats a marked, failing test as expected, so
164
+ with `screenshot: "only-on-failure"` it captures nothing for it - there is no
165
+ artifact for the reporter to upload, which is consistent rather than missing.
166
+
167
+ ## Sharding
168
+
169
+ **Handled automatically - no extra setup needed.** Each shard is still a
170
+ separate process with its own reporter instance, but Squally now correlates
171
+ them itself: all shards of one CI run are grouped together and shown as one
172
+ run once every shard has finished, with the flip side of that guarantee being
173
+ that the run only completes once every shard *has* reported.
174
+
175
+ Correlation is based on an id read from your CI provider's own environment,
176
+ so it costs you nothing on GitHub Actions, GitLab CI or CircleCI. If your
177
+ provider is not one of those (or you shard locally across several separate
178
+ `--shard` invocations), set `SQUALLY_CI_RUN_ID` to the same value for every
179
+ shard of one run - anything unique per CI run and shared by its shards works,
180
+ e.g. a build number your CI system already exposes.
181
+
182
+ **`playwright merge-reports` is not part of this and is not recommended** for
183
+ getting a single run in Squally - the automatic correlation above is the
184
+ supported path, and produces correct per-shard timing/branch/commit
185
+ information that a merge job cannot (see the historical note below). Nothing
186
+ stops you from using `merge-reports` for Playwright's own HTML report if you
187
+ want that separately; just don't point this reporter at the merged result
188
+ expecting Squally to treat it specially.
189
+
190
+ <details>
191
+ <summary>Why not just use `merge-reports`, historically</summary>
192
+
193
+ An earlier version of this reporter recommended `playwright merge-reports` as
194
+ the way to get one Squally run out of a sharded job. That path has a real
195
+ problem: branch, commit, commit message and author are all read on whichever
196
+ machine the reporter actually runs on - during a merge that is the merge job,
197
+ not the shards - and without a checkout there (and without the CI provider's
198
+ own commit variables) they all come out empty. A run with no branch is never
199
+ counted as a run on your stable branch, which is what Squally's broken/healthy
200
+ verdicts are based on - so a "merged" run could exist in the dashboard while
201
+ silently contributing nothing to flakiness detection. The automatic
202
+ correlation above reads that information from each shard's own environment
203
+ instead, so this problem does not arise.
204
+
205
+ </details>
206
+
207
+ ## Tested revision (optional)
208
+
209
+ If your test-automation code lives in the same repo as the application it
210
+ tests, Squally can already tell which commit was tested from the CI
211
+ provider's own commit env vars. If they're **separate repos** (e.g. a
212
+ dedicated E2E-test repo pointed at a deployed app), set one of the following
213
+ so Squally knows which application state was actually tested:
214
+
215
+ ```bash
216
+ # Same repo as the application under test - Squally will trust this CI
217
+ # job's own commit (GITHUB_SHA / CI_COMMIT_SHA) as the tested revision.
218
+ SAME_REPO_AS_APP=true
219
+
220
+ # Separate repos - pass the tested revision explicitly (a commit SHA, tag,
221
+ # or branch name/ref).
222
+ TESTED_REVISION=v1.2.0
223
+ ```
224
+
225
+ Neither variable is required - without them, test results are still sent
226
+ and stored exactly as before.
227
+
228
+ **The value is normalised before it is stored**, so that the same revision
229
+ written two ways still compares equal: it is lowercased, and a leading `v` or a
230
+ `refs/heads/` prefix is removed. The example above is exactly such a case -
231
+ `v1.2.0` is stored as `1.2.0`. The reporter says so once per run when it
232
+ happens, so a value that looks different in the dashboard is not a mystery.
233
+
234
+ ## Support
235
+
236
+ Found a bug or have a question? Please open an issue on
237
+ [GitHub Issues](https://github.com/squallydev-admin/squally-reporter/issues) -
238
+ that's the primary way to report problems or ask questions.
239
+
240
+ ## License
241
+
242
+ MIT - see [LICENSE](./LICENSE).
package/dist/index.d.ts CHANGED
@@ -19,6 +19,12 @@ interface AppendResultEntry {
19
19
  status: "passed" | "failed" | "skipped";
20
20
  retryCount: number;
21
21
  repeatIndex: number;
22
+ /**
23
+ * Playwright's `test.fail()` marker (spec section 1.3.1). OPTIONAL on the
24
+ * wire and omitted when false, so the field costs nothing on the overwhelming
25
+ * majority of results.
26
+ */
27
+ expectedFailure?: boolean;
22
28
  durationMs: number | null;
23
29
  errors?: AppendErrorEntry[];
24
30
  consoleOutput: string | null;
@@ -29,6 +35,18 @@ interface AppendResultEntry {
29
35
  type ArtifactType = "screenshot" | "trace";
30
36
  declare function truncate(value: string, max: number): string;
31
37
  declare function truncateOrNull(value: string | null, max: number): string | null;
38
+ /**
39
+ * This shard's flush interval: the base cadence stretched by how many shards
40
+ * share the rate budget with it.
41
+ *
42
+ * Only the TIMER is scaled. FLUSH_THRESHOLD_RESULTS is not, and that is
43
+ * deliberate: it is a latency bound on a fast suite, not a rate control, and
44
+ * stretching it would delay results without bounding the burst any better -
45
+ * the burst is bounded by how fast tests finish, which is not ours to set.
46
+ * The spec's acknowledged worst case (a very fast unit-style suite crossing 25
47
+ * faster than the interval) is therefore unchanged by this.
48
+ */
49
+ declare function flushIntervalFor(shardTotal: number | null): number;
32
50
  declare function mapStatus(status: TestResult["status"]): AppendResultEntry["status"];
33
51
  declare function detectCiRunId(env: NodeJS.ProcessEnv, generateFallback: () => string): string;
34
52
  interface ProjectSuiteLike {
@@ -49,7 +67,7 @@ declare function maskSecrets(value: string): string;
49
67
  declare function prepareConsoleOutput(value: string | null): string | null;
50
68
  declare function mapErrors(errors: readonly TestError[]): AppendErrorEntry[] | undefined;
51
69
  declare function attemptQualifiesForArtifacts(mappedStatus: AppendResultEntry["status"], retryCount: number): boolean;
52
- declare function artifactKey(testName: string, filePath: string, retryCount: number, type: ArtifactType): string;
70
+ declare function artifactKey(testName: string, filePath: string, retryCount: number, repeatIndex: number, type: ArtifactType): string;
53
71
  declare function parseRetryAfterMs(headerValue: string | null, nowMs: number): number | null;
54
72
  declare function computeBackoffMs(retryNumber: number): number;
55
73
  export default class SquallyReporter implements Reporter {
@@ -66,6 +84,33 @@ export default class SquallyReporter implements Reporter {
66
84
  private runConfig;
67
85
  private buffer;
68
86
  private artifacts;
87
+ /**
88
+ * Every result this shard produced, counted where it is produced (0.6.0).
89
+ *
90
+ * SIX PATHS LOSE RESULTS, and this counter exists because five of them are
91
+ * invisible afterwards and the sixth cannot be counted at all where it
92
+ * happens:
93
+ *
94
+ * 1. a batch dropped after its retries are spent (429, 5xx, network,
95
+ * unparseable response) - sendBatch's default branch
96
+ * 2. a batch dropped as malformed (400), which is not retried
97
+ * 3. the whole unsent buffer discarded by giveUp() on 402/404/409
98
+ * 4. every result produced AFTER a give-up - onTestEnd returns before the
99
+ * buffer, so there is nothing to count at the point of loss
100
+ * 5. batches still in flight when the drain budget expires at onEnd; the
101
+ * process then completes the run and exits out from under them
102
+ * 6. onBegin never getting a runId, so nothing was ever sendable
103
+ *
104
+ * A drop counter would have to be correct in all six places forever, and
105
+ * path 4 has no place to put it. Counting production instead needs one
106
+ * increment in one function, and it makes loss visible even on a path this
107
+ * reporter does not yet know about - the server compares this against what
108
+ * it actually stored.
109
+ *
110
+ * Per shard, for this shard's runId: each shard reports its own production
111
+ * against its own row, so no group arithmetic is needed on either side.
112
+ */
113
+ private resultsProduced;
69
114
  private sendingDisabled;
70
115
  private flushTimerHandle;
71
116
  private inFlightFlushes;
@@ -116,7 +161,9 @@ export declare const __internal: {
116
161
  mapErrors: typeof mapErrors;
117
162
  parseRetryAfterMs: typeof parseRetryAfterMs;
118
163
  computeBackoffMs: typeof computeBackoffMs;
164
+ flushIntervalFor: typeof flushIntervalFor;
119
165
  attemptQualifiesForArtifacts: typeof attemptQualifiesForArtifacts;
120
166
  artifactKey: typeof artifactKey;
121
167
  };
122
168
  export {};
169
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -138,6 +138,47 @@ const RULES_REQUEST_TIMEOUT_MS = 5000;
138
138
  // API key): 60 s / 2 s = 30 requests/minute, half of 60.
139
139
  const FLUSH_THRESHOLD_RESULTS = 25;
140
140
  const FLUSH_INTERVAL_MS = 2000;
141
+ // Scaled by the shard count (0.6.0), because the budget the 2 s above was
142
+ // derived from is NOT per reporter - it is per API key, and every shard of a
143
+ // run carries the same key. The firewall counts `header:authorization`, so
144
+ // eight shards each flushing every 2 s produce 8 x 30 = 240 requests/minute
145
+ // against a 60/minute rule. The "half of 60" margin the constant above claims
146
+ // was computed for a single reporter and silently stopped holding the day
147
+ // sharding arrived.
148
+ //
149
+ // interval x shards keeps the AGGREGATE rate at 30/minute for any shard count:
150
+ // S shards x (60 s / 2S s) = 30. The live view does not get slower for it
151
+ // either - it shows the RUN, and a run made of S shards receives an update
152
+ // from one shard or another every 2 s on average regardless of S.
153
+ //
154
+ // CAPPED, and the cap is about crash exposure rather than rate. Everything
155
+ // buffered is lost if the runner is killed (CI cancellation, OOM), so the
156
+ // interval is also the size of the window at risk. 30 s is the same figure
157
+ // RATE_LIMIT_BACKOFF_CAP_MS uses for "the longest we ever wait", and it keeps
158
+ // the aggregate inside the budget up to 30 shards (S x 60/30 <= 60), which
159
+ // covers the 4-to-16 range the app's own shard documentation describes with
160
+ // room to spare.
161
+ //
162
+ // Above 30 shards the aggregate creeps over the rule again. That is accepted:
163
+ // it is outside the documented range, the retry path already handles a 429,
164
+ // and since 0.6.0 any batch actually lost to it is visible in the
165
+ // resultsProduced diff rather than silent.
166
+ const FLUSH_INTERVAL_CAP_MS = 30000;
167
+ /**
168
+ * This shard's flush interval: the base cadence stretched by how many shards
169
+ * share the rate budget with it.
170
+ *
171
+ * Only the TIMER is scaled. FLUSH_THRESHOLD_RESULTS is not, and that is
172
+ * deliberate: it is a latency bound on a fast suite, not a rate control, and
173
+ * stretching it would delay results without bounding the burst any better -
174
+ * the burst is bounded by how fast tests finish, which is not ours to set.
175
+ * The spec's acknowledged worst case (a very fast unit-style suite crossing 25
176
+ * faster than the interval) is therefore unchanged by this.
177
+ */
178
+ function flushIntervalFor(shardTotal) {
179
+ const shards = Math.max(1, shardTotal ?? 1);
180
+ return Math.min(FLUSH_INTERVAL_CAP_MS, FLUSH_INTERVAL_MS * shards);
181
+ }
141
182
  // --- Retry policy (spec section 3.2) ----------------------------------------
142
183
  //
143
184
  // Two independent policies, both applied by requestJson() below via separate
@@ -371,6 +412,14 @@ function resolveBrowserName(test) {
371
412
  // test" - testedRevision fills that gap.
372
413
  // Applied to every resolved revision value before it's sent, regardless of
373
414
  // which pattern below produced it.
415
+ // Warned about ONCE per process, not per call (D5). The three rewrites below
416
+ // are deliberate and stay - what the finding was about is that they happened
417
+ // SILENTLY: a customer whose release tag is "V2.1" sees "2.1" arrive in the
418
+ // dashboard with nothing anywhere saying who changed it, and the natural
419
+ // conclusion is that Squally lost the value. One line on the first rewrite is
420
+ // enough to make it findable; repeating it per test would bury the run's real
421
+ // output under a rewrite that is the same every time.
422
+ let warnedAboutRevisionRewrite = false;
374
423
  function normalizeRevision(raw) {
375
424
  let value = raw.toLowerCase();
376
425
  if (value.startsWith("refs/heads/")) {
@@ -379,6 +428,12 @@ function normalizeRevision(raw) {
379
428
  if (/^v\d/.test(value)) {
380
429
  value = value.slice(1);
381
430
  }
431
+ if (value !== raw && !warnedAboutRevisionRewrite) {
432
+ warnedAboutRevisionRewrite = true;
433
+ console.warn(`[squally-reporter] Normalised the tested revision for comparison: ` +
434
+ `'${raw}' -> '${value}' (lowercased, and any 'refs/heads/' prefix or ` +
435
+ `leading 'v' removed). The original is not what gets stored.`);
436
+ }
382
437
  return value;
383
438
  }
384
439
  // Fallback chain:
@@ -437,9 +492,22 @@ function toPosixPath(p) {
437
492
  // file has to stay plain, readable ASCII - a raw ESC byte pasted into source
438
493
  // code is invisible in most editors/diffs and easy to mistake for empty
439
494
  // content.
495
+ // TWO PATTERNS SINCE THIS RELEASE (T2-T5's stripAnsi item), because terminal
496
+ // escapes come in two shapes and only one was handled. CSI is the familiar
497
+ // colour/cursor form. OSC - "operating system command" - is ESC ] followed by
498
+ // a body and terminated by BEL or by ESC backslash; hyperlinks (OSC 8) and
499
+ // window-title changes use it, and CI tooling emits them often enough that
500
+ // they were reaching stored console output intact.
501
+ //
502
+ // The escape characters are built from char codes rather than written as
503
+ // literals, the way the original did, so this file stays free of raw control
504
+ // bytes - a lesson this codebase has already paid for once.
505
+ const ESC = String.fromCharCode(27);
506
+ const BEL = String.fromCharCode(7);
507
+ const CSI_PATTERN = new RegExp(ESC + "\\[[0-9;]*[a-zA-Z]", "g");
508
+ const OSC_PATTERN = new RegExp(ESC + "\\][^" + BEL + ESC + "]*(?:" + BEL + "|" + ESC + "\\\\)", "g");
440
509
  function stripAnsi(value) {
441
- const ansiPattern = new RegExp(String.fromCharCode(27) + "\\[[0-9;]*[a-zA-Z]", "g");
442
- return value.replace(ansiPattern, "");
510
+ return value.replace(CSI_PATTERN, "").replace(OSC_PATTERN, "");
443
511
  }
444
512
  // Playwright captures stdout/stderr as two separate arrays (each internally
445
513
  // chronological, but not merged with each other), so a true byte-accurate
@@ -651,8 +719,15 @@ function attemptQualifiesForArtifacts(mappedStatus, retryCount) {
651
719
  // back to the local CollectedArtifact once the server round-trips these
652
720
  // identity fields). Unchanged from v1 - see the CollectedArtifact comment
653
721
  // above for why this stays a 4-part key under v2.
654
- function artifactKey(testName, filePath, retryCount, type) {
655
- return [testName, filePath, String(retryCount), type].join(String.fromCharCode(1));
722
+ // FIVE PARTS SINCE THIS RELEASE, matching the tuple the app resolves by. The
723
+ // four-part version collided under `repeatEach`: two repetitions of one test
724
+ // share testName, filePath, retryCount and type, so the map kept only the last
725
+ // of them and the presign result for the first was matched to the wrong local
726
+ // file - or, once both mapped to the same entry, one upload was silently
727
+ // dropped. The app echoes repeatIndex back on every result for exactly this
728
+ // purpose (squally-app/app/api/artifacts/presign/route.ts says so at the type).
729
+ function artifactKey(testName, filePath, retryCount, repeatIndex, type) {
730
+ return [testName, filePath, String(retryCount), String(repeatIndex), type].join(String.fromCharCode(1));
656
731
  }
657
732
  function skipReasonMessage(reason) {
658
733
  if (reason === "file_too_large")
@@ -772,6 +847,33 @@ class SquallyReporter {
772
847
  this.projectName = null;
773
848
  this.buffer = [];
774
849
  this.artifacts = [];
850
+ /**
851
+ * Every result this shard produced, counted where it is produced (0.6.0).
852
+ *
853
+ * SIX PATHS LOSE RESULTS, and this counter exists because five of them are
854
+ * invisible afterwards and the sixth cannot be counted at all where it
855
+ * happens:
856
+ *
857
+ * 1. a batch dropped after its retries are spent (429, 5xx, network,
858
+ * unparseable response) - sendBatch's default branch
859
+ * 2. a batch dropped as malformed (400), which is not retried
860
+ * 3. the whole unsent buffer discarded by giveUp() on 402/404/409
861
+ * 4. every result produced AFTER a give-up - onTestEnd returns before the
862
+ * buffer, so there is nothing to count at the point of loss
863
+ * 5. batches still in flight when the drain budget expires at onEnd; the
864
+ * process then completes the run and exits out from under them
865
+ * 6. onBegin never getting a runId, so nothing was ever sendable
866
+ *
867
+ * A drop counter would have to be correct in all six places forever, and
868
+ * path 4 has no place to put it. Counting production instead needs one
869
+ * increment in one function, and it makes loss visible even on a path this
870
+ * reporter does not yet know about - the server compares this against what
871
+ * it actually stored.
872
+ *
873
+ * Per shard, for this shard's runId: each shard reports its own production
874
+ * against its own row, so no group arithmetic is needed on either side.
875
+ */
876
+ this.resultsProduced = 0;
775
877
  // True once nothing more will ever be sent for this run - a permanent
776
878
  // give-up (402/404/409 on append, or onBegin never getting a runId at
777
879
  // all). onTestEnd stops collecting further results/artifacts once this is
@@ -831,7 +933,18 @@ class SquallyReporter {
831
933
  // This wait exists precisely to keep the process alive while sockets
832
934
  // finish closing - see delay(), and test/exit-code's failing-suite
833
935
  // scenario, which is what catches it if the unref ever comes back.
834
- await delay(EXIT_DRAIN_MS);
936
+ //
937
+ // WINDOWS ONLY SINCE THIS RELEASE. The race it mitigates is a libuv
938
+ // assertion in src/win/async.c; it has never been observed on Linux, and
939
+ // the CI matrix was built specifically to answer whether Linux is
940
+ // affected - both jobs have been green throughout, so the 250 ms was
941
+ // being spent on Ubuntu for nothing, on every run of every customer.
942
+ //
943
+ // The matrix stays as it is: if this ever has to come back for Linux,
944
+ // the job that would show it is the one that already runs.
945
+ if (process.platform === "win32") {
946
+ await delay(EXIT_DRAIN_MS);
947
+ }
835
948
  }
836
949
  };
837
950
  const apiUrl = options.apiUrl ?? process.env.SQUALLY_API_URL;
@@ -945,7 +1058,21 @@ class SquallyReporter {
945
1058
  };
946
1059
  }
947
1060
  onTestEnd(test, result) {
948
- if (!this.enabled || this.sendingDisabled)
1061
+ // Two guards, deliberately split by the counter between them.
1062
+ //
1063
+ // `enabled` is false when there is nothing to report to at all (no URL or
1064
+ // key, or `--list`): no run exists, no /complete will be sent, and there
1065
+ // is nothing for a count to be compared against.
1066
+ //
1067
+ // `sendingDisabled` is different - a run DOES exist server-side, it will
1068
+ // be completed, and every result arriving after the give-up is lost. That
1069
+ // is loss path 4, and counting BEFORE this return is the only place it can
1070
+ // be seen. Moving the increment below the return would make the largest
1071
+ // loss path of the six silently report zero.
1072
+ if (!this.enabled)
1073
+ return;
1074
+ this.resultsProduced += 1;
1075
+ if (this.sendingDisabled)
949
1076
  return;
950
1077
  // Belt and braces: onTestBegin has already done this for every test
951
1078
  // Playwright executes, but a result arriving without its begin would
@@ -975,6 +1102,15 @@ class SquallyReporter {
975
1102
  // may not have this field at all.
976
1103
  const repeatIndex = typeof test.repeatEachIndex === "number" ? test.repeatEachIndex : 0;
977
1104
  const testTags = Array.isArray(test.tags) ? test.tags : [];
1105
+ // Playwright's `test.fail()` marker (spec section 1.3.1). `expectedStatus`
1106
+ // is "failed" for exactly this and for nothing else: test.skip() and
1107
+ // test.fixme() both make it "skipped", which is a different statement and
1108
+ // deliberately not sent.
1109
+ //
1110
+ // Guarded like runTags and repeatEachIndex above - an older installed
1111
+ // Playwright may not carry the field, and `undefined === "failed"` is
1112
+ // false, which is the right answer for a runner that cannot tell us.
1113
+ const expectedFailure = test.expectedStatus === "failed";
978
1114
  const errorContextAttachment = result.attachments.find((attachment) => attachment.name === "error-context");
979
1115
  this.buffer.push({
980
1116
  testName,
@@ -982,6 +1118,10 @@ class SquallyReporter {
982
1118
  status,
983
1119
  retryCount: result.retry,
984
1120
  repeatIndex,
1121
+ // Omitted rather than sent as false: the field is optional on the wire
1122
+ // and absent means "not marked", so an ordinary suite sends nothing at
1123
+ // all rather than a false on every single result.
1124
+ ...(expectedFailure ? { expectedFailure: true } : {}),
985
1125
  durationMs: result.duration,
986
1126
  errors: mapErrors(result.errors),
987
1127
  consoleOutput: prepareConsoleOutput(formatConsoleOutput(result)),
@@ -1027,6 +1167,10 @@ class SquallyReporter {
1027
1167
  testName,
1028
1168
  filePath,
1029
1169
  retryCount: result.retry,
1170
+ // THE SAME `repeatIndex` the result entry above was pushed with, not a
1171
+ // second derivation - the app resolves an artifact back to that exact
1172
+ // row, so the two have to be the same value by construction.
1173
+ repeatIndex,
1030
1174
  type: attachment.name,
1031
1175
  localPath: attachment.path,
1032
1176
  sizeBytes,
@@ -1114,7 +1258,11 @@ class SquallyReporter {
1114
1258
  const handle = setTimeout(() => {
1115
1259
  this.triggerFlush();
1116
1260
  this.armFlushTimer();
1117
- }, FLUSH_INTERVAL_MS);
1261
+ // Read per arming rather than cached at onBegin: shardTotal is known
1262
+ // before the first arming (config.shard.total, set in onBegin), so this
1263
+ // is the same value every time - reading it here keeps the timer honest
1264
+ // if that ever stops being true.
1265
+ }, flushIntervalFor(this.shardTotal));
1118
1266
  handle.unref();
1119
1267
  this.flushTimerHandle = handle;
1120
1268
  }
@@ -1254,6 +1402,9 @@ class SquallyReporter {
1254
1402
  shardIndex: this.shardIndex,
1255
1403
  status,
1256
1404
  finishedAt: new Date().toISOString(),
1405
+ // Read at the last possible moment: every loss path has already happened
1406
+ // by the time /complete is sent, so this number is final.
1407
+ resultsProduced: this.resultsProduced,
1257
1408
  };
1258
1409
  const outcome = await this.requestJson("POST", `${this.apiUrl}/api/ingest/v2/runs/${runId}/complete`, payload);
1259
1410
  if (outcome.kind !== "ok") {
@@ -1385,6 +1536,7 @@ class SquallyReporter {
1385
1536
  testName: artifact.testName,
1386
1537
  filePath: artifact.filePath,
1387
1538
  retryCount: artifact.retryCount,
1539
+ repeatIndex: artifact.repeatIndex,
1388
1540
  type: artifact.type,
1389
1541
  sizeBytes: artifact.sizeBytes,
1390
1542
  }));
@@ -1418,12 +1570,15 @@ class SquallyReporter {
1418
1570
  // guaranteed to match one of this.artifacts (barring a server bug),
1419
1571
  // but a missing lookup is handled defensively below instead of assumed.
1420
1572
  const artifactsByKey = new Map(this.artifacts.map((artifact) => [
1421
- artifactKey(artifact.testName, artifact.filePath, artifact.retryCount, artifact.type),
1573
+ artifactKey(artifact.testName, artifact.filePath, artifact.retryCount, artifact.repeatIndex, artifact.type),
1422
1574
  artifact,
1423
1575
  ]));
1424
1576
  const uploads = [];
1425
1577
  for (const item of presignResults) {
1426
- const local = artifactsByKey.get(artifactKey(item.testName, item.filePath ?? "", item.retryCount, item.type));
1578
+ // `?? 0` mirrors what the app stores: v2 rows carry an int, and a
1579
+ // reporter this old cannot produce a v1 row. It is a type guard for the
1580
+ // echoed field, not a fallback anything relies on.
1581
+ const local = artifactsByKey.get(artifactKey(item.testName, item.filePath ?? "", item.retryCount, item.repeatIndex ?? 0, item.type));
1427
1582
  if (!local)
1428
1583
  continue;
1429
1584
  if (item.skip) {
@@ -1466,6 +1621,10 @@ class SquallyReporter {
1466
1621
  testName: artifact.testName,
1467
1622
  filePath: artifact.filePath,
1468
1623
  retryCount: artifact.retryCount,
1624
+ // Confirm resolves by the SAME five fields as presign
1625
+ // (squally-app/app/api/artifacts/confirm/route.ts) - sending four here
1626
+ // would move the outage from the upload to the confirmation.
1627
+ repeatIndex: artifact.repeatIndex,
1469
1628
  type: artifact.type,
1470
1629
  }));
1471
1630
  try {
@@ -1515,6 +1674,8 @@ exports.__internal = {
1515
1674
  mapErrors,
1516
1675
  parseRetryAfterMs,
1517
1676
  computeBackoffMs,
1677
+ flushIntervalFor,
1518
1678
  attemptQualifiesForArtifacts,
1519
1679
  artifactKey,
1520
1680
  };
1681
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,42 +1,50 @@
1
- {
2
- "name": "squally-reporter",
3
- "version": "0.5.2",
4
- "description": "Playwright reporter that sends test results to your Squally dashboard.",
5
- "author": "Squally <squally.dev@gmail.com>",
6
- "keywords": [
7
- "playwright",
8
- "playwright-reporter",
9
- "flaky-tests",
10
- "test-results",
11
- "ci"
12
- ],
13
- "main": "dist/index.js",
14
- "types": "dist/index.d.ts",
15
- "files": [
16
- "dist"
17
- ],
18
- "engines": {
19
- "node": ">=22.19.0"
20
- },
21
- "scripts": {
22
- "build": "tsc",
23
- "prepublishOnly": "npm run build",
24
- "prepare": "npm run build",
25
- "test:unit": "node --test \"test/unit/**/*.test.js\"",
26
- "test:exit-code": "node test/exit-code/run.mjs",
27
- "test:empty-runs": "node test/empty-runs/run.mjs",
28
- "test": "npm run build && npm run test:unit && npm run test:exit-code && npm run test:empty-runs"
29
- },
30
- "peerDependencies": {
31
- "@playwright/test": ">=1.30.0"
32
- },
33
- "devDependencies": {
34
- "@playwright/test": "^1.48.0",
35
- "@types/node": "^20.14.0",
36
- "typescript": "^5.6.0"
37
- },
38
- "license": "MIT",
39
- "dependencies": {
40
- "undici": "^8.10.0"
41
- }
42
- }
1
+ {
2
+ "name": "squally-reporter",
3
+ "version": "0.7.0",
4
+ "description": "Playwright reporter that sends test results to your Squally dashboard.",
5
+ "author": "Squally <squally.dev@gmail.com>",
6
+ "keywords": [
7
+ "playwright",
8
+ "playwright-reporter",
9
+ "flaky-tests",
10
+ "test-results",
11
+ "ci"
12
+ ],
13
+ "main": "dist/index.js",
14
+ "types": "dist/index.d.ts",
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "git+https://github.com/squallydev-admin/squally-reporter.git"
21
+ },
22
+ "bugs": {
23
+ "url": "https://github.com/squallydev-admin/squally-reporter/issues"
24
+ },
25
+ "homepage": "https://squally.dev",
26
+ "engines": {
27
+ "node": ">=22.19.0"
28
+ },
29
+ "scripts": {
30
+ "build": "tsc",
31
+ "prepublishOnly": "npm run build",
32
+ "prepare": "npm run build",
33
+ "test:unit": "node --test \"test/unit/**/*.test.js\"",
34
+ "test:exit-code": "node test/exit-code/run.mjs",
35
+ "test:empty-runs": "node test/empty-runs/run.mjs",
36
+ "test": "npm run build && npm run test:unit && npm run test:exit-code && npm run test:empty-runs"
37
+ },
38
+ "peerDependencies": {
39
+ "@playwright/test": ">=1.30.0"
40
+ },
41
+ "devDependencies": {
42
+ "@playwright/test": "^1.48.0",
43
+ "@types/node": "^20.14.0",
44
+ "typescript": "^5.6.0"
45
+ },
46
+ "license": "MIT",
47
+ "dependencies": {
48
+ "undici": "^8.10.0"
49
+ }
50
+ }