@riddledc/riddle-proof 0.7.61 → 0.7.62
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 +6 -0
- package/dist/{chunk-T66DWLBE.js → chunk-MIHU2AWC.js} +158 -0
- package/dist/cli.cjs +158 -0
- package/dist/cli.js +1 -1
- package/dist/index.cjs +158 -0
- package/dist/index.js +1 -1
- package/dist/profile.cjs +158 -0
- package/dist/profile.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -284,6 +284,12 @@ and setup assertions then execute in that frame context and record
|
|
|
284
284
|
Use `frame_index` / `frameIndex` when more than one matching iframe is present;
|
|
285
285
|
it defaults to the first frame.
|
|
286
286
|
|
|
287
|
+
Profiles with setup actions also include a compact
|
|
288
|
+
`setup_actions_succeeded.evidence.setup_summary`. The summary groups each
|
|
289
|
+
viewport's final route, final URL, action counts, clicked targets, iframe URLs,
|
|
290
|
+
compact text samples, and failures so setup-heavy clickthrough or iframe proofs
|
|
291
|
+
can be reviewed without reading every raw setup-action result.
|
|
292
|
+
|
|
287
293
|
`target.timeout_sec` is optional. Use it for known-heavy profile targets so the
|
|
288
294
|
profile carries its own hosted Riddle worker budget; an explicit CLI `--timeout`
|
|
289
295
|
still overrides the profile value for one-off runs.
|
|
@@ -175,6 +175,78 @@ function toJsonValue(value) {
|
|
|
175
175
|
if (isRecord(value)) return Object.fromEntries(Object.entries(value).map(([key, child]) => [key, toJsonValue(child)]));
|
|
176
176
|
return String(value);
|
|
177
177
|
}
|
|
178
|
+
function compactProfileSetupSummaryText(value, limit = 160) {
|
|
179
|
+
const text = typeof value === "string" ? value.replace(/\s+/g, " ").trim() : "";
|
|
180
|
+
if (!text) return void 0;
|
|
181
|
+
if (text.length <= limit) return text;
|
|
182
|
+
return `${text.slice(0, Math.max(0, limit - 15)).trimEnd()}... (${text.length} chars)`;
|
|
183
|
+
}
|
|
184
|
+
function profileSetupResultAction(value) {
|
|
185
|
+
const action = value.action ?? value.type;
|
|
186
|
+
return typeof action === "string" && action ? action : "unknown";
|
|
187
|
+
}
|
|
188
|
+
function profileSetupFrameUrls(viewport) {
|
|
189
|
+
const urls = [];
|
|
190
|
+
const frames = viewport.frames || {};
|
|
191
|
+
for (const container of Object.values(frames)) {
|
|
192
|
+
if (!isRecord(container) || !Array.isArray(container.frames)) continue;
|
|
193
|
+
for (const frame of container.frames) {
|
|
194
|
+
if (!isRecord(frame)) continue;
|
|
195
|
+
const url = typeof frame.url === "string" ? frame.url : void 0;
|
|
196
|
+
if (url && !urls.includes(url)) urls.push(url);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return urls.slice(0, 10);
|
|
200
|
+
}
|
|
201
|
+
function profileSetupActionCounts(results) {
|
|
202
|
+
const counts = {};
|
|
203
|
+
for (const result of results) {
|
|
204
|
+
const action = profileSetupResultAction(result);
|
|
205
|
+
counts[action] = (counts[action] || 0) + 1;
|
|
206
|
+
}
|
|
207
|
+
return toJsonValue(counts);
|
|
208
|
+
}
|
|
209
|
+
function profileSetupSummary(viewports, actionCount) {
|
|
210
|
+
return toJsonValue({
|
|
211
|
+
viewport_count: viewports.length,
|
|
212
|
+
action_count: actionCount ?? null,
|
|
213
|
+
viewports: viewports.map((viewport) => {
|
|
214
|
+
const results = viewport.setup_action_results || [];
|
|
215
|
+
const failed = results.filter((result) => result.ok === false);
|
|
216
|
+
const clicked = results.filter((result) => profileSetupResultAction(result) === "click" && result.ok !== false).map((result) => ({
|
|
217
|
+
ordinal: result.ordinal ?? null,
|
|
218
|
+
selector: result.selector ?? null,
|
|
219
|
+
frame_selector: result.frame_selector ?? null,
|
|
220
|
+
text: compactProfileSetupSummaryText(result.text)
|
|
221
|
+
})).slice(0, 8);
|
|
222
|
+
const text_samples = results.filter((result) => result.ok !== false && typeof result.text === "string" && (profileSetupResultAction(result) === "assert_text_visible" || profileSetupResultAction(result) === "assert_text_absent" || profileSetupResultAction(result) === "wait_for_text")).map((result) => ({
|
|
223
|
+
ordinal: result.ordinal ?? null,
|
|
224
|
+
action: profileSetupResultAction(result),
|
|
225
|
+
frame_selector: result.frame_selector ?? null,
|
|
226
|
+
text: compactProfileSetupSummaryText(result.text)
|
|
227
|
+
})).filter((item) => item.text).slice(-6);
|
|
228
|
+
return {
|
|
229
|
+
name: viewport.name,
|
|
230
|
+
ok: (actionCount === void 0 ? results.length > 0 : results.length >= actionCount) && failed.length === 0,
|
|
231
|
+
result_count: results.length,
|
|
232
|
+
observed_path: viewport.route?.observed ?? null,
|
|
233
|
+
final_url: viewport.url ?? null,
|
|
234
|
+
action_counts: profileSetupActionCounts(results),
|
|
235
|
+
frame_action_count: results.filter((result) => result.frame_selector).length,
|
|
236
|
+
frame_urls: profileSetupFrameUrls(viewport),
|
|
237
|
+
clicked,
|
|
238
|
+
text_samples,
|
|
239
|
+
failed: failed.map((result) => ({
|
|
240
|
+
ordinal: result.ordinal ?? null,
|
|
241
|
+
action: profileSetupResultAction(result),
|
|
242
|
+
selector: result.selector ?? null,
|
|
243
|
+
frame_selector: result.frame_selector ?? null,
|
|
244
|
+
reason: result.reason ?? result.error ?? null
|
|
245
|
+
}))
|
|
246
|
+
};
|
|
247
|
+
})
|
|
248
|
+
});
|
|
249
|
+
}
|
|
178
250
|
function normalizeName(value, fallback) {
|
|
179
251
|
const name = stringValue(value) || fallback;
|
|
180
252
|
return name.replace(/\s+/g, " ").trim();
|
|
@@ -1281,6 +1353,7 @@ function assessSetupActionsFromEvidence(profile, evidence) {
|
|
|
1281
1353
|
ok: (viewport.setup_action_results || []).length >= actionCount && (viewport.setup_action_results || []).every((result) => result.ok !== false),
|
|
1282
1354
|
result_count: (viewport.setup_action_results || []).length
|
|
1283
1355
|
})),
|
|
1356
|
+
setup_summary: profileSetupSummary(viewports, actionCount),
|
|
1284
1357
|
failed
|
|
1285
1358
|
},
|
|
1286
1359
|
message: failed.length ? `Setup actions failed in ${failed.length} viewport action(s).` : void 0
|
|
@@ -1694,6 +1767,90 @@ function requiredNetworkMockHitCount(mock) {
|
|
|
1694
1767
|
if (Array.isArray(mock.responses) && mock.responses.length) return mock.responses.length;
|
|
1695
1768
|
return 1;
|
|
1696
1769
|
}
|
|
1770
|
+
function compactProfileSetupSummaryText(value, limit) {
|
|
1771
|
+
limit = limit || 160;
|
|
1772
|
+
const text = typeof value === "string" ? value.replace(/\\s+/g, " ").trim() : "";
|
|
1773
|
+
if (!text) return undefined;
|
|
1774
|
+
if (text.length <= limit) return text;
|
|
1775
|
+
return text.slice(0, Math.max(0, limit - 15)).trimEnd() + "... (" + text.length + " chars)";
|
|
1776
|
+
}
|
|
1777
|
+
function profileSetupResultAction(result) {
|
|
1778
|
+
const action = result && (result.action || result.type);
|
|
1779
|
+
return typeof action === "string" && action ? action : "unknown";
|
|
1780
|
+
}
|
|
1781
|
+
function profileSetupFrameUrls(viewport) {
|
|
1782
|
+
const urls = [];
|
|
1783
|
+
const frames = viewport && viewport.frames || {};
|
|
1784
|
+
for (const container of Object.values(frames)) {
|
|
1785
|
+
if (!container || typeof container !== "object" || Array.isArray(container) || !Array.isArray(container.frames)) continue;
|
|
1786
|
+
for (const frame of container.frames) {
|
|
1787
|
+
if (!frame || typeof frame !== "object" || Array.isArray(frame)) continue;
|
|
1788
|
+
const url = typeof frame.url === "string" ? frame.url : null;
|
|
1789
|
+
if (url && !urls.includes(url)) urls.push(url);
|
|
1790
|
+
}
|
|
1791
|
+
}
|
|
1792
|
+
return urls.slice(0, 10);
|
|
1793
|
+
}
|
|
1794
|
+
function profileSetupActionCounts(results) {
|
|
1795
|
+
const counts = {};
|
|
1796
|
+
for (const result of results || []) {
|
|
1797
|
+
const action = profileSetupResultAction(result);
|
|
1798
|
+
counts[action] = (counts[action] || 0) + 1;
|
|
1799
|
+
}
|
|
1800
|
+
return counts;
|
|
1801
|
+
}
|
|
1802
|
+
function profileSetupSummary(viewports, actionCount) {
|
|
1803
|
+
return {
|
|
1804
|
+
viewport_count: (viewports || []).length,
|
|
1805
|
+
action_count: actionCount ?? null,
|
|
1806
|
+
viewports: (viewports || []).map((viewport) => {
|
|
1807
|
+
const results = viewport.setup_action_results || [];
|
|
1808
|
+
const failed = results.filter((result) => result && result.ok === false);
|
|
1809
|
+
const clicked = results
|
|
1810
|
+
.filter((result) => result && profileSetupResultAction(result) === "click" && result.ok !== false)
|
|
1811
|
+
.map((result) => ({
|
|
1812
|
+
ordinal: result.ordinal ?? null,
|
|
1813
|
+
selector: result.selector ?? null,
|
|
1814
|
+
frame_selector: result.frame_selector ?? null,
|
|
1815
|
+
text: compactProfileSetupSummaryText(result.text),
|
|
1816
|
+
}))
|
|
1817
|
+
.slice(0, 8);
|
|
1818
|
+
const textSamples = results
|
|
1819
|
+
.filter((result) => result && result.ok !== false && typeof result.text === "string" && (
|
|
1820
|
+
profileSetupResultAction(result) === "assert_text_visible"
|
|
1821
|
+
|| profileSetupResultAction(result) === "assert_text_absent"
|
|
1822
|
+
|| profileSetupResultAction(result) === "wait_for_text"
|
|
1823
|
+
))
|
|
1824
|
+
.map((result) => ({
|
|
1825
|
+
ordinal: result.ordinal ?? null,
|
|
1826
|
+
action: profileSetupResultAction(result),
|
|
1827
|
+
frame_selector: result.frame_selector ?? null,
|
|
1828
|
+
text: compactProfileSetupSummaryText(result.text),
|
|
1829
|
+
}))
|
|
1830
|
+
.filter((item) => item.text)
|
|
1831
|
+
.slice(-6);
|
|
1832
|
+
return {
|
|
1833
|
+
name: viewport.name,
|
|
1834
|
+
ok: (actionCount === undefined ? results.length > 0 : results.length >= actionCount) && failed.length === 0,
|
|
1835
|
+
result_count: results.length,
|
|
1836
|
+
observed_path: viewport.route && viewport.route.observed || null,
|
|
1837
|
+
final_url: viewport.url || null,
|
|
1838
|
+
action_counts: profileSetupActionCounts(results),
|
|
1839
|
+
frame_action_count: results.filter((result) => result && result.frame_selector).length,
|
|
1840
|
+
frame_urls: profileSetupFrameUrls(viewport),
|
|
1841
|
+
clicked,
|
|
1842
|
+
text_samples: textSamples,
|
|
1843
|
+
failed: failed.map((result) => ({
|
|
1844
|
+
ordinal: result.ordinal ?? null,
|
|
1845
|
+
action: profileSetupResultAction(result),
|
|
1846
|
+
selector: result.selector ?? null,
|
|
1847
|
+
frame_selector: result.frame_selector ?? null,
|
|
1848
|
+
reason: result.reason || result.error || null,
|
|
1849
|
+
})),
|
|
1850
|
+
};
|
|
1851
|
+
}),
|
|
1852
|
+
};
|
|
1853
|
+
}
|
|
1697
1854
|
function assessProfile(profile, evidence) {
|
|
1698
1855
|
const checks = [];
|
|
1699
1856
|
const viewports = evidence.viewports || [];
|
|
@@ -1798,6 +1955,7 @@ function assessProfile(profile, evidence) {
|
|
|
1798
1955
|
&& (viewport.setup_action_results || []).every((result) => !result || result.ok !== false),
|
|
1799
1956
|
result_count: (viewport.setup_action_results || []).length,
|
|
1800
1957
|
})),
|
|
1958
|
+
setup_summary: profileSetupSummary(viewports, actionCount),
|
|
1801
1959
|
failed,
|
|
1802
1960
|
},
|
|
1803
1961
|
message: failed.length ? "Setup actions failed in " + failed.length + " viewport action(s)." : undefined,
|
package/dist/cli.cjs
CHANGED
|
@@ -7048,6 +7048,78 @@ function toJsonValue(value) {
|
|
|
7048
7048
|
if (isRecord(value)) return Object.fromEntries(Object.entries(value).map(([key, child]) => [key, toJsonValue(child)]));
|
|
7049
7049
|
return String(value);
|
|
7050
7050
|
}
|
|
7051
|
+
function compactProfileSetupSummaryText(value, limit = 160) {
|
|
7052
|
+
const text = typeof value === "string" ? value.replace(/\s+/g, " ").trim() : "";
|
|
7053
|
+
if (!text) return void 0;
|
|
7054
|
+
if (text.length <= limit) return text;
|
|
7055
|
+
return `${text.slice(0, Math.max(0, limit - 15)).trimEnd()}... (${text.length} chars)`;
|
|
7056
|
+
}
|
|
7057
|
+
function profileSetupResultAction(value) {
|
|
7058
|
+
const action = value.action ?? value.type;
|
|
7059
|
+
return typeof action === "string" && action ? action : "unknown";
|
|
7060
|
+
}
|
|
7061
|
+
function profileSetupFrameUrls(viewport) {
|
|
7062
|
+
const urls = [];
|
|
7063
|
+
const frames = viewport.frames || {};
|
|
7064
|
+
for (const container of Object.values(frames)) {
|
|
7065
|
+
if (!isRecord(container) || !Array.isArray(container.frames)) continue;
|
|
7066
|
+
for (const frame of container.frames) {
|
|
7067
|
+
if (!isRecord(frame)) continue;
|
|
7068
|
+
const url = typeof frame.url === "string" ? frame.url : void 0;
|
|
7069
|
+
if (url && !urls.includes(url)) urls.push(url);
|
|
7070
|
+
}
|
|
7071
|
+
}
|
|
7072
|
+
return urls.slice(0, 10);
|
|
7073
|
+
}
|
|
7074
|
+
function profileSetupActionCounts(results) {
|
|
7075
|
+
const counts = {};
|
|
7076
|
+
for (const result of results) {
|
|
7077
|
+
const action = profileSetupResultAction(result);
|
|
7078
|
+
counts[action] = (counts[action] || 0) + 1;
|
|
7079
|
+
}
|
|
7080
|
+
return toJsonValue(counts);
|
|
7081
|
+
}
|
|
7082
|
+
function profileSetupSummary(viewports, actionCount) {
|
|
7083
|
+
return toJsonValue({
|
|
7084
|
+
viewport_count: viewports.length,
|
|
7085
|
+
action_count: actionCount ?? null,
|
|
7086
|
+
viewports: viewports.map((viewport) => {
|
|
7087
|
+
const results = viewport.setup_action_results || [];
|
|
7088
|
+
const failed = results.filter((result) => result.ok === false);
|
|
7089
|
+
const clicked = results.filter((result) => profileSetupResultAction(result) === "click" && result.ok !== false).map((result) => ({
|
|
7090
|
+
ordinal: result.ordinal ?? null,
|
|
7091
|
+
selector: result.selector ?? null,
|
|
7092
|
+
frame_selector: result.frame_selector ?? null,
|
|
7093
|
+
text: compactProfileSetupSummaryText(result.text)
|
|
7094
|
+
})).slice(0, 8);
|
|
7095
|
+
const text_samples = results.filter((result) => result.ok !== false && typeof result.text === "string" && (profileSetupResultAction(result) === "assert_text_visible" || profileSetupResultAction(result) === "assert_text_absent" || profileSetupResultAction(result) === "wait_for_text")).map((result) => ({
|
|
7096
|
+
ordinal: result.ordinal ?? null,
|
|
7097
|
+
action: profileSetupResultAction(result),
|
|
7098
|
+
frame_selector: result.frame_selector ?? null,
|
|
7099
|
+
text: compactProfileSetupSummaryText(result.text)
|
|
7100
|
+
})).filter((item) => item.text).slice(-6);
|
|
7101
|
+
return {
|
|
7102
|
+
name: viewport.name,
|
|
7103
|
+
ok: (actionCount === void 0 ? results.length > 0 : results.length >= actionCount) && failed.length === 0,
|
|
7104
|
+
result_count: results.length,
|
|
7105
|
+
observed_path: viewport.route?.observed ?? null,
|
|
7106
|
+
final_url: viewport.url ?? null,
|
|
7107
|
+
action_counts: profileSetupActionCounts(results),
|
|
7108
|
+
frame_action_count: results.filter((result) => result.frame_selector).length,
|
|
7109
|
+
frame_urls: profileSetupFrameUrls(viewport),
|
|
7110
|
+
clicked,
|
|
7111
|
+
text_samples,
|
|
7112
|
+
failed: failed.map((result) => ({
|
|
7113
|
+
ordinal: result.ordinal ?? null,
|
|
7114
|
+
action: profileSetupResultAction(result),
|
|
7115
|
+
selector: result.selector ?? null,
|
|
7116
|
+
frame_selector: result.frame_selector ?? null,
|
|
7117
|
+
reason: result.reason ?? result.error ?? null
|
|
7118
|
+
}))
|
|
7119
|
+
};
|
|
7120
|
+
})
|
|
7121
|
+
});
|
|
7122
|
+
}
|
|
7051
7123
|
function normalizeName(value, fallback) {
|
|
7052
7124
|
const name = stringValue2(value) || fallback;
|
|
7053
7125
|
return name.replace(/\s+/g, " ").trim();
|
|
@@ -8154,6 +8226,7 @@ function assessSetupActionsFromEvidence(profile, evidence) {
|
|
|
8154
8226
|
ok: (viewport.setup_action_results || []).length >= actionCount && (viewport.setup_action_results || []).every((result) => result.ok !== false),
|
|
8155
8227
|
result_count: (viewport.setup_action_results || []).length
|
|
8156
8228
|
})),
|
|
8229
|
+
setup_summary: profileSetupSummary(viewports, actionCount),
|
|
8157
8230
|
failed
|
|
8158
8231
|
},
|
|
8159
8232
|
message: failed.length ? `Setup actions failed in ${failed.length} viewport action(s).` : void 0
|
|
@@ -8551,6 +8624,90 @@ function requiredNetworkMockHitCount(mock) {
|
|
|
8551
8624
|
if (Array.isArray(mock.responses) && mock.responses.length) return mock.responses.length;
|
|
8552
8625
|
return 1;
|
|
8553
8626
|
}
|
|
8627
|
+
function compactProfileSetupSummaryText(value, limit) {
|
|
8628
|
+
limit = limit || 160;
|
|
8629
|
+
const text = typeof value === "string" ? value.replace(/\\s+/g, " ").trim() : "";
|
|
8630
|
+
if (!text) return undefined;
|
|
8631
|
+
if (text.length <= limit) return text;
|
|
8632
|
+
return text.slice(0, Math.max(0, limit - 15)).trimEnd() + "... (" + text.length + " chars)";
|
|
8633
|
+
}
|
|
8634
|
+
function profileSetupResultAction(result) {
|
|
8635
|
+
const action = result && (result.action || result.type);
|
|
8636
|
+
return typeof action === "string" && action ? action : "unknown";
|
|
8637
|
+
}
|
|
8638
|
+
function profileSetupFrameUrls(viewport) {
|
|
8639
|
+
const urls = [];
|
|
8640
|
+
const frames = viewport && viewport.frames || {};
|
|
8641
|
+
for (const container of Object.values(frames)) {
|
|
8642
|
+
if (!container || typeof container !== "object" || Array.isArray(container) || !Array.isArray(container.frames)) continue;
|
|
8643
|
+
for (const frame of container.frames) {
|
|
8644
|
+
if (!frame || typeof frame !== "object" || Array.isArray(frame)) continue;
|
|
8645
|
+
const url = typeof frame.url === "string" ? frame.url : null;
|
|
8646
|
+
if (url && !urls.includes(url)) urls.push(url);
|
|
8647
|
+
}
|
|
8648
|
+
}
|
|
8649
|
+
return urls.slice(0, 10);
|
|
8650
|
+
}
|
|
8651
|
+
function profileSetupActionCounts(results) {
|
|
8652
|
+
const counts = {};
|
|
8653
|
+
for (const result of results || []) {
|
|
8654
|
+
const action = profileSetupResultAction(result);
|
|
8655
|
+
counts[action] = (counts[action] || 0) + 1;
|
|
8656
|
+
}
|
|
8657
|
+
return counts;
|
|
8658
|
+
}
|
|
8659
|
+
function profileSetupSummary(viewports, actionCount) {
|
|
8660
|
+
return {
|
|
8661
|
+
viewport_count: (viewports || []).length,
|
|
8662
|
+
action_count: actionCount ?? null,
|
|
8663
|
+
viewports: (viewports || []).map((viewport) => {
|
|
8664
|
+
const results = viewport.setup_action_results || [];
|
|
8665
|
+
const failed = results.filter((result) => result && result.ok === false);
|
|
8666
|
+
const clicked = results
|
|
8667
|
+
.filter((result) => result && profileSetupResultAction(result) === "click" && result.ok !== false)
|
|
8668
|
+
.map((result) => ({
|
|
8669
|
+
ordinal: result.ordinal ?? null,
|
|
8670
|
+
selector: result.selector ?? null,
|
|
8671
|
+
frame_selector: result.frame_selector ?? null,
|
|
8672
|
+
text: compactProfileSetupSummaryText(result.text),
|
|
8673
|
+
}))
|
|
8674
|
+
.slice(0, 8);
|
|
8675
|
+
const textSamples = results
|
|
8676
|
+
.filter((result) => result && result.ok !== false && typeof result.text === "string" && (
|
|
8677
|
+
profileSetupResultAction(result) === "assert_text_visible"
|
|
8678
|
+
|| profileSetupResultAction(result) === "assert_text_absent"
|
|
8679
|
+
|| profileSetupResultAction(result) === "wait_for_text"
|
|
8680
|
+
))
|
|
8681
|
+
.map((result) => ({
|
|
8682
|
+
ordinal: result.ordinal ?? null,
|
|
8683
|
+
action: profileSetupResultAction(result),
|
|
8684
|
+
frame_selector: result.frame_selector ?? null,
|
|
8685
|
+
text: compactProfileSetupSummaryText(result.text),
|
|
8686
|
+
}))
|
|
8687
|
+
.filter((item) => item.text)
|
|
8688
|
+
.slice(-6);
|
|
8689
|
+
return {
|
|
8690
|
+
name: viewport.name,
|
|
8691
|
+
ok: (actionCount === undefined ? results.length > 0 : results.length >= actionCount) && failed.length === 0,
|
|
8692
|
+
result_count: results.length,
|
|
8693
|
+
observed_path: viewport.route && viewport.route.observed || null,
|
|
8694
|
+
final_url: viewport.url || null,
|
|
8695
|
+
action_counts: profileSetupActionCounts(results),
|
|
8696
|
+
frame_action_count: results.filter((result) => result && result.frame_selector).length,
|
|
8697
|
+
frame_urls: profileSetupFrameUrls(viewport),
|
|
8698
|
+
clicked,
|
|
8699
|
+
text_samples: textSamples,
|
|
8700
|
+
failed: failed.map((result) => ({
|
|
8701
|
+
ordinal: result.ordinal ?? null,
|
|
8702
|
+
action: profileSetupResultAction(result),
|
|
8703
|
+
selector: result.selector ?? null,
|
|
8704
|
+
frame_selector: result.frame_selector ?? null,
|
|
8705
|
+
reason: result.reason || result.error || null,
|
|
8706
|
+
})),
|
|
8707
|
+
};
|
|
8708
|
+
}),
|
|
8709
|
+
};
|
|
8710
|
+
}
|
|
8554
8711
|
function assessProfile(profile, evidence) {
|
|
8555
8712
|
const checks = [];
|
|
8556
8713
|
const viewports = evidence.viewports || [];
|
|
@@ -8655,6 +8812,7 @@ function assessProfile(profile, evidence) {
|
|
|
8655
8812
|
&& (viewport.setup_action_results || []).every((result) => !result || result.ok !== false),
|
|
8656
8813
|
result_count: (viewport.setup_action_results || []).length,
|
|
8657
8814
|
})),
|
|
8815
|
+
setup_summary: profileSetupSummary(viewports, actionCount),
|
|
8658
8816
|
failed,
|
|
8659
8817
|
},
|
|
8660
8818
|
message: failed.length ? "Setup actions failed in " + failed.length + " viewport action(s)." : undefined,
|
package/dist/cli.js
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -8889,6 +8889,78 @@ function toJsonValue(value) {
|
|
|
8889
8889
|
if (isRecord2(value)) return Object.fromEntries(Object.entries(value).map(([key, child]) => [key, toJsonValue(child)]));
|
|
8890
8890
|
return String(value);
|
|
8891
8891
|
}
|
|
8892
|
+
function compactProfileSetupSummaryText(value, limit = 160) {
|
|
8893
|
+
const text = typeof value === "string" ? value.replace(/\s+/g, " ").trim() : "";
|
|
8894
|
+
if (!text) return void 0;
|
|
8895
|
+
if (text.length <= limit) return text;
|
|
8896
|
+
return `${text.slice(0, Math.max(0, limit - 15)).trimEnd()}... (${text.length} chars)`;
|
|
8897
|
+
}
|
|
8898
|
+
function profileSetupResultAction(value) {
|
|
8899
|
+
const action = value.action ?? value.type;
|
|
8900
|
+
return typeof action === "string" && action ? action : "unknown";
|
|
8901
|
+
}
|
|
8902
|
+
function profileSetupFrameUrls(viewport) {
|
|
8903
|
+
const urls = [];
|
|
8904
|
+
const frames = viewport.frames || {};
|
|
8905
|
+
for (const container of Object.values(frames)) {
|
|
8906
|
+
if (!isRecord2(container) || !Array.isArray(container.frames)) continue;
|
|
8907
|
+
for (const frame of container.frames) {
|
|
8908
|
+
if (!isRecord2(frame)) continue;
|
|
8909
|
+
const url = typeof frame.url === "string" ? frame.url : void 0;
|
|
8910
|
+
if (url && !urls.includes(url)) urls.push(url);
|
|
8911
|
+
}
|
|
8912
|
+
}
|
|
8913
|
+
return urls.slice(0, 10);
|
|
8914
|
+
}
|
|
8915
|
+
function profileSetupActionCounts(results) {
|
|
8916
|
+
const counts = {};
|
|
8917
|
+
for (const result of results) {
|
|
8918
|
+
const action = profileSetupResultAction(result);
|
|
8919
|
+
counts[action] = (counts[action] || 0) + 1;
|
|
8920
|
+
}
|
|
8921
|
+
return toJsonValue(counts);
|
|
8922
|
+
}
|
|
8923
|
+
function profileSetupSummary(viewports, actionCount) {
|
|
8924
|
+
return toJsonValue({
|
|
8925
|
+
viewport_count: viewports.length,
|
|
8926
|
+
action_count: actionCount ?? null,
|
|
8927
|
+
viewports: viewports.map((viewport) => {
|
|
8928
|
+
const results = viewport.setup_action_results || [];
|
|
8929
|
+
const failed = results.filter((result) => result.ok === false);
|
|
8930
|
+
const clicked = results.filter((result) => profileSetupResultAction(result) === "click" && result.ok !== false).map((result) => ({
|
|
8931
|
+
ordinal: result.ordinal ?? null,
|
|
8932
|
+
selector: result.selector ?? null,
|
|
8933
|
+
frame_selector: result.frame_selector ?? null,
|
|
8934
|
+
text: compactProfileSetupSummaryText(result.text)
|
|
8935
|
+
})).slice(0, 8);
|
|
8936
|
+
const text_samples = results.filter((result) => result.ok !== false && typeof result.text === "string" && (profileSetupResultAction(result) === "assert_text_visible" || profileSetupResultAction(result) === "assert_text_absent" || profileSetupResultAction(result) === "wait_for_text")).map((result) => ({
|
|
8937
|
+
ordinal: result.ordinal ?? null,
|
|
8938
|
+
action: profileSetupResultAction(result),
|
|
8939
|
+
frame_selector: result.frame_selector ?? null,
|
|
8940
|
+
text: compactProfileSetupSummaryText(result.text)
|
|
8941
|
+
})).filter((item) => item.text).slice(-6);
|
|
8942
|
+
return {
|
|
8943
|
+
name: viewport.name,
|
|
8944
|
+
ok: (actionCount === void 0 ? results.length > 0 : results.length >= actionCount) && failed.length === 0,
|
|
8945
|
+
result_count: results.length,
|
|
8946
|
+
observed_path: viewport.route?.observed ?? null,
|
|
8947
|
+
final_url: viewport.url ?? null,
|
|
8948
|
+
action_counts: profileSetupActionCounts(results),
|
|
8949
|
+
frame_action_count: results.filter((result) => result.frame_selector).length,
|
|
8950
|
+
frame_urls: profileSetupFrameUrls(viewport),
|
|
8951
|
+
clicked,
|
|
8952
|
+
text_samples,
|
|
8953
|
+
failed: failed.map((result) => ({
|
|
8954
|
+
ordinal: result.ordinal ?? null,
|
|
8955
|
+
action: profileSetupResultAction(result),
|
|
8956
|
+
selector: result.selector ?? null,
|
|
8957
|
+
frame_selector: result.frame_selector ?? null,
|
|
8958
|
+
reason: result.reason ?? result.error ?? null
|
|
8959
|
+
}))
|
|
8960
|
+
};
|
|
8961
|
+
})
|
|
8962
|
+
});
|
|
8963
|
+
}
|
|
8892
8964
|
function normalizeName(value, fallback) {
|
|
8893
8965
|
const name = stringValue5(value) || fallback;
|
|
8894
8966
|
return name.replace(/\s+/g, " ").trim();
|
|
@@ -9995,6 +10067,7 @@ function assessSetupActionsFromEvidence(profile, evidence) {
|
|
|
9995
10067
|
ok: (viewport.setup_action_results || []).length >= actionCount && (viewport.setup_action_results || []).every((result) => result.ok !== false),
|
|
9996
10068
|
result_count: (viewport.setup_action_results || []).length
|
|
9997
10069
|
})),
|
|
10070
|
+
setup_summary: profileSetupSummary(viewports, actionCount),
|
|
9998
10071
|
failed
|
|
9999
10072
|
},
|
|
10000
10073
|
message: failed.length ? `Setup actions failed in ${failed.length} viewport action(s).` : void 0
|
|
@@ -10408,6 +10481,90 @@ function requiredNetworkMockHitCount(mock) {
|
|
|
10408
10481
|
if (Array.isArray(mock.responses) && mock.responses.length) return mock.responses.length;
|
|
10409
10482
|
return 1;
|
|
10410
10483
|
}
|
|
10484
|
+
function compactProfileSetupSummaryText(value, limit) {
|
|
10485
|
+
limit = limit || 160;
|
|
10486
|
+
const text = typeof value === "string" ? value.replace(/\\s+/g, " ").trim() : "";
|
|
10487
|
+
if (!text) return undefined;
|
|
10488
|
+
if (text.length <= limit) return text;
|
|
10489
|
+
return text.slice(0, Math.max(0, limit - 15)).trimEnd() + "... (" + text.length + " chars)";
|
|
10490
|
+
}
|
|
10491
|
+
function profileSetupResultAction(result) {
|
|
10492
|
+
const action = result && (result.action || result.type);
|
|
10493
|
+
return typeof action === "string" && action ? action : "unknown";
|
|
10494
|
+
}
|
|
10495
|
+
function profileSetupFrameUrls(viewport) {
|
|
10496
|
+
const urls = [];
|
|
10497
|
+
const frames = viewport && viewport.frames || {};
|
|
10498
|
+
for (const container of Object.values(frames)) {
|
|
10499
|
+
if (!container || typeof container !== "object" || Array.isArray(container) || !Array.isArray(container.frames)) continue;
|
|
10500
|
+
for (const frame of container.frames) {
|
|
10501
|
+
if (!frame || typeof frame !== "object" || Array.isArray(frame)) continue;
|
|
10502
|
+
const url = typeof frame.url === "string" ? frame.url : null;
|
|
10503
|
+
if (url && !urls.includes(url)) urls.push(url);
|
|
10504
|
+
}
|
|
10505
|
+
}
|
|
10506
|
+
return urls.slice(0, 10);
|
|
10507
|
+
}
|
|
10508
|
+
function profileSetupActionCounts(results) {
|
|
10509
|
+
const counts = {};
|
|
10510
|
+
for (const result of results || []) {
|
|
10511
|
+
const action = profileSetupResultAction(result);
|
|
10512
|
+
counts[action] = (counts[action] || 0) + 1;
|
|
10513
|
+
}
|
|
10514
|
+
return counts;
|
|
10515
|
+
}
|
|
10516
|
+
function profileSetupSummary(viewports, actionCount) {
|
|
10517
|
+
return {
|
|
10518
|
+
viewport_count: (viewports || []).length,
|
|
10519
|
+
action_count: actionCount ?? null,
|
|
10520
|
+
viewports: (viewports || []).map((viewport) => {
|
|
10521
|
+
const results = viewport.setup_action_results || [];
|
|
10522
|
+
const failed = results.filter((result) => result && result.ok === false);
|
|
10523
|
+
const clicked = results
|
|
10524
|
+
.filter((result) => result && profileSetupResultAction(result) === "click" && result.ok !== false)
|
|
10525
|
+
.map((result) => ({
|
|
10526
|
+
ordinal: result.ordinal ?? null,
|
|
10527
|
+
selector: result.selector ?? null,
|
|
10528
|
+
frame_selector: result.frame_selector ?? null,
|
|
10529
|
+
text: compactProfileSetupSummaryText(result.text),
|
|
10530
|
+
}))
|
|
10531
|
+
.slice(0, 8);
|
|
10532
|
+
const textSamples = results
|
|
10533
|
+
.filter((result) => result && result.ok !== false && typeof result.text === "string" && (
|
|
10534
|
+
profileSetupResultAction(result) === "assert_text_visible"
|
|
10535
|
+
|| profileSetupResultAction(result) === "assert_text_absent"
|
|
10536
|
+
|| profileSetupResultAction(result) === "wait_for_text"
|
|
10537
|
+
))
|
|
10538
|
+
.map((result) => ({
|
|
10539
|
+
ordinal: result.ordinal ?? null,
|
|
10540
|
+
action: profileSetupResultAction(result),
|
|
10541
|
+
frame_selector: result.frame_selector ?? null,
|
|
10542
|
+
text: compactProfileSetupSummaryText(result.text),
|
|
10543
|
+
}))
|
|
10544
|
+
.filter((item) => item.text)
|
|
10545
|
+
.slice(-6);
|
|
10546
|
+
return {
|
|
10547
|
+
name: viewport.name,
|
|
10548
|
+
ok: (actionCount === undefined ? results.length > 0 : results.length >= actionCount) && failed.length === 0,
|
|
10549
|
+
result_count: results.length,
|
|
10550
|
+
observed_path: viewport.route && viewport.route.observed || null,
|
|
10551
|
+
final_url: viewport.url || null,
|
|
10552
|
+
action_counts: profileSetupActionCounts(results),
|
|
10553
|
+
frame_action_count: results.filter((result) => result && result.frame_selector).length,
|
|
10554
|
+
frame_urls: profileSetupFrameUrls(viewport),
|
|
10555
|
+
clicked,
|
|
10556
|
+
text_samples: textSamples,
|
|
10557
|
+
failed: failed.map((result) => ({
|
|
10558
|
+
ordinal: result.ordinal ?? null,
|
|
10559
|
+
action: profileSetupResultAction(result),
|
|
10560
|
+
selector: result.selector ?? null,
|
|
10561
|
+
frame_selector: result.frame_selector ?? null,
|
|
10562
|
+
reason: result.reason || result.error || null,
|
|
10563
|
+
})),
|
|
10564
|
+
};
|
|
10565
|
+
}),
|
|
10566
|
+
};
|
|
10567
|
+
}
|
|
10411
10568
|
function assessProfile(profile, evidence) {
|
|
10412
10569
|
const checks = [];
|
|
10413
10570
|
const viewports = evidence.viewports || [];
|
|
@@ -10512,6 +10669,7 @@ function assessProfile(profile, evidence) {
|
|
|
10512
10669
|
&& (viewport.setup_action_results || []).every((result) => !result || result.ok !== false),
|
|
10513
10670
|
result_count: (viewport.setup_action_results || []).length,
|
|
10514
10671
|
})),
|
|
10672
|
+
setup_summary: profileSetupSummary(viewports, actionCount),
|
|
10515
10673
|
failed,
|
|
10516
10674
|
},
|
|
10517
10675
|
message: failed.length ? "Setup actions failed in " + failed.length + " viewport action(s)." : undefined,
|
package/dist/index.js
CHANGED
|
@@ -58,7 +58,7 @@ import {
|
|
|
58
58
|
resolveRiddleProofProfileTimeoutSec,
|
|
59
59
|
slugifyRiddleProofProfileName,
|
|
60
60
|
summarizeRiddleProofProfileResult
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-MIHU2AWC.js";
|
|
62
62
|
import {
|
|
63
63
|
DEFAULT_RIDDLE_API_BASE_URL,
|
|
64
64
|
DEFAULT_RIDDLE_API_KEY_FILE,
|
package/dist/profile.cjs
CHANGED
|
@@ -218,6 +218,78 @@ function toJsonValue(value) {
|
|
|
218
218
|
if (isRecord(value)) return Object.fromEntries(Object.entries(value).map(([key, child]) => [key, toJsonValue(child)]));
|
|
219
219
|
return String(value);
|
|
220
220
|
}
|
|
221
|
+
function compactProfileSetupSummaryText(value, limit = 160) {
|
|
222
|
+
const text = typeof value === "string" ? value.replace(/\s+/g, " ").trim() : "";
|
|
223
|
+
if (!text) return void 0;
|
|
224
|
+
if (text.length <= limit) return text;
|
|
225
|
+
return `${text.slice(0, Math.max(0, limit - 15)).trimEnd()}... (${text.length} chars)`;
|
|
226
|
+
}
|
|
227
|
+
function profileSetupResultAction(value) {
|
|
228
|
+
const action = value.action ?? value.type;
|
|
229
|
+
return typeof action === "string" && action ? action : "unknown";
|
|
230
|
+
}
|
|
231
|
+
function profileSetupFrameUrls(viewport) {
|
|
232
|
+
const urls = [];
|
|
233
|
+
const frames = viewport.frames || {};
|
|
234
|
+
for (const container of Object.values(frames)) {
|
|
235
|
+
if (!isRecord(container) || !Array.isArray(container.frames)) continue;
|
|
236
|
+
for (const frame of container.frames) {
|
|
237
|
+
if (!isRecord(frame)) continue;
|
|
238
|
+
const url = typeof frame.url === "string" ? frame.url : void 0;
|
|
239
|
+
if (url && !urls.includes(url)) urls.push(url);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return urls.slice(0, 10);
|
|
243
|
+
}
|
|
244
|
+
function profileSetupActionCounts(results) {
|
|
245
|
+
const counts = {};
|
|
246
|
+
for (const result of results) {
|
|
247
|
+
const action = profileSetupResultAction(result);
|
|
248
|
+
counts[action] = (counts[action] || 0) + 1;
|
|
249
|
+
}
|
|
250
|
+
return toJsonValue(counts);
|
|
251
|
+
}
|
|
252
|
+
function profileSetupSummary(viewports, actionCount) {
|
|
253
|
+
return toJsonValue({
|
|
254
|
+
viewport_count: viewports.length,
|
|
255
|
+
action_count: actionCount ?? null,
|
|
256
|
+
viewports: viewports.map((viewport) => {
|
|
257
|
+
const results = viewport.setup_action_results || [];
|
|
258
|
+
const failed = results.filter((result) => result.ok === false);
|
|
259
|
+
const clicked = results.filter((result) => profileSetupResultAction(result) === "click" && result.ok !== false).map((result) => ({
|
|
260
|
+
ordinal: result.ordinal ?? null,
|
|
261
|
+
selector: result.selector ?? null,
|
|
262
|
+
frame_selector: result.frame_selector ?? null,
|
|
263
|
+
text: compactProfileSetupSummaryText(result.text)
|
|
264
|
+
})).slice(0, 8);
|
|
265
|
+
const text_samples = results.filter((result) => result.ok !== false && typeof result.text === "string" && (profileSetupResultAction(result) === "assert_text_visible" || profileSetupResultAction(result) === "assert_text_absent" || profileSetupResultAction(result) === "wait_for_text")).map((result) => ({
|
|
266
|
+
ordinal: result.ordinal ?? null,
|
|
267
|
+
action: profileSetupResultAction(result),
|
|
268
|
+
frame_selector: result.frame_selector ?? null,
|
|
269
|
+
text: compactProfileSetupSummaryText(result.text)
|
|
270
|
+
})).filter((item) => item.text).slice(-6);
|
|
271
|
+
return {
|
|
272
|
+
name: viewport.name,
|
|
273
|
+
ok: (actionCount === void 0 ? results.length > 0 : results.length >= actionCount) && failed.length === 0,
|
|
274
|
+
result_count: results.length,
|
|
275
|
+
observed_path: viewport.route?.observed ?? null,
|
|
276
|
+
final_url: viewport.url ?? null,
|
|
277
|
+
action_counts: profileSetupActionCounts(results),
|
|
278
|
+
frame_action_count: results.filter((result) => result.frame_selector).length,
|
|
279
|
+
frame_urls: profileSetupFrameUrls(viewport),
|
|
280
|
+
clicked,
|
|
281
|
+
text_samples,
|
|
282
|
+
failed: failed.map((result) => ({
|
|
283
|
+
ordinal: result.ordinal ?? null,
|
|
284
|
+
action: profileSetupResultAction(result),
|
|
285
|
+
selector: result.selector ?? null,
|
|
286
|
+
frame_selector: result.frame_selector ?? null,
|
|
287
|
+
reason: result.reason ?? result.error ?? null
|
|
288
|
+
}))
|
|
289
|
+
};
|
|
290
|
+
})
|
|
291
|
+
});
|
|
292
|
+
}
|
|
221
293
|
function normalizeName(value, fallback) {
|
|
222
294
|
const name = stringValue(value) || fallback;
|
|
223
295
|
return name.replace(/\s+/g, " ").trim();
|
|
@@ -1324,6 +1396,7 @@ function assessSetupActionsFromEvidence(profile, evidence) {
|
|
|
1324
1396
|
ok: (viewport.setup_action_results || []).length >= actionCount && (viewport.setup_action_results || []).every((result) => result.ok !== false),
|
|
1325
1397
|
result_count: (viewport.setup_action_results || []).length
|
|
1326
1398
|
})),
|
|
1399
|
+
setup_summary: profileSetupSummary(viewports, actionCount),
|
|
1327
1400
|
failed
|
|
1328
1401
|
},
|
|
1329
1402
|
message: failed.length ? `Setup actions failed in ${failed.length} viewport action(s).` : void 0
|
|
@@ -1737,6 +1810,90 @@ function requiredNetworkMockHitCount(mock) {
|
|
|
1737
1810
|
if (Array.isArray(mock.responses) && mock.responses.length) return mock.responses.length;
|
|
1738
1811
|
return 1;
|
|
1739
1812
|
}
|
|
1813
|
+
function compactProfileSetupSummaryText(value, limit) {
|
|
1814
|
+
limit = limit || 160;
|
|
1815
|
+
const text = typeof value === "string" ? value.replace(/\\s+/g, " ").trim() : "";
|
|
1816
|
+
if (!text) return undefined;
|
|
1817
|
+
if (text.length <= limit) return text;
|
|
1818
|
+
return text.slice(0, Math.max(0, limit - 15)).trimEnd() + "... (" + text.length + " chars)";
|
|
1819
|
+
}
|
|
1820
|
+
function profileSetupResultAction(result) {
|
|
1821
|
+
const action = result && (result.action || result.type);
|
|
1822
|
+
return typeof action === "string" && action ? action : "unknown";
|
|
1823
|
+
}
|
|
1824
|
+
function profileSetupFrameUrls(viewport) {
|
|
1825
|
+
const urls = [];
|
|
1826
|
+
const frames = viewport && viewport.frames || {};
|
|
1827
|
+
for (const container of Object.values(frames)) {
|
|
1828
|
+
if (!container || typeof container !== "object" || Array.isArray(container) || !Array.isArray(container.frames)) continue;
|
|
1829
|
+
for (const frame of container.frames) {
|
|
1830
|
+
if (!frame || typeof frame !== "object" || Array.isArray(frame)) continue;
|
|
1831
|
+
const url = typeof frame.url === "string" ? frame.url : null;
|
|
1832
|
+
if (url && !urls.includes(url)) urls.push(url);
|
|
1833
|
+
}
|
|
1834
|
+
}
|
|
1835
|
+
return urls.slice(0, 10);
|
|
1836
|
+
}
|
|
1837
|
+
function profileSetupActionCounts(results) {
|
|
1838
|
+
const counts = {};
|
|
1839
|
+
for (const result of results || []) {
|
|
1840
|
+
const action = profileSetupResultAction(result);
|
|
1841
|
+
counts[action] = (counts[action] || 0) + 1;
|
|
1842
|
+
}
|
|
1843
|
+
return counts;
|
|
1844
|
+
}
|
|
1845
|
+
function profileSetupSummary(viewports, actionCount) {
|
|
1846
|
+
return {
|
|
1847
|
+
viewport_count: (viewports || []).length,
|
|
1848
|
+
action_count: actionCount ?? null,
|
|
1849
|
+
viewports: (viewports || []).map((viewport) => {
|
|
1850
|
+
const results = viewport.setup_action_results || [];
|
|
1851
|
+
const failed = results.filter((result) => result && result.ok === false);
|
|
1852
|
+
const clicked = results
|
|
1853
|
+
.filter((result) => result && profileSetupResultAction(result) === "click" && result.ok !== false)
|
|
1854
|
+
.map((result) => ({
|
|
1855
|
+
ordinal: result.ordinal ?? null,
|
|
1856
|
+
selector: result.selector ?? null,
|
|
1857
|
+
frame_selector: result.frame_selector ?? null,
|
|
1858
|
+
text: compactProfileSetupSummaryText(result.text),
|
|
1859
|
+
}))
|
|
1860
|
+
.slice(0, 8);
|
|
1861
|
+
const textSamples = results
|
|
1862
|
+
.filter((result) => result && result.ok !== false && typeof result.text === "string" && (
|
|
1863
|
+
profileSetupResultAction(result) === "assert_text_visible"
|
|
1864
|
+
|| profileSetupResultAction(result) === "assert_text_absent"
|
|
1865
|
+
|| profileSetupResultAction(result) === "wait_for_text"
|
|
1866
|
+
))
|
|
1867
|
+
.map((result) => ({
|
|
1868
|
+
ordinal: result.ordinal ?? null,
|
|
1869
|
+
action: profileSetupResultAction(result),
|
|
1870
|
+
frame_selector: result.frame_selector ?? null,
|
|
1871
|
+
text: compactProfileSetupSummaryText(result.text),
|
|
1872
|
+
}))
|
|
1873
|
+
.filter((item) => item.text)
|
|
1874
|
+
.slice(-6);
|
|
1875
|
+
return {
|
|
1876
|
+
name: viewport.name,
|
|
1877
|
+
ok: (actionCount === undefined ? results.length > 0 : results.length >= actionCount) && failed.length === 0,
|
|
1878
|
+
result_count: results.length,
|
|
1879
|
+
observed_path: viewport.route && viewport.route.observed || null,
|
|
1880
|
+
final_url: viewport.url || null,
|
|
1881
|
+
action_counts: profileSetupActionCounts(results),
|
|
1882
|
+
frame_action_count: results.filter((result) => result && result.frame_selector).length,
|
|
1883
|
+
frame_urls: profileSetupFrameUrls(viewport),
|
|
1884
|
+
clicked,
|
|
1885
|
+
text_samples: textSamples,
|
|
1886
|
+
failed: failed.map((result) => ({
|
|
1887
|
+
ordinal: result.ordinal ?? null,
|
|
1888
|
+
action: profileSetupResultAction(result),
|
|
1889
|
+
selector: result.selector ?? null,
|
|
1890
|
+
frame_selector: result.frame_selector ?? null,
|
|
1891
|
+
reason: result.reason || result.error || null,
|
|
1892
|
+
})),
|
|
1893
|
+
};
|
|
1894
|
+
}),
|
|
1895
|
+
};
|
|
1896
|
+
}
|
|
1740
1897
|
function assessProfile(profile, evidence) {
|
|
1741
1898
|
const checks = [];
|
|
1742
1899
|
const viewports = evidence.viewports || [];
|
|
@@ -1841,6 +1998,7 @@ function assessProfile(profile, evidence) {
|
|
|
1841
1998
|
&& (viewport.setup_action_results || []).every((result) => !result || result.ok !== false),
|
|
1842
1999
|
result_count: (viewport.setup_action_results || []).length,
|
|
1843
2000
|
})),
|
|
2001
|
+
setup_summary: profileSetupSummary(viewports, actionCount),
|
|
1844
2002
|
failed,
|
|
1845
2003
|
},
|
|
1846
2004
|
message: failed.length ? "Setup actions failed in " + failed.length + " viewport action(s)." : undefined,
|
package/dist/profile.js
CHANGED
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
resolveRiddleProofProfileTimeoutSec,
|
|
20
20
|
slugifyRiddleProofProfileName,
|
|
21
21
|
summarizeRiddleProofProfileResult
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-MIHU2AWC.js";
|
|
23
23
|
export {
|
|
24
24
|
RIDDLE_PROOF_PROFILE_CHECK_TYPES,
|
|
25
25
|
RIDDLE_PROOF_PROFILE_EVIDENCE_VERSION,
|