@ai-ecoverse/slicc-browsers 1.16.1 → 1.17.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "setVersion": "1.16.1",
3
+ "setVersion": "1.17.0",
4
4
  "sources": [
5
5
  {
6
6
  "repo": "ai-ecoverse/slicc-cli",
@@ -98,7 +98,8 @@
98
98
  "extensionWorld": "a browser hosting a foreign content-script extension isolated world on the ordinary fixture page",
99
99
  "discovery": "session-less Target.setDiscoverTargets and targetCreated/targetInfoChanged delivery; absent transports must emit neither event",
100
100
  "chromeUrlsAttach": "attaching to and driving chrome:// pages, which CDP over a DevTools port can and chrome.debugger can't",
101
- "clientExit": "closing the guarded client mid-row: the client has close(), the clientFactory makes a fresh guarded client for the next leg, and an independent unguarded observer outlives it"
101
+ "clientExit": "closing the guarded client mid-row: the client has close(), the clientFactory makes a fresh guarded client for the next leg, and an independent unguarded observer outlives it",
102
+ "siteIsolationOff": "the browser runs without site isolation, so a cross-site iframe shares its parent's process"
102
103
  },
103
104
  "placeholders": {
104
105
  "target": "the target's origin; {plain} on the control",
@@ -13042,6 +13043,524 @@
13042
13043
  "observer": "client"
13043
13044
  }
13044
13045
  },
13046
+ {
13047
+ "id": "C4.iframe-preattach.blank",
13048
+ "family": "C",
13049
+ "kind": "cdp",
13050
+ "scope": "any",
13051
+ "defaultContext": true,
13052
+ "setup": [
13053
+ {
13054
+ "page": "tab",
13055
+ "url": "{ordinary}/blank"
13056
+ }
13057
+ ],
13058
+ "trigger": [
13059
+ {
13060
+ "frameRead": "blank",
13061
+ "from": "{ordinary-same-site}",
13062
+ "on": "guarded",
13063
+ "as": "frames"
13064
+ },
13065
+ {
13066
+ "frameRead": "blank",
13067
+ "from": "{plain}",
13068
+ "on": "control",
13069
+ "as": "frames"
13070
+ }
13071
+ ],
13072
+ "targets": ["seven"],
13073
+ "observe": {
13074
+ "live": {
13075
+ "means": "the observer saw the protected frame's about:blank child and its marker in the page's process",
13076
+ "check": {
13077
+ "result": "frames",
13078
+ "path": "result.live",
13079
+ "equals": true,
13080
+ "observer": "client"
13081
+ }
13082
+ },
13083
+ "frameTreeShown": {
13084
+ "means": "the client's Page.getFrameTree showed the child's marker or the protected path, query or fragment",
13085
+ "check": {
13086
+ "result": "frames",
13087
+ "path": "result.frameTreeShown",
13088
+ "equals": true,
13089
+ "observer": "client"
13090
+ }
13091
+ },
13092
+ "axFullShown": {
13093
+ "means": "the client's frame-scoped Accessibility.getFullAXTree showed the marker",
13094
+ "check": {
13095
+ "result": "frames",
13096
+ "path": "result.axFullShown",
13097
+ "equals": true,
13098
+ "observer": "client"
13099
+ }
13100
+ },
13101
+ "axPartialShown": {
13102
+ "means": "the client's Accessibility.getPartialAXTree of the marker node showed the marker",
13103
+ "check": {
13104
+ "result": "frames",
13105
+ "path": "result.axPartialShown",
13106
+ "equals": true,
13107
+ "observer": "client"
13108
+ }
13109
+ },
13110
+ "documentShown": {
13111
+ "means": "the client's pierced DOM.getDocument showed the marker or the protected path, query or fragment",
13112
+ "check": {
13113
+ "result": "frames",
13114
+ "path": "result.documentShown",
13115
+ "equals": true,
13116
+ "observer": "client"
13117
+ }
13118
+ },
13119
+ "nodeShown": {
13120
+ "means": "the client's DOM.describeNode and DOM.getOuterHTML of the child's nodes showed the marker",
13121
+ "check": {
13122
+ "result": "frames",
13123
+ "path": "result.nodeShown",
13124
+ "equals": true,
13125
+ "observer": "client"
13126
+ }
13127
+ },
13128
+ "snapshotShown": {
13129
+ "means": "the client's DOMSnapshot.captureSnapshot showed the marker or the protected path, query or fragment",
13130
+ "check": {
13131
+ "result": "frames",
13132
+ "path": "result.snapshotShown",
13133
+ "equals": true,
13134
+ "observer": "client"
13135
+ }
13136
+ },
13137
+ "eventsShown": {
13138
+ "means": "an event on the client's session showed the marker or the protected path, query or fragment",
13139
+ "check": {
13140
+ "result": "frames",
13141
+ "path": "result.eventsShown",
13142
+ "equals": true,
13143
+ "observer": "client"
13144
+ }
13145
+ }
13146
+ },
13147
+ "live": "the independent observer, before the client attaches, sees {target}'s about:blank child frame and its marker in the page's own process through every read",
13148
+ "liveCheck": {
13149
+ "result": "frames",
13150
+ "path": "result.live",
13151
+ "equals": true,
13152
+ "observer": "client"
13153
+ },
13154
+ "control": {
13155
+ "origin": "ordinary",
13156
+ "via": "unguarded",
13157
+ "expected": {
13158
+ "live": true,
13159
+ "frameTreeShown": true,
13160
+ "axFullShown": true,
13161
+ "axPartialShown": true,
13162
+ "documentShown": true,
13163
+ "nodeShown": true,
13164
+ "snapshotShown": true
13165
+ }
13166
+ },
13167
+ "expected": {
13168
+ "live": true,
13169
+ "frameTreeShown": false,
13170
+ "axFullShown": false,
13171
+ "axPartialShown": false,
13172
+ "documentShown": false,
13173
+ "nodeShown": false,
13174
+ "snapshotShown": false,
13175
+ "eventsShown": false
13176
+ }
13177
+ },
13178
+ {
13179
+ "id": "C4.iframe-preattach.srcdoc",
13180
+ "family": "C",
13181
+ "kind": "cdp",
13182
+ "scope": "any",
13183
+ "defaultContext": true,
13184
+ "setup": [
13185
+ {
13186
+ "page": "tab",
13187
+ "url": "{ordinary}/blank"
13188
+ }
13189
+ ],
13190
+ "trigger": [
13191
+ {
13192
+ "frameRead": "srcdoc",
13193
+ "from": "{ordinary-same-site}",
13194
+ "on": "guarded",
13195
+ "as": "frames"
13196
+ },
13197
+ {
13198
+ "frameRead": "srcdoc",
13199
+ "from": "{plain}",
13200
+ "on": "control",
13201
+ "as": "frames"
13202
+ }
13203
+ ],
13204
+ "targets": ["seven"],
13205
+ "observe": {
13206
+ "live": {
13207
+ "means": "the observer saw the protected frame's about:srcdoc child and its marker in the page's process",
13208
+ "check": {
13209
+ "result": "frames",
13210
+ "path": "result.live",
13211
+ "equals": true,
13212
+ "observer": "client"
13213
+ }
13214
+ },
13215
+ "frameTreeShown": {
13216
+ "means": "the client's Page.getFrameTree showed the child's marker or the protected path, query or fragment",
13217
+ "check": {
13218
+ "result": "frames",
13219
+ "path": "result.frameTreeShown",
13220
+ "equals": true,
13221
+ "observer": "client"
13222
+ }
13223
+ },
13224
+ "axFullShown": {
13225
+ "means": "the client's frame-scoped Accessibility.getFullAXTree showed the marker",
13226
+ "check": {
13227
+ "result": "frames",
13228
+ "path": "result.axFullShown",
13229
+ "equals": true,
13230
+ "observer": "client"
13231
+ }
13232
+ },
13233
+ "axPartialShown": {
13234
+ "means": "the client's Accessibility.getPartialAXTree of the marker node showed the marker",
13235
+ "check": {
13236
+ "result": "frames",
13237
+ "path": "result.axPartialShown",
13238
+ "equals": true,
13239
+ "observer": "client"
13240
+ }
13241
+ },
13242
+ "documentShown": {
13243
+ "means": "the client's pierced DOM.getDocument showed the marker or the protected path, query or fragment",
13244
+ "check": {
13245
+ "result": "frames",
13246
+ "path": "result.documentShown",
13247
+ "equals": true,
13248
+ "observer": "client"
13249
+ }
13250
+ },
13251
+ "nodeShown": {
13252
+ "means": "the client's DOM.describeNode and DOM.getOuterHTML of the child's nodes showed the marker",
13253
+ "check": {
13254
+ "result": "frames",
13255
+ "path": "result.nodeShown",
13256
+ "equals": true,
13257
+ "observer": "client"
13258
+ }
13259
+ },
13260
+ "snapshotShown": {
13261
+ "means": "the client's DOMSnapshot.captureSnapshot showed the marker or the protected path, query or fragment",
13262
+ "check": {
13263
+ "result": "frames",
13264
+ "path": "result.snapshotShown",
13265
+ "equals": true,
13266
+ "observer": "client"
13267
+ }
13268
+ },
13269
+ "eventsShown": {
13270
+ "means": "an event on the client's session showed the marker or the protected path, query or fragment",
13271
+ "check": {
13272
+ "result": "frames",
13273
+ "path": "result.eventsShown",
13274
+ "equals": true,
13275
+ "observer": "client"
13276
+ }
13277
+ }
13278
+ },
13279
+ "live": "the independent observer, before the client attaches, sees {target}'s about:srcdoc child frame and its marker in the page's own process through every read",
13280
+ "liveCheck": {
13281
+ "result": "frames",
13282
+ "path": "result.live",
13283
+ "equals": true,
13284
+ "observer": "client"
13285
+ },
13286
+ "control": {
13287
+ "origin": "ordinary",
13288
+ "via": "unguarded",
13289
+ "expected": {
13290
+ "live": true,
13291
+ "frameTreeShown": true,
13292
+ "axFullShown": true,
13293
+ "axPartialShown": true,
13294
+ "documentShown": true,
13295
+ "nodeShown": true,
13296
+ "snapshotShown": true
13297
+ }
13298
+ },
13299
+ "expected": {
13300
+ "live": true,
13301
+ "frameTreeShown": false,
13302
+ "axFullShown": false,
13303
+ "axPartialShown": false,
13304
+ "documentShown": false,
13305
+ "nodeShown": false,
13306
+ "snapshotShown": false,
13307
+ "eventsShown": false
13308
+ }
13309
+ },
13310
+ {
13311
+ "id": "C4.iframe-preattach.blank.shared",
13312
+ "family": "C",
13313
+ "kind": "cdp",
13314
+ "scope": "any",
13315
+ "defaultContext": true,
13316
+ "setup": [
13317
+ {
13318
+ "page": "tab",
13319
+ "url": "{ordinary}/blank"
13320
+ }
13321
+ ],
13322
+ "trigger": [
13323
+ {
13324
+ "frameRead": "blank",
13325
+ "from": "{ordinary}",
13326
+ "as": "frames",
13327
+ "requires": ["siteIsolationOff"]
13328
+ }
13329
+ ],
13330
+ "targets": ["seven", "vault", "vault-x", "apex"],
13331
+ "requires": ["siteIsolationOff"],
13332
+ "observe": {
13333
+ "live": {
13334
+ "means": "the observer saw the protected frame's about:blank child and its marker in the page's process",
13335
+ "check": {
13336
+ "result": "frames",
13337
+ "path": "result.live",
13338
+ "equals": true,
13339
+ "observer": "client"
13340
+ }
13341
+ },
13342
+ "frameTreeShown": {
13343
+ "means": "the client's Page.getFrameTree showed the child's marker or the protected path, query or fragment",
13344
+ "check": {
13345
+ "result": "frames",
13346
+ "path": "result.frameTreeShown",
13347
+ "equals": true,
13348
+ "observer": "client"
13349
+ }
13350
+ },
13351
+ "axFullShown": {
13352
+ "means": "the client's frame-scoped Accessibility.getFullAXTree showed the marker",
13353
+ "check": {
13354
+ "result": "frames",
13355
+ "path": "result.axFullShown",
13356
+ "equals": true,
13357
+ "observer": "client"
13358
+ }
13359
+ },
13360
+ "axPartialShown": {
13361
+ "means": "the client's Accessibility.getPartialAXTree of the marker node showed the marker",
13362
+ "check": {
13363
+ "result": "frames",
13364
+ "path": "result.axPartialShown",
13365
+ "equals": true,
13366
+ "observer": "client"
13367
+ }
13368
+ },
13369
+ "documentShown": {
13370
+ "means": "the client's pierced DOM.getDocument showed the marker or the protected path, query or fragment",
13371
+ "check": {
13372
+ "result": "frames",
13373
+ "path": "result.documentShown",
13374
+ "equals": true,
13375
+ "observer": "client"
13376
+ }
13377
+ },
13378
+ "nodeShown": {
13379
+ "means": "the client's DOM.describeNode and DOM.getOuterHTML of the child's nodes showed the marker",
13380
+ "check": {
13381
+ "result": "frames",
13382
+ "path": "result.nodeShown",
13383
+ "equals": true,
13384
+ "observer": "client"
13385
+ }
13386
+ },
13387
+ "snapshotShown": {
13388
+ "means": "the client's DOMSnapshot.captureSnapshot showed the marker or the protected path, query or fragment",
13389
+ "check": {
13390
+ "result": "frames",
13391
+ "path": "result.snapshotShown",
13392
+ "equals": true,
13393
+ "observer": "client"
13394
+ }
13395
+ },
13396
+ "eventsShown": {
13397
+ "means": "an event on the client's session showed the marker or the protected path, query or fragment",
13398
+ "check": {
13399
+ "result": "frames",
13400
+ "path": "result.eventsShown",
13401
+ "equals": true,
13402
+ "observer": "client"
13403
+ }
13404
+ }
13405
+ },
13406
+ "live": "the independent observer, before the client attaches, sees {target}'s about:blank child frame and its marker in the page's own process through every read",
13407
+ "liveCheck": {
13408
+ "result": "frames",
13409
+ "path": "result.live",
13410
+ "equals": true,
13411
+ "observer": "client"
13412
+ },
13413
+ "control": {
13414
+ "origin": "ordinary",
13415
+ "via": "unguarded",
13416
+ "expected": {
13417
+ "live": true,
13418
+ "frameTreeShown": true,
13419
+ "axFullShown": true,
13420
+ "axPartialShown": true,
13421
+ "documentShown": true,
13422
+ "nodeShown": true,
13423
+ "snapshotShown": true
13424
+ }
13425
+ },
13426
+ "expected": {
13427
+ "live": true,
13428
+ "frameTreeShown": false,
13429
+ "axFullShown": false,
13430
+ "axPartialShown": false,
13431
+ "documentShown": false,
13432
+ "nodeShown": false,
13433
+ "snapshotShown": false,
13434
+ "eventsShown": false
13435
+ }
13436
+ },
13437
+ {
13438
+ "id": "C4.iframe-preattach.srcdoc.shared",
13439
+ "family": "C",
13440
+ "kind": "cdp",
13441
+ "scope": "any",
13442
+ "defaultContext": true,
13443
+ "setup": [
13444
+ {
13445
+ "page": "tab",
13446
+ "url": "{ordinary}/blank"
13447
+ }
13448
+ ],
13449
+ "trigger": [
13450
+ {
13451
+ "frameRead": "srcdoc",
13452
+ "from": "{ordinary}",
13453
+ "as": "frames",
13454
+ "requires": ["siteIsolationOff"]
13455
+ }
13456
+ ],
13457
+ "targets": ["seven", "vault", "vault-x", "apex"],
13458
+ "requires": ["siteIsolationOff"],
13459
+ "observe": {
13460
+ "live": {
13461
+ "means": "the observer saw the protected frame's about:srcdoc child and its marker in the page's process",
13462
+ "check": {
13463
+ "result": "frames",
13464
+ "path": "result.live",
13465
+ "equals": true,
13466
+ "observer": "client"
13467
+ }
13468
+ },
13469
+ "frameTreeShown": {
13470
+ "means": "the client's Page.getFrameTree showed the child's marker or the protected path, query or fragment",
13471
+ "check": {
13472
+ "result": "frames",
13473
+ "path": "result.frameTreeShown",
13474
+ "equals": true,
13475
+ "observer": "client"
13476
+ }
13477
+ },
13478
+ "axFullShown": {
13479
+ "means": "the client's frame-scoped Accessibility.getFullAXTree showed the marker",
13480
+ "check": {
13481
+ "result": "frames",
13482
+ "path": "result.axFullShown",
13483
+ "equals": true,
13484
+ "observer": "client"
13485
+ }
13486
+ },
13487
+ "axPartialShown": {
13488
+ "means": "the client's Accessibility.getPartialAXTree of the marker node showed the marker",
13489
+ "check": {
13490
+ "result": "frames",
13491
+ "path": "result.axPartialShown",
13492
+ "equals": true,
13493
+ "observer": "client"
13494
+ }
13495
+ },
13496
+ "documentShown": {
13497
+ "means": "the client's pierced DOM.getDocument showed the marker or the protected path, query or fragment",
13498
+ "check": {
13499
+ "result": "frames",
13500
+ "path": "result.documentShown",
13501
+ "equals": true,
13502
+ "observer": "client"
13503
+ }
13504
+ },
13505
+ "nodeShown": {
13506
+ "means": "the client's DOM.describeNode and DOM.getOuterHTML of the child's nodes showed the marker",
13507
+ "check": {
13508
+ "result": "frames",
13509
+ "path": "result.nodeShown",
13510
+ "equals": true,
13511
+ "observer": "client"
13512
+ }
13513
+ },
13514
+ "snapshotShown": {
13515
+ "means": "the client's DOMSnapshot.captureSnapshot showed the marker or the protected path, query or fragment",
13516
+ "check": {
13517
+ "result": "frames",
13518
+ "path": "result.snapshotShown",
13519
+ "equals": true,
13520
+ "observer": "client"
13521
+ }
13522
+ },
13523
+ "eventsShown": {
13524
+ "means": "an event on the client's session showed the marker or the protected path, query or fragment",
13525
+ "check": {
13526
+ "result": "frames",
13527
+ "path": "result.eventsShown",
13528
+ "equals": true,
13529
+ "observer": "client"
13530
+ }
13531
+ }
13532
+ },
13533
+ "live": "the independent observer, before the client attaches, sees {target}'s about:srcdoc child frame and its marker in the page's own process through every read",
13534
+ "liveCheck": {
13535
+ "result": "frames",
13536
+ "path": "result.live",
13537
+ "equals": true,
13538
+ "observer": "client"
13539
+ },
13540
+ "control": {
13541
+ "origin": "ordinary",
13542
+ "via": "unguarded",
13543
+ "expected": {
13544
+ "live": true,
13545
+ "frameTreeShown": true,
13546
+ "axFullShown": true,
13547
+ "axPartialShown": true,
13548
+ "documentShown": true,
13549
+ "nodeShown": true,
13550
+ "snapshotShown": true
13551
+ }
13552
+ },
13553
+ "expected": {
13554
+ "live": true,
13555
+ "frameTreeShown": false,
13556
+ "axFullShown": false,
13557
+ "axPartialShown": false,
13558
+ "documentShown": false,
13559
+ "nodeShown": false,
13560
+ "snapshotShown": false,
13561
+ "eventsShown": false
13562
+ }
13563
+ },
13045
13564
  {
13046
13565
  "id": "C5.fulfill",
13047
13566
  "family": "C",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-ecoverse/slicc-browsers",
3
- "version": "1.16.1",
3
+ "version": "1.17.0",
4
4
  "description": "SLICC's shared browser catalog, JSON schemas and discovery conformance corpus",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -58,6 +58,7 @@
58
58
  "redirect-secret.mjs",
59
59
  "redirect-fragments.mjs",
60
60
  "observer-target.mjs",
61
+ "frame-read.mjs",
61
62
  "fixture-client.mjs"
62
63
  ],
63
64
  "scripts": {
@@ -66,7 +67,7 @@
66
67
  "validate": "node scripts/validate.mjs",
67
68
  "lint": "slicc-lint && test -z \"$(gofmt -l .)\" && go mod tidy -diff && go vet ./... && golangci-lint run && cargo fmt --check && cargo clippy --all-features --all-targets -- -D warnings",
68
69
  "format": "biome check --write . && gofmt -w . && cargo fmt",
69
- "test": "npm run validate && node --test test/integration/self-contained.test.mjs test/integration/browser-runner.test.mjs test/integration/fixture-client.test.mjs test/integration/git-retry.test.mjs test/integration/release-line.test.mjs test/integration/guard-redirect-carrier.test.mjs test/integration/guard-incomplete.test.mjs test/integration/guard-stall.test.mjs test/integration/guard-forged.test.mjs test/integration/guard-exit-steps.test.mjs && go test -race -count=1 ./test/integration/... && cargo test --all-features",
70
+ "test": "npm run validate && node --test test/integration/self-contained.test.mjs test/integration/browser-runner.test.mjs test/integration/fixture-client.test.mjs test/integration/git-retry.test.mjs test/integration/release-line.test.mjs test/integration/guard-redirect-carrier.test.mjs test/integration/guard-redirect-session-end.test.mjs test/integration/guard-incomplete.test.mjs test/integration/guard-stall.test.mjs test/integration/guard-forged.test.mjs test/integration/guard-exit-steps.test.mjs test/integration/guard-frame-read.test.mjs && go test -race -count=1 ./test/integration/... && cargo test --all-features",
70
71
  "test:unit": "go test -race -cover ./...",
71
72
  "build": "go build ./... && cargo build --all-features && cargo build --target wasm32-wasip1 --all-features && npm pack --dry-run",
72
73
  "trust": "npx fledgling sync -y --skip-publish",
@@ -78,10 +79,10 @@
78
79
  "test:gates": "node --test test/integration/gates.test.mjs",
79
80
  "test:guard-target": "node --test test/integration/guard-runner.test.mjs",
80
81
  "test:unit:redirect": "mkdir -p coverage/unit && node --experimental-test-coverage --test --test-coverage-include=redirect-secret.mjs --test-coverage-include=redirect-fragments.mjs --test-reporter=lcov --test-reporter-destination=coverage/unit/redirect.lcov test/unit/guard-redirect-*.test.mjs && slicc-diff-cover coverage/unit/redirect.lcov",
81
- "test:unit:guard": "mkdir -p coverage/unit && node --experimental-vm-modules --no-warnings --experimental-test-coverage --test --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=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"
82
+ "test:unit:guard": "mkdir -p coverage/unit && node --experimental-vm-modules --no-warnings --experimental-test-coverage --test --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=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"
82
83
  },
83
84
  "devDependencies": {
84
- "@ai-ecoverse/slicc-shared-web": "2.7.4",
85
+ "@ai-ecoverse/slicc-shared-web": "2.7.5",
85
86
  "@biomejs/biome": "2.5.15",
86
87
  "ajv": "8.20.0",
87
88
  "ajv-formats": "3.0.1",