#![cfg(feature = "integration")]
mod common;
use viewpoint_core::{Browser, DocumentLoadState};
use common::init_tracing;
#[tokio::test]
async fn test_touchscreen_tap() {
init_tracing();
let browser = Browser::launch()
.headless(true)
.launch()
.await
.expect("Failed to launch browser");
let context = browser
.new_context()
.await
.expect("Failed to create context");
let page = context.new_page().await.expect("Failed to create page");
page.goto("https://example.com")
.wait_until(DocumentLoadState::DomContentLoaded)
.goto()
.await
.expect("Failed to navigate");
let result = page.touchscreen().tap(100.0, 200.0).await;
let _ = result;
browser.close().await.expect("Failed to close browser");
}
#[tokio::test]
async fn test_page_drag_and_drop() {
init_tracing();
let browser = Browser::launch()
.headless(true)
.launch()
.await
.expect("Failed to launch browser");
let context = browser
.new_context()
.await
.expect("Failed to create context");
let page = context.new_page().await.expect("Failed to create page");
let html = r#"data:text/html,
<html><body>
<div id="source" style="width:100px;height:100px;background:red;position:absolute;left:0;top:0;">Source</div>
<div id="target" style="width:100px;height:100px;background:blue;position:absolute;left:200px;top:0;">Target</div>
</body></html>
"#;
page.goto(html)
.wait_until(DocumentLoadState::Load)
.goto()
.await
.expect("Failed to navigate");
page.drag_and_drop("#source", "#target")
.send()
.await
.expect("Failed to drag and drop");
browser.close().await.expect("Failed to close browser");
}
#[tokio::test]
async fn test_locator_drag_to() {
init_tracing();
let browser = Browser::launch()
.headless(true)
.launch()
.await
.expect("Failed to launch browser");
let context = browser
.new_context()
.await
.expect("Failed to create context");
let page = context.new_page().await.expect("Failed to create page");
let html = r#"data:text/html,
<html><body>
<div id="source" style="width:100px;height:100px;background:red;position:absolute;left:0;top:0;">Source</div>
<div id="target" style="width:100px;height:100px;background:blue;position:absolute;left:200px;top:0;">Target</div>
</body></html>
"#;
page.goto(html)
.wait_until(DocumentLoadState::Load)
.goto()
.await
.expect("Failed to navigate");
let source = page.locator("#source");
let target = page.locator("#target");
source
.drag_to(&target)
.await
.expect("Failed to drag to target");
browser.close().await.expect("Failed to close browser");
}
#[tokio::test]
async fn test_locator_tap() {
init_tracing();
let browser = Browser::launch()
.headless(true)
.launch()
.await
.expect("Failed to launch browser");
let context = browser
.new_context()
.await
.expect("Failed to create context");
let page = context.new_page().await.expect("Failed to create page");
let html = r#"data:text/html,
<html><body>
<button id="btn" onclick="window.tapped=true">Tap Me</button>
</body></html>
"#;
page.goto(html)
.wait_until(DocumentLoadState::Load)
.goto()
.await
.expect("Failed to navigate");
let button = page.locator("#btn");
let result = button.tap().send().await;
let _ = result;
browser.close().await.expect("Failed to close browser");
}