<!DOCTYPE html>
<html>
<head>
<script src="../../../http/tests/inspector/resources/inspector-test.js"></script>
<script src="resources/stack-trace-utilities.js"></script>
<script src="resources/tail-deleted-frames-vm-entry.js"></script>
<script>
function test()
{
    let suite = InspectorTest.createAsyncSuite("Debugger.TailDeletedFrames.VMEntry");

    suite.addTestCase({
        name: "Debugger.TailDeletedFrames.Scopes",
        description: "Ensure proper values in tail deleted frames",
        async test() {
            // Trigger breakpoint.
            InspectorTest.evaluateInPage(`setTimeout(timeout)`);

            // Dump stack when paused.
            await WI.debuggerManager.awaitEvent(WI.DebuggerManager.Event.Paused);
            InspectorTest.log("PAUSED");
            await logAsyncStackTrace({includeScope: 1});

            // Resume and end test.
            WI.debuggerManager.resume();
            await WI.debuggerManager.awaitEvent(WI.DebuggerManager.Event.Resumed);
            InspectorTest.log("RESUMED");
        }
    });

    suite.runTestCasesAndFinish();
}
</script>
</head>
<body onload="runTest()">
<p>Ensure proper values in tail deleted frames.</p>
</body>
</html>
