Tests that `Page.frameSubtreeWillBeDetached` event is emitted before the frame subtree is detached ... creating and navigating iframe http://127.0.0.1:8000/inspector-protocol/resources/same_origin_iframe.html ... iframe created and navigated ... removing the frame Received event { method : Page.frameSubtreeWillBeDetached params : { frameId : } sessionId : } Received event { method : Page.frameDetached params : { frameId : reason : remove } sessionId : } Received event { method : Page.frameDetached params : { frameId : reason : remove } sessionId : } ... done removing the frame ... creating and navigating iframe http://127.0.0.1:8000/inspector-protocol/resources/cross_origin_iframe.html ... iframe created and navigated ... removing the frame Received event { method : Page.frameSubtreeWillBeDetached params : { frameId : } sessionId : } Received event { method : Page.frameDetached params : { frameId : reason : remove } sessionId : } Received event { method : Page.frameDetached params : { frameId : reason : remove } sessionId : } ... done removing the frame ... creating and navigating iframe http://oopif.test:8000/inspector-protocol/resources/cross_origin_iframe.html ... iframe created and navigated ... removing the frame Received event { method : Page.frameSubtreeWillBeDetached params : { frameId : } sessionId : } Received event { method : Page.frameDetached params : { frameId : reason : remove } sessionId : } ... done removing the frame ... creating and navigating iframe http://devtools.test:8000/inspector-protocol/resources/cross_origin_iframe.html ... iframe created and navigated ... removing the frame Received event { method : Page.frameSubtreeWillBeDetached params : { frameId : } sessionId : } Received event { method : Page.frameDetached params : { frameId : reason : remove } sessionId : } Received event { method : Page.frameDetached params : { frameId : reason : remove } sessionId : } ... done removing the frame