@crvouga/atlas 1.6.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -1
- package/dist/reports/src/explorer-types.d.ts +19 -0
- package/dist/reports/src/latency.d.ts +204 -0
- package/dist/reports/src/latency.js +219 -0
- package/dist/reports/src/reports-explorer-route.d.ts +19 -6
- package/dist/reports/src/reports-route.d.ts +19 -6
- package/dist/reports/src/test-catalog.d.ts +3 -1
- package/dist/reports/src/test-catalog.js +4 -2
- package/dist/schema/src/api.d.ts +151 -0
- package/dist/schema/src/api.js +4 -3
- package/dist/schema/src/layer.d.ts +90 -0
- package/dist/schema/src/layer.js +20 -1
- package/docs/extending.md +18 -1
- package/docs/reference/reports.md +347 -0
- package/docs/reference/schema.md +28 -0
- package/docs/rich-evidence.md +43 -0
- package/docs/ui.md +24 -1
- package/llms-full.txt +85 -2
- package/package.json +1 -1
- package/packages/schema/schemas/check-detail.schema.json +56 -1
- package/packages/schema/schemas/effective-delta.schema.json +60 -2
- package/packages/schema/schemas/effective-evidence.schema.json +60 -2
- package/packages/schema/schemas/layer-rows.schema.json +60 -2
- package/packages/schema/schemas/layer.schema.json +112 -2
- package/packages/schema/schemas/publish-checks.schema.json +56 -1
- package/packages/schema/schemas/test-catalog.schema.json +85 -0
- package/packages/schema/schemas/test-history.schema.json +170 -0
- package/packages/server/openapi.json +547 -8
- package/packages/visualizer/src/evidence/behavior-panel.tsx +10 -16
- package/packages/visualizer/src/evidence/check-detail.tsx +59 -15
- package/packages/visualizer/src/evidence/outcome-summary.tsx +208 -0
- package/packages/visualizer/src/evidence/outcome.test.ts +129 -0
- package/packages/visualizer/src/evidence/outcome.ts +309 -0
- package/packages/visualizer/src/explorer/ProductLatency.tsx +214 -0
- package/packages/visualizer/src/explorer/TestDetail.tsx +32 -3
- package/packages/visualizer/src/explorer/search.ts +3 -0
|
@@ -56,8 +56,63 @@
|
|
|
56
56
|
"type": "string"
|
|
57
57
|
},
|
|
58
58
|
"limit": {
|
|
59
|
-
"description": "The allowance. A measurement over it is reported, and never fails the check by itself",
|
|
59
|
+
"description": "The allowance, or budget. A measurement over it is reported, and never fails the check by itself",
|
|
60
60
|
"type": "number"
|
|
61
|
+
},
|
|
62
|
+
"kind": {
|
|
63
|
+
"description": "What the number is, in an open vocabulary. `product-latency`: a user-visible response time between `from` and `to`. Absent: just a number, never read as product latency",
|
|
64
|
+
"type": "string",
|
|
65
|
+
"minLength": 1
|
|
66
|
+
},
|
|
67
|
+
"from": {
|
|
68
|
+
"description": "The event the interval starts at. Without both `from` and `to` a latency is shown but no product claim is made from it",
|
|
69
|
+
"type": "string",
|
|
70
|
+
"minLength": 1
|
|
71
|
+
},
|
|
72
|
+
"to": {
|
|
73
|
+
"description": "The event the interval ends at",
|
|
74
|
+
"type": "string",
|
|
75
|
+
"minLength": 1
|
|
76
|
+
},
|
|
77
|
+
"intended": {
|
|
78
|
+
"description": "The interval the name of the measurement claims, when what was measured is only part of it. If `intended.to` differs from `to` (or `intended.from` from `from`) the measurement is shown as partial, never as the complete interval",
|
|
79
|
+
"type": "object",
|
|
80
|
+
"properties": {
|
|
81
|
+
"from": {
|
|
82
|
+
"description": "The event the interval starts at: `end of speech`, `submit pressed`",
|
|
83
|
+
"type": "string",
|
|
84
|
+
"minLength": 1
|
|
85
|
+
},
|
|
86
|
+
"to": {
|
|
87
|
+
"description": "The event the interval ends at: `audible response`, `confirmation visible`",
|
|
88
|
+
"type": "string",
|
|
89
|
+
"minLength": 1
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
"additionalProperties": {}
|
|
93
|
+
},
|
|
94
|
+
"source": {
|
|
95
|
+
"description": "How it was measured: `app-instrumentation`, `trace`, `recording-analysis`",
|
|
96
|
+
"type": "string"
|
|
97
|
+
},
|
|
98
|
+
"outcome": {
|
|
99
|
+
"description": "`observed` (the default), `timeout` or `failed`. For anything but `observed` the value is how long the observation waited: at least that much, so it counts against a budget and is never dropped",
|
|
100
|
+
"type": "string",
|
|
101
|
+
"minLength": 1
|
|
102
|
+
},
|
|
103
|
+
"instrumentation": {
|
|
104
|
+
"description": "The version or method of the measurement. A change of it between two sets of observations is disclosed when they are compared",
|
|
105
|
+
"type": "string"
|
|
106
|
+
},
|
|
107
|
+
"labels": {
|
|
108
|
+
"description": "What the observation is comparable with: `device`, `build`, `network`. `device` and `build` group the observations and, when two groups differ in the others, the comparison says so",
|
|
109
|
+
"type": "object",
|
|
110
|
+
"propertyNames": {
|
|
111
|
+
"type": "string"
|
|
112
|
+
},
|
|
113
|
+
"additionalProperties": {
|
|
114
|
+
"type": "string"
|
|
115
|
+
}
|
|
61
116
|
}
|
|
62
117
|
},
|
|
63
118
|
"required": [
|
|
@@ -57,16 +57,74 @@
|
|
|
57
57
|
"type": "object",
|
|
58
58
|
"properties": {
|
|
59
59
|
"name": {
|
|
60
|
-
"type": "string"
|
|
60
|
+
"type": "string",
|
|
61
|
+
"minLength": 1
|
|
61
62
|
},
|
|
62
63
|
"value": {
|
|
63
|
-
"type": "number"
|
|
64
|
+
"type": "number",
|
|
65
|
+
"description": "A finite number"
|
|
64
66
|
},
|
|
65
67
|
"unit": {
|
|
66
68
|
"type": "string"
|
|
67
69
|
},
|
|
68
70
|
"limit": {
|
|
71
|
+
"description": "The allowance, or budget. A measurement over it is reported, and never fails the check by itself",
|
|
69
72
|
"type": "number"
|
|
73
|
+
},
|
|
74
|
+
"kind": {
|
|
75
|
+
"description": "What the number is, in an open vocabulary. `product-latency`: a user-visible response time between `from` and `to`. Absent: just a number, never read as product latency",
|
|
76
|
+
"type": "string",
|
|
77
|
+
"minLength": 1
|
|
78
|
+
},
|
|
79
|
+
"from": {
|
|
80
|
+
"description": "The event the interval starts at. Without both `from` and `to` a latency is shown but no product claim is made from it",
|
|
81
|
+
"type": "string",
|
|
82
|
+
"minLength": 1
|
|
83
|
+
},
|
|
84
|
+
"to": {
|
|
85
|
+
"description": "The event the interval ends at",
|
|
86
|
+
"type": "string",
|
|
87
|
+
"minLength": 1
|
|
88
|
+
},
|
|
89
|
+
"intended": {
|
|
90
|
+
"description": "The interval the name of the measurement claims, when what was measured is only part of it. If `intended.to` differs from `to` (or `intended.from` from `from`) the measurement is shown as partial, never as the complete interval",
|
|
91
|
+
"type": "object",
|
|
92
|
+
"properties": {
|
|
93
|
+
"from": {
|
|
94
|
+
"description": "The event the interval starts at: `end of speech`, `submit pressed`",
|
|
95
|
+
"type": "string",
|
|
96
|
+
"minLength": 1
|
|
97
|
+
},
|
|
98
|
+
"to": {
|
|
99
|
+
"description": "The event the interval ends at: `audible response`, `confirmation visible`",
|
|
100
|
+
"type": "string",
|
|
101
|
+
"minLength": 1
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"additionalProperties": {}
|
|
105
|
+
},
|
|
106
|
+
"source": {
|
|
107
|
+
"description": "How it was measured: `app-instrumentation`, `trace`, `recording-analysis`",
|
|
108
|
+
"type": "string"
|
|
109
|
+
},
|
|
110
|
+
"outcome": {
|
|
111
|
+
"description": "`observed` (the default), `timeout` or `failed`. For anything but `observed` the value is how long the observation waited: at least that much, so it counts against a budget and is never dropped",
|
|
112
|
+
"type": "string",
|
|
113
|
+
"minLength": 1
|
|
114
|
+
},
|
|
115
|
+
"instrumentation": {
|
|
116
|
+
"description": "The version or method of the measurement. A change of it between two sets of observations is disclosed when they are compared",
|
|
117
|
+
"type": "string"
|
|
118
|
+
},
|
|
119
|
+
"labels": {
|
|
120
|
+
"description": "What the observation is comparable with: `device`, `build`, `network`. `device` and `build` group the observations and, when two groups differ in the others, the comparison says so",
|
|
121
|
+
"type": "object",
|
|
122
|
+
"propertyNames": {
|
|
123
|
+
"type": "string"
|
|
124
|
+
},
|
|
125
|
+
"additionalProperties": {
|
|
126
|
+
"type": "string"
|
|
127
|
+
}
|
|
70
128
|
}
|
|
71
129
|
},
|
|
72
130
|
"required": [
|
|
@@ -57,16 +57,74 @@
|
|
|
57
57
|
"type": "object",
|
|
58
58
|
"properties": {
|
|
59
59
|
"name": {
|
|
60
|
-
"type": "string"
|
|
60
|
+
"type": "string",
|
|
61
|
+
"minLength": 1
|
|
61
62
|
},
|
|
62
63
|
"value": {
|
|
63
|
-
"type": "number"
|
|
64
|
+
"type": "number",
|
|
65
|
+
"description": "A finite number"
|
|
64
66
|
},
|
|
65
67
|
"unit": {
|
|
66
68
|
"type": "string"
|
|
67
69
|
},
|
|
68
70
|
"limit": {
|
|
71
|
+
"description": "The allowance, or budget. A measurement over it is reported, and never fails the check by itself",
|
|
69
72
|
"type": "number"
|
|
73
|
+
},
|
|
74
|
+
"kind": {
|
|
75
|
+
"description": "What the number is, in an open vocabulary. `product-latency`: a user-visible response time between `from` and `to`. Absent: just a number, never read as product latency",
|
|
76
|
+
"type": "string",
|
|
77
|
+
"minLength": 1
|
|
78
|
+
},
|
|
79
|
+
"from": {
|
|
80
|
+
"description": "The event the interval starts at. Without both `from` and `to` a latency is shown but no product claim is made from it",
|
|
81
|
+
"type": "string",
|
|
82
|
+
"minLength": 1
|
|
83
|
+
},
|
|
84
|
+
"to": {
|
|
85
|
+
"description": "The event the interval ends at",
|
|
86
|
+
"type": "string",
|
|
87
|
+
"minLength": 1
|
|
88
|
+
},
|
|
89
|
+
"intended": {
|
|
90
|
+
"description": "The interval the name of the measurement claims, when what was measured is only part of it. If `intended.to` differs from `to` (or `intended.from` from `from`) the measurement is shown as partial, never as the complete interval",
|
|
91
|
+
"type": "object",
|
|
92
|
+
"properties": {
|
|
93
|
+
"from": {
|
|
94
|
+
"description": "The event the interval starts at: `end of speech`, `submit pressed`",
|
|
95
|
+
"type": "string",
|
|
96
|
+
"minLength": 1
|
|
97
|
+
},
|
|
98
|
+
"to": {
|
|
99
|
+
"description": "The event the interval ends at: `audible response`, `confirmation visible`",
|
|
100
|
+
"type": "string",
|
|
101
|
+
"minLength": 1
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"additionalProperties": {}
|
|
105
|
+
},
|
|
106
|
+
"source": {
|
|
107
|
+
"description": "How it was measured: `app-instrumentation`, `trace`, `recording-analysis`",
|
|
108
|
+
"type": "string"
|
|
109
|
+
},
|
|
110
|
+
"outcome": {
|
|
111
|
+
"description": "`observed` (the default), `timeout` or `failed`. For anything but `observed` the value is how long the observation waited: at least that much, so it counts against a budget and is never dropped",
|
|
112
|
+
"type": "string",
|
|
113
|
+
"minLength": 1
|
|
114
|
+
},
|
|
115
|
+
"instrumentation": {
|
|
116
|
+
"description": "The version or method of the measurement. A change of it between two sets of observations is disclosed when they are compared",
|
|
117
|
+
"type": "string"
|
|
118
|
+
},
|
|
119
|
+
"labels": {
|
|
120
|
+
"description": "What the observation is comparable with: `device`, `build`, `network`. `device` and `build` group the observations and, when two groups differ in the others, the comparison says so",
|
|
121
|
+
"type": "object",
|
|
122
|
+
"propertyNames": {
|
|
123
|
+
"type": "string"
|
|
124
|
+
},
|
|
125
|
+
"additionalProperties": {
|
|
126
|
+
"type": "string"
|
|
127
|
+
}
|
|
70
128
|
}
|
|
71
129
|
},
|
|
72
130
|
"required": [
|
|
@@ -48,16 +48,74 @@
|
|
|
48
48
|
"type": "object",
|
|
49
49
|
"properties": {
|
|
50
50
|
"name": {
|
|
51
|
-
"type": "string"
|
|
51
|
+
"type": "string",
|
|
52
|
+
"minLength": 1
|
|
52
53
|
},
|
|
53
54
|
"value": {
|
|
54
|
-
"type": "number"
|
|
55
|
+
"type": "number",
|
|
56
|
+
"description": "A finite number"
|
|
55
57
|
},
|
|
56
58
|
"unit": {
|
|
57
59
|
"type": "string"
|
|
58
60
|
},
|
|
59
61
|
"limit": {
|
|
62
|
+
"description": "The allowance, or budget. A measurement over it is reported, and never fails the check by itself",
|
|
60
63
|
"type": "number"
|
|
64
|
+
},
|
|
65
|
+
"kind": {
|
|
66
|
+
"description": "What the number is, in an open vocabulary. `product-latency`: a user-visible response time between `from` and `to`. Absent: just a number, never read as product latency",
|
|
67
|
+
"type": "string",
|
|
68
|
+
"minLength": 1
|
|
69
|
+
},
|
|
70
|
+
"from": {
|
|
71
|
+
"description": "The event the interval starts at. Without both `from` and `to` a latency is shown but no product claim is made from it",
|
|
72
|
+
"type": "string",
|
|
73
|
+
"minLength": 1
|
|
74
|
+
},
|
|
75
|
+
"to": {
|
|
76
|
+
"description": "The event the interval ends at",
|
|
77
|
+
"type": "string",
|
|
78
|
+
"minLength": 1
|
|
79
|
+
},
|
|
80
|
+
"intended": {
|
|
81
|
+
"description": "The interval the name of the measurement claims, when what was measured is only part of it. If `intended.to` differs from `to` (or `intended.from` from `from`) the measurement is shown as partial, never as the complete interval",
|
|
82
|
+
"type": "object",
|
|
83
|
+
"properties": {
|
|
84
|
+
"from": {
|
|
85
|
+
"description": "The event the interval starts at: `end of speech`, `submit pressed`",
|
|
86
|
+
"type": "string",
|
|
87
|
+
"minLength": 1
|
|
88
|
+
},
|
|
89
|
+
"to": {
|
|
90
|
+
"description": "The event the interval ends at: `audible response`, `confirmation visible`",
|
|
91
|
+
"type": "string",
|
|
92
|
+
"minLength": 1
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"additionalProperties": {}
|
|
96
|
+
},
|
|
97
|
+
"source": {
|
|
98
|
+
"description": "How it was measured: `app-instrumentation`, `trace`, `recording-analysis`",
|
|
99
|
+
"type": "string"
|
|
100
|
+
},
|
|
101
|
+
"outcome": {
|
|
102
|
+
"description": "`observed` (the default), `timeout` or `failed`. For anything but `observed` the value is how long the observation waited: at least that much, so it counts against a budget and is never dropped",
|
|
103
|
+
"type": "string",
|
|
104
|
+
"minLength": 1
|
|
105
|
+
},
|
|
106
|
+
"instrumentation": {
|
|
107
|
+
"description": "The version or method of the measurement. A change of it between two sets of observations is disclosed when they are compared",
|
|
108
|
+
"type": "string"
|
|
109
|
+
},
|
|
110
|
+
"labels": {
|
|
111
|
+
"description": "What the observation is comparable with: `device`, `build`, `network`. `device` and `build` group the observations and, when two groups differ in the others, the comparison says so",
|
|
112
|
+
"type": "object",
|
|
113
|
+
"propertyNames": {
|
|
114
|
+
"type": "string"
|
|
115
|
+
},
|
|
116
|
+
"additionalProperties": {
|
|
117
|
+
"type": "string"
|
|
118
|
+
}
|
|
61
119
|
}
|
|
62
120
|
},
|
|
63
121
|
"required": [
|
|
@@ -224,8 +224,63 @@
|
|
|
224
224
|
"type": "string"
|
|
225
225
|
},
|
|
226
226
|
"limit": {
|
|
227
|
-
"description": "The allowance. A measurement over it is reported, and never fails the check by itself",
|
|
227
|
+
"description": "The allowance, or budget. A measurement over it is reported, and never fails the check by itself",
|
|
228
228
|
"type": "number"
|
|
229
|
+
},
|
|
230
|
+
"kind": {
|
|
231
|
+
"description": "What the number is, in an open vocabulary. `product-latency`: a user-visible response time between `from` and `to`. Absent: just a number, never read as product latency",
|
|
232
|
+
"type": "string",
|
|
233
|
+
"minLength": 1
|
|
234
|
+
},
|
|
235
|
+
"from": {
|
|
236
|
+
"description": "The event the interval starts at. Without both `from` and `to` a latency is shown but no product claim is made from it",
|
|
237
|
+
"type": "string",
|
|
238
|
+
"minLength": 1
|
|
239
|
+
},
|
|
240
|
+
"to": {
|
|
241
|
+
"description": "The event the interval ends at",
|
|
242
|
+
"type": "string",
|
|
243
|
+
"minLength": 1
|
|
244
|
+
},
|
|
245
|
+
"intended": {
|
|
246
|
+
"description": "The interval the name of the measurement claims, when what was measured is only part of it. If `intended.to` differs from `to` (or `intended.from` from `from`) the measurement is shown as partial, never as the complete interval",
|
|
247
|
+
"type": "object",
|
|
248
|
+
"properties": {
|
|
249
|
+
"from": {
|
|
250
|
+
"description": "The event the interval starts at: `end of speech`, `submit pressed`",
|
|
251
|
+
"type": "string",
|
|
252
|
+
"minLength": 1
|
|
253
|
+
},
|
|
254
|
+
"to": {
|
|
255
|
+
"description": "The event the interval ends at: `audible response`, `confirmation visible`",
|
|
256
|
+
"type": "string",
|
|
257
|
+
"minLength": 1
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
"additionalProperties": {}
|
|
261
|
+
},
|
|
262
|
+
"source": {
|
|
263
|
+
"description": "How it was measured: `app-instrumentation`, `trace`, `recording-analysis`",
|
|
264
|
+
"type": "string"
|
|
265
|
+
},
|
|
266
|
+
"outcome": {
|
|
267
|
+
"description": "`observed` (the default), `timeout` or `failed`. For anything but `observed` the value is how long the observation waited: at least that much, so it counts against a budget and is never dropped",
|
|
268
|
+
"type": "string",
|
|
269
|
+
"minLength": 1
|
|
270
|
+
},
|
|
271
|
+
"instrumentation": {
|
|
272
|
+
"description": "The version or method of the measurement. A change of it between two sets of observations is disclosed when they are compared",
|
|
273
|
+
"type": "string"
|
|
274
|
+
},
|
|
275
|
+
"labels": {
|
|
276
|
+
"description": "What the observation is comparable with: `device`, `build`, `network`. `device` and `build` group the observations and, when two groups differ in the others, the comparison says so",
|
|
277
|
+
"type": "object",
|
|
278
|
+
"propertyNames": {
|
|
279
|
+
"type": "string"
|
|
280
|
+
},
|
|
281
|
+
"additionalProperties": {
|
|
282
|
+
"type": "string"
|
|
283
|
+
}
|
|
229
284
|
}
|
|
230
285
|
},
|
|
231
286
|
"required": [
|
|
@@ -2355,8 +2410,63 @@
|
|
|
2355
2410
|
"type": "string"
|
|
2356
2411
|
},
|
|
2357
2412
|
"limit": {
|
|
2358
|
-
"description": "The allowance. A measurement over it is reported, and never fails the check by itself",
|
|
2413
|
+
"description": "The allowance, or budget. A measurement over it is reported, and never fails the check by itself",
|
|
2359
2414
|
"type": "number"
|
|
2415
|
+
},
|
|
2416
|
+
"kind": {
|
|
2417
|
+
"description": "What the number is, in an open vocabulary. `product-latency`: a user-visible response time between `from` and `to`. Absent: just a number, never read as product latency",
|
|
2418
|
+
"type": "string",
|
|
2419
|
+
"minLength": 1
|
|
2420
|
+
},
|
|
2421
|
+
"from": {
|
|
2422
|
+
"description": "The event the interval starts at. Without both `from` and `to` a latency is shown but no product claim is made from it",
|
|
2423
|
+
"type": "string",
|
|
2424
|
+
"minLength": 1
|
|
2425
|
+
},
|
|
2426
|
+
"to": {
|
|
2427
|
+
"description": "The event the interval ends at",
|
|
2428
|
+
"type": "string",
|
|
2429
|
+
"minLength": 1
|
|
2430
|
+
},
|
|
2431
|
+
"intended": {
|
|
2432
|
+
"description": "The interval the name of the measurement claims, when what was measured is only part of it. If `intended.to` differs from `to` (or `intended.from` from `from`) the measurement is shown as partial, never as the complete interval",
|
|
2433
|
+
"type": "object",
|
|
2434
|
+
"properties": {
|
|
2435
|
+
"from": {
|
|
2436
|
+
"description": "The event the interval starts at: `end of speech`, `submit pressed`",
|
|
2437
|
+
"type": "string",
|
|
2438
|
+
"minLength": 1
|
|
2439
|
+
},
|
|
2440
|
+
"to": {
|
|
2441
|
+
"description": "The event the interval ends at: `audible response`, `confirmation visible`",
|
|
2442
|
+
"type": "string",
|
|
2443
|
+
"minLength": 1
|
|
2444
|
+
}
|
|
2445
|
+
},
|
|
2446
|
+
"additionalProperties": {}
|
|
2447
|
+
},
|
|
2448
|
+
"source": {
|
|
2449
|
+
"description": "How it was measured: `app-instrumentation`, `trace`, `recording-analysis`",
|
|
2450
|
+
"type": "string"
|
|
2451
|
+
},
|
|
2452
|
+
"outcome": {
|
|
2453
|
+
"description": "`observed` (the default), `timeout` or `failed`. For anything but `observed` the value is how long the observation waited: at least that much, so it counts against a budget and is never dropped",
|
|
2454
|
+
"type": "string",
|
|
2455
|
+
"minLength": 1
|
|
2456
|
+
},
|
|
2457
|
+
"instrumentation": {
|
|
2458
|
+
"description": "The version or method of the measurement. A change of it between two sets of observations is disclosed when they are compared",
|
|
2459
|
+
"type": "string"
|
|
2460
|
+
},
|
|
2461
|
+
"labels": {
|
|
2462
|
+
"description": "What the observation is comparable with: `device`, `build`, `network`. `device` and `build` group the observations and, when two groups differ in the others, the comparison says so",
|
|
2463
|
+
"type": "object",
|
|
2464
|
+
"propertyNames": {
|
|
2465
|
+
"type": "string"
|
|
2466
|
+
},
|
|
2467
|
+
"additionalProperties": {
|
|
2468
|
+
"type": "string"
|
|
2469
|
+
}
|
|
2360
2470
|
}
|
|
2361
2471
|
},
|
|
2362
2472
|
"required": [
|
|
@@ -56,8 +56,63 @@
|
|
|
56
56
|
"type": "string"
|
|
57
57
|
},
|
|
58
58
|
"limit": {
|
|
59
|
-
"description": "The allowance. A measurement over it is reported, and never fails the check by itself",
|
|
59
|
+
"description": "The allowance, or budget. A measurement over it is reported, and never fails the check by itself",
|
|
60
60
|
"type": "number"
|
|
61
|
+
},
|
|
62
|
+
"kind": {
|
|
63
|
+
"description": "What the number is, in an open vocabulary. `product-latency`: a user-visible response time between `from` and `to`. Absent: just a number, never read as product latency",
|
|
64
|
+
"type": "string",
|
|
65
|
+
"minLength": 1
|
|
66
|
+
},
|
|
67
|
+
"from": {
|
|
68
|
+
"description": "The event the interval starts at. Without both `from` and `to` a latency is shown but no product claim is made from it",
|
|
69
|
+
"type": "string",
|
|
70
|
+
"minLength": 1
|
|
71
|
+
},
|
|
72
|
+
"to": {
|
|
73
|
+
"description": "The event the interval ends at",
|
|
74
|
+
"type": "string",
|
|
75
|
+
"minLength": 1
|
|
76
|
+
},
|
|
77
|
+
"intended": {
|
|
78
|
+
"description": "The interval the name of the measurement claims, when what was measured is only part of it. If `intended.to` differs from `to` (or `intended.from` from `from`) the measurement is shown as partial, never as the complete interval",
|
|
79
|
+
"type": "object",
|
|
80
|
+
"properties": {
|
|
81
|
+
"from": {
|
|
82
|
+
"description": "The event the interval starts at: `end of speech`, `submit pressed`",
|
|
83
|
+
"type": "string",
|
|
84
|
+
"minLength": 1
|
|
85
|
+
},
|
|
86
|
+
"to": {
|
|
87
|
+
"description": "The event the interval ends at: `audible response`, `confirmation visible`",
|
|
88
|
+
"type": "string",
|
|
89
|
+
"minLength": 1
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
"additionalProperties": {}
|
|
93
|
+
},
|
|
94
|
+
"source": {
|
|
95
|
+
"description": "How it was measured: `app-instrumentation`, `trace`, `recording-analysis`",
|
|
96
|
+
"type": "string"
|
|
97
|
+
},
|
|
98
|
+
"outcome": {
|
|
99
|
+
"description": "`observed` (the default), `timeout` or `failed`. For anything but `observed` the value is how long the observation waited: at least that much, so it counts against a budget and is never dropped",
|
|
100
|
+
"type": "string",
|
|
101
|
+
"minLength": 1
|
|
102
|
+
},
|
|
103
|
+
"instrumentation": {
|
|
104
|
+
"description": "The version or method of the measurement. A change of it between two sets of observations is disclosed when they are compared",
|
|
105
|
+
"type": "string"
|
|
106
|
+
},
|
|
107
|
+
"labels": {
|
|
108
|
+
"description": "What the observation is comparable with: `device`, `build`, `network`. `device` and `build` group the observations and, when two groups differ in the others, the comparison says so",
|
|
109
|
+
"type": "object",
|
|
110
|
+
"propertyNames": {
|
|
111
|
+
"type": "string"
|
|
112
|
+
},
|
|
113
|
+
"additionalProperties": {
|
|
114
|
+
"type": "string"
|
|
115
|
+
}
|
|
61
116
|
}
|
|
62
117
|
},
|
|
63
118
|
"required": [
|
|
@@ -1077,6 +1077,91 @@
|
|
|
1077
1077
|
"roles"
|
|
1078
1078
|
],
|
|
1079
1079
|
"additionalProperties": {}
|
|
1080
|
+
},
|
|
1081
|
+
"latency": {
|
|
1082
|
+
"description": "Its product-latency measurements (`kind: product-latency`), when it recorded any. Separate from `durationMs`, which is how long the test took",
|
|
1083
|
+
"type": "array",
|
|
1084
|
+
"items": {
|
|
1085
|
+
"type": "object",
|
|
1086
|
+
"properties": {
|
|
1087
|
+
"name": {
|
|
1088
|
+
"type": "string",
|
|
1089
|
+
"minLength": 1
|
|
1090
|
+
},
|
|
1091
|
+
"value": {
|
|
1092
|
+
"type": "number",
|
|
1093
|
+
"description": "A finite number"
|
|
1094
|
+
},
|
|
1095
|
+
"unit": {
|
|
1096
|
+
"type": "string"
|
|
1097
|
+
},
|
|
1098
|
+
"limit": {
|
|
1099
|
+
"description": "The allowance, or budget. A measurement over it is reported, and never fails the check by itself",
|
|
1100
|
+
"type": "number"
|
|
1101
|
+
},
|
|
1102
|
+
"kind": {
|
|
1103
|
+
"description": "What the number is, in an open vocabulary. `product-latency`: a user-visible response time between `from` and `to`. Absent: just a number, never read as product latency",
|
|
1104
|
+
"type": "string",
|
|
1105
|
+
"minLength": 1
|
|
1106
|
+
},
|
|
1107
|
+
"from": {
|
|
1108
|
+
"description": "The event the interval starts at. Without both `from` and `to` a latency is shown but no product claim is made from it",
|
|
1109
|
+
"type": "string",
|
|
1110
|
+
"minLength": 1
|
|
1111
|
+
},
|
|
1112
|
+
"to": {
|
|
1113
|
+
"description": "The event the interval ends at",
|
|
1114
|
+
"type": "string",
|
|
1115
|
+
"minLength": 1
|
|
1116
|
+
},
|
|
1117
|
+
"intended": {
|
|
1118
|
+
"description": "The interval the name of the measurement claims, when what was measured is only part of it. If `intended.to` differs from `to` (or `intended.from` from `from`) the measurement is shown as partial, never as the complete interval",
|
|
1119
|
+
"type": "object",
|
|
1120
|
+
"properties": {
|
|
1121
|
+
"from": {
|
|
1122
|
+
"description": "The event the interval starts at: `end of speech`, `submit pressed`",
|
|
1123
|
+
"type": "string",
|
|
1124
|
+
"minLength": 1
|
|
1125
|
+
},
|
|
1126
|
+
"to": {
|
|
1127
|
+
"description": "The event the interval ends at: `audible response`, `confirmation visible`",
|
|
1128
|
+
"type": "string",
|
|
1129
|
+
"minLength": 1
|
|
1130
|
+
}
|
|
1131
|
+
},
|
|
1132
|
+
"additionalProperties": {}
|
|
1133
|
+
},
|
|
1134
|
+
"source": {
|
|
1135
|
+
"description": "How it was measured: `app-instrumentation`, `trace`, `recording-analysis`",
|
|
1136
|
+
"type": "string"
|
|
1137
|
+
},
|
|
1138
|
+
"outcome": {
|
|
1139
|
+
"description": "`observed` (the default), `timeout` or `failed`. For anything but `observed` the value is how long the observation waited: at least that much, so it counts against a budget and is never dropped",
|
|
1140
|
+
"type": "string",
|
|
1141
|
+
"minLength": 1
|
|
1142
|
+
},
|
|
1143
|
+
"instrumentation": {
|
|
1144
|
+
"description": "The version or method of the measurement. A change of it between two sets of observations is disclosed when they are compared",
|
|
1145
|
+
"type": "string"
|
|
1146
|
+
},
|
|
1147
|
+
"labels": {
|
|
1148
|
+
"description": "What the observation is comparable with: `device`, `build`, `network`. `device` and `build` group the observations and, when two groups differ in the others, the comparison says so",
|
|
1149
|
+
"type": "object",
|
|
1150
|
+
"propertyNames": {
|
|
1151
|
+
"type": "string"
|
|
1152
|
+
},
|
|
1153
|
+
"additionalProperties": {
|
|
1154
|
+
"type": "string"
|
|
1155
|
+
}
|
|
1156
|
+
}
|
|
1157
|
+
},
|
|
1158
|
+
"required": [
|
|
1159
|
+
"name",
|
|
1160
|
+
"value",
|
|
1161
|
+
"unit"
|
|
1162
|
+
],
|
|
1163
|
+
"additionalProperties": {}
|
|
1164
|
+
}
|
|
1080
1165
|
}
|
|
1081
1166
|
},
|
|
1082
1167
|
"required": [
|