@ai-ecoverse/slicc-browsers 1.18.10 → 1.18.12
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 +4 -0
- package/bfcache-restore.mjs +1 -1
- package/guard-vectors.json +1 -1
- package/package.json +3 -3
- package/protected-error-page.mjs +3 -4
package/README.md
CHANGED
|
@@ -186,8 +186,12 @@ Each vector runs twice. The **control** runs it against an ordinary origin, wher
|
|
|
186
186
|
|
|
187
187
|
When a vector compares ordinary and protected fixture markers, those markers do not contain one another. Protected-marker checks still examine complete probe replies, including errors, and the vector's client events and messages, including encoded values.
|
|
188
188
|
|
|
189
|
+
A guard may refuse every client navigation to an `about:` URL that inherits an origin, such as `about:blank`. Refusing an ordinary navigation away from a protected page still fails.
|
|
190
|
+
|
|
189
191
|
Client-exit controls use the unguarded observer; persistent-capability refusals are valid evidence, granted instruments must leave no effects after exit, and missing answers remain incomplete.
|
|
190
192
|
|
|
193
|
+
Forwarding audits retain early snapshots as evidence. A complete final ledger supersedes an incomplete early snapshot, but any forwarding reported in either audit remains a failure. An incomplete final audit remains missing evidence.
|
|
194
|
+
|
|
191
195
|
### Running them
|
|
192
196
|
|
|
193
197
|
The reference runner works with any guard that speaks CDP:
|
package/bfcache-restore.mjs
CHANGED
|
@@ -377,7 +377,7 @@ class Restore {
|
|
|
377
377
|
this.result.probes.some((probe) => probe.forwarded);
|
|
378
378
|
this.result.commandsUnforwarded = forwarded ? false : complete ? true : 'incomplete';
|
|
379
379
|
if (final) this.finalAuditComplete = complete;
|
|
380
|
-
if (!complete) this.missingEvidence('forwarding audit unavailable');
|
|
380
|
+
if (final && !complete) this.missingEvidence('forwarding audit unavailable');
|
|
381
381
|
}
|
|
382
382
|
|
|
383
383
|
async judge() {
|
package/guard-vectors.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-ecoverse/slicc-browsers",
|
|
3
|
-
"version": "1.18.
|
|
3
|
+
"version": "1.18.12",
|
|
4
4
|
"description": "SLICC's shared browser catalog, JSON schemas and discovery conformance corpus",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -79,8 +79,8 @@
|
|
|
79
79
|
"test:unit:guard": "mkdir -p coverage/unit && node --experimental-vm-modules --no-warnings --experimental-test-coverage --test --test-concurrency=1 --test-coverage-include=guard-runner.mjs --test-coverage-include=fixture-server.mjs --test-coverage-include=fixture-client.mjs --test-coverage-include=observer-target.mjs --test-coverage-include=frame-read.mjs --test-coverage-include=bfcache-restore.mjs --test-coverage-include=protected-error-page.mjs --test-coverage-include=unparseable-url.mjs --test-coverage-include=scripts/browser-runner.mjs --test-coverage-include=scripts/validate.mjs --test-reporter=lcov --test-reporter-destination=coverage/unit/guard.lcov test/unit/guard-*.test.mjs && slicc-diff-cover coverage/unit/guard.lcov"
|
|
80
80
|
},
|
|
81
81
|
"devDependencies": {
|
|
82
|
-
"@ai-ecoverse/slicc-cdp": "1.
|
|
83
|
-
"@ai-ecoverse/slicc-shared-web": "2.
|
|
82
|
+
"@ai-ecoverse/slicc-cdp": "1.33.1",
|
|
83
|
+
"@ai-ecoverse/slicc-shared-web": "2.11.0",
|
|
84
84
|
"@biomejs/biome": "2.5.15",
|
|
85
85
|
"ajv": "8.20.0",
|
|
86
86
|
"ajv-formats": "3.0.1",
|
package/protected-error-page.mjs
CHANGED
|
@@ -269,10 +269,9 @@ export async function protectedErrorPage({
|
|
|
269
269
|
});
|
|
270
270
|
result.reload = result.reloadedError;
|
|
271
271
|
}
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
).
|
|
275
|
-
if (result.blank) result.blank = await loaded('about:blank');
|
|
272
|
+
const recovery = `${ordinary}/blank?n=${tag}-recover`;
|
|
273
|
+
result.blank = (await outcome(client.send('Page.navigate', { url: recovery }, session))).ok;
|
|
274
|
+
if (result.blank) result.blank = await loaded(recovery);
|
|
276
275
|
result.attached = !client.events
|
|
277
276
|
.slice(start)
|
|
278
277
|
.some((e) => e.method === 'Target.detachedFromTarget' && e.params.sessionId === session);
|