This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
/**
|
||||
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
import type { Locator } from '@playwright/test';
|
||||
|
||||
/**
|
||||
* @param {import('@playwright/test').Locator} locator
|
||||
*/
|
||||
export async function getOffsetByLocator(locator: Locator) {
|
||||
return locator.evaluate((el) => {
|
||||
const rect = el.getBoundingClientRect();
|
||||
const left = rect.left;
|
||||
const top = rect.top;
|
||||
const width = rect.width;
|
||||
const height = rect.height;
|
||||
|
||||
return {
|
||||
left,
|
||||
top,
|
||||
width,
|
||||
height,
|
||||
centerX: left + width / 2,
|
||||
centerY: top + height / 2,
|
||||
right: left + width,
|
||||
bottom: top + height,
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
export function cssEscape(str: string) {
|
||||
return str.replace(/([ !"#$%&'()*+,.\/:;<=>?@[\]^`{|}~])/g, '\\$1');
|
||||
}
|
||||
Reference in New Issue
Block a user