@@ -599,6 +599,49 @@ async def test_drag_to(page: Page, server: Server) -> None:
599
599
)
600
600
601
601
602
+ async def test_drag_to_with_position (page : Page , server : Server ):
603
+ await page .goto (server .EMPTY_PAGE )
604
+ await page .set_content (
605
+ """
606
+ <div style="width:100px;height:100px;background:red;" id="red">
607
+ </div>
608
+ <div style="width:100px;height:100px;background:blue;" id="blue">
609
+ </div>
610
+ """
611
+ )
612
+ events_handle = await page .evaluate_handle (
613
+ """
614
+ () => {
615
+ const events = [];
616
+ document.getElementById('red').addEventListener('mousedown', event => {
617
+ events.push({
618
+ type: 'mousedown',
619
+ x: event.offsetX,
620
+ y: event.offsetY,
621
+ });
622
+ });
623
+ document.getElementById('blue').addEventListener('mouseup', event => {
624
+ events.push({
625
+ type: 'mouseup',
626
+ x: event.offsetX,
627
+ y: event.offsetY,
628
+ });
629
+ });
630
+ return events;
631
+ }
632
+ """
633
+ )
634
+ await page .locator ("#red" ).drag_to (
635
+ page .locator ("#blue" ),
636
+ source_position = {"x" : 34 , "y" : 7 },
637
+ target_position = {"x" : 10 , "y" : 20 },
638
+ )
639
+ assert await events_handle .json_value () == [
640
+ {"type" : "mousedown" , "x" : 34 , "y" : 7 },
641
+ {"type" : "mouseup" , "x" : 10 , "y" : 20 },
642
+ ]
643
+
644
+
602
645
async def test_locator_query_should_filter_by_text (page : Page , server : Server ) -> None :
603
646
await page .set_content ("<div>Foobar</div><div>Bar</div>" )
604
647
await expect (page .locator ("div" , has_text = "Foo" )).to_have_text ("Foobar" )
0 commit comments