@ai-ecoverse/slicc-browsers 1.20.3 → 1.21.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.20.3",
3
+ "setVersion": "1.21.0",
4
4
  "sources": [
5
5
  {
6
6
  "repo": "ai-ecoverse/slicc-cli",
@@ -102,7 +102,10 @@
102
102
  "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",
103
103
  "siteIsolationOff": "the browser runs without site isolation, so a cross-site iframe shares its parent's process",
104
104
  "inboundDelay": "a harness gate holding browser-to-guard messages until release during a history restore, with seed and release evidence",
105
- "forwardAudit": "a complete browser-side forwarding ledger for every history-restore probe"
105
+ "forwardAudit": "a complete browser-side forwarding ledger for history-restore probes and for checks of a command's forwarded params (client.forwarded)",
106
+ "stockSetup": "the guard admits stock clients' setup calls: init scripts with no code (the no-code regex is matched on the whole string without the multiline flag), the four display emulation calls, bindings scoped to an isolated world, Page.createIsolatedWorld on an ordinary frame with grantUniveralAccess and contentSecurityPolicy stripped and no executionContextId for any other frame, and Target.setAutoAttach narrowed to tab targets (pages under the tab held like pages, with the same URL redaction in targetInfo)",
107
+ "syntheticAutoAttach": "the transport has no native Target.setAutoAttach, so the guard attaches new tabs, pages and their children itself and synthesizes Target.attachedToTarget, with the same placement and holds",
108
+ "secureOrigin": "the fixture and page origins are secure contexts (HTTPS), so service worker registration is available"
106
109
  },
107
110
  "placeholders": {
108
111
  "target": "the target's origin; {plain} on the control",
@@ -24735,6 +24738,3785 @@
24735
24738
  "loaded": "{target}/canary/{tag}",
24736
24739
  "observer": "fixture"
24737
24740
  }
24741
+ },
24742
+ {
24743
+ "id": "E7.init-script",
24744
+ "family": "E",
24745
+ "kind": "cdp",
24746
+ "scope": "any",
24747
+ "setup": [
24748
+ {
24749
+ "page": "tab",
24750
+ "url": "{ordinary}/doc?n=start-{tag}"
24751
+ },
24752
+ {
24753
+ "observer": "watch"
24754
+ },
24755
+ {
24756
+ "cdp": "Page.enable"
24757
+ },
24758
+ {
24759
+ "cdp": "Runtime.enable"
24760
+ },
24761
+ {
24762
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
24763
+ "params": {
24764
+ "source": "",
24765
+ "worldName": "slicc-removed-{tag}",
24766
+ "runImmediately": true
24767
+ },
24768
+ "as": "removedWorld",
24769
+ "requires": ["stockSetup"]
24770
+ },
24771
+ {
24772
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
24773
+ "params": {
24774
+ "source": "",
24775
+ "worldName": "slicc-playwright-{tag}"
24776
+ },
24777
+ "as": "playwrightWorld",
24778
+ "requires": ["stockSetup"]
24779
+ },
24780
+ {
24781
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
24782
+ "params": {
24783
+ "source": "//# sourceURL=pptr:internal",
24784
+ "worldName": "slicc-puppeteer-{tag}"
24785
+ },
24786
+ "as": "puppeteerWorld",
24787
+ "requires": ["stockSetup"]
24788
+ },
24789
+ {
24790
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
24791
+ "params": {
24792
+ "source": "",
24793
+ "worldName": "slicc-immediate-{tag}",
24794
+ "runImmediately": true
24795
+ },
24796
+ "as": "immediateWorld",
24797
+ "requires": ["stockSetup"]
24798
+ },
24799
+ {
24800
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
24801
+ "params": {
24802
+ "source": "//# sourceURL=slicc-kept-{tag}"
24803
+ },
24804
+ "as": "keptScript",
24805
+ "requires": ["stockSetup"]
24806
+ },
24807
+ {
24808
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
24809
+ "params": {
24810
+ "source": "//# sourceURL=slicc-dropped-{tag}",
24811
+ "worldName": "slicc-dropped-world-{tag}",
24812
+ "runImmediately": true
24813
+ },
24814
+ "as": "droppedScript",
24815
+ "requires": ["stockSetup"]
24816
+ },
24817
+ {
24818
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
24819
+ "params": {
24820
+ "source": "",
24821
+ "worldName": "slicc-empty-{tag}"
24822
+ },
24823
+ "as": "emptyScript",
24824
+ "requires": ["stockSetup"]
24825
+ },
24826
+ {
24827
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
24828
+ "params": {
24829
+ "source": "//# sourceURL=pptr:internal"
24830
+ },
24831
+ "as": "pptrScript",
24832
+ "requires": ["stockSetup"]
24833
+ },
24834
+ {
24835
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
24836
+ "params": {
24837
+ "source": " \t\n// slicc\n//# sourceURL=slicc-comment-{tag}\n"
24838
+ },
24839
+ "as": "commentScript",
24840
+ "requires": ["stockSetup"]
24841
+ },
24842
+ {
24843
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
24844
+ "params": {
24845
+ "source": "// slicc\u0000fetch(new URL('/doc?n=nul-{tag}', location.href)).catch(()=>{})\n//# sourceURL=slicc-nul-{tag}\n",
24846
+ "worldName": "slicc-nul-{tag}"
24847
+ },
24848
+ "as": "nulScript",
24849
+ "requires": ["stockSetup"]
24850
+ },
24851
+ {
24852
+ "wait": 500
24853
+ },
24854
+ {
24855
+ "cdp": "Page.removeScriptToEvaluateOnNewDocument",
24856
+ "params": {
24857
+ "identifier": {
24858
+ "$result": "removedWorld",
24859
+ "path": "result.identifier"
24860
+ }
24861
+ },
24862
+ "as": "removeWorld",
24863
+ "requires": ["stockSetup"]
24864
+ },
24865
+ {
24866
+ "cdp": "Page.removeScriptToEvaluateOnNewDocument",
24867
+ "params": {
24868
+ "identifier": {
24869
+ "$result": "droppedScript",
24870
+ "path": "result.identifier"
24871
+ }
24872
+ },
24873
+ "as": "removeScript",
24874
+ "requires": ["stockSetup"]
24875
+ },
24876
+ {
24877
+ "cdp": "Page.removeScriptToEvaluateOnNewDocument",
24878
+ "params": {
24879
+ "identifier": {
24880
+ "$result": "immediateWorld",
24881
+ "path": "result.identifier"
24882
+ }
24883
+ },
24884
+ "as": "removeImmediate",
24885
+ "requires": ["stockSetup"]
24886
+ },
24887
+ {
24888
+ "observer": "watch"
24889
+ }
24890
+ ],
24891
+ "trigger": [
24892
+ {
24893
+ "page": "navigate",
24894
+ "url": "{target}/doc?n={tag}"
24895
+ },
24896
+ {
24897
+ "settle": {
24898
+ "title": "doc",
24899
+ "ms": 5000,
24900
+ "required": true
24901
+ }
24902
+ }
24903
+ ],
24904
+ "targets": ["ordinary"],
24905
+ "requires": ["stockSetup"],
24906
+ "observe": {
24907
+ "admitted": {
24908
+ "means": "the guard answered removedWorld, playwrightWorld, puppeteerWorld, immediateWorld, keptScript, droppedScript, emptyScript, pptrScript, commentScript, nulScript, removeWorld, removeScript, removeImmediate without an error",
24909
+ "check": {
24910
+ "all": [
24911
+ {
24912
+ "result": "removedWorld",
24913
+ "path": "ok",
24914
+ "equals": true,
24915
+ "observer": "client"
24916
+ },
24917
+ {
24918
+ "result": "playwrightWorld",
24919
+ "path": "ok",
24920
+ "equals": true,
24921
+ "observer": "client"
24922
+ },
24923
+ {
24924
+ "result": "puppeteerWorld",
24925
+ "path": "ok",
24926
+ "equals": true,
24927
+ "observer": "client"
24928
+ },
24929
+ {
24930
+ "result": "immediateWorld",
24931
+ "path": "ok",
24932
+ "equals": true,
24933
+ "observer": "client"
24934
+ },
24935
+ {
24936
+ "result": "keptScript",
24937
+ "path": "ok",
24938
+ "equals": true,
24939
+ "observer": "client"
24940
+ },
24941
+ {
24942
+ "result": "droppedScript",
24943
+ "path": "ok",
24944
+ "equals": true,
24945
+ "observer": "client"
24946
+ },
24947
+ {
24948
+ "result": "emptyScript",
24949
+ "path": "ok",
24950
+ "equals": true,
24951
+ "observer": "client"
24952
+ },
24953
+ {
24954
+ "result": "pptrScript",
24955
+ "path": "ok",
24956
+ "equals": true,
24957
+ "observer": "client"
24958
+ },
24959
+ {
24960
+ "result": "commentScript",
24961
+ "path": "ok",
24962
+ "equals": true,
24963
+ "observer": "client"
24964
+ },
24965
+ {
24966
+ "result": "nulScript",
24967
+ "path": "ok",
24968
+ "equals": true,
24969
+ "observer": "client"
24970
+ },
24971
+ {
24972
+ "result": "removeWorld",
24973
+ "path": "ok",
24974
+ "equals": true,
24975
+ "observer": "client"
24976
+ },
24977
+ {
24978
+ "result": "removeScript",
24979
+ "path": "ok",
24980
+ "equals": true,
24981
+ "observer": "client"
24982
+ },
24983
+ {
24984
+ "result": "removeImmediate",
24985
+ "path": "ok",
24986
+ "equals": true,
24987
+ "observer": "client"
24988
+ }
24989
+ ],
24990
+ "observer": "client"
24991
+ }
24992
+ },
24993
+ "playwrightWorld": {
24994
+ "means": "the unguarded observer saw Chrome create the isolated world of Playwright's empty utility script in the new document",
24995
+ "check": {
24996
+ "world": "slicc-playwright-{tag}",
24997
+ "observer": "unguarded",
24998
+ "origin": "{target}",
24999
+ "afterClear": true
25000
+ }
25001
+ },
25002
+ "puppeteerWorld": {
25003
+ "means": "the unguarded observer saw Chrome create the isolated world of Puppeteer's sourceURL-only utility script in the new document",
25004
+ "check": {
25005
+ "world": "slicc-puppeteer-{tag}",
25006
+ "observer": "unguarded",
25007
+ "origin": "{target}",
25008
+ "afterClear": true
25009
+ }
25010
+ },
25011
+ "immediateWorld": {
25012
+ "means": "the unguarded observer saw Chrome create a runImmediately world in the start document; its script is removed before the navigation, so no later document creates it",
25013
+ "check": {
25014
+ "world": "slicc-immediate-{tag}",
25015
+ "observer": "unguarded"
25016
+ }
25017
+ },
25018
+ "removedWorld": {
25019
+ "means": "after removal, the unguarded observer saw the removed world on a later document",
25020
+ "check": {
25021
+ "world": "slicc-removed-{tag}",
25022
+ "observer": "unguarded",
25023
+ "afterClear": true
25024
+ }
25025
+ },
25026
+ "keptScript": {
25027
+ "means": "the unguarded observer saw Chrome compile a comment-only main-world script in the new document",
25028
+ "check": {
25029
+ "script": "slicc-kept-{tag}",
25030
+ "observer": "unguarded",
25031
+ "afterClear": true
25032
+ }
25033
+ },
25034
+ "commentScript": {
25035
+ "means": "the unguarded observer saw Chrome compile a whitespace-and-comments script in the new document",
25036
+ "check": {
25037
+ "script": "slicc-comment-{tag}",
25038
+ "observer": "unguarded",
25039
+ "afterClear": true
25040
+ }
25041
+ },
25042
+ "droppedScript": {
25043
+ "means": "after removal, the unguarded observer saw the dropped world on a later document",
25044
+ "check": {
25045
+ "world": "slicc-dropped-world-{tag}",
25046
+ "observer": "unguarded",
25047
+ "afterClear": true
25048
+ }
25049
+ },
25050
+ "installedRemoved": {
25051
+ "means": "the unguarded observer saw the runImmediately removed world in the start document before its script was removed",
25052
+ "check": {
25053
+ "world": "slicc-removed-{tag}",
25054
+ "observer": "unguarded"
25055
+ }
25056
+ },
25057
+ "installedDropped": {
25058
+ "means": "the unguarded observer saw the runImmediately dropped world in the start document before its script was removed",
25059
+ "check": {
25060
+ "world": "slicc-dropped-world-{tag}",
25061
+ "observer": "unguarded"
25062
+ }
25063
+ },
25064
+ "immediateCarried": {
25065
+ "means": "after removal, the unguarded observer saw the runImmediately world on a later document",
25066
+ "check": {
25067
+ "world": "slicc-immediate-{tag}",
25068
+ "observer": "unguarded",
25069
+ "afterClear": true
25070
+ }
25071
+ },
25072
+ "emptyWorld": {
25073
+ "means": "the unguarded observer saw Chrome create the emptyScript world in the new document",
25074
+ "check": {
25075
+ "world": "slicc-empty-{tag}",
25076
+ "observer": "unguarded",
25077
+ "origin": "{target}",
25078
+ "afterClear": true
25079
+ }
25080
+ },
25081
+ "pptrCompiled": {
25082
+ "means": "the unguarded observer saw Chrome compile the pptr sourceURL-only script in the new document",
25083
+ "check": {
25084
+ "script": "pptr:internal",
25085
+ "observer": "unguarded",
25086
+ "afterClear": true
25087
+ }
25088
+ },
25089
+ "installedNul": {
25090
+ "means": "the unguarded observer saw Chrome create the NUL no-code world in the new ordinary document",
25091
+ "check": {
25092
+ "world": "slicc-nul-{tag}",
25093
+ "observer": "unguarded",
25094
+ "origin": "{target}",
25095
+ "afterClear": true
25096
+ }
25097
+ },
25098
+ "ranNul": {
25099
+ "means": "the NUL no-code source did not fetch {target}/doc?n=nul-{tag}",
25100
+ "check": {
25101
+ "served": "{target}/doc?n=nul-{tag}",
25102
+ "observer": "fixture"
25103
+ }
25104
+ }
25105
+ },
25106
+ "live": "the stand-in served {target}/doc?n={tag}, which the client navigated to",
25107
+ "liveCheck": {
25108
+ "loaded": "{target}/doc?n={tag}",
25109
+ "observer": "fixture"
25110
+ },
25111
+ "control": {
25112
+ "origin": "ordinary",
25113
+ "via": "unguarded",
25114
+ "expected": {
25115
+ "admitted": true,
25116
+ "playwrightWorld": true,
25117
+ "puppeteerWorld": true,
25118
+ "immediateWorld": true,
25119
+ "removedWorld": false,
25120
+ "keptScript": true,
25121
+ "commentScript": true,
25122
+ "droppedScript": false,
25123
+ "installedRemoved": true,
25124
+ "installedDropped": true,
25125
+ "immediateCarried": false,
25126
+ "emptyWorld": true,
25127
+ "pptrCompiled": true,
25128
+ "installedNul": true,
25129
+ "ranNul": false
25130
+ }
25131
+ },
25132
+ "expected": {
25133
+ "admitted": true,
25134
+ "playwrightWorld": true,
25135
+ "puppeteerWorld": true,
25136
+ "immediateWorld": true,
25137
+ "removedWorld": false,
25138
+ "keptScript": true,
25139
+ "commentScript": true,
25140
+ "droppedScript": false,
25141
+ "installedRemoved": true,
25142
+ "installedDropped": true,
25143
+ "immediateCarried": false,
25144
+ "emptyWorld": true,
25145
+ "pptrCompiled": true,
25146
+ "installedNul": true,
25147
+ "ranNul": false
25148
+ }
25149
+ },
25150
+ {
25151
+ "id": "E7.emulation",
25152
+ "family": "E",
25153
+ "kind": "cdp",
25154
+ "scope": "any",
25155
+ "setup": [
25156
+ {
25157
+ "page": "tab",
25158
+ "url": "{target}/doc?n={tag}"
25159
+ },
25160
+ {
25161
+ "cdp": "Page.enable"
25162
+ },
25163
+ {
25164
+ "cdp": "Emulation.setFocusEmulationEnabled",
25165
+ "params": {
25166
+ "enabled": true
25167
+ },
25168
+ "as": "focus",
25169
+ "requires": ["stockSetup"]
25170
+ },
25171
+ {
25172
+ "cdp": "Emulation.setEmulatedMedia",
25173
+ "params": {
25174
+ "media": "",
25175
+ "features": [
25176
+ {
25177
+ "name": "prefers-color-scheme",
25178
+ "value": "light"
25179
+ },
25180
+ {
25181
+ "name": "prefers-reduced-motion",
25182
+ "value": "reduce"
25183
+ },
25184
+ {
25185
+ "name": "forced-colors",
25186
+ "value": "none"
25187
+ },
25188
+ {
25189
+ "name": "prefers-contrast",
25190
+ "value": "no-preference"
25191
+ }
25192
+ ]
25193
+ },
25194
+ "as": "media",
25195
+ "requires": ["stockSetup"]
25196
+ },
25197
+ {
25198
+ "cdp": "Emulation.setDeviceMetricsOverride",
25199
+ "params": {
25200
+ "width": 1001,
25201
+ "height": 601,
25202
+ "deviceScaleFactor": 1,
25203
+ "mobile": false,
25204
+ "screenWidth": 1001,
25205
+ "screenHeight": 601
25206
+ },
25207
+ "as": "metrics",
25208
+ "requires": ["stockSetup"]
25209
+ },
25210
+ {
25211
+ "cdp": "Emulation.setTouchEmulationEnabled",
25212
+ "params": {
25213
+ "enabled": true,
25214
+ "maxTouchPoints": 2
25215
+ },
25216
+ "as": "touch",
25217
+ "requires": ["stockSetup"]
25218
+ }
25219
+ ],
25220
+ "trigger": [
25221
+ {
25222
+ "settle": {
25223
+ "ms": 500
25224
+ }
25225
+ }
25226
+ ],
25227
+ "targets": ["ordinary"],
25228
+ "requires": ["stockSetup"],
25229
+ "observe": {
25230
+ "admitted": {
25231
+ "means": "the guard answered focus, media, metrics, touch without an error",
25232
+ "check": {
25233
+ "all": [
25234
+ {
25235
+ "result": "focus",
25236
+ "path": "ok",
25237
+ "equals": true,
25238
+ "observer": "client"
25239
+ },
25240
+ {
25241
+ "result": "media",
25242
+ "path": "ok",
25243
+ "equals": true,
25244
+ "observer": "client"
25245
+ },
25246
+ {
25247
+ "result": "metrics",
25248
+ "path": "ok",
25249
+ "equals": true,
25250
+ "observer": "client"
25251
+ },
25252
+ {
25253
+ "result": "touch",
25254
+ "path": "ok",
25255
+ "equals": true,
25256
+ "observer": "client"
25257
+ }
25258
+ ],
25259
+ "observer": "client"
25260
+ }
25261
+ },
25262
+ "focused": {
25263
+ "means": "the unguarded observer reads document.hasFocus() as true in the background tab",
25264
+ "check": {
25265
+ "expression": "document.hasFocus()",
25266
+ "equals": true,
25267
+ "via": "unguarded",
25268
+ "observer": "unguarded"
25269
+ }
25270
+ },
25271
+ "media": {
25272
+ "means": "the unguarded observer matches prefers-reduced-motion: reduce",
25273
+ "check": {
25274
+ "expression": "matchMedia('(prefers-reduced-motion: reduce)').matches",
25275
+ "equals": true,
25276
+ "via": "unguarded",
25277
+ "observer": "unguarded"
25278
+ }
25279
+ },
25280
+ "viewport": {
25281
+ "means": "the unguarded observer reads the overridden 1001x601 viewport",
25282
+ "check": {
25283
+ "expression": "innerWidth + 'x' + innerHeight",
25284
+ "equals": "1001x601",
25285
+ "via": "unguarded",
25286
+ "observer": "unguarded"
25287
+ }
25288
+ },
25289
+ "touch": {
25290
+ "means": "the unguarded observer reads navigator.maxTouchPoints as 2",
25291
+ "check": {
25292
+ "expression": "navigator.maxTouchPoints",
25293
+ "equals": 2,
25294
+ "via": "unguarded",
25295
+ "observer": "unguarded"
25296
+ }
25297
+ }
25298
+ },
25299
+ "live": "the stand-in served {target}/doc?n={tag} to the client's tab",
25300
+ "liveCheck": {
25301
+ "loaded": "{target}/doc?n={tag}",
25302
+ "observer": "fixture"
25303
+ },
25304
+ "control": {
25305
+ "origin": "ordinary",
25306
+ "via": "unguarded",
25307
+ "expected": {
25308
+ "admitted": true,
25309
+ "focused": true,
25310
+ "media": true,
25311
+ "viewport": true,
25312
+ "touch": true
25313
+ }
25314
+ },
25315
+ "expected": {
25316
+ "admitted": true,
25317
+ "focused": true,
25318
+ "media": true,
25319
+ "viewport": true,
25320
+ "touch": true
25321
+ }
25322
+ },
25323
+ {
25324
+ "id": "E7.binding",
25325
+ "family": "E",
25326
+ "kind": "cdp",
25327
+ "scope": "any",
25328
+ "setup": [
25329
+ {
25330
+ "page": "tab",
25331
+ "url": "{ordinary}/doc?n=start-{tag}"
25332
+ },
25333
+ {
25334
+ "cdp": "Page.enable"
25335
+ },
25336
+ {
25337
+ "cdp": "Runtime.enable"
25338
+ },
25339
+ {
25340
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
25341
+ "params": {
25342
+ "source": "",
25343
+ "worldName": "slicc-named-{tag}"
25344
+ },
25345
+ "as": "world",
25346
+ "requires": ["stockSetup"]
25347
+ },
25348
+ {
25349
+ "cdp": "Runtime.addBinding",
25350
+ "params": {
25351
+ "name": "sliccStockNamed",
25352
+ "executionContextName": "slicc-named-{tag}"
25353
+ },
25354
+ "as": "named",
25355
+ "requires": ["stockSetup"]
25356
+ }
25357
+ ],
25358
+ "trigger": [
25359
+ {
25360
+ "page": "navigate",
25361
+ "url": "{target}/doc?n={tag}"
25362
+ },
25363
+ {
25364
+ "settle": {
25365
+ "title": "doc",
25366
+ "ms": 5000,
25367
+ "required": true
25368
+ }
25369
+ },
25370
+ {
25371
+ "cdp": "Page.getFrameTree",
25372
+ "as": "tree"
25373
+ },
25374
+ {
25375
+ "cdp": "Page.createIsolatedWorld",
25376
+ "params": {
25377
+ "frameId": {
25378
+ "$result": "tree",
25379
+ "path": "result.frameTree.frame.id"
25380
+ },
25381
+ "worldName": "slicc-placed-{tag}",
25382
+ "grantUniveralAccess": true
25383
+ },
25384
+ "as": "placed",
25385
+ "requires": ["stockSetup"]
25386
+ },
25387
+ {
25388
+ "cdp": "Runtime.addBinding",
25389
+ "params": {
25390
+ "name": "sliccStockPlaced",
25391
+ "executionContextId": {
25392
+ "$result": "placed",
25393
+ "path": "result.executionContextId"
25394
+ }
25395
+ },
25396
+ "as": "byId",
25397
+ "requires": ["stockSetup"]
25398
+ },
25399
+ {
25400
+ "isolatedWorld": "slicc-named-{tag}",
25401
+ "expression": "typeof sliccStockNamed === 'function' ? (sliccStockNamed('named-{tag}'), 'function') : typeof sliccStockNamed",
25402
+ "as": "namedSeen"
25403
+ },
25404
+ {
25405
+ "isolatedWorld": "slicc-placed-{tag}",
25406
+ "expression": "typeof sliccStockPlaced === 'function' ? (sliccStockPlaced('placed-{tag}'), 'function') : typeof sliccStockPlaced",
25407
+ "as": "placedSeen"
25408
+ },
25409
+ {
25410
+ "settle": {
25411
+ "ms": 500
25412
+ }
25413
+ }
25414
+ ],
25415
+ "targets": ["ordinary"],
25416
+ "requires": ["stockSetup"],
25417
+ "observe": {
25418
+ "admitted": {
25419
+ "means": "the guard answered world, named, placed, byId without an error",
25420
+ "check": {
25421
+ "all": [
25422
+ {
25423
+ "result": "world",
25424
+ "path": "ok",
25425
+ "equals": true,
25426
+ "observer": "client"
25427
+ },
25428
+ {
25429
+ "result": "named",
25430
+ "path": "ok",
25431
+ "equals": true,
25432
+ "observer": "client"
25433
+ },
25434
+ {
25435
+ "result": "placed",
25436
+ "path": "ok",
25437
+ "equals": true,
25438
+ "observer": "client"
25439
+ },
25440
+ {
25441
+ "result": "byId",
25442
+ "path": "ok",
25443
+ "equals": true,
25444
+ "observer": "client"
25445
+ }
25446
+ ],
25447
+ "observer": "client"
25448
+ }
25449
+ },
25450
+ "namedExposed": {
25451
+ "means": "the unguarded observer finds the binding scoped by executionContextName in that isolated world",
25452
+ "check": {
25453
+ "result": "namedSeen",
25454
+ "path": "result.value",
25455
+ "equals": "function",
25456
+ "observer": "unguarded"
25457
+ }
25458
+ },
25459
+ "placedExposed": {
25460
+ "means": "the unguarded observer finds the binding scoped by executionContextId in the client's placed isolated world",
25461
+ "check": {
25462
+ "result": "placedSeen",
25463
+ "path": "result.value",
25464
+ "equals": "function",
25465
+ "observer": "unguarded"
25466
+ }
25467
+ },
25468
+ "mainHidden": {
25469
+ "means": "the unguarded observer finds neither binding in the main world",
25470
+ "check": {
25471
+ "expression": "typeof sliccStockNamed + ' ' + typeof sliccStockPlaced",
25472
+ "equals": "undefined undefined",
25473
+ "via": "unguarded",
25474
+ "observer": "unguarded"
25475
+ }
25476
+ },
25477
+ "namedCalled": {
25478
+ "means": "the client got the Runtime.bindingCalled that the observer's call in the named world fired",
25479
+ "check": {
25480
+ "event": "Runtime.bindingCalled",
25481
+ "where": {
25482
+ "params": {
25483
+ "name": "sliccStockNamed",
25484
+ "payload": "named-{tag}"
25485
+ }
25486
+ },
25487
+ "observer": "client"
25488
+ }
25489
+ },
25490
+ "placedCalled": {
25491
+ "means": "the client got the Runtime.bindingCalled that the observer's call in the placed world fired",
25492
+ "check": {
25493
+ "event": "Runtime.bindingCalled",
25494
+ "where": {
25495
+ "params": {
25496
+ "name": "sliccStockPlaced",
25497
+ "payload": "placed-{tag}"
25498
+ }
25499
+ },
25500
+ "observer": "client"
25501
+ }
25502
+ }
25503
+ },
25504
+ "live": "the stand-in served {target}/doc?n={tag}, which the client navigated to",
25505
+ "liveCheck": {
25506
+ "loaded": "{target}/doc?n={tag}",
25507
+ "observer": "fixture"
25508
+ },
25509
+ "control": {
25510
+ "origin": "ordinary",
25511
+ "via": "unguarded",
25512
+ "expected": {
25513
+ "admitted": true,
25514
+ "namedExposed": true,
25515
+ "placedExposed": true,
25516
+ "mainHidden": true,
25517
+ "namedCalled": true,
25518
+ "placedCalled": true
25519
+ }
25520
+ },
25521
+ "expected": {
25522
+ "admitted": true,
25523
+ "namedExposed": true,
25524
+ "placedExposed": true,
25525
+ "mainHidden": true,
25526
+ "namedCalled": true,
25527
+ "placedCalled": true
25528
+ }
25529
+ },
25530
+ {
25531
+ "id": "C3.tab-attach",
25532
+ "family": "C",
25533
+ "kind": "cdp",
25534
+ "scope": "any",
25535
+ "setup": [
25536
+ {
25537
+ "page": "tab",
25538
+ "url": "{ordinary}/doc?n=opener-{tag}"
25539
+ },
25540
+ {
25541
+ "cdp": "Target.setAutoAttach",
25542
+ "params": {
25543
+ "autoAttach": true,
25544
+ "waitForDebuggerOnStart": true,
25545
+ "flatten": true,
25546
+ "filter": [
25547
+ {
25548
+ "type": "page",
25549
+ "exclude": true
25550
+ },
25551
+ {}
25552
+ ]
25553
+ },
25554
+ "session": "browser",
25555
+ "as": "tabs",
25556
+ "requires": ["autoAttach", "browserSession", "stockSetup"]
25557
+ },
25558
+ {
25559
+ "children": [
25560
+ {
25561
+ "cdp": "Target.setAutoAttach",
25562
+ "params": {
25563
+ "autoAttach": true,
25564
+ "waitForDebuggerOnStart": true,
25565
+ "flatten": true,
25566
+ "filter": [{}]
25567
+ }
25568
+ }
25569
+ ],
25570
+ "requires": ["autoAttach"],
25571
+ "where": {
25572
+ "type": "page"
25573
+ }
25574
+ }
25575
+ ],
25576
+ "trigger": [
25577
+ {
25578
+ "page": "open",
25579
+ "url": "{target}/doc?n={tag}"
25580
+ },
25581
+ {
25582
+ "settle": {
25583
+ "served": "{target}/doc?n={tag}",
25584
+ "ms": 5000,
25585
+ "required": true
25586
+ }
25587
+ },
25588
+ {
25589
+ "cdp": "Page.navigate",
25590
+ "params": {
25591
+ "url": "{target}/doc?n=child-{tag}"
25592
+ },
25593
+ "session": "child",
25594
+ "as": "childNavigate",
25595
+ "requires": ["autoAttach"]
25596
+ },
25597
+ {
25598
+ "settle": {
25599
+ "served": "{target}/doc?n=child-{tag}",
25600
+ "ms": 5000,
25601
+ "required": true
25602
+ }
25603
+ }
25604
+ ],
25605
+ "targets": ["ordinary"],
25606
+ "requires": ["autoAttach", "browserSession", "stockSetup"],
25607
+ "observe": {
25608
+ "admitted": {
25609
+ "means": "the guard answered tabs, childNavigate without an error",
25610
+ "check": {
25611
+ "all": [
25612
+ {
25613
+ "result": "tabs",
25614
+ "path": "ok",
25615
+ "equals": true,
25616
+ "observer": "client"
25617
+ },
25618
+ {
25619
+ "result": "childNavigate",
25620
+ "path": "ok",
25621
+ "equals": true,
25622
+ "observer": "client"
25623
+ }
25624
+ ],
25625
+ "observer": "client"
25626
+ }
25627
+ },
25628
+ "tab": {
25629
+ "means": "the client got Target.attachedToTarget for a tab target",
25630
+ "check": {
25631
+ "event": "Target.attachedToTarget",
25632
+ "where": {
25633
+ "params": {
25634
+ "targetInfo": {
25635
+ "type": "tab"
25636
+ }
25637
+ }
25638
+ },
25639
+ "observer": "client"
25640
+ }
25641
+ },
25642
+ "driven": {
25643
+ "means": "the unguarded observer finds the popup page at the URL the client navigated it to through its auto-attached page session",
25644
+ "check": {
25645
+ "expression": "location.href",
25646
+ "equals": "{target}/doc?n=child-{tag}",
25647
+ "via": "unguarded",
25648
+ "session": "child",
25649
+ "observer": "unguarded"
25650
+ }
25651
+ }
25652
+ },
25653
+ "live": "the stand-in served the popup's first document",
25654
+ "liveCheck": {
25655
+ "loaded": "{target}/doc?n={tag}",
25656
+ "observer": "fixture"
25657
+ },
25658
+ "control": {
25659
+ "origin": "ordinary",
25660
+ "via": "unguarded",
25661
+ "expected": {
25662
+ "admitted": true,
25663
+ "tab": true,
25664
+ "driven": true
25665
+ }
25666
+ },
25667
+ "expected": {
25668
+ "admitted": true,
25669
+ "tab": true,
25670
+ "driven": true
25671
+ }
25672
+ },
25673
+ {
25674
+ "id": "C3.tab-create",
25675
+ "family": "C",
25676
+ "kind": "cdp",
25677
+ "scope": "any",
25678
+ "setup": [
25679
+ {
25680
+ "page": "tab",
25681
+ "url": "{ordinary}/doc?n=opener-{tag}"
25682
+ },
25683
+ {
25684
+ "cdp": "Target.setAutoAttach",
25685
+ "params": {
25686
+ "autoAttach": true,
25687
+ "waitForDebuggerOnStart": true,
25688
+ "flatten": true,
25689
+ "filter": [
25690
+ {
25691
+ "type": "page",
25692
+ "exclude": true
25693
+ },
25694
+ {}
25695
+ ]
25696
+ },
25697
+ "session": "browser",
25698
+ "as": "tabs",
25699
+ "requires": ["autoAttach", "browserSession", "stockSetup"]
25700
+ },
25701
+ {
25702
+ "children": [
25703
+ {
25704
+ "cdp": "Target.setAutoAttach",
25705
+ "params": {
25706
+ "autoAttach": true,
25707
+ "waitForDebuggerOnStart": true,
25708
+ "flatten": true,
25709
+ "filter": [{}]
25710
+ }
25711
+ }
25712
+ ],
25713
+ "requires": ["autoAttach"],
25714
+ "where": {
25715
+ "type": "page"
25716
+ }
25717
+ }
25718
+ ],
25719
+ "trigger": [
25720
+ {
25721
+ "cdp": "Target.createTarget",
25722
+ "params": {
25723
+ "url": "about:blank",
25724
+ "browserContextId": "{context}"
25725
+ },
25726
+ "session": "browser",
25727
+ "as": "created",
25728
+ "requires": ["browserSession"]
25729
+ },
25730
+ {
25731
+ "wait": 2000
25732
+ },
25733
+ {
25734
+ "cdp": "Page.navigate",
25735
+ "params": {
25736
+ "url": "{target}/doc?n=child-{tag}"
25737
+ },
25738
+ "session": "child",
25739
+ "as": "childNavigate",
25740
+ "requires": ["autoAttach"]
25741
+ },
25742
+ {
25743
+ "settle": {
25744
+ "served": "{target}/doc?n=child-{tag}",
25745
+ "ms": 5000,
25746
+ "required": true
25747
+ }
25748
+ }
25749
+ ],
25750
+ "targets": ["ordinary"],
25751
+ "requires": ["autoAttach", "browserSession", "stockSetup"],
25752
+ "observe": {
25753
+ "admitted": {
25754
+ "means": "the guard answered tabs, created, childNavigate without an error",
25755
+ "check": {
25756
+ "all": [
25757
+ {
25758
+ "result": "tabs",
25759
+ "path": "ok",
25760
+ "equals": true,
25761
+ "observer": "client"
25762
+ },
25763
+ {
25764
+ "result": "created",
25765
+ "path": "ok",
25766
+ "equals": true,
25767
+ "observer": "client"
25768
+ },
25769
+ {
25770
+ "result": "childNavigate",
25771
+ "path": "ok",
25772
+ "equals": true,
25773
+ "observer": "client"
25774
+ }
25775
+ ],
25776
+ "observer": "client"
25777
+ }
25778
+ },
25779
+ "tab": {
25780
+ "means": "the client got Target.attachedToTarget for a tab target",
25781
+ "check": {
25782
+ "event": "Target.attachedToTarget",
25783
+ "where": {
25784
+ "params": {
25785
+ "targetInfo": {
25786
+ "type": "tab"
25787
+ }
25788
+ }
25789
+ },
25790
+ "observer": "client"
25791
+ }
25792
+ },
25793
+ "driven": {
25794
+ "means": "the unguarded observer finds the created page at the URL the client navigated it to through its auto-attached page session",
25795
+ "check": {
25796
+ "expression": "location.href",
25797
+ "equals": "{target}/doc?n=child-{tag}",
25798
+ "via": "unguarded",
25799
+ "session": "child",
25800
+ "observer": "unguarded"
25801
+ }
25802
+ }
25803
+ },
25804
+ "live": "the stand-in served the document the client navigated the created page to",
25805
+ "liveCheck": {
25806
+ "loaded": "{target}/doc?n=child-{tag}",
25807
+ "observer": "fixture"
25808
+ },
25809
+ "control": {
25810
+ "origin": "ordinary",
25811
+ "via": "unguarded",
25812
+ "expected": {
25813
+ "admitted": true,
25814
+ "tab": true,
25815
+ "driven": true
25816
+ }
25817
+ },
25818
+ "expected": {
25819
+ "admitted": true,
25820
+ "tab": true,
25821
+ "driven": true
25822
+ }
25823
+ },
25824
+ {
25825
+ "id": "C3.tab-attach.synthetic",
25826
+ "family": "C",
25827
+ "kind": "cdp",
25828
+ "scope": "any",
25829
+ "setup": [
25830
+ {
25831
+ "page": "tab",
25832
+ "url": "{ordinary}/doc?n=opener-{tag}"
25833
+ },
25834
+ {
25835
+ "cdp": "Target.setAutoAttach",
25836
+ "params": {
25837
+ "autoAttach": true,
25838
+ "waitForDebuggerOnStart": true,
25839
+ "flatten": true,
25840
+ "filter": [
25841
+ {
25842
+ "type": "page",
25843
+ "exclude": true
25844
+ },
25845
+ {}
25846
+ ]
25847
+ },
25848
+ "session": "browser",
25849
+ "as": "tabs",
25850
+ "requires": ["syntheticAutoAttach", "browserSession", "stockSetup"]
25851
+ },
25852
+ {
25853
+ "children": [
25854
+ {
25855
+ "cdp": "Target.setAutoAttach",
25856
+ "params": {
25857
+ "autoAttach": true,
25858
+ "waitForDebuggerOnStart": true,
25859
+ "flatten": true,
25860
+ "filter": [{}]
25861
+ }
25862
+ }
25863
+ ],
25864
+ "requires": ["syntheticAutoAttach"],
25865
+ "where": {
25866
+ "type": "page"
25867
+ }
25868
+ }
25869
+ ],
25870
+ "trigger": [
25871
+ {
25872
+ "page": "open",
25873
+ "url": "{target}/doc?n={tag}"
25874
+ },
25875
+ {
25876
+ "settle": {
25877
+ "served": "{target}/doc?n={tag}",
25878
+ "ms": 5000,
25879
+ "required": true
25880
+ }
25881
+ },
25882
+ {
25883
+ "cdp": "Page.navigate",
25884
+ "params": {
25885
+ "url": "{target}/doc?n=child-{tag}"
25886
+ },
25887
+ "session": "child",
25888
+ "as": "childNavigate",
25889
+ "requires": ["syntheticAutoAttach"]
25890
+ },
25891
+ {
25892
+ "settle": {
25893
+ "served": "{target}/doc?n=child-{tag}",
25894
+ "ms": 5000,
25895
+ "required": true
25896
+ }
25897
+ }
25898
+ ],
25899
+ "targets": ["ordinary"],
25900
+ "requires": ["syntheticAutoAttach", "browserSession", "stockSetup"],
25901
+ "observe": {
25902
+ "admitted": {
25903
+ "means": "the guard answered tabs, childNavigate without an error",
25904
+ "check": {
25905
+ "all": [
25906
+ {
25907
+ "result": "tabs",
25908
+ "path": "ok",
25909
+ "equals": true,
25910
+ "observer": "client"
25911
+ },
25912
+ {
25913
+ "result": "childNavigate",
25914
+ "path": "ok",
25915
+ "equals": true,
25916
+ "observer": "client"
25917
+ }
25918
+ ],
25919
+ "observer": "client"
25920
+ }
25921
+ },
25922
+ "tab": {
25923
+ "means": "the client got Target.attachedToTarget for a tab target",
25924
+ "check": {
25925
+ "event": "Target.attachedToTarget",
25926
+ "where": {
25927
+ "params": {
25928
+ "targetInfo": {
25929
+ "type": "tab"
25930
+ }
25931
+ }
25932
+ },
25933
+ "observer": "client"
25934
+ }
25935
+ },
25936
+ "driven": {
25937
+ "means": "the unguarded observer finds the popup page at the URL the client navigated it to through its auto-attached page session",
25938
+ "check": {
25939
+ "expression": "location.href",
25940
+ "equals": "{target}/doc?n=child-{tag}",
25941
+ "via": "unguarded",
25942
+ "session": "child",
25943
+ "observer": "unguarded"
25944
+ }
25945
+ }
25946
+ },
25947
+ "live": "the stand-in served the popup's first document",
25948
+ "liveCheck": {
25949
+ "loaded": "{target}/doc?n={tag}",
25950
+ "observer": "fixture"
25951
+ },
25952
+ "control": {
25953
+ "origin": "ordinary",
25954
+ "via": "unguarded",
25955
+ "expected": {
25956
+ "admitted": true,
25957
+ "tab": true,
25958
+ "driven": true
25959
+ }
25960
+ },
25961
+ "expected": {
25962
+ "admitted": true,
25963
+ "tab": true,
25964
+ "driven": true
25965
+ }
25966
+ },
25967
+ {
25968
+ "id": "C3.tab-create.synthetic",
25969
+ "family": "C",
25970
+ "kind": "cdp",
25971
+ "scope": "any",
25972
+ "setup": [
25973
+ {
25974
+ "page": "tab",
25975
+ "url": "{ordinary}/doc?n=opener-{tag}"
25976
+ },
25977
+ {
25978
+ "cdp": "Target.setAutoAttach",
25979
+ "params": {
25980
+ "autoAttach": true,
25981
+ "waitForDebuggerOnStart": true,
25982
+ "flatten": true,
25983
+ "filter": [
25984
+ {
25985
+ "type": "page",
25986
+ "exclude": true
25987
+ },
25988
+ {}
25989
+ ]
25990
+ },
25991
+ "session": "browser",
25992
+ "as": "tabs",
25993
+ "requires": ["syntheticAutoAttach", "browserSession", "stockSetup"]
25994
+ },
25995
+ {
25996
+ "children": [
25997
+ {
25998
+ "cdp": "Target.setAutoAttach",
25999
+ "params": {
26000
+ "autoAttach": true,
26001
+ "waitForDebuggerOnStart": true,
26002
+ "flatten": true,
26003
+ "filter": [{}]
26004
+ }
26005
+ }
26006
+ ],
26007
+ "requires": ["syntheticAutoAttach"],
26008
+ "where": {
26009
+ "type": "page"
26010
+ }
26011
+ }
26012
+ ],
26013
+ "trigger": [
26014
+ {
26015
+ "cdp": "Target.createTarget",
26016
+ "params": {
26017
+ "url": "about:blank",
26018
+ "browserContextId": "{context}"
26019
+ },
26020
+ "session": "browser",
26021
+ "as": "created",
26022
+ "requires": ["browserSession"]
26023
+ },
26024
+ {
26025
+ "wait": 2000
26026
+ },
26027
+ {
26028
+ "cdp": "Page.navigate",
26029
+ "params": {
26030
+ "url": "{target}/doc?n=child-{tag}"
26031
+ },
26032
+ "session": "child",
26033
+ "as": "childNavigate",
26034
+ "requires": ["syntheticAutoAttach"]
26035
+ },
26036
+ {
26037
+ "settle": {
26038
+ "served": "{target}/doc?n=child-{tag}",
26039
+ "ms": 5000,
26040
+ "required": true
26041
+ }
26042
+ }
26043
+ ],
26044
+ "targets": ["ordinary"],
26045
+ "requires": ["syntheticAutoAttach", "browserSession", "stockSetup"],
26046
+ "observe": {
26047
+ "admitted": {
26048
+ "means": "the guard answered tabs, created, childNavigate without an error",
26049
+ "check": {
26050
+ "all": [
26051
+ {
26052
+ "result": "tabs",
26053
+ "path": "ok",
26054
+ "equals": true,
26055
+ "observer": "client"
26056
+ },
26057
+ {
26058
+ "result": "created",
26059
+ "path": "ok",
26060
+ "equals": true,
26061
+ "observer": "client"
26062
+ },
26063
+ {
26064
+ "result": "childNavigate",
26065
+ "path": "ok",
26066
+ "equals": true,
26067
+ "observer": "client"
26068
+ }
26069
+ ],
26070
+ "observer": "client"
26071
+ }
26072
+ },
26073
+ "tab": {
26074
+ "means": "the client got Target.attachedToTarget for a tab target",
26075
+ "check": {
26076
+ "event": "Target.attachedToTarget",
26077
+ "where": {
26078
+ "params": {
26079
+ "targetInfo": {
26080
+ "type": "tab"
26081
+ }
26082
+ }
26083
+ },
26084
+ "observer": "client"
26085
+ }
26086
+ },
26087
+ "driven": {
26088
+ "means": "the unguarded observer finds the created page at the URL the client navigated it to through its auto-attached page session",
26089
+ "check": {
26090
+ "expression": "location.href",
26091
+ "equals": "{target}/doc?n=child-{tag}",
26092
+ "via": "unguarded",
26093
+ "session": "child",
26094
+ "observer": "unguarded"
26095
+ }
26096
+ }
26097
+ },
26098
+ "live": "the stand-in served the document the client navigated the created page to",
26099
+ "liveCheck": {
26100
+ "loaded": "{target}/doc?n=child-{tag}",
26101
+ "observer": "fixture"
26102
+ },
26103
+ "control": {
26104
+ "origin": "ordinary",
26105
+ "via": "unguarded",
26106
+ "expected": {
26107
+ "admitted": true,
26108
+ "tab": true,
26109
+ "driven": true
26110
+ }
26111
+ },
26112
+ "expected": {
26113
+ "admitted": true,
26114
+ "tab": true,
26115
+ "driven": true
26116
+ }
26117
+ },
26118
+ {
26119
+ "id": "E7.isolated-world",
26120
+ "family": "E",
26121
+ "kind": "cdp",
26122
+ "scope": "any",
26123
+ "setup": [
26124
+ {
26125
+ "page": "tab",
26126
+ "url": "{ordinary}/doc?n=start-{tag}"
26127
+ },
26128
+ {
26129
+ "cdp": "Page.enable"
26130
+ },
26131
+ {
26132
+ "cdp": "Runtime.enable"
26133
+ }
26134
+ ],
26135
+ "trigger": [
26136
+ {
26137
+ "page": "navigate",
26138
+ "url": "{target}/doc?n={tag}"
26139
+ },
26140
+ {
26141
+ "settle": {
26142
+ "title": "doc",
26143
+ "ms": 5000,
26144
+ "required": true
26145
+ }
26146
+ },
26147
+ {
26148
+ "cdp": "Page.getFrameTree",
26149
+ "as": "tree"
26150
+ },
26151
+ {
26152
+ "cdp": "Page.createIsolatedWorld",
26153
+ "params": {
26154
+ "frameId": {
26155
+ "$result": "tree",
26156
+ "path": "result.frameTree.frame.id"
26157
+ },
26158
+ "worldName": "slicc-ua-{tag}",
26159
+ "grantUniveralAccess": true,
26160
+ "contentSecurityPolicy": "default-src 'none'"
26161
+ },
26162
+ "as": "placed",
26163
+ "requires": ["stockSetup"]
26164
+ },
26165
+ {
26166
+ "isolatedWorld": "slicc-ua-{tag}",
26167
+ "expression": "location.origin + '|' + document.title",
26168
+ "as": "sameOrigin"
26169
+ }
26170
+ ],
26171
+ "targets": ["ordinary"],
26172
+ "requires": ["stockSetup", "forwardAudit"],
26173
+ "observe": {
26174
+ "admitted": {
26175
+ "means": "the guard answered placed without an error",
26176
+ "check": {
26177
+ "result": "placed",
26178
+ "path": "ok",
26179
+ "equals": true,
26180
+ "observer": "client"
26181
+ }
26182
+ },
26183
+ "worldWorks": {
26184
+ "means": "the unguarded observer evaluates in the client's isolated world on the ordinary document",
26185
+ "check": {
26186
+ "result": "sameOrigin",
26187
+ "path": "result.value",
26188
+ "equals": "{target}|doc",
26189
+ "observer": "unguarded"
26190
+ }
26191
+ },
26192
+ "stripped": {
26193
+ "means": "the guard forwarded Page.createIsolatedWorld without grantUniveralAccess and without contentSecurityPolicy, or with each false",
26194
+ "requires": ["forwardAudit"],
26195
+ "check": {
26196
+ "forwarded": {
26197
+ "method": "Page.createIsolatedWorld",
26198
+ "where": {
26199
+ "params": {
26200
+ "worldName": "slicc-ua-{tag}"
26201
+ }
26202
+ },
26203
+ "params": {
26204
+ "grantUniveralAccess": {
26205
+ "$absentOr": false
26206
+ },
26207
+ "contentSecurityPolicy": {
26208
+ "$absentOr": false
26209
+ }
26210
+ }
26211
+ },
26212
+ "observer": "client"
26213
+ }
26214
+ }
26215
+ },
26216
+ "live": "the stand-in served {target}/doc?n={tag}, which the client navigated to",
26217
+ "liveCheck": {
26218
+ "loaded": "{target}/doc?n={tag}",
26219
+ "observer": "fixture"
26220
+ },
26221
+ "control": {
26222
+ "origin": "ordinary",
26223
+ "via": "unguarded",
26224
+ "expected": {
26225
+ "admitted": true,
26226
+ "worldWorks": true
26227
+ }
26228
+ },
26229
+ "expected": {
26230
+ "admitted": true,
26231
+ "worldWorks": true,
26232
+ "stripped": true
26233
+ }
26234
+ },
26235
+ {
26236
+ "id": "E7.init-boundary",
26237
+ "family": "E",
26238
+ "kind": "cdp",
26239
+ "scope": "any",
26240
+ "setup": [
26241
+ {
26242
+ "page": "tab",
26243
+ "url": "{ordinary}/doc?n=start-{tag}"
26244
+ },
26245
+ {
26246
+ "observer": "watch"
26247
+ },
26248
+ {
26249
+ "cdp": "Page.enable",
26250
+ "requires": ["stockSetup"]
26251
+ },
26252
+ {
26253
+ "cdp": "Runtime.enable"
26254
+ },
26255
+ {
26256
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
26257
+ "params": {
26258
+ "source": "// slicc\rfetch(new URL('/doc?n=bound-cr-{tag}', location.href)).catch(()=>{})\n//# sourceURL=slicc-cr-{tag}\n",
26259
+ "worldName": "slicc-bound-cr-{tag}"
26260
+ },
26261
+ "as": "boundCr",
26262
+ "refusable": true,
26263
+ "refusal": {
26264
+ "match": "refused"
26265
+ }
26266
+ },
26267
+ {
26268
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
26269
+ "params": {
26270
+ "source": "// slicc
fetch(new URL('/doc?n=bound-ls-{tag}', location.href)).catch(()=>{})\n//# sourceURL=slicc-ls-{tag}\n",
26271
+ "worldName": "slicc-bound-ls-{tag}"
26272
+ },
26273
+ "as": "boundLs",
26274
+ "refusable": true,
26275
+ "refusal": {
26276
+ "match": "refused"
26277
+ }
26278
+ },
26279
+ {
26280
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
26281
+ "params": {
26282
+ "source": "// slicc
fetch(new URL('/doc?n=bound-ps-{tag}', location.href)).catch(()=>{})\n//# sourceURL=slicc-ps-{tag}\n",
26283
+ "worldName": "slicc-bound-ps-{tag}"
26284
+ },
26285
+ "as": "boundPs",
26286
+ "refusable": true,
26287
+ "refusal": {
26288
+ "match": "refused"
26289
+ }
26290
+ },
26291
+ {
26292
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
26293
+ "params": {
26294
+ "source": "// slicc\u0000fetch(new URL('/doc?n=bound-nul-{tag}', location.href)).catch(()=>{})\n//# sourceURL=slicc-nul-{tag}\n",
26295
+ "worldName": "slicc-bound-nul-{tag}"
26296
+ },
26297
+ "as": "boundNul",
26298
+ "refusable": true,
26299
+ "refusal": {
26300
+ "match": "refused"
26301
+ }
26302
+ },
26303
+ {
26304
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
26305
+ "params": {
26306
+ "source": "/* slicc */\nfetch(new URL('/doc?n=bound-block-{tag}', location.href)).catch(()=>{})\n//# sourceURL=slicc-block-{tag}\n",
26307
+ "worldName": "slicc-bound-block-{tag}"
26308
+ },
26309
+ "as": "boundBlock",
26310
+ "refusable": true,
26311
+ "refusal": {
26312
+ "match": "refused"
26313
+ }
26314
+ },
26315
+ {
26316
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
26317
+ "params": {
26318
+ "source": "fetch(new URL('/doc?n=bound-bom-{tag}', location.href)).catch(()=>{})\n//# sourceURL=slicc-bom-{tag}\n",
26319
+ "worldName": "slicc-bound-bom-{tag}"
26320
+ },
26321
+ "as": "boundBom",
26322
+ "refusable": true,
26323
+ "refusal": {
26324
+ "match": "refused"
26325
+ }
26326
+ },
26327
+ {
26328
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
26329
+ "params": {
26330
+ "source": "<!-- slicc -->\nfetch(new URL('/doc?n=bound-html-{tag}', location.href)).catch(()=>{})\n//# sourceURL=slicc-html-{tag}\n",
26331
+ "worldName": "slicc-bound-html-{tag}"
26332
+ },
26333
+ "as": "boundHtml",
26334
+ "refusable": true,
26335
+ "refusal": {
26336
+ "match": "refused"
26337
+ }
26338
+ }
26339
+ ],
26340
+ "trigger": [
26341
+ {
26342
+ "page": "navigate",
26343
+ "url": "{target}/doc?n={tag}"
26344
+ },
26345
+ {
26346
+ "settle": {
26347
+ "title": "doc",
26348
+ "ms": 5000,
26349
+ "dependsOn": [
26350
+ "boundCr",
26351
+ "boundLs",
26352
+ "boundPs",
26353
+ "boundNul",
26354
+ "boundBlock",
26355
+ "boundBom",
26356
+ "boundHtml"
26357
+ ],
26358
+ "or": {
26359
+ "served": "{target}/doc?n={tag}",
26360
+ "observer": "fixture"
26361
+ }
26362
+ }
26363
+ },
26364
+ {
26365
+ "settle": {
26366
+ "ms": 1500
26367
+ }
26368
+ }
26369
+ ],
26370
+ "targets": ["seven", "vault"],
26371
+ "requires": ["stockSetup"],
26372
+ "observe": {
26373
+ "ranCr": {
26374
+ "means": "the boundary script for cr ran and fetched {target}/doc?n=bound-cr-{tag}",
26375
+ "dependsOn": [],
26376
+ "check": {
26377
+ "served": "{target}/doc?n=bound-cr-{tag}",
26378
+ "observer": "fixture"
26379
+ }
26380
+ },
26381
+ "ranLs": {
26382
+ "means": "the boundary script for ls ran and fetched {target}/doc?n=bound-ls-{tag}",
26383
+ "dependsOn": [],
26384
+ "check": {
26385
+ "served": "{target}/doc?n=bound-ls-{tag}",
26386
+ "observer": "fixture"
26387
+ }
26388
+ },
26389
+ "ranPs": {
26390
+ "means": "the boundary script for ps ran and fetched {target}/doc?n=bound-ps-{tag}",
26391
+ "dependsOn": [],
26392
+ "check": {
26393
+ "served": "{target}/doc?n=bound-ps-{tag}",
26394
+ "observer": "fixture"
26395
+ }
26396
+ },
26397
+ "installedNul": {
26398
+ "means": "the unguarded observer saw no NUL-boundary world on the protected document",
26399
+ "dependsOn": [],
26400
+ "check": {
26401
+ "world": "slicc-bound-nul-{tag}",
26402
+ "observer": "unguarded",
26403
+ "origin": "{target}"
26404
+ }
26405
+ },
26406
+ "ranNul": {
26407
+ "means": "the boundary script for nul ran and fetched {target}/doc?n=bound-nul-{tag}",
26408
+ "dependsOn": [],
26409
+ "check": {
26410
+ "served": "{target}/doc?n=bound-nul-{tag}",
26411
+ "observer": "fixture"
26412
+ }
26413
+ },
26414
+ "ranBlock": {
26415
+ "means": "the boundary script for block ran and fetched {target}/doc?n=bound-block-{tag}",
26416
+ "dependsOn": [],
26417
+ "check": {
26418
+ "served": "{target}/doc?n=bound-block-{tag}",
26419
+ "observer": "fixture"
26420
+ }
26421
+ },
26422
+ "ranBom": {
26423
+ "means": "the boundary script for bom ran and fetched {target}/doc?n=bound-bom-{tag}",
26424
+ "dependsOn": [],
26425
+ "check": {
26426
+ "served": "{target}/doc?n=bound-bom-{tag}",
26427
+ "observer": "fixture"
26428
+ }
26429
+ },
26430
+ "ranHtml": {
26431
+ "means": "the boundary script for html ran and fetched {target}/doc?n=bound-html-{tag}",
26432
+ "dependsOn": [],
26433
+ "check": {
26434
+ "served": "{target}/doc?n=bound-html-{tag}",
26435
+ "observer": "fixture"
26436
+ }
26437
+ },
26438
+ "beacon": {
26439
+ "means": "a beacon from {target}",
26440
+ "check": {
26441
+ "beacon": "{target}",
26442
+ "observer": "fixture"
26443
+ },
26444
+ "dependsOn": []
26445
+ },
26446
+ "loaded": {
26447
+ "means": "the stand-in served {target}/doc?n={tag}",
26448
+ "dependsOn": [],
26449
+ "check": {
26450
+ "served": "{target}/doc?n={tag}",
26451
+ "observer": "fixture"
26452
+ }
26453
+ }
26454
+ },
26455
+ "live": "the stand-in served {target}/doc?n={tag}, or the guard refused a refusable step",
26456
+ "liveCheck": {
26457
+ "any": [
26458
+ {
26459
+ "loaded": "{target}/doc?n={tag}",
26460
+ "observer": "fixture"
26461
+ },
26462
+ {
26463
+ "registration": "any",
26464
+ "observer": "client"
26465
+ }
26466
+ ],
26467
+ "observer": "client"
26468
+ },
26469
+ "control": {
26470
+ "origin": "ordinary",
26471
+ "via": "unguarded",
26472
+ "expected": {
26473
+ "ranCr": true,
26474
+ "ranLs": true,
26475
+ "ranPs": true,
26476
+ "installedNul": true,
26477
+ "ranNul": false,
26478
+ "ranBlock": true,
26479
+ "ranBom": true,
26480
+ "ranHtml": true,
26481
+ "beacon": false,
26482
+ "loaded": true
26483
+ }
26484
+ },
26485
+ "expected": {
26486
+ "ranCr": false,
26487
+ "ranLs": false,
26488
+ "ranPs": false,
26489
+ "installedNul": false,
26490
+ "ranNul": false,
26491
+ "ranBlock": false,
26492
+ "ranBom": false,
26493
+ "ranHtml": false,
26494
+ "beacon": false,
26495
+ "loaded": "either"
26496
+ },
26497
+ "designDependent": ["loaded"]
26498
+ },
26499
+ {
26500
+ "id": "E7.init-world-carry",
26501
+ "family": "E",
26502
+ "kind": "cdp",
26503
+ "scope": "any",
26504
+ "setup": [
26505
+ {
26506
+ "page": "tab",
26507
+ "url": "{ordinary}/doc?n=start-{tag}"
26508
+ },
26509
+ {
26510
+ "observer": "watch"
26511
+ },
26512
+ {
26513
+ "cdp": "Page.enable"
26514
+ },
26515
+ {
26516
+ "cdp": "Runtime.enable"
26517
+ },
26518
+ {
26519
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
26520
+ "params": {
26521
+ "source": "",
26522
+ "worldName": "slicc-carry-{tag}"
26523
+ },
26524
+ "as": "world",
26525
+ "requires": ["stockSetup"]
26526
+ }
26527
+ ],
26528
+ "trigger": [
26529
+ {
26530
+ "page": "navigate",
26531
+ "url": "{target}/doc?n={tag}"
26532
+ },
26533
+ {
26534
+ "settle": {
26535
+ "title": "doc",
26536
+ "ms": 5000,
26537
+ "or": {
26538
+ "served": "{target}/doc?n={tag}",
26539
+ "observer": "fixture"
26540
+ }
26541
+ }
26542
+ },
26543
+ {
26544
+ "settle": {
26545
+ "ms": 500
26546
+ }
26547
+ }
26548
+ ],
26549
+ "targets": ["seven", "vault"],
26550
+ "requires": ["stockSetup"],
26551
+ "observe": {
26552
+ "worldOnProtected": {
26553
+ "means": "the unguarded observer saw the named world created on {target}",
26554
+ "check": {
26555
+ "world": "slicc-carry-{tag}",
26556
+ "origin": "{target}",
26557
+ "observer": "unguarded"
26558
+ }
26559
+ },
26560
+ "loaded": {
26561
+ "means": "the stand-in served {target}/doc?n={tag}",
26562
+ "dependsOn": [],
26563
+ "check": {
26564
+ "served": "{target}/doc?n={tag}",
26565
+ "observer": "fixture"
26566
+ }
26567
+ }
26568
+ },
26569
+ "live": "the stand-in served {target}/doc?n={tag}, or the guard refused the protected navigation (pre + blocked), or refused a refusable setup step",
26570
+ "liveCheck": {
26571
+ "any": [
26572
+ {
26573
+ "loaded": "{target}/doc?n={tag}",
26574
+ "observer": "fixture"
26575
+ },
26576
+ {
26577
+ "all": [
26578
+ {
26579
+ "pre": "{target}/doc?n={tag}",
26580
+ "observer": "fixture"
26581
+ },
26582
+ {
26583
+ "any": [
26584
+ {
26585
+ "blocked": {
26586
+ "url": "{target}/doc?n={tag}",
26587
+ "session": "page",
26588
+ "frame": false
26589
+ },
26590
+ "observer": "client"
26591
+ },
26592
+ {
26593
+ "blocked": {
26594
+ "url": "{target}/doc?n={tag}",
26595
+ "session": "page",
26596
+ "frame": false
26597
+ },
26598
+ "observer": "unguarded"
26599
+ },
26600
+ {
26601
+ "history": {
26602
+ "url": "{target}/doc?n={tag}",
26603
+ "session": "page"
26604
+ },
26605
+ "observer": "unguarded"
26606
+ }
26607
+ ],
26608
+ "observer": "client"
26609
+ }
26610
+ ],
26611
+ "observer": "client"
26612
+ },
26613
+ {
26614
+ "registration": "any",
26615
+ "observer": "client"
26616
+ }
26617
+ ],
26618
+ "observer": "client"
26619
+ },
26620
+ "control": {
26621
+ "origin": "ordinary",
26622
+ "via": "unguarded",
26623
+ "expected": {
26624
+ "worldOnProtected": true,
26625
+ "loaded": true
26626
+ }
26627
+ },
26628
+ "expected": {
26629
+ "worldOnProtected": false,
26630
+ "loaded": "either"
26631
+ },
26632
+ "designDependent": ["loaded"]
26633
+ },
26634
+ {
26635
+ "id": "E7.init-world-bfcache",
26636
+ "family": "E",
26637
+ "kind": "cdp",
26638
+ "scope": "any",
26639
+ "setup": [
26640
+ {
26641
+ "page": "tab",
26642
+ "url": "{ordinary}/bfcache?n={tag}-start"
26643
+ },
26644
+ {
26645
+ "observer": "watch"
26646
+ },
26647
+ {
26648
+ "cdp": "Page.enable"
26649
+ },
26650
+ {
26651
+ "cdp": "Runtime.enable"
26652
+ },
26653
+ {
26654
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
26655
+ "params": {
26656
+ "source": "",
26657
+ "worldName": "slicc-bf-{tag}"
26658
+ },
26659
+ "as": "world",
26660
+ "requires": ["stockSetup"]
26661
+ }
26662
+ ],
26663
+ "trigger": [
26664
+ {
26665
+ "page": "navigate",
26666
+ "url": "{target}/bfcache?n={tag}-p"
26667
+ },
26668
+ {
26669
+ "settle": {
26670
+ "ms": 5000,
26671
+ "or": {
26672
+ "served": "{target}/bfcache?n={tag}-p",
26673
+ "observer": "fixture"
26674
+ }
26675
+ }
26676
+ },
26677
+ {
26678
+ "page": "navigate",
26679
+ "url": "{ordinary}/bfcache?n={tag}-b"
26680
+ },
26681
+ {
26682
+ "settle": {
26683
+ "ms": 5000,
26684
+ "or": {
26685
+ "served": "{ordinary}/bfcache?n={tag}-b",
26686
+ "observer": "fixture"
26687
+ }
26688
+ }
26689
+ },
26690
+ {
26691
+ "observer": "watch"
26692
+ },
26693
+ {
26694
+ "cdp": "Runtime.evaluate",
26695
+ "params": {
26696
+ "expression": "history.back()",
26697
+ "returnByValue": true
26698
+ },
26699
+ "as": "back"
26700
+ },
26701
+ {
26702
+ "settle": {
26703
+ "ms": 3000
26704
+ }
26705
+ }
26706
+ ],
26707
+ "targets": ["seven", "vault"],
26708
+ "requires": ["stockSetup"],
26709
+ "observe": {
26710
+ "worldOnProtected": {
26711
+ "means": "after bfcache restore the unguarded observer saw the named no-code world on the protected document",
26712
+ "check": {
26713
+ "world": "slicc-bf-{tag}",
26714
+ "origin": "{target}",
26715
+ "afterClear": true,
26716
+ "observer": "unguarded"
26717
+ }
26718
+ },
26719
+ "beacon": {
26720
+ "means": "a beacon from {target}",
26721
+ "check": {
26722
+ "beacon": "{target}",
26723
+ "observer": "fixture"
26724
+ }
26725
+ },
26726
+ "loaded": {
26727
+ "means": "the stand-in served the protected bfcache document",
26728
+ "check": {
26729
+ "served": "{target}/bfcache?n={tag}-p",
26730
+ "observer": "fixture"
26731
+ }
26732
+ }
26733
+ },
26734
+ "live": "the stand-in served the protected bfcache document, or the guard refused that navigation (pre + blocked), or refused a refusable setup step",
26735
+ "liveCheck": {
26736
+ "any": [
26737
+ {
26738
+ "loaded": "{target}/bfcache?n={tag}-p",
26739
+ "observer": "fixture"
26740
+ },
26741
+ {
26742
+ "all": [
26743
+ {
26744
+ "pre": "{target}/bfcache?n={tag}-p",
26745
+ "observer": "fixture"
26746
+ },
26747
+ {
26748
+ "any": [
26749
+ {
26750
+ "blocked": {
26751
+ "url": "{target}/bfcache?n={tag}-p",
26752
+ "session": "page",
26753
+ "frame": false
26754
+ },
26755
+ "observer": "client"
26756
+ },
26757
+ {
26758
+ "blocked": {
26759
+ "url": "{target}/bfcache?n={tag}-p",
26760
+ "session": "page",
26761
+ "frame": false
26762
+ },
26763
+ "observer": "unguarded"
26764
+ },
26765
+ {
26766
+ "history": {
26767
+ "url": "{target}/bfcache?n={tag}-p",
26768
+ "session": "page"
26769
+ },
26770
+ "observer": "unguarded"
26771
+ }
26772
+ ],
26773
+ "observer": "client"
26774
+ }
26775
+ ],
26776
+ "observer": "client"
26777
+ },
26778
+ {
26779
+ "registration": "any",
26780
+ "observer": "client"
26781
+ }
26782
+ ],
26783
+ "observer": "client"
26784
+ },
26785
+ "control": {
26786
+ "origin": "ordinary",
26787
+ "via": "unguarded",
26788
+ "expected": {
26789
+ "worldOnProtected": true,
26790
+ "beacon": false,
26791
+ "loaded": true
26792
+ }
26793
+ },
26794
+ "expected": {
26795
+ "worldOnProtected": false,
26796
+ "beacon": false,
26797
+ "loaded": "either"
26798
+ },
26799
+ "designDependent": ["loaded"]
26800
+ },
26801
+ {
26802
+ "id": "E7.init-world-error",
26803
+ "family": "E",
26804
+ "kind": "cdp",
26805
+ "scope": "any",
26806
+ "setup": [
26807
+ {
26808
+ "page": "tab",
26809
+ "url": "{ordinary}/doc?n=start-{tag}"
26810
+ },
26811
+ {
26812
+ "observer": "watch"
26813
+ },
26814
+ {
26815
+ "observer": "fail",
26816
+ "url": "{target}/doc*"
26817
+ },
26818
+ {
26819
+ "cdp": "Page.enable"
26820
+ },
26821
+ {
26822
+ "cdp": "Runtime.enable"
26823
+ },
26824
+ {
26825
+ "cdp": "Page.addScriptToEvaluateOnNewDocument",
26826
+ "params": {
26827
+ "source": "",
26828
+ "worldName": "slicc-error-{tag}"
26829
+ },
26830
+ "as": "world",
26831
+ "requires": ["stockSetup"]
26832
+ }
26833
+ ],
26834
+ "trigger": [
26835
+ {
26836
+ "page": "navigate",
26837
+ "url": "{target}/doc?n={tag}"
26838
+ },
26839
+ {
26840
+ "settle": {
26841
+ "ms": 5000
26842
+ }
26843
+ }
26844
+ ],
26845
+ "targets": ["seven", "vault"],
26846
+ "requires": ["stockSetup"],
26847
+ "observe": {
26848
+ "worldOnError": {
26849
+ "means": "the unguarded observer saw the admitted no-code world on Chrome's error page for the failed {target} navigation",
26850
+ "check": {
26851
+ "world": "slicc-error-{tag}",
26852
+ "observer": "unguarded"
26853
+ }
26854
+ },
26855
+ "beacon": {
26856
+ "means": "a beacon from {target}",
26857
+ "check": {
26858
+ "beacon": "{target}",
26859
+ "observer": "fixture"
26860
+ }
26861
+ },
26862
+ "pre": {
26863
+ "means": "the stand-in saw a pre-request for {target}/doc?n={tag}",
26864
+ "dependsOn": [],
26865
+ "check": {
26866
+ "pre": "{target}/doc?n={tag}",
26867
+ "observer": "fixture"
26868
+ }
26869
+ }
26870
+ },
26871
+ "live": "the runner saw a pre-request for the protected URL, or the guard refused the world",
26872
+ "liveCheck": {
26873
+ "any": [
26874
+ {
26875
+ "pre": "{target}/doc?n={tag}",
26876
+ "observer": "fixture"
26877
+ },
26878
+ {
26879
+ "registration": "any",
26880
+ "observer": "client"
26881
+ }
26882
+ ],
26883
+ "observer": "client"
26884
+ },
26885
+ "control": {
26886
+ "origin": "ordinary",
26887
+ "via": "unguarded",
26888
+ "expected": {
26889
+ "worldOnError": true,
26890
+ "beacon": false,
26891
+ "pre": true
26892
+ }
26893
+ },
26894
+ "expected": {
26895
+ "worldOnError": true,
26896
+ "beacon": false,
26897
+ "pre": "either"
26898
+ },
26899
+ "designDependent": ["pre"]
26900
+ },
26901
+ {
26902
+ "id": "E7.emulation-carry",
26903
+ "family": "E",
26904
+ "kind": "cdp",
26905
+ "scope": "any",
26906
+ "setup": [
26907
+ {
26908
+ "page": "tab",
26909
+ "url": "{ordinary}/doc?n=start-{tag}"
26910
+ },
26911
+ {
26912
+ "cdp": "Page.enable"
26913
+ },
26914
+ {
26915
+ "cdp": "Emulation.setFocusEmulationEnabled",
26916
+ "params": {
26917
+ "enabled": true
26918
+ },
26919
+ "as": "focus",
26920
+ "requires": ["stockSetup"]
26921
+ },
26922
+ {
26923
+ "cdp": "Emulation.setEmulatedMedia",
26924
+ "params": {
26925
+ "media": "",
26926
+ "features": [
26927
+ {
26928
+ "name": "prefers-color-scheme",
26929
+ "value": "light"
26930
+ },
26931
+ {
26932
+ "name": "prefers-reduced-motion",
26933
+ "value": "reduce"
26934
+ },
26935
+ {
26936
+ "name": "forced-colors",
26937
+ "value": "none"
26938
+ },
26939
+ {
26940
+ "name": "prefers-contrast",
26941
+ "value": "no-preference"
26942
+ }
26943
+ ]
26944
+ },
26945
+ "as": "media",
26946
+ "requires": ["stockSetup"]
26947
+ },
26948
+ {
26949
+ "cdp": "Emulation.setDeviceMetricsOverride",
26950
+ "params": {
26951
+ "width": 1001,
26952
+ "height": 601,
26953
+ "deviceScaleFactor": 1,
26954
+ "mobile": false,
26955
+ "screenWidth": 1001,
26956
+ "screenHeight": 601
26957
+ },
26958
+ "as": "metrics",
26959
+ "requires": ["stockSetup"]
26960
+ },
26961
+ {
26962
+ "cdp": "Emulation.setTouchEmulationEnabled",
26963
+ "params": {
26964
+ "enabled": true,
26965
+ "maxTouchPoints": 2
26966
+ },
26967
+ "as": "touch",
26968
+ "requires": ["stockSetup"]
26969
+ }
26970
+ ],
26971
+ "trigger": [
26972
+ {
26973
+ "page": "navigate",
26974
+ "url": "{target}/doc?n={tag}"
26975
+ },
26976
+ {
26977
+ "settle": {
26978
+ "title": "doc",
26979
+ "ms": 5000,
26980
+ "or": {
26981
+ "served": "{target}/doc?n={tag}",
26982
+ "observer": "fixture"
26983
+ }
26984
+ }
26985
+ }
26986
+ ],
26987
+ "targets": ["seven", "vault"],
26988
+ "requires": ["stockSetup"],
26989
+ "observe": {
26990
+ "focused": {
26991
+ "means": "the unguarded observer still reads focus emulation on the document after the protected navigation attempt",
26992
+ "check": {
26993
+ "expression": "document.hasFocus()",
26994
+ "equals": true,
26995
+ "via": "unguarded",
26996
+ "observer": "unguarded"
26997
+ }
26998
+ },
26999
+ "media": {
27000
+ "means": "the unguarded observer matches prefers-reduced-motion: reduce on {target}",
27001
+ "check": {
27002
+ "expression": "matchMedia('(prefers-reduced-motion: reduce)').matches",
27003
+ "equals": true,
27004
+ "via": "unguarded",
27005
+ "observer": "unguarded"
27006
+ }
27007
+ },
27008
+ "viewport": {
27009
+ "means": "the unguarded observer still reads the admitted viewport override after the protected navigation attempt",
27010
+ "check": {
27011
+ "expression": "innerWidth + 'x' + innerHeight",
27012
+ "equals": "1001x601",
27013
+ "via": "unguarded",
27014
+ "observer": "unguarded"
27015
+ }
27016
+ },
27017
+ "touch": {
27018
+ "means": "the unguarded observer reads navigator.maxTouchPoints as 2 on {target}",
27019
+ "check": {
27020
+ "expression": "navigator.maxTouchPoints",
27021
+ "equals": 2,
27022
+ "via": "unguarded",
27023
+ "observer": "unguarded"
27024
+ }
27025
+ },
27026
+ "beacon": {
27027
+ "means": "a beacon from {target}",
27028
+ "check": {
27029
+ "beacon": "{target}",
27030
+ "observer": "fixture"
27031
+ }
27032
+ },
27033
+ "loaded": {
27034
+ "means": "the stand-in served {target}/doc?n={tag}",
27035
+ "dependsOn": [],
27036
+ "check": {
27037
+ "served": "{target}/doc?n={tag}",
27038
+ "observer": "fixture"
27039
+ }
27040
+ },
27041
+ "exposed": {
27042
+ "means": "the unguarded observer finds the admitted display overrides (focus, media, viewport, touch) on a document at {target}",
27043
+ "check": {
27044
+ "expression": "location.href.includes('/doc?n={tag}') && location.href.includes(location.origin) && document.hasFocus() && matchMedia('(prefers-reduced-motion: reduce)').matches && innerWidth === 1001 && navigator.maxTouchPoints === 2",
27045
+ "equals": true,
27046
+ "via": "unguarded",
27047
+ "observer": "unguarded"
27048
+ }
27049
+ }
27050
+ },
27051
+ "live": "the stand-in served {target}/doc?n={tag}, or the guard refused the protected navigation (pre + blocked), or refused a refusable setup step",
27052
+ "liveCheck": {
27053
+ "any": [
27054
+ {
27055
+ "loaded": "{target}/doc?n={tag}",
27056
+ "observer": "fixture"
27057
+ },
27058
+ {
27059
+ "all": [
27060
+ {
27061
+ "pre": "{target}/doc?n={tag}",
27062
+ "observer": "fixture"
27063
+ },
27064
+ {
27065
+ "any": [
27066
+ {
27067
+ "blocked": {
27068
+ "url": "{target}/doc?n={tag}",
27069
+ "session": "page",
27070
+ "frame": false
27071
+ },
27072
+ "observer": "client"
27073
+ },
27074
+ {
27075
+ "blocked": {
27076
+ "url": "{target}/doc?n={tag}",
27077
+ "session": "page",
27078
+ "frame": false
27079
+ },
27080
+ "observer": "unguarded"
27081
+ },
27082
+ {
27083
+ "history": {
27084
+ "url": "{target}/doc?n={tag}",
27085
+ "session": "page"
27086
+ },
27087
+ "observer": "unguarded"
27088
+ }
27089
+ ],
27090
+ "observer": "client"
27091
+ }
27092
+ ],
27093
+ "observer": "client"
27094
+ },
27095
+ {
27096
+ "registration": "any",
27097
+ "observer": "client"
27098
+ }
27099
+ ],
27100
+ "observer": "client"
27101
+ },
27102
+ "control": {
27103
+ "origin": "ordinary",
27104
+ "via": "unguarded",
27105
+ "expected": {
27106
+ "focused": true,
27107
+ "media": true,
27108
+ "viewport": true,
27109
+ "touch": true,
27110
+ "exposed": true,
27111
+ "beacon": false,
27112
+ "loaded": true
27113
+ }
27114
+ },
27115
+ "expected": {
27116
+ "exposed": false,
27117
+ "beacon": false,
27118
+ "loaded": "either"
27119
+ },
27120
+ "designDependent": ["loaded"]
27121
+ },
27122
+ {
27123
+ "id": "E7.isolated-foreign",
27124
+ "family": "E",
27125
+ "kind": "cdp",
27126
+ "scope": "any",
27127
+ "setup": [
27128
+ {
27129
+ "page": "tab",
27130
+ "url": "{ordinary}/doc?n=start-{tag}"
27131
+ },
27132
+ {
27133
+ "observer": "watch"
27134
+ },
27135
+ {
27136
+ "cdp": "Page.enable",
27137
+ "requires": ["stockSetup"]
27138
+ },
27139
+ {
27140
+ "cdp": "Runtime.enable"
27141
+ }
27142
+ ],
27143
+ "trigger": [
27144
+ {
27145
+ "page": "navigate",
27146
+ "url": "{target}/doc?n={tag}"
27147
+ },
27148
+ {
27149
+ "settle": {
27150
+ "title": "doc",
27151
+ "ms": 5000,
27152
+ "required": true
27153
+ }
27154
+ },
27155
+ {
27156
+ "cdp": "Page.getFrameTree",
27157
+ "as": "tree"
27158
+ },
27159
+ {
27160
+ "cdp": "Page.createIsolatedWorld",
27161
+ "params": {
27162
+ "frameId": {
27163
+ "$result": "tree",
27164
+ "path": "result.frameTree.frame.id"
27165
+ },
27166
+ "worldName": "slicc-foreign-{tag}",
27167
+ "grantUniveralAccess": true,
27168
+ "contentSecurityPolicy": "default-src 'none'"
27169
+ },
27170
+ "as": "foreign",
27171
+ "refusable": true,
27172
+ "refusal": {
27173
+ "match": "refused"
27174
+ },
27175
+ "requires": ["stockSetup"]
27176
+ }
27177
+ ],
27178
+ "targets": ["seven", "vault"],
27179
+ "requires": ["stockSetup"],
27180
+ "observe": {
27181
+ "noContext": {
27182
+ "means": "createIsolatedWorld on a protected document returned no executionContextId",
27183
+ "dependsOn": ["foreign"],
27184
+ "check": {
27185
+ "any": [
27186
+ {
27187
+ "refused": ["foreign"],
27188
+ "observer": "client"
27189
+ },
27190
+ {
27191
+ "result": "foreign",
27192
+ "path": "result.executionContextId",
27193
+ "equals": {
27194
+ "$absentOr": 0
27195
+ },
27196
+ "observer": "client"
27197
+ }
27198
+ ],
27199
+ "observer": "client"
27200
+ }
27201
+ },
27202
+ "world": {
27203
+ "means": "the unguarded observer saw world slicc-foreign-{tag} on the document",
27204
+ "check": {
27205
+ "world": "slicc-foreign-{tag}",
27206
+ "observer": "unguarded"
27207
+ },
27208
+ "dependsOn": []
27209
+ }
27210
+ },
27211
+ "live": "the stand-in served {target}/doc?n={tag}",
27212
+ "liveCheck": {
27213
+ "loaded": "{target}/doc?n={tag}",
27214
+ "observer": "fixture"
27215
+ },
27216
+ "control": {
27217
+ "origin": "ordinary",
27218
+ "via": "unguarded",
27219
+ "expected": {
27220
+ "noContext": false,
27221
+ "world": true
27222
+ }
27223
+ },
27224
+ "expected": {
27225
+ "noContext": true,
27226
+ "world": false
27227
+ }
27228
+ },
27229
+ {
27230
+ "id": "E7.ua-empty",
27231
+ "family": "E",
27232
+ "kind": "cdp",
27233
+ "scope": "any",
27234
+ "setup": [
27235
+ {
27236
+ "page": "tab",
27237
+ "url": "{ordinary}/doc?n=start-{tag}"
27238
+ },
27239
+ {
27240
+ "cdp": "Page.enable"
27241
+ },
27242
+ {
27243
+ "cdp": "Emulation.setUserAgentOverride",
27244
+ "params": {
27245
+ "userAgent": ""
27246
+ },
27247
+ "as": "ua",
27248
+ "refusable": true,
27249
+ "refusal": {
27250
+ "match": "refused"
27251
+ },
27252
+ "requires": ["stockSetup"]
27253
+ }
27254
+ ],
27255
+ "trigger": [
27256
+ {
27257
+ "settle": {
27258
+ "ms": 200
27259
+ }
27260
+ }
27261
+ ],
27262
+ "targets": ["ordinary"],
27263
+ "requires": ["stockSetup", "forwardAudit"],
27264
+ "observe": {
27265
+ "emptyForwarded": {
27266
+ "means": "the forward ledger shows Emulation.setUserAgentOverride with an empty userAgent",
27267
+ "requires": ["forwardAudit"],
27268
+ "dependsOn": [],
27269
+ "check": {
27270
+ "forwarded": {
27271
+ "method": "Emulation.setUserAgentOverride",
27272
+ "where": {
27273
+ "params": {
27274
+ "userAgent": ""
27275
+ }
27276
+ }
27277
+ },
27278
+ "observer": "client"
27279
+ }
27280
+ }
27281
+ },
27282
+ "live": "the guard answered or refused the empty user-agent override",
27283
+ "liveCheck": {
27284
+ "any": [
27285
+ {
27286
+ "result": "ua",
27287
+ "path": "ok",
27288
+ "equals": true,
27289
+ "observer": "client"
27290
+ },
27291
+ {
27292
+ "registration": "any",
27293
+ "observer": "client"
27294
+ }
27295
+ ],
27296
+ "observer": "client"
27297
+ },
27298
+ "control": {
27299
+ "origin": "ordinary",
27300
+ "via": "unguarded",
27301
+ "expected": {
27302
+ "emptyForwarded": true
27303
+ }
27304
+ },
27305
+ "expected": {
27306
+ "emptyForwarded": false
27307
+ }
27308
+ },
27309
+ {
27310
+ "id": "E7.binding-main",
27311
+ "family": "E",
27312
+ "kind": "cdp",
27313
+ "scope": "any",
27314
+ "setup": [
27315
+ {
27316
+ "page": "tab",
27317
+ "url": "{ordinary}/doc?n=start-{tag}"
27318
+ },
27319
+ {
27320
+ "cdp": "Page.enable",
27321
+ "requires": ["stockSetup"]
27322
+ },
27323
+ {
27324
+ "cdp": "Runtime.enable"
27325
+ },
27326
+ {
27327
+ "cdp": "Runtime.addBinding",
27328
+ "params": {
27329
+ "name": "sliccMainNone"
27330
+ },
27331
+ "as": "none",
27332
+ "refusable": true,
27333
+ "refusal": {
27334
+ "match": "refused"
27335
+ }
27336
+ },
27337
+ {
27338
+ "cdp": "Runtime.addBinding",
27339
+ "params": {
27340
+ "name": "sliccMainEmpty",
27341
+ "executionContextName": ""
27342
+ },
27343
+ "as": "empty",
27344
+ "refusable": true,
27345
+ "refusal": {
27346
+ "match": "refused"
27347
+ }
27348
+ }
27349
+ ],
27350
+ "trigger": [
27351
+ {
27352
+ "page": "navigate",
27353
+ "url": "{target}/doc?n={tag}"
27354
+ },
27355
+ {
27356
+ "settle": {
27357
+ "title": "doc",
27358
+ "ms": 5000,
27359
+ "dependsOn": ["none", "empty"],
27360
+ "or": {
27361
+ "served": "{target}/doc?n={tag}",
27362
+ "observer": "fixture"
27363
+ }
27364
+ }
27365
+ }
27366
+ ],
27367
+ "targets": ["ordinary"],
27368
+ "requires": ["stockSetup"],
27369
+ "observe": {
27370
+ "refused": {
27371
+ "means": "both main-world addBinding calls were refused",
27372
+ "check": {
27373
+ "refused": ["none", "empty"],
27374
+ "observer": "client"
27375
+ },
27376
+ "dependsOn": ["none", "empty"]
27377
+ },
27378
+ "mainHidden": {
27379
+ "means": "the unguarded observer finds neither binding in the main world",
27380
+ "check": {
27381
+ "expression": "typeof sliccMainNone + ' ' + typeof sliccMainEmpty",
27382
+ "equals": "undefined undefined",
27383
+ "via": "unguarded",
27384
+ "observer": "unguarded"
27385
+ },
27386
+ "dependsOn": []
27387
+ }
27388
+ },
27389
+ "live": "the stand-in served {target}/doc?n={tag}",
27390
+ "liveCheck": {
27391
+ "loaded": "{target}/doc?n={tag}",
27392
+ "observer": "fixture"
27393
+ },
27394
+ "control": {
27395
+ "origin": "ordinary",
27396
+ "via": "unguarded",
27397
+ "expected": {
27398
+ "refused": false,
27399
+ "mainHidden": false
27400
+ }
27401
+ },
27402
+ "expected": {
27403
+ "refused": true,
27404
+ "mainHidden": true
27405
+ }
27406
+ },
27407
+ {
27408
+ "id": "E7.binding-main-ctx",
27409
+ "family": "E",
27410
+ "kind": "cdp",
27411
+ "scope": "any",
27412
+ "setup": [
27413
+ {
27414
+ "page": "tab",
27415
+ "url": "{ordinary}/doc?n=start-{tag}"
27416
+ },
27417
+ {
27418
+ "cdp": "Page.enable",
27419
+ "requires": ["stockSetup"]
27420
+ },
27421
+ {
27422
+ "cdp": "Runtime.enable"
27423
+ },
27424
+ {
27425
+ "page": "navigate",
27426
+ "url": "{ordinary}/doc?n=mid-{tag}"
27427
+ },
27428
+ {
27429
+ "settle": {
27430
+ "title": "doc",
27431
+ "ms": 5000,
27432
+ "required": true
27433
+ }
27434
+ }
27435
+ ],
27436
+ "trigger": [
27437
+ {
27438
+ "cdp": "Runtime.addBinding",
27439
+ "params": {
27440
+ "name": "sliccMainCtx",
27441
+ "executionContextId": {
27442
+ "$event": "Runtime.executionContextCreated",
27443
+ "where": {
27444
+ "params": {
27445
+ "context": {
27446
+ "auxData": {
27447
+ "isDefault": true
27448
+ }
27449
+ }
27450
+ }
27451
+ },
27452
+ "path": "params.context.id"
27453
+ }
27454
+ },
27455
+ "as": "mainCtx",
27456
+ "refusable": true,
27457
+ "refusal": {
27458
+ "match": "refused"
27459
+ }
27460
+ }
27461
+ ],
27462
+ "targets": ["ordinary"],
27463
+ "requires": ["stockSetup"],
27464
+ "observe": {
27465
+ "mainRefused": {
27466
+ "means": "addBinding for a main-world executionContextId was refused",
27467
+ "check": {
27468
+ "refused": ["mainCtx"],
27469
+ "observer": "client"
27470
+ },
27471
+ "dependsOn": ["mainCtx"]
27472
+ },
27473
+ "mainExposed": {
27474
+ "means": "the unguarded observer finds the main-world binding",
27475
+ "dependsOn": [],
27476
+ "check": {
27477
+ "expression": "typeof sliccMainCtx",
27478
+ "equals": "function",
27479
+ "via": "unguarded",
27480
+ "observer": "unguarded"
27481
+ }
27482
+ }
27483
+ },
27484
+ "live": "the stand-in served the mid document",
27485
+ "liveCheck": {
27486
+ "loaded": "{ordinary}/doc?n=mid-{tag}",
27487
+ "observer": "fixture"
27488
+ },
27489
+ "control": {
27490
+ "origin": "ordinary",
27491
+ "via": "unguarded",
27492
+ "expected": {
27493
+ "mainRefused": false,
27494
+ "mainExposed": true
27495
+ }
27496
+ },
27497
+ "expected": {
27498
+ "mainRefused": true,
27499
+ "mainExposed": false
27500
+ }
27501
+ },
27502
+ {
27503
+ "id": "C3.tab-protected",
27504
+ "family": "C",
27505
+ "kind": "cdp",
27506
+ "scope": "any",
27507
+ "setup": [
27508
+ {
27509
+ "page": "tab",
27510
+ "url": "{ordinary}/doc?n=opener-{tag}"
27511
+ },
27512
+ {
27513
+ "cdp": "Target.setAutoAttach",
27514
+ "params": {
27515
+ "autoAttach": true,
27516
+ "waitForDebuggerOnStart": true,
27517
+ "flatten": true,
27518
+ "filter": [
27519
+ {
27520
+ "type": "page",
27521
+ "exclude": true
27522
+ },
27523
+ {}
27524
+ ]
27525
+ },
27526
+ "session": "browser",
27527
+ "as": "tabs",
27528
+ "requires": ["autoAttach", "browserSession", "stockSetup"]
27529
+ },
27530
+ {
27531
+ "children": [
27532
+ {
27533
+ "cdp": "Target.setAutoAttach",
27534
+ "params": {
27535
+ "autoAttach": true,
27536
+ "waitForDebuggerOnStart": true,
27537
+ "flatten": true,
27538
+ "filter": [{}]
27539
+ }
27540
+ }
27541
+ ],
27542
+ "requires": ["autoAttach"],
27543
+ "where": {
27544
+ "type": "page"
27545
+ }
27546
+ }
27547
+ ],
27548
+ "trigger": [
27549
+ {
27550
+ "cdp": "Target.createTarget",
27551
+ "params": {
27552
+ "url": "{target}/doc?n={tag}",
27553
+ "browserContextId": "{context}"
27554
+ },
27555
+ "session": "browser",
27556
+ "as": "created",
27557
+ "requires": ["browserSession"]
27558
+ },
27559
+ {
27560
+ "wait": 2000
27561
+ }
27562
+ ],
27563
+ "targets": ["seven", "vault"],
27564
+ "requires": ["autoAttach", "browserSession", "stockSetup"],
27565
+ "observe": {
27566
+ "tab": {
27567
+ "means": "the client got Target.attachedToTarget for a tab target",
27568
+ "check": {
27569
+ "event": "Target.attachedToTarget",
27570
+ "where": {
27571
+ "params": {
27572
+ "targetInfo": {
27573
+ "type": "tab"
27574
+ }
27575
+ }
27576
+ },
27577
+ "observer": "client"
27578
+ }
27579
+ },
27580
+ "pageAttached": {
27581
+ "means": "the client kept a page session for the protected tab child",
27582
+ "check": {
27583
+ "event": "Target.attachedToTarget",
27584
+ "where": {
27585
+ "params": {
27586
+ "targetInfo": {
27587
+ "type": "page",
27588
+ "url": {
27589
+ "$contains": "{target}/doc"
27590
+ }
27591
+ }
27592
+ }
27593
+ },
27594
+ "observer": "client"
27595
+ }
27596
+ },
27597
+ "driven": {
27598
+ "means": "the unguarded observer finds the created page on {target}",
27599
+ "check": {
27600
+ "expression": "location.href",
27601
+ "equals": {
27602
+ "$contains": "{target}/doc"
27603
+ },
27604
+ "via": "unguarded",
27605
+ "session": "child",
27606
+ "observer": "unguarded"
27607
+ }
27608
+ },
27609
+ "beacon": {
27610
+ "means": "a beacon from {target}",
27611
+ "check": {
27612
+ "beacon": "{target}",
27613
+ "observer": "fixture"
27614
+ }
27615
+ }
27616
+ },
27617
+ "live": "the stand-in served {target}/doc?n={tag}, or the tab was held without a client page session",
27618
+ "liveCheck": {
27619
+ "any": [
27620
+ {
27621
+ "loaded": "{target}/doc?n={tag}",
27622
+ "observer": "fixture"
27623
+ },
27624
+ {
27625
+ "pre": "{target}/doc?n={tag}",
27626
+ "observer": "fixture"
27627
+ }
27628
+ ],
27629
+ "observer": "client"
27630
+ },
27631
+ "control": {
27632
+ "origin": "ordinary",
27633
+ "via": "unguarded",
27634
+ "expected": {
27635
+ "tab": true,
27636
+ "pageAttached": true,
27637
+ "driven": true,
27638
+ "beacon": false
27639
+ }
27640
+ },
27641
+ "expected": {
27642
+ "tab": true,
27643
+ "pageAttached": false,
27644
+ "driven": false,
27645
+ "beacon": false
27646
+ }
27647
+ },
27648
+ {
27649
+ "id": "C3.tab-blank",
27650
+ "family": "C",
27651
+ "kind": "cdp",
27652
+ "scope": "any",
27653
+ "setup": [
27654
+ {
27655
+ "page": "tab",
27656
+ "url": "{ordinary}/doc?n=opener-{tag}"
27657
+ },
27658
+ {
27659
+ "cdp": "Target.setAutoAttach",
27660
+ "params": {
27661
+ "autoAttach": true,
27662
+ "waitForDebuggerOnStart": true,
27663
+ "flatten": true,
27664
+ "filter": [
27665
+ {
27666
+ "type": "page",
27667
+ "exclude": true
27668
+ },
27669
+ {}
27670
+ ]
27671
+ },
27672
+ "session": "browser",
27673
+ "as": "tabs",
27674
+ "requires": ["autoAttach", "browserSession", "stockSetup"]
27675
+ },
27676
+ {
27677
+ "children": [
27678
+ {
27679
+ "cdp": "Target.setAutoAttach",
27680
+ "params": {
27681
+ "autoAttach": true,
27682
+ "waitForDebuggerOnStart": true,
27683
+ "flatten": true,
27684
+ "filter": [{}]
27685
+ }
27686
+ }
27687
+ ],
27688
+ "requires": ["autoAttach"],
27689
+ "where": {
27690
+ "type": "page"
27691
+ }
27692
+ }
27693
+ ],
27694
+ "trigger": [
27695
+ {
27696
+ "cdp": "Target.createTarget",
27697
+ "params": {
27698
+ "url": "about:blank",
27699
+ "browserContextId": "{context}"
27700
+ },
27701
+ "session": "browser",
27702
+ "as": "created",
27703
+ "requires": ["browserSession"]
27704
+ },
27705
+ {
27706
+ "wait": 1500
27707
+ },
27708
+ {
27709
+ "cdp": "Page.navigate",
27710
+ "params": {
27711
+ "url": "{ordinary}/doc?n=blank-{tag}"
27712
+ },
27713
+ "session": "child",
27714
+ "as": "childNavigate",
27715
+ "requires": ["autoAttach"]
27716
+ },
27717
+ {
27718
+ "settle": {
27719
+ "served": "{ordinary}/doc?n=blank-{tag}",
27720
+ "ms": 5000,
27721
+ "required": true
27722
+ }
27723
+ }
27724
+ ],
27725
+ "targets": ["ordinary"],
27726
+ "requires": ["autoAttach", "browserSession", "stockSetup"],
27727
+ "observe": {
27728
+ "tab": {
27729
+ "means": "the client got Target.attachedToTarget for a tab target",
27730
+ "check": {
27731
+ "event": "Target.attachedToTarget",
27732
+ "where": {
27733
+ "params": {
27734
+ "targetInfo": {
27735
+ "type": "tab"
27736
+ }
27737
+ }
27738
+ },
27739
+ "observer": "client"
27740
+ }
27741
+ },
27742
+ "pageAttached": {
27743
+ "means": "the client got Target.attachedToTarget for a page under the tab",
27744
+ "check": {
27745
+ "event": "Target.attachedToTarget",
27746
+ "where": {
27747
+ "params": {
27748
+ "targetInfo": {
27749
+ "type": "page"
27750
+ }
27751
+ }
27752
+ },
27753
+ "observer": "client"
27754
+ }
27755
+ },
27756
+ "driven": {
27757
+ "means": "the unguarded observer finds the blank tab child at the URL the client navigated through its auto-attached page session",
27758
+ "check": {
27759
+ "expression": "location.href",
27760
+ "equals": "{ordinary}/doc?n=blank-{tag}",
27761
+ "via": "unguarded",
27762
+ "session": "child",
27763
+ "observer": "unguarded"
27764
+ }
27765
+ }
27766
+ },
27767
+ "live": "the stand-in served the document the client navigated the blank page to",
27768
+ "liveCheck": {
27769
+ "loaded": "{ordinary}/doc?n=blank-{tag}",
27770
+ "observer": "fixture"
27771
+ },
27772
+ "control": {
27773
+ "origin": "ordinary",
27774
+ "via": "unguarded",
27775
+ "expected": {
27776
+ "tab": true,
27777
+ "pageAttached": true,
27778
+ "driven": true
27779
+ }
27780
+ },
27781
+ "expected": {
27782
+ "tab": true,
27783
+ "pageAttached": true,
27784
+ "driven": true
27785
+ }
27786
+ },
27787
+ {
27788
+ "id": "C3.tab-protected.synthetic",
27789
+ "family": "C",
27790
+ "kind": "cdp",
27791
+ "scope": "any",
27792
+ "setup": [
27793
+ {
27794
+ "page": "tab",
27795
+ "url": "{ordinary}/doc?n=opener-{tag}"
27796
+ },
27797
+ {
27798
+ "cdp": "Target.setAutoAttach",
27799
+ "params": {
27800
+ "autoAttach": true,
27801
+ "waitForDebuggerOnStart": true,
27802
+ "flatten": true,
27803
+ "filter": [
27804
+ {
27805
+ "type": "page",
27806
+ "exclude": true
27807
+ },
27808
+ {}
27809
+ ]
27810
+ },
27811
+ "session": "browser",
27812
+ "as": "tabs",
27813
+ "requires": ["syntheticAutoAttach", "browserSession", "stockSetup"]
27814
+ },
27815
+ {
27816
+ "children": [
27817
+ {
27818
+ "cdp": "Target.setAutoAttach",
27819
+ "params": {
27820
+ "autoAttach": true,
27821
+ "waitForDebuggerOnStart": true,
27822
+ "flatten": true,
27823
+ "filter": [{}]
27824
+ }
27825
+ }
27826
+ ],
27827
+ "requires": ["syntheticAutoAttach"],
27828
+ "where": {
27829
+ "type": "page"
27830
+ }
27831
+ }
27832
+ ],
27833
+ "trigger": [
27834
+ {
27835
+ "cdp": "Target.createTarget",
27836
+ "params": {
27837
+ "url": "{target}/doc?n={tag}",
27838
+ "browserContextId": "{context}"
27839
+ },
27840
+ "session": "browser",
27841
+ "as": "created",
27842
+ "requires": ["browserSession"]
27843
+ },
27844
+ {
27845
+ "wait": 2000
27846
+ }
27847
+ ],
27848
+ "targets": ["seven", "vault"],
27849
+ "requires": ["syntheticAutoAttach", "browserSession", "stockSetup"],
27850
+ "observe": {
27851
+ "tab": {
27852
+ "means": "the client got Target.attachedToTarget for a tab target",
27853
+ "check": {
27854
+ "event": "Target.attachedToTarget",
27855
+ "where": {
27856
+ "params": {
27857
+ "targetInfo": {
27858
+ "type": "tab"
27859
+ }
27860
+ }
27861
+ },
27862
+ "observer": "client"
27863
+ }
27864
+ },
27865
+ "pageAttached": {
27866
+ "means": "the client kept a page session for the protected tab child",
27867
+ "check": {
27868
+ "event": "Target.attachedToTarget",
27869
+ "where": {
27870
+ "params": {
27871
+ "targetInfo": {
27872
+ "type": "page",
27873
+ "url": {
27874
+ "$contains": "{target}/doc"
27875
+ }
27876
+ }
27877
+ }
27878
+ },
27879
+ "observer": "client"
27880
+ }
27881
+ },
27882
+ "driven": {
27883
+ "means": "the unguarded observer finds the created page on {target}",
27884
+ "check": {
27885
+ "expression": "location.href",
27886
+ "equals": {
27887
+ "$contains": "{target}/doc"
27888
+ },
27889
+ "via": "unguarded",
27890
+ "session": "child",
27891
+ "observer": "unguarded"
27892
+ }
27893
+ },
27894
+ "beacon": {
27895
+ "means": "a beacon from {target}",
27896
+ "check": {
27897
+ "beacon": "{target}",
27898
+ "observer": "fixture"
27899
+ }
27900
+ }
27901
+ },
27902
+ "live": "the stand-in served {target}/doc?n={tag}, or the tab was held without a client page session",
27903
+ "liveCheck": {
27904
+ "any": [
27905
+ {
27906
+ "loaded": "{target}/doc?n={tag}",
27907
+ "observer": "fixture"
27908
+ },
27909
+ {
27910
+ "pre": "{target}/doc?n={tag}",
27911
+ "observer": "fixture"
27912
+ }
27913
+ ],
27914
+ "observer": "client"
27915
+ },
27916
+ "control": {
27917
+ "origin": "ordinary",
27918
+ "via": "unguarded",
27919
+ "expected": {
27920
+ "tab": true,
27921
+ "pageAttached": true,
27922
+ "driven": true,
27923
+ "beacon": false
27924
+ }
27925
+ },
27926
+ "expected": {
27927
+ "tab": true,
27928
+ "pageAttached": false,
27929
+ "driven": false,
27930
+ "beacon": false
27931
+ }
27932
+ },
27933
+ {
27934
+ "id": "C3.tab-blank.synthetic",
27935
+ "family": "C",
27936
+ "kind": "cdp",
27937
+ "scope": "any",
27938
+ "setup": [
27939
+ {
27940
+ "page": "tab",
27941
+ "url": "{ordinary}/doc?n=opener-{tag}"
27942
+ },
27943
+ {
27944
+ "cdp": "Target.setAutoAttach",
27945
+ "params": {
27946
+ "autoAttach": true,
27947
+ "waitForDebuggerOnStart": true,
27948
+ "flatten": true,
27949
+ "filter": [
27950
+ {
27951
+ "type": "page",
27952
+ "exclude": true
27953
+ },
27954
+ {}
27955
+ ]
27956
+ },
27957
+ "session": "browser",
27958
+ "as": "tabs",
27959
+ "requires": ["syntheticAutoAttach", "browserSession", "stockSetup"]
27960
+ },
27961
+ {
27962
+ "children": [
27963
+ {
27964
+ "cdp": "Target.setAutoAttach",
27965
+ "params": {
27966
+ "autoAttach": true,
27967
+ "waitForDebuggerOnStart": true,
27968
+ "flatten": true,
27969
+ "filter": [{}]
27970
+ }
27971
+ }
27972
+ ],
27973
+ "requires": ["syntheticAutoAttach"],
27974
+ "where": {
27975
+ "type": "page"
27976
+ }
27977
+ }
27978
+ ],
27979
+ "trigger": [
27980
+ {
27981
+ "cdp": "Target.createTarget",
27982
+ "params": {
27983
+ "url": "about:blank",
27984
+ "browserContextId": "{context}"
27985
+ },
27986
+ "session": "browser",
27987
+ "as": "created",
27988
+ "requires": ["browserSession"]
27989
+ },
27990
+ {
27991
+ "wait": 1500
27992
+ },
27993
+ {
27994
+ "cdp": "Page.navigate",
27995
+ "params": {
27996
+ "url": "{ordinary}/doc?n=blank-{tag}"
27997
+ },
27998
+ "session": "child",
27999
+ "as": "childNavigate",
28000
+ "requires": ["syntheticAutoAttach"]
28001
+ },
28002
+ {
28003
+ "settle": {
28004
+ "served": "{ordinary}/doc?n=blank-{tag}",
28005
+ "ms": 5000,
28006
+ "required": true
28007
+ }
28008
+ }
28009
+ ],
28010
+ "targets": ["ordinary"],
28011
+ "requires": ["syntheticAutoAttach", "browserSession", "stockSetup"],
28012
+ "observe": {
28013
+ "tab": {
28014
+ "means": "the client got Target.attachedToTarget for a tab target",
28015
+ "check": {
28016
+ "event": "Target.attachedToTarget",
28017
+ "where": {
28018
+ "params": {
28019
+ "targetInfo": {
28020
+ "type": "tab"
28021
+ }
28022
+ }
28023
+ },
28024
+ "observer": "client"
28025
+ }
28026
+ },
28027
+ "pageAttached": {
28028
+ "means": "the client got Target.attachedToTarget for a page under the tab",
28029
+ "check": {
28030
+ "event": "Target.attachedToTarget",
28031
+ "where": {
28032
+ "params": {
28033
+ "targetInfo": {
28034
+ "type": "page"
28035
+ }
28036
+ }
28037
+ },
28038
+ "observer": "client"
28039
+ }
28040
+ },
28041
+ "driven": {
28042
+ "means": "the unguarded observer finds the blank tab child at the URL the client navigated through its auto-attached page session",
28043
+ "check": {
28044
+ "expression": "location.href",
28045
+ "equals": "{ordinary}/doc?n=blank-{tag}",
28046
+ "via": "unguarded",
28047
+ "session": "child",
28048
+ "observer": "unguarded"
28049
+ }
28050
+ }
28051
+ },
28052
+ "live": "the stand-in served the document the client navigated the blank page to",
28053
+ "liveCheck": {
28054
+ "loaded": "{ordinary}/doc?n=blank-{tag}",
28055
+ "observer": "fixture"
28056
+ },
28057
+ "control": {
28058
+ "origin": "ordinary",
28059
+ "via": "unguarded",
28060
+ "expected": {
28061
+ "tab": true,
28062
+ "pageAttached": true,
28063
+ "driven": true
28064
+ }
28065
+ },
28066
+ "expected": {
28067
+ "tab": true,
28068
+ "pageAttached": true,
28069
+ "driven": true
28070
+ }
28071
+ },
28072
+ {
28073
+ "id": "C3.tab-worker-leak",
28074
+ "family": "C",
28075
+ "kind": "cdp",
28076
+ "scope": "any",
28077
+ "setup": [
28078
+ {
28079
+ "page": "tab",
28080
+ "url": "{ordinary}/doc?n=opener-{tag}"
28081
+ },
28082
+ {
28083
+ "cdp": "Target.setAutoAttach",
28084
+ "params": {
28085
+ "autoAttach": true,
28086
+ "waitForDebuggerOnStart": true,
28087
+ "flatten": true,
28088
+ "filter": [
28089
+ {
28090
+ "type": "page",
28091
+ "exclude": true
28092
+ },
28093
+ {}
28094
+ ]
28095
+ },
28096
+ "session": "browser",
28097
+ "as": "tabs",
28098
+ "requires": ["autoAttach", "browserSession", "stockSetup"]
28099
+ },
28100
+ {
28101
+ "children": [
28102
+ {
28103
+ "cdp": "Target.setAutoAttach",
28104
+ "params": {
28105
+ "autoAttach": true,
28106
+ "waitForDebuggerOnStart": true,
28107
+ "flatten": true,
28108
+ "filter": [{}]
28109
+ }
28110
+ }
28111
+ ],
28112
+ "requires": ["autoAttach"],
28113
+ "where": {
28114
+ "type": "page"
28115
+ }
28116
+ }
28117
+ ],
28118
+ "trigger": [
28119
+ {
28120
+ "cdp": "Target.createTarget",
28121
+ "params": {
28122
+ "url": "{ordinary}/doc?n=host-{tag}",
28123
+ "browserContextId": "{context}"
28124
+ },
28125
+ "session": "browser",
28126
+ "as": "created",
28127
+ "requires": ["browserSession"]
28128
+ },
28129
+ {
28130
+ "wait": 1500
28131
+ },
28132
+ {
28133
+ "cdp": "Runtime.evaluate",
28134
+ "params": {
28135
+ "expression": "(() => { const src = 'onmessage=e=>postMessage(e.data);'; const u = URL.createObjectURL(new Blob([src], {type: 'text/javascript'})); window.__sliccW = new Worker(u); return 'spawned'; })()",
28136
+ "awaitPromise": true,
28137
+ "returnByValue": true
28138
+ },
28139
+ "session": "child",
28140
+ "as": "spawned",
28141
+ "requires": ["autoAttach"]
28142
+ },
28143
+ {
28144
+ "wait": 1500
28145
+ }
28146
+ ],
28147
+ "targets": ["seven", "vault"],
28148
+ "requires": ["autoAttach", "browserSession", "stockSetup"],
28149
+ "observe": {
28150
+ "admitted": {
28151
+ "means": "the guard answered tabs, created and spawned without an error",
28152
+ "check": {
28153
+ "all": [
28154
+ {
28155
+ "result": "tabs",
28156
+ "path": "ok",
28157
+ "equals": true,
28158
+ "observer": "client"
28159
+ },
28160
+ {
28161
+ "result": "created",
28162
+ "path": "ok",
28163
+ "equals": true,
28164
+ "observer": "client"
28165
+ },
28166
+ {
28167
+ "result": "spawned",
28168
+ "path": "ok",
28169
+ "equals": true,
28170
+ "observer": "client"
28171
+ }
28172
+ ],
28173
+ "observer": "client"
28174
+ }
28175
+ },
28176
+ "workerAttached": {
28177
+ "means": "the client got Target.attachedToTarget for a worker through the broad filter",
28178
+ "check": {
28179
+ "event": "Target.attachedToTarget",
28180
+ "where": {
28181
+ "params": {
28182
+ "targetInfo": {
28183
+ "type": "worker"
28184
+ }
28185
+ }
28186
+ },
28187
+ "observer": "client"
28188
+ }
28189
+ },
28190
+ "workerExists": {
28191
+ "means": "the unguarded observer finds the page still holds the spawned Worker",
28192
+ "check": {
28193
+ "expression": "typeof window.__sliccW",
28194
+ "equals": "object",
28195
+ "via": "unguarded",
28196
+ "session": "child",
28197
+ "observer": "unguarded"
28198
+ }
28199
+ }
28200
+ },
28201
+ "live": "the stand-in served the host document under the tab",
28202
+ "liveCheck": {
28203
+ "loaded": "{ordinary}/doc?n=host-{tag}",
28204
+ "observer": "fixture"
28205
+ },
28206
+ "control": {
28207
+ "origin": "ordinary",
28208
+ "via": "unguarded",
28209
+ "expected": {
28210
+ "admitted": true,
28211
+ "workerAttached": true,
28212
+ "workerExists": true
28213
+ }
28214
+ },
28215
+ "expected": {
28216
+ "admitted": true,
28217
+ "workerAttached": false,
28218
+ "workerExists": true
28219
+ }
28220
+ },
28221
+ {
28222
+ "id": "C3.tab-iframe-leak",
28223
+ "family": "C",
28224
+ "kind": "cdp",
28225
+ "scope": "any",
28226
+ "setup": [
28227
+ {
28228
+ "page": "tab",
28229
+ "url": "{ordinary}/doc?n=opener-{tag}"
28230
+ },
28231
+ {
28232
+ "cdp": "Target.setAutoAttach",
28233
+ "params": {
28234
+ "autoAttach": true,
28235
+ "waitForDebuggerOnStart": true,
28236
+ "flatten": true,
28237
+ "filter": [
28238
+ {
28239
+ "type": "page",
28240
+ "exclude": true
28241
+ },
28242
+ {}
28243
+ ]
28244
+ },
28245
+ "session": "browser",
28246
+ "as": "tabs",
28247
+ "requires": ["autoAttach", "browserSession", "stockSetup"]
28248
+ },
28249
+ {
28250
+ "children": [
28251
+ {
28252
+ "cdp": "Target.setAutoAttach",
28253
+ "params": {
28254
+ "autoAttach": true,
28255
+ "waitForDebuggerOnStart": true,
28256
+ "flatten": true,
28257
+ "filter": [{}]
28258
+ }
28259
+ }
28260
+ ],
28261
+ "requires": ["autoAttach"],
28262
+ "where": {
28263
+ "type": "page"
28264
+ }
28265
+ }
28266
+ ],
28267
+ "trigger": [
28268
+ {
28269
+ "cdp": "Target.createTarget",
28270
+ "params": {
28271
+ "url": "{ordinary}/doc?n=host-{tag}",
28272
+ "browserContextId": "{context}"
28273
+ },
28274
+ "session": "browser",
28275
+ "as": "created",
28276
+ "requires": ["browserSession"]
28277
+ },
28278
+ {
28279
+ "wait": 1500
28280
+ },
28281
+ {
28282
+ "cdp": "Runtime.evaluate",
28283
+ "params": {
28284
+ "expression": "(() => { const f = document.createElement('iframe'); f.src = '{seven}/doc?n=frame-{tag}'; document.body.appendChild(f); return 'framed'; })()",
28285
+ "returnByValue": true
28286
+ },
28287
+ "session": "child",
28288
+ "as": "framed",
28289
+ "requires": ["autoAttach"]
28290
+ },
28291
+ {
28292
+ "wait": 2000
28293
+ }
28294
+ ],
28295
+ "targets": ["seven", "vault"],
28296
+ "requires": ["autoAttach", "browserSession", "stockSetup"],
28297
+ "observe": {
28298
+ "admitted": {
28299
+ "means": "the guard answered tabs, created and framed without an error",
28300
+ "check": {
28301
+ "all": [
28302
+ {
28303
+ "result": "tabs",
28304
+ "path": "ok",
28305
+ "equals": true,
28306
+ "observer": "client"
28307
+ },
28308
+ {
28309
+ "result": "created",
28310
+ "path": "ok",
28311
+ "equals": true,
28312
+ "observer": "client"
28313
+ },
28314
+ {
28315
+ "result": "framed",
28316
+ "path": "ok",
28317
+ "equals": true,
28318
+ "observer": "client"
28319
+ }
28320
+ ],
28321
+ "observer": "client"
28322
+ }
28323
+ },
28324
+ "iframeExists": {
28325
+ "means": "the unguarded observer finds the iframe element in the host document",
28326
+ "check": {
28327
+ "expression": "!!document.querySelector('iframe[src*=\"frame-{tag}\"]')",
28328
+ "equals": true,
28329
+ "via": "unguarded",
28330
+ "session": "child",
28331
+ "observer": "unguarded"
28332
+ }
28333
+ },
28334
+ "iframeAttached": {
28335
+ "means": "the client got Target.attachedToTarget for an iframe through the broad filter",
28336
+ "check": {
28337
+ "event": "Target.attachedToTarget",
28338
+ "where": {
28339
+ "params": {
28340
+ "targetInfo": {
28341
+ "type": "iframe"
28342
+ }
28343
+ }
28344
+ },
28345
+ "observer": "client"
28346
+ }
28347
+ }
28348
+ },
28349
+ "live": "the stand-in served the host document under the tab",
28350
+ "liveCheck": {
28351
+ "loaded": "{ordinary}/doc?n=host-{tag}",
28352
+ "observer": "fixture"
28353
+ },
28354
+ "control": {
28355
+ "origin": "ordinary",
28356
+ "via": "unguarded",
28357
+ "expected": {
28358
+ "admitted": true,
28359
+ "iframeExists": true,
28360
+ "iframeAttached": true
28361
+ }
28362
+ },
28363
+ "expected": {
28364
+ "admitted": true,
28365
+ "iframeExists": true,
28366
+ "iframeAttached": false
28367
+ }
28368
+ },
28369
+ {
28370
+ "id": "C3.tab-service-worker-leak",
28371
+ "family": "C",
28372
+ "kind": "cdp",
28373
+ "scope": "any",
28374
+ "setup": [
28375
+ {
28376
+ "page": "tab",
28377
+ "url": "{ordinary}/doc?n=opener-{tag}"
28378
+ },
28379
+ {
28380
+ "cdp": "Target.setAutoAttach",
28381
+ "params": {
28382
+ "autoAttach": true,
28383
+ "waitForDebuggerOnStart": true,
28384
+ "flatten": true,
28385
+ "filter": [
28386
+ {
28387
+ "type": "page",
28388
+ "exclude": true
28389
+ },
28390
+ {}
28391
+ ]
28392
+ },
28393
+ "session": "browser",
28394
+ "as": "tabs",
28395
+ "requires": ["autoAttach", "browserSession", "stockSetup"]
28396
+ },
28397
+ {
28398
+ "children": [
28399
+ {
28400
+ "cdp": "Target.setAutoAttach",
28401
+ "params": {
28402
+ "autoAttach": true,
28403
+ "waitForDebuggerOnStart": true,
28404
+ "flatten": true,
28405
+ "filter": [{}]
28406
+ }
28407
+ }
28408
+ ],
28409
+ "requires": ["autoAttach"],
28410
+ "where": {
28411
+ "type": "page"
28412
+ }
28413
+ }
28414
+ ],
28415
+ "trigger": [
28416
+ {
28417
+ "cdp": "Target.createTarget",
28418
+ "params": {
28419
+ "url": "{ordinary}/doc?n=host-{tag}",
28420
+ "browserContextId": "{context}"
28421
+ },
28422
+ "session": "browser",
28423
+ "as": "created",
28424
+ "requires": ["browserSession"]
28425
+ },
28426
+ {
28427
+ "wait": 1500
28428
+ },
28429
+ {
28430
+ "cdp": "Runtime.evaluate",
28431
+ "params": {
28432
+ "expression": "(async()=>{ try { await navigator.serviceWorker.register('/sw.js?n={tag}',{scope:'/'}); return 'registered'; } catch(e){ return 'err:'+e.message; } })()",
28433
+ "awaitPromise": true,
28434
+ "returnByValue": true
28435
+ },
28436
+ "session": "child",
28437
+ "as": "registered",
28438
+ "requires": ["autoAttach", "secureOrigin"]
28439
+ },
28440
+ {
28441
+ "wait": 2500
28442
+ }
28443
+ ],
28444
+ "targets": ["seven", "vault"],
28445
+ "requires": ["autoAttach", "browserSession", "stockSetup", "secureOrigin"],
28446
+ "observe": {
28447
+ "admitted": {
28448
+ "means": "the guard answered tabs, created and registered without an error",
28449
+ "check": {
28450
+ "all": [
28451
+ {
28452
+ "result": "tabs",
28453
+ "path": "ok",
28454
+ "equals": true,
28455
+ "observer": "client"
28456
+ },
28457
+ {
28458
+ "result": "created",
28459
+ "path": "ok",
28460
+ "equals": true,
28461
+ "observer": "client"
28462
+ },
28463
+ {
28464
+ "result": "registered",
28465
+ "path": "result.result.value",
28466
+ "equals": "registered",
28467
+ "observer": "client"
28468
+ }
28469
+ ],
28470
+ "observer": "client"
28471
+ }
28472
+ },
28473
+ "workerExists": {
28474
+ "means": "the unguarded observer finds a service worker registration for the host",
28475
+ "check": {
28476
+ "expression": "(async()=>{ try { const r=await navigator.serviceWorker.getRegistration(); return !!(r&&String(r.scope||'').length); } catch { return false; } })()",
28477
+ "equals": true,
28478
+ "via": "unguarded",
28479
+ "session": "child",
28480
+ "observer": "unguarded"
28481
+ }
28482
+ },
28483
+ "workerAttached": {
28484
+ "means": "the client got Target.attachedToTarget for a service_worker through the broad filter",
28485
+ "check": {
28486
+ "event": "Target.attachedToTarget",
28487
+ "where": {
28488
+ "params": {
28489
+ "targetInfo": {
28490
+ "type": "service_worker",
28491
+ "url": {
28492
+ "$contains": "/sw.js"
28493
+ }
28494
+ }
28495
+ }
28496
+ },
28497
+ "observer": "client"
28498
+ }
28499
+ }
28500
+ },
28501
+ "live": "the stand-in served the host document under the tab",
28502
+ "liveCheck": {
28503
+ "loaded": "{ordinary}/doc?n=host-{tag}",
28504
+ "observer": "fixture"
28505
+ },
28506
+ "control": {
28507
+ "origin": "ordinary",
28508
+ "via": "unguarded",
28509
+ "expected": {
28510
+ "admitted": true,
28511
+ "workerExists": true,
28512
+ "workerAttached": true
28513
+ }
28514
+ },
28515
+ "expected": {
28516
+ "admitted": true,
28517
+ "workerExists": true,
28518
+ "workerAttached": false
28519
+ }
24738
28520
  }
24739
28521
  ]
24740
28522
  }