Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

import asyncio
import pytest
from webdriver.bidi.modules.script import ContextTarget
pytestmark = pytest.mark.asyncio
from .. import PAUSED_EVENT, RESUMED_EVENT
async def test_step_into_function_call(
bidi_session,
new_tab,
enable_debugging,
inline,
subscribe_events,
wait_for_event,
set_breakpoint,
):
await subscribe_events([PAUSED_EVENT, RESUMED_EVENT])
await enable_debugging(contexts=[new_tab["context"]])
url = inline(
"""<script>
function helper() {
return 10;
}
function test() {
// some comment
const a = helper();
return a;
}
</script>"""
)
await bidi_session.browsing_context.navigate(
context=new_tab["context"], url=url, wait="complete"
)
await set_breakpoint(location={"url": url, "line": 10})
on_paused = wait_for_event(PAUSED_EVENT)
eval_task = asyncio.create_task(
bidi_session.script.evaluate(
expression="test()",
target=ContextTarget(new_tab["context"]),
await_promise=False,
)
)
paused_event1 = await on_paused
assert paused_event1["line"] == 10
assert paused_event1["callFrames"][0]["functionName"] == "test"
on_paused2 = wait_for_event(PAUSED_EVENT)
await bidi_session.moz.debugging.step_into(context=new_tab["context"])
paused_event2 = await on_paused2
assert paused_event2["line"] == 5
assert paused_event2["callFrames"][0]["functionName"] == "helper"
assert len(paused_event2["callFrames"]) >= 2
assert paused_event2["callFrames"][1]["functionName"] == "test"
await bidi_session.moz.debugging.resume(context=new_tab["context"])
result = await eval_task
assert result["type"] == "number"
assert result["value"] == 10
async def test_step_into_same_function(
bidi_session,
new_tab,
enable_debugging,
inline,
subscribe_events,
wait_for_event,
set_breakpoint,
):
await subscribe_events([PAUSED_EVENT, RESUMED_EVENT])
await enable_debugging(contexts=[new_tab["context"]])
url = inline(
"""<script>
function test() {
const a = 1;
const b = 2;
return a + b;
}
</script>"""
)
await bidi_session.browsing_context.navigate(
context=new_tab["context"], url=url, wait="complete"
)
await set_breakpoint(location={"url": url, "line": 6})
on_paused = wait_for_event(PAUSED_EVENT)
eval_task = asyncio.create_task(
bidi_session.script.evaluate(
expression="test()",
target=ContextTarget(new_tab["context"]),
await_promise=False,
)
)
paused_event1 = await on_paused
assert paused_event1["line"] == 6
on_paused2 = wait_for_event(PAUSED_EVENT)
await bidi_session.moz.debugging.step_into(context=new_tab["context"])
paused_event2 = await on_paused2
assert paused_event2["line"] == 7
assert paused_event2["callFrames"][0]["functionName"] == "test"
await bidi_session.moz.debugging.resume(context=new_tab["context"])
result = await eval_task
assert result["type"] == "number"
assert result["value"] == 3