weave-typescript 0.11.14 → 0.11.16

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.
Files changed (75) hide show
  1. package/dist/weaveapi/data/v1/data.pb.d.ts +54 -0
  2. package/dist/weaveapi/data/v1/data.pb.js +411 -0
  3. package/dist/weaveapi/data/v1/service.pb.d.ts +296 -0
  4. package/dist/weaveapi/data/v1/service.pb.js +2779 -0
  5. package/dist/weaveapi/input/v1/input.pb.d.ts +77 -0
  6. package/dist/weaveapi/input/v1/input.pb.js +632 -0
  7. package/dist/weaveapi/input/v1/service.pb.d.ts +390 -0
  8. package/dist/weaveapi/input/v1/service.pb.js +3612 -0
  9. package/dist/weaveapi/integration/v1/integration.pb.d.ts +67 -0
  10. package/dist/weaveapi/integration/v1/integration.pb.js +486 -0
  11. package/dist/weaveapi/integration/v1/service.pb.d.ts +318 -0
  12. package/dist/weaveapi/integration/v1/service.pb.js +2994 -0
  13. package/dist/weaveapi/project/v1/project.pb.d.ts +1 -0
  14. package/dist/weaveapi/project/v1/project.pb.js +17 -1
  15. package/dist/weaveapi/project/v1/service.pb.d.ts +25 -0
  16. package/dist/weaveapi/project/v1/service.pb.js +248 -5
  17. package/dist/weaveapi/report/v1/report.pb.d.ts +81 -0
  18. package/dist/weaveapi/report/v1/report.pb.js +678 -0
  19. package/dist/weaveapi/report/v1/service.pb.d.ts +194 -0
  20. package/dist/weaveapi/report/v1/service.pb.js +1925 -0
  21. package/dist/weaveapi/requirement/v1/requirement.pb.d.ts +70 -0
  22. package/dist/weaveapi/requirement/v1/requirement.pb.js +570 -0
  23. package/dist/weaveapi/requirement/v1/service.pb.d.ts +390 -0
  24. package/dist/weaveapi/requirement/v1/service.pb.js +3638 -0
  25. package/dist/weaveapi/run/v1/run.pb.d.ts +117 -0
  26. package/dist/weaveapi/run/v1/run.pb.js +1155 -0
  27. package/dist/weaveapi/run/v1/service.pb.d.ts +229 -0
  28. package/dist/weaveapi/run/v1/service.pb.js +2428 -0
  29. package/dist/weaveapi/script/v1/script.pb.d.ts +102 -0
  30. package/dist/weaveapi/script/v1/script.pb.js +1025 -0
  31. package/dist/weaveapi/script/v1/service.pb.d.ts +502 -0
  32. package/dist/weaveapi/script/v1/service.pb.js +4873 -0
  33. package/dist/weaveapi/storage/v1/service.pb.d.ts +4 -0
  34. package/dist/weaveapi/storage/v1/service.pb.js +50 -7
  35. package/dist/weaveapi/storage/v1/storage.pb.d.ts +2 -0
  36. package/dist/weaveapi/storage/v1/storage.pb.js +23 -0
  37. package/dist/weaveapi/storage/v1/vcs.pb.d.ts +75 -0
  38. package/dist/weaveapi/storage/v1/vcs.pb.js +864 -0
  39. package/dist/weaveapi/suite/v1/service.pb.d.ts +539 -0
  40. package/dist/weaveapi/suite/v1/service.pb.js +5281 -0
  41. package/dist/weaveapi/suite/v1/suite.pb.d.ts +92 -0
  42. package/dist/weaveapi/suite/v1/suite.pb.js +876 -0
  43. package/dist/weaveapi/testcase/v1/service.pb.d.ts +498 -0
  44. package/dist/weaveapi/testcase/v1/service.pb.js +4730 -0
  45. package/dist/weaveapi/testcase/v1/testcase.pb.d.ts +91 -0
  46. package/dist/weaveapi/testcase/v1/testcase.pb.js +794 -0
  47. package/dist/weaveapi/workflow/v1/service.pb.d.ts +26 -0
  48. package/dist/weaveapi/workflow/v1/service.pb.js +293 -5
  49. package/dist/weaveapi/workflow/v1/workflow.pb.d.ts +1 -0
  50. package/dist/weaveapi/workflow/v1/workflow.pb.js +17 -1
  51. package/dist/weavesql/weavedb/data_asset_sql.d.ts +206 -0
  52. package/dist/weavesql/weavedb/data_asset_sql.js +335 -0
  53. package/dist/weavesql/weavedb/input_sql.d.ts +293 -0
  54. package/dist/weavesql/weavedb/input_sql.js +500 -0
  55. package/dist/weavesql/weavedb/integration_sql.d.ts +236 -0
  56. package/dist/weavesql/weavedb/integration_sql.js +377 -0
  57. package/dist/weavesql/weavedb/project_sql.d.ts +29 -5
  58. package/dist/weavesql/weavedb/project_sql.js +73 -37
  59. package/dist/weavesql/weavedb/report_sql.d.ts +192 -0
  60. package/dist/weavesql/weavedb/report_sql.js +308 -0
  61. package/dist/weavesql/weavedb/requirement_sql.d.ts +231 -0
  62. package/dist/weavesql/weavedb/requirement_sql.js +399 -0
  63. package/dist/weavesql/weavedb/run_sql.d.ts +283 -0
  64. package/dist/weavesql/weavedb/run_sql.js +462 -0
  65. package/dist/weavesql/weavedb/suite_sql.d.ts +354 -0
  66. package/dist/weavesql/weavedb/suite_sql.js +631 -0
  67. package/dist/weavesql/weavedb/test_case_sql.d.ts +325 -0
  68. package/dist/weavesql/weavedb/test_case_sql.js +563 -0
  69. package/dist/weavesql/weavedb/test_script_sql.d.ts +354 -0
  70. package/dist/weavesql/weavedb/test_script_sql.js +605 -0
  71. package/dist/weavesql/weavedb/traceability_sql.d.ts +117 -0
  72. package/dist/weavesql/weavedb/traceability_sql.js +363 -0
  73. package/dist/weavesql/weavedb/workflow_sql.d.ts +30 -5
  74. package/dist/weavesql/weavedb/workflow_sql.js +76 -38
  75. package/package.json +1 -1
@@ -0,0 +1,462 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTestRunLiveCountsQuery = exports.listTestRunArtifactsQuery = exports.createTestRunArtifactQuery = exports.listTestRunCaseResultsQuery = exports.upsertTestRunCaseResultQuery = exports.cancelTestRunQuery = exports.updateTestRunStatusQuery = exports.listTestRunsByWorkflowQuery = exports.listTestRunsByProjectQuery = exports.getTestRunQuery = exports.createTestRunQuery = void 0;
4
+ exports.createTestRun = createTestRun;
5
+ exports.getTestRun = getTestRun;
6
+ exports.listTestRunsByProject = listTestRunsByProject;
7
+ exports.listTestRunsByWorkflow = listTestRunsByWorkflow;
8
+ exports.updateTestRunStatus = updateTestRunStatus;
9
+ exports.cancelTestRun = cancelTestRun;
10
+ exports.upsertTestRunCaseResult = upsertTestRunCaseResult;
11
+ exports.listTestRunCaseResults = listTestRunCaseResults;
12
+ exports.createTestRunArtifact = createTestRunArtifact;
13
+ exports.listTestRunArtifacts = listTestRunArtifacts;
14
+ exports.getTestRunLiveCounts = getTestRunLiveCounts;
15
+ exports.createTestRunQuery = `-- name: CreateTestRun :one
16
+ INSERT INTO weave_v1.test_run (
17
+ id,
18
+ project_id,
19
+ workflow_id,
20
+ test_suite_id,
21
+ status,
22
+ environment,
23
+ triggered_by,
24
+ runtime_config,
25
+ summary,
26
+ trace_id,
27
+ queued_at
28
+ )
29
+ VALUES (
30
+ $1,
31
+ $2,
32
+ $3,
33
+ $4,
34
+ $5,
35
+ $6,
36
+ $7,
37
+ $8,
38
+ $9,
39
+ $10,
40
+ NOW()
41
+ )
42
+ RETURNING id, project_id, workflow_id, test_suite_id, status, environment, triggered_by, runtime_config, summary, trace_id, queued_at, started_at, finished_at, created_at, updated_at`;
43
+ async function createTestRun(client, args) {
44
+ const result = await client.query({
45
+ text: exports.createTestRunQuery,
46
+ values: [args.id, args.projectId, args.workflowId, args.testSuiteId, args.status, args.environment, args.triggeredBy, args.runtimeConfig, args.summary, args.traceId],
47
+ rowMode: "array"
48
+ });
49
+ if (result.rows.length !== 1) {
50
+ return null;
51
+ }
52
+ const row = result.rows[0];
53
+ return {
54
+ id: row[0],
55
+ projectId: row[1],
56
+ workflowId: row[2],
57
+ testSuiteId: row[3],
58
+ status: row[4],
59
+ environment: row[5],
60
+ triggeredBy: row[6],
61
+ runtimeConfig: row[7],
62
+ summary: row[8],
63
+ traceId: row[9],
64
+ queuedAt: row[10],
65
+ startedAt: row[11],
66
+ finishedAt: row[12],
67
+ createdAt: row[13],
68
+ updatedAt: row[14]
69
+ };
70
+ }
71
+ exports.getTestRunQuery = `-- name: GetTestRun :one
72
+ SELECT id, project_id, workflow_id, test_suite_id, status, environment, triggered_by, runtime_config, summary, trace_id, queued_at, started_at, finished_at, created_at, updated_at
73
+ FROM weave_v1.test_run
74
+ WHERE id = $1
75
+ AND project_id = $2
76
+ AND workflow_id = $3`;
77
+ async function getTestRun(client, args) {
78
+ const result = await client.query({
79
+ text: exports.getTestRunQuery,
80
+ values: [args.id, args.projectId, args.workflowId],
81
+ rowMode: "array"
82
+ });
83
+ if (result.rows.length !== 1) {
84
+ return null;
85
+ }
86
+ const row = result.rows[0];
87
+ return {
88
+ id: row[0],
89
+ projectId: row[1],
90
+ workflowId: row[2],
91
+ testSuiteId: row[3],
92
+ status: row[4],
93
+ environment: row[5],
94
+ triggeredBy: row[6],
95
+ runtimeConfig: row[7],
96
+ summary: row[8],
97
+ traceId: row[9],
98
+ queuedAt: row[10],
99
+ startedAt: row[11],
100
+ finishedAt: row[12],
101
+ createdAt: row[13],
102
+ updatedAt: row[14]
103
+ };
104
+ }
105
+ exports.listTestRunsByProjectQuery = `-- name: ListTestRunsByProject :many
106
+ SELECT id, project_id, workflow_id, test_suite_id, status, environment, triggered_by, runtime_config, summary, trace_id, queued_at, started_at, finished_at, created_at, updated_at
107
+ FROM weave_v1.test_run
108
+ WHERE project_id = $1
109
+ ORDER BY created_at DESC
110
+ LIMIT $3
111
+ OFFSET $2`;
112
+ async function listTestRunsByProject(client, args) {
113
+ const result = await client.query({
114
+ text: exports.listTestRunsByProjectQuery,
115
+ values: [args.projectId, args.pageOffset, args.pageSize],
116
+ rowMode: "array"
117
+ });
118
+ return result.rows.map(row => {
119
+ return {
120
+ id: row[0],
121
+ projectId: row[1],
122
+ workflowId: row[2],
123
+ testSuiteId: row[3],
124
+ status: row[4],
125
+ environment: row[5],
126
+ triggeredBy: row[6],
127
+ runtimeConfig: row[7],
128
+ summary: row[8],
129
+ traceId: row[9],
130
+ queuedAt: row[10],
131
+ startedAt: row[11],
132
+ finishedAt: row[12],
133
+ createdAt: row[13],
134
+ updatedAt: row[14]
135
+ };
136
+ });
137
+ }
138
+ exports.listTestRunsByWorkflowQuery = `-- name: ListTestRunsByWorkflow :many
139
+ SELECT id, project_id, workflow_id, test_suite_id, status, environment, triggered_by, runtime_config, summary, trace_id, queued_at, started_at, finished_at, created_at, updated_at
140
+ FROM weave_v1.test_run
141
+ WHERE project_id = $1
142
+ AND workflow_id = $2
143
+ ORDER BY created_at DESC
144
+ LIMIT $4
145
+ OFFSET $3`;
146
+ async function listTestRunsByWorkflow(client, args) {
147
+ const result = await client.query({
148
+ text: exports.listTestRunsByWorkflowQuery,
149
+ values: [args.projectId, args.workflowId, args.pageOffset, args.pageSize],
150
+ rowMode: "array"
151
+ });
152
+ return result.rows.map(row => {
153
+ return {
154
+ id: row[0],
155
+ projectId: row[1],
156
+ workflowId: row[2],
157
+ testSuiteId: row[3],
158
+ status: row[4],
159
+ environment: row[5],
160
+ triggeredBy: row[6],
161
+ runtimeConfig: row[7],
162
+ summary: row[8],
163
+ traceId: row[9],
164
+ queuedAt: row[10],
165
+ startedAt: row[11],
166
+ finishedAt: row[12],
167
+ createdAt: row[13],
168
+ updatedAt: row[14]
169
+ };
170
+ });
171
+ }
172
+ exports.updateTestRunStatusQuery = `-- name: UpdateTestRunStatus :one
173
+ UPDATE weave_v1.test_run
174
+ SET status = $1,
175
+ started_at = $2,
176
+ finished_at = $3,
177
+ summary = $4,
178
+ updated_at = NOW()
179
+ WHERE id = $5
180
+ AND project_id = $6
181
+ AND workflow_id = $7
182
+ RETURNING id, project_id, workflow_id, test_suite_id, status, environment, triggered_by, runtime_config, summary, trace_id, queued_at, started_at, finished_at, created_at, updated_at`;
183
+ async function updateTestRunStatus(client, args) {
184
+ const result = await client.query({
185
+ text: exports.updateTestRunStatusQuery,
186
+ values: [args.status, args.startedAt, args.finishedAt, args.summary, args.id, args.projectId, args.workflowId],
187
+ rowMode: "array"
188
+ });
189
+ if (result.rows.length !== 1) {
190
+ return null;
191
+ }
192
+ const row = result.rows[0];
193
+ return {
194
+ id: row[0],
195
+ projectId: row[1],
196
+ workflowId: row[2],
197
+ testSuiteId: row[3],
198
+ status: row[4],
199
+ environment: row[5],
200
+ triggeredBy: row[6],
201
+ runtimeConfig: row[7],
202
+ summary: row[8],
203
+ traceId: row[9],
204
+ queuedAt: row[10],
205
+ startedAt: row[11],
206
+ finishedAt: row[12],
207
+ createdAt: row[13],
208
+ updatedAt: row[14]
209
+ };
210
+ }
211
+ exports.cancelTestRunQuery = `-- name: CancelTestRun :one
212
+ UPDATE weave_v1.test_run
213
+ SET status = 'canceled',
214
+ finished_at = NOW(),
215
+ updated_at = NOW()
216
+ WHERE id = $1
217
+ AND project_id = $2
218
+ AND workflow_id = $3
219
+ RETURNING id, project_id, workflow_id, test_suite_id, status, environment, triggered_by, runtime_config, summary, trace_id, queued_at, started_at, finished_at, created_at, updated_at`;
220
+ async function cancelTestRun(client, args) {
221
+ const result = await client.query({
222
+ text: exports.cancelTestRunQuery,
223
+ values: [args.id, args.projectId, args.workflowId],
224
+ rowMode: "array"
225
+ });
226
+ if (result.rows.length !== 1) {
227
+ return null;
228
+ }
229
+ const row = result.rows[0];
230
+ return {
231
+ id: row[0],
232
+ projectId: row[1],
233
+ workflowId: row[2],
234
+ testSuiteId: row[3],
235
+ status: row[4],
236
+ environment: row[5],
237
+ triggeredBy: row[6],
238
+ runtimeConfig: row[7],
239
+ summary: row[8],
240
+ traceId: row[9],
241
+ queuedAt: row[10],
242
+ startedAt: row[11],
243
+ finishedAt: row[12],
244
+ createdAt: row[13],
245
+ updatedAt: row[14]
246
+ };
247
+ }
248
+ exports.upsertTestRunCaseResultQuery = `-- name: UpsertTestRunCaseResult :one
249
+ INSERT INTO weave_v1.test_run_case_result (
250
+ id,
251
+ test_run_id,
252
+ test_case_id,
253
+ test_script_id,
254
+ status,
255
+ duration_ms,
256
+ error_summary,
257
+ assertion_count,
258
+ failed_assertion_count,
259
+ details,
260
+ started_at,
261
+ finished_at
262
+ )
263
+ VALUES (
264
+ $1,
265
+ $2,
266
+ $3,
267
+ $4,
268
+ $5,
269
+ $6,
270
+ $7,
271
+ $8,
272
+ $9,
273
+ $10,
274
+ $11,
275
+ $12
276
+ )
277
+ ON CONFLICT (id) DO UPDATE
278
+ SET status = EXCLUDED.status,
279
+ duration_ms = EXCLUDED.duration_ms,
280
+ error_summary = EXCLUDED.error_summary,
281
+ assertion_count = EXCLUDED.assertion_count,
282
+ failed_assertion_count = EXCLUDED.failed_assertion_count,
283
+ details = EXCLUDED.details,
284
+ started_at = EXCLUDED.started_at,
285
+ finished_at = EXCLUDED.finished_at,
286
+ updated_at = NOW()
287
+ RETURNING id, test_run_id, test_case_id, test_script_id, status, duration_ms, error_summary, assertion_count, failed_assertion_count, details, started_at, finished_at, created_at, updated_at`;
288
+ async function upsertTestRunCaseResult(client, args) {
289
+ const result = await client.query({
290
+ text: exports.upsertTestRunCaseResultQuery,
291
+ values: [args.id, args.testRunId, args.testCaseId, args.testScriptId, args.status, args.durationMs, args.errorSummary, args.assertionCount, args.failedAssertionCount, args.details, args.startedAt, args.finishedAt],
292
+ rowMode: "array"
293
+ });
294
+ if (result.rows.length !== 1) {
295
+ return null;
296
+ }
297
+ const row = result.rows[0];
298
+ return {
299
+ id: row[0],
300
+ testRunId: row[1],
301
+ testCaseId: row[2],
302
+ testScriptId: row[3],
303
+ status: row[4],
304
+ durationMs: row[5],
305
+ errorSummary: row[6],
306
+ assertionCount: row[7],
307
+ failedAssertionCount: row[8],
308
+ details: row[9],
309
+ startedAt: row[10],
310
+ finishedAt: row[11],
311
+ createdAt: row[12],
312
+ updatedAt: row[13]
313
+ };
314
+ }
315
+ exports.listTestRunCaseResultsQuery = `-- name: ListTestRunCaseResults :many
316
+ SELECT cr.id, cr.test_run_id, cr.test_case_id, cr.test_script_id, cr.status, cr.duration_ms, cr.error_summary, cr.assertion_count, cr.failed_assertion_count, cr.details, cr.started_at, cr.finished_at, cr.created_at, cr.updated_at
317
+ FROM weave_v1.test_run_case_result cr
318
+ INNER JOIN weave_v1.test_run r ON r.id = cr.test_run_id
319
+ WHERE cr.test_run_id = $1
320
+ AND r.project_id = $2
321
+ AND r.workflow_id = $3
322
+ ORDER BY cr.created_at ASC
323
+ LIMIT $5
324
+ OFFSET $4`;
325
+ async function listTestRunCaseResults(client, args) {
326
+ const result = await client.query({
327
+ text: exports.listTestRunCaseResultsQuery,
328
+ values: [args.testRunId, args.projectId, args.workflowId, args.pageOffset, args.pageSize],
329
+ rowMode: "array"
330
+ });
331
+ return result.rows.map(row => {
332
+ return {
333
+ id: row[0],
334
+ testRunId: row[1],
335
+ testCaseId: row[2],
336
+ testScriptId: row[3],
337
+ status: row[4],
338
+ durationMs: row[5],
339
+ errorSummary: row[6],
340
+ assertionCount: row[7],
341
+ failedAssertionCount: row[8],
342
+ details: row[9],
343
+ startedAt: row[10],
344
+ finishedAt: row[11],
345
+ createdAt: row[12],
346
+ updatedAt: row[13]
347
+ };
348
+ });
349
+ }
350
+ exports.createTestRunArtifactQuery = `-- name: CreateTestRunArtifact :one
351
+ INSERT INTO weave_v1.test_run_artifact (
352
+ id,
353
+ test_run_id,
354
+ test_run_case_result_id,
355
+ artifact_type,
356
+ name,
357
+ storage_connection_id,
358
+ uri,
359
+ content_type,
360
+ size_bytes,
361
+ checksum,
362
+ metadata
363
+ )
364
+ VALUES (
365
+ $1,
366
+ $2,
367
+ $3,
368
+ $4,
369
+ $5,
370
+ $6,
371
+ $7,
372
+ $8,
373
+ $9,
374
+ $10,
375
+ $11
376
+ )
377
+ RETURNING id, test_run_id, test_run_case_result_id, artifact_type, name, storage_connection_id, uri, content_type, size_bytes, checksum, metadata, created_at`;
378
+ async function createTestRunArtifact(client, args) {
379
+ const result = await client.query({
380
+ text: exports.createTestRunArtifactQuery,
381
+ values: [args.id, args.testRunId, args.testRunCaseResultId, args.artifactType, args.name, args.storageConnectionId, args.uri, args.contentType, args.sizeBytes, args.checksum, args.metadata],
382
+ rowMode: "array"
383
+ });
384
+ if (result.rows.length !== 1) {
385
+ return null;
386
+ }
387
+ const row = result.rows[0];
388
+ return {
389
+ id: row[0],
390
+ testRunId: row[1],
391
+ testRunCaseResultId: row[2],
392
+ artifactType: row[3],
393
+ name: row[4],
394
+ storageConnectionId: row[5],
395
+ uri: row[6],
396
+ contentType: row[7],
397
+ sizeBytes: row[8],
398
+ checksum: row[9],
399
+ metadata: row[10],
400
+ createdAt: row[11]
401
+ };
402
+ }
403
+ exports.listTestRunArtifactsQuery = `-- name: ListTestRunArtifacts :many
404
+ SELECT a.id, a.test_run_id, a.test_run_case_result_id, a.artifact_type, a.name, a.storage_connection_id, a.uri, a.content_type, a.size_bytes, a.checksum, a.metadata, a.created_at
405
+ FROM weave_v1.test_run_artifact a
406
+ INNER JOIN weave_v1.test_run r ON r.id = a.test_run_id
407
+ WHERE a.test_run_id = $1
408
+ AND r.project_id = $2
409
+ AND r.workflow_id = $3
410
+ AND ($4::UUID IS NULL OR a.test_run_case_result_id = $4)
411
+ ORDER BY a.created_at ASC
412
+ LIMIT $6
413
+ OFFSET $5`;
414
+ async function listTestRunArtifacts(client, args) {
415
+ const result = await client.query({
416
+ text: exports.listTestRunArtifactsQuery,
417
+ values: [args.testRunId, args.projectId, args.workflowId, args.testRunCaseResultId, args.pageOffset, args.pageSize],
418
+ rowMode: "array"
419
+ });
420
+ return result.rows.map(row => {
421
+ return {
422
+ id: row[0],
423
+ testRunId: row[1],
424
+ testRunCaseResultId: row[2],
425
+ artifactType: row[3],
426
+ name: row[4],
427
+ storageConnectionId: row[5],
428
+ uri: row[6],
429
+ contentType: row[7],
430
+ sizeBytes: row[8],
431
+ checksum: row[9],
432
+ metadata: row[10],
433
+ createdAt: row[11]
434
+ };
435
+ });
436
+ }
437
+ exports.getTestRunLiveCountsQuery = `-- name: GetTestRunLiveCounts :one
438
+ SELECT COUNT(*) FILTER ( WHERE status = 'pending')::INTEGER AS pending_count,
439
+ COUNT(*) FILTER ( WHERE status = 'running')::INTEGER AS running_count,
440
+ COUNT(*) FILTER ( WHERE status = 'passed')::INTEGER AS passed_count,
441
+ COUNT(*) FILTER ( WHERE status = 'failed')::INTEGER AS failed_count,
442
+ COUNT(*)::INTEGER AS total_count
443
+ FROM weave_v1.test_run_case_result
444
+ WHERE test_run_id = $1`;
445
+ async function getTestRunLiveCounts(client, args) {
446
+ const result = await client.query({
447
+ text: exports.getTestRunLiveCountsQuery,
448
+ values: [args.testRunId],
449
+ rowMode: "array"
450
+ });
451
+ if (result.rows.length !== 1) {
452
+ return null;
453
+ }
454
+ const row = result.rows[0];
455
+ return {
456
+ pendingCount: row[0],
457
+ runningCount: row[1],
458
+ passedCount: row[2],
459
+ failedCount: row[3],
460
+ totalCount: row[4]
461
+ };
462
+ }