Playwright
// Swipe gesture simulation
const item = page.getByTestId('item-1');
const box = await item.boundingBox();
// Swipe left to reveal delete
await page.touchscreen.tap(box.x + box.width/2, box.y + box.height/2);
await page.mouse.move(box.x + box.width/2, box.y + box.height/2);
await page.mouse.down();
await page.mouse.move(box.x - 100, box.y + box.height/2, { steps: 10 });
await page.mouse.up();
// Verify delete button is visible
const deleteBtn = page.getByTestId('delete-1');
await expect(deleteBtn).toBeVisible();
// Click delete
await deleteBtn.click();
// Verify item removed
await expect(item).not.toBeVisible();Appium
// Using TouchAction for swipe
WebElement item = driver.findElement(By.id("item-1"));
int startX = item.getLocation().getX() + item.getSize().width / 2;
int startY = item.getLocation().getY() + item.getSize().height / 2;
int endX = startX - 200; // Swipe left
new TouchAction<>(driver)
.press(PointOption.point(startX, startY))
.waitAction(WaitOptions.waitOptions(Duration.ofMillis(300)))
.moveTo(PointOption.point(endX, startY))
.release()
.perform();
// Using W3C Actions
PointerInput finger = new PointerInput(PointerInput.Kind.TOUCH, "finger");
Sequence swipe = new Sequence(finger, 0);
swipe.addAction(finger.createPointerMove(Duration.ZERO, PointerInput.Origin.viewport(), startX, startY));
swipe.addAction(finger.createPointerDown(PointerInput.MouseButton.LEFT.asArg()));
swipe.addAction(finger.createPointerMove(Duration.ofMillis(300), PointerInput.Origin.viewport(), endX, startY));
swipe.addAction(finger.createPointerUp(PointerInput.MouseButton.LEFT.asArg()));
driver.perform(Arrays.asList(swipe));