···11-import type { UserEvent } from 'vitest/browser'
11+import type { SerializedLocator } from '@vitest/browser'
22+import type { Locator, UserEventPointerOptions } from 'vitest/browser'
23import type { UserEventCommand } from './utils'
34import { parseKeyDef } from '@vitest/browser'
45import { click } from './click'
56import { hover } from './hover'
6777-export const pointer: UserEventCommand<UserEvent['pointer']> = async (
88+type PointerEvent = (
99+ options: readonly ElementToSerializedLocator<UserEventPointerOptions>[],
1010+) => Promise<void>
1111+1212+type ElementToSerializedLocator<T> = T extends Element | Locator
1313+ ? SerializedLocator
1414+ : {
1515+ [K in keyof T]: ElementToSerializedLocator<T[K]>
1616+ }
1717+1818+export const pointer: UserEventCommand<PointerEvent> = async (
819 context,
920 options,
1021) => {
-1
packages/browser-playwright/src/commands/utils.ts
···77>
8899type ConvertElementToLocator<T> = T extends Element | Locator ? SerializedLocator : T
1010-// @todo: check if this could take care of nested locators (e.g., `{ target: Locator }[]`)
1110type ConvertUserEventParameters<T extends unknown[]> = {
1211 [K in keyof T]: ConvertElementToLocator<T[K]>;
1312}