@skrillex1224/playwright-toolkit 2.1.281 → 2.1.282
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +32 -134
- package/dist/index.cjs.map +3 -3
- package/dist/index.js +32 -134
- package/dist/index.js.map +3 -3
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -4735,53 +4735,8 @@ var resolveDeviceFromPage3 = (page) => normalizeDevice(page?.[PageRuntimeStateKe
|
|
|
4735
4735
|
var isMobilePage = (page) => resolveDeviceFromPage3(page) === Device.Mobile;
|
|
4736
4736
|
var isPageLike2 = (value) => value && typeof value === "object" && typeof value.evaluate === "function";
|
|
4737
4737
|
var isPoint2 = (value) => value && typeof value === "object" && Number.isFinite(Number(value.x)) && Number.isFinite(Number(value.y));
|
|
4738
|
-
var
|
|
4739
|
-
var
|
|
4740
|
-
const viewport = page?.viewportSize?.() || { width: 1365, height: 900 };
|
|
4741
|
-
return {
|
|
4742
|
-
x: Math.round(viewport.width / 2),
|
|
4743
|
-
y: Math.round(viewport.height / 2)
|
|
4744
|
-
};
|
|
4745
|
-
};
|
|
4746
|
-
var readViewportScroll = async (page) => await page.evaluate(() => ({ x: window.scrollX, y: window.scrollY })).catch(() => ({ x: 0, y: 0 }));
|
|
4747
|
-
var getTargetBox = async (target) => {
|
|
4748
|
-
if (!target || typeof target.boundingBox !== "function") {
|
|
4749
|
-
return null;
|
|
4750
|
-
}
|
|
4751
|
-
return await target.boundingBox().catch(() => null);
|
|
4752
|
-
};
|
|
4753
|
-
var clickOptionsFrom = (options = {}) => {
|
|
4754
|
-
const nextOptions = {
|
|
4755
|
-
force: true
|
|
4756
|
-
};
|
|
4757
|
-
if (options.timeout != null) {
|
|
4758
|
-
nextOptions.timeout = options.timeout;
|
|
4759
|
-
}
|
|
4760
|
-
return nextOptions;
|
|
4761
|
-
};
|
|
4762
|
-
var typeOptionsFrom = (options = {}) => {
|
|
4763
|
-
const nextOptions = {};
|
|
4764
|
-
if (options.timeout != null) {
|
|
4765
|
-
nextOptions.timeout = options.timeout;
|
|
4766
|
-
}
|
|
4767
|
-
if (options.baseDelay != null) {
|
|
4768
|
-
nextOptions.delay = Math.max(0, Number(options.baseDelay) || 0);
|
|
4769
|
-
}
|
|
4770
|
-
return nextOptions;
|
|
4771
|
-
};
|
|
4772
|
-
var pressOptionsFrom = (options = {}) => {
|
|
4773
|
-
const nextOptions = {};
|
|
4774
|
-
if (options.timeout != null) {
|
|
4775
|
-
nextOptions.timeout = options.timeout;
|
|
4776
|
-
}
|
|
4777
|
-
if (options.holdDelay != null) {
|
|
4778
|
-
nextOptions.delay = Math.max(0, Number(options.holdDelay) || 0);
|
|
4779
|
-
}
|
|
4780
|
-
return nextOptions;
|
|
4781
|
-
};
|
|
4782
|
-
var waitDesktopJitter = async (baseMs, jitterPercent = 0.3) => {
|
|
4783
|
-
await (0, import_delay4.default)(jitterMs(baseMs, jitterPercent));
|
|
4784
|
-
};
|
|
4738
|
+
var resolveTarget = (page, target) => typeof target === "string" ? page.locator(target).first() : target;
|
|
4739
|
+
var sleep = (base, jitter = 0.3) => (0, import_delay4.default)(jitterMs(base, jitter));
|
|
4785
4740
|
var DesktopCloakHumanize = {
|
|
4786
4741
|
jitterMs(base, jitterPercent = 0.3) {
|
|
4787
4742
|
return jitterMs(base, jitterPercent);
|
|
@@ -4790,43 +4745,23 @@ var DesktopCloakHumanize = {
|
|
|
4790
4745
|
return Boolean(page);
|
|
4791
4746
|
},
|
|
4792
4747
|
async humanMove(page, target) {
|
|
4793
|
-
if (target == null)
|
|
4794
|
-
return false;
|
|
4795
|
-
}
|
|
4748
|
+
if (target == null) return false;
|
|
4796
4749
|
if (isPoint2(target)) {
|
|
4797
4750
|
await page.mouse.move(Number(target.x), Number(target.y));
|
|
4798
4751
|
return true;
|
|
4799
4752
|
}
|
|
4800
|
-
|
|
4801
|
-
if (typeof resolvedTarget?.hover === "function") {
|
|
4802
|
-
await resolvedTarget.hover(clickOptionsFrom());
|
|
4803
|
-
return true;
|
|
4804
|
-
}
|
|
4805
|
-
const box = await getTargetBox(resolvedTarget);
|
|
4806
|
-
if (!box) {
|
|
4807
|
-
return false;
|
|
4808
|
-
}
|
|
4809
|
-
await page.mouse.move(box.x + box.width / 2, box.y + box.height / 2);
|
|
4753
|
+
await resolveTarget(page, target).hover();
|
|
4810
4754
|
return true;
|
|
4811
4755
|
},
|
|
4812
4756
|
async humanScroll(page, target) {
|
|
4813
|
-
const
|
|
4814
|
-
if (!
|
|
4815
|
-
|
|
4816
|
-
}
|
|
4817
|
-
const before = await readViewportScroll(page);
|
|
4818
|
-
await resolvedTarget.scrollIntoViewIfNeeded?.();
|
|
4819
|
-
const after = await readViewportScroll(page);
|
|
4820
|
-
return {
|
|
4821
|
-
element: resolvedTarget,
|
|
4822
|
-
didScroll: before.x !== after.x || before.y !== after.y,
|
|
4823
|
-
restore: null
|
|
4824
|
-
};
|
|
4757
|
+
const element = resolveTarget(page, target);
|
|
4758
|
+
if (!element) return { element: null, didScroll: false, restore: null };
|
|
4759
|
+
await element.scrollIntoViewIfNeeded?.();
|
|
4760
|
+
return { element, didScroll: true, restore: null };
|
|
4825
4761
|
},
|
|
4826
|
-
async humanClick(page, target
|
|
4762
|
+
async humanClick(page, target) {
|
|
4827
4763
|
if (target == null) {
|
|
4828
|
-
|
|
4829
|
-
await page.mouse.click(center.x, center.y);
|
|
4764
|
+
await page.mouse.click(0, 0);
|
|
4830
4765
|
return true;
|
|
4831
4766
|
}
|
|
4832
4767
|
if (isPoint2(target)) {
|
|
@@ -4834,22 +4769,14 @@ var DesktopCloakHumanize = {
|
|
|
4834
4769
|
return true;
|
|
4835
4770
|
}
|
|
4836
4771
|
if (typeof target === "string") {
|
|
4837
|
-
await page.click(target
|
|
4838
|
-
return true;
|
|
4839
|
-
}
|
|
4840
|
-
if (typeof target?.click === "function") {
|
|
4841
|
-
await target.click(clickOptionsFrom(options));
|
|
4772
|
+
await page.click(target);
|
|
4842
4773
|
return true;
|
|
4843
4774
|
}
|
|
4844
|
-
|
|
4845
|
-
if (!box) {
|
|
4846
|
-
return false;
|
|
4847
|
-
}
|
|
4848
|
-
await page.mouse.click(box.x + box.width / 2, box.y + box.height / 2);
|
|
4775
|
+
await target.click();
|
|
4849
4776
|
return true;
|
|
4850
4777
|
},
|
|
4851
4778
|
async randomSleep(baseMs, jitterPercent = 0.3) {
|
|
4852
|
-
await
|
|
4779
|
+
await sleep(baseMs, jitterPercent);
|
|
4853
4780
|
},
|
|
4854
4781
|
async simulateGaze(page, baseDurationMs = 2500) {
|
|
4855
4782
|
const durationMs = jitterMs(baseDurationMs, 0.4);
|
|
@@ -4860,77 +4787,49 @@ var DesktopCloakHumanize = {
|
|
|
4860
4787
|
100 + Math.random() * Math.max(120, viewport.width - 200),
|
|
4861
4788
|
100 + Math.random() * Math.max(120, viewport.height - 200)
|
|
4862
4789
|
);
|
|
4863
|
-
await
|
|
4790
|
+
await sleep(300, 0.5);
|
|
4864
4791
|
}
|
|
4865
4792
|
},
|
|
4866
|
-
async humanType(page, selector, text
|
|
4793
|
+
async humanType(page, selector, text) {
|
|
4867
4794
|
if (typeof selector === "string") {
|
|
4868
|
-
await page.type(selector, text
|
|
4795
|
+
await page.type(selector, text);
|
|
4869
4796
|
return;
|
|
4870
4797
|
}
|
|
4871
|
-
await selector.type(text
|
|
4798
|
+
await selector.type(text);
|
|
4872
4799
|
},
|
|
4873
|
-
async humanPress(page, targetOrKey, maybeKey
|
|
4874
|
-
|
|
4875
|
-
|
|
4876
|
-
const pressOptions = hasTarget ? options : maybeKey || options;
|
|
4877
|
-
if (!hasTarget) {
|
|
4878
|
-
await page.keyboard.press(key, pressOptionsFrom(pressOptions));
|
|
4800
|
+
async humanPress(page, targetOrKey, maybeKey) {
|
|
4801
|
+
if (typeof maybeKey !== "string") {
|
|
4802
|
+
await page.keyboard.press(targetOrKey);
|
|
4879
4803
|
return true;
|
|
4880
4804
|
}
|
|
4881
4805
|
if (typeof targetOrKey === "string") {
|
|
4882
|
-
await page.press(targetOrKey,
|
|
4806
|
+
await page.press(targetOrKey, maybeKey);
|
|
4883
4807
|
return true;
|
|
4884
4808
|
}
|
|
4885
|
-
|
|
4886
|
-
await targetOrKey.press(key, pressOptionsFrom(pressOptions));
|
|
4887
|
-
return true;
|
|
4888
|
-
}
|
|
4889
|
-
await page.keyboard.press(key, pressOptionsFrom(pressOptions));
|
|
4809
|
+
await targetOrKey.press(maybeKey);
|
|
4890
4810
|
return true;
|
|
4891
4811
|
},
|
|
4892
4812
|
async humanClear(page, selector) {
|
|
4893
4813
|
if (typeof selector === "string") {
|
|
4894
|
-
|
|
4895
|
-
await page.clear(selector, clickOptionsFrom());
|
|
4896
|
-
return;
|
|
4897
|
-
}
|
|
4898
|
-
await page.fill(selector, "", clickOptionsFrom());
|
|
4899
|
-
return;
|
|
4900
|
-
}
|
|
4901
|
-
if (typeof selector?.clear === "function") {
|
|
4902
|
-
await selector.clear(clickOptionsFrom());
|
|
4903
|
-
return;
|
|
4904
|
-
}
|
|
4905
|
-
if (typeof selector?.fill === "function") {
|
|
4906
|
-
await selector.fill("", clickOptionsFrom());
|
|
4814
|
+
await page.fill(selector, "");
|
|
4907
4815
|
return;
|
|
4908
4816
|
}
|
|
4817
|
+
await selector.fill("");
|
|
4909
4818
|
},
|
|
4910
4819
|
async warmUpBrowsing(page, baseDuration = 3500) {
|
|
4911
|
-
|
|
4912
|
-
const startedAt = Date.now();
|
|
4913
|
-
while (Date.now() - startedAt < durationMs) {
|
|
4914
|
-
await this.simulateGaze(page, 240);
|
|
4915
|
-
await this.naturalScroll(page, Math.random() > 0.4 ? "down" : "up", 160, 3);
|
|
4916
|
-
await waitDesktopJitter(250, 0.35);
|
|
4917
|
-
}
|
|
4820
|
+
await this.simulateGaze(page, Math.min(baseDuration, 900));
|
|
4918
4821
|
},
|
|
4919
4822
|
async naturalScroll(page, direction = "down", distance = 300, baseSteps = 5) {
|
|
4920
4823
|
const steps = Math.max(1, Number(baseSteps) || 1);
|
|
4921
|
-
const
|
|
4922
|
-
const sign = direction === "down" ? 1 : -1;
|
|
4824
|
+
const delta = (Number(distance) || 0) / steps * (direction === "down" ? 1 : -1);
|
|
4923
4825
|
for (let index = 0; index < steps; index += 1) {
|
|
4924
|
-
await page.mouse.wheel(0,
|
|
4925
|
-
await
|
|
4826
|
+
await page.mouse.wheel(0, delta);
|
|
4827
|
+
await sleep(60 + index * 20, 0.3);
|
|
4926
4828
|
}
|
|
4927
4829
|
}
|
|
4928
4830
|
};
|
|
4929
4831
|
var resolveDelegate2 = (page) => isMobilePage(page) ? MobileHumanize : DesktopCloakHumanize;
|
|
4930
|
-
var callDelegate2 = (method, page, args) =>
|
|
4931
|
-
const delegate = resolveDelegate2(page);
|
|
4932
|
-
return delegate[method](page, ...args);
|
|
4933
|
-
};
|
|
4832
|
+
var callDelegate2 = (method, page, args) => resolveDelegate2(page)[method](page, ...args);
|
|
4934
4833
|
var CloakBrowserHumanize = {
|
|
4935
4834
|
jitterMs(base, jitterPercent = 0.3) {
|
|
4936
4835
|
return jitterMs(base, jitterPercent);
|
|
@@ -4949,8 +4848,7 @@ var CloakBrowserHumanize = {
|
|
|
4949
4848
|
},
|
|
4950
4849
|
randomSleep(pageOrBaseMs, maybeBaseMs, maybeJitterPercent) {
|
|
4951
4850
|
if (isPageLike2(pageOrBaseMs)) {
|
|
4952
|
-
|
|
4953
|
-
return delegate.randomSleep(maybeBaseMs, maybeJitterPercent);
|
|
4851
|
+
return resolveDelegate2(pageOrBaseMs).randomSleep(maybeBaseMs, maybeJitterPercent);
|
|
4954
4852
|
}
|
|
4955
4853
|
return DesktopCloakHumanize.randomSleep(pageOrBaseMs, maybeBaseMs);
|
|
4956
4854
|
},
|
|
@@ -6776,7 +6674,7 @@ var Mutation = {
|
|
|
6776
6674
|
const overallTimeout = options.timeout ?? 180 * 1e3;
|
|
6777
6675
|
const onMutation = options.onMutation;
|
|
6778
6676
|
const pollInterval = 500;
|
|
6779
|
-
const
|
|
6677
|
+
const sleep2 = (ms) => new Promise((resolve) => {
|
|
6780
6678
|
setTimeout(resolve, ms);
|
|
6781
6679
|
});
|
|
6782
6680
|
const truncate = (value, max = 800) => {
|
|
@@ -6968,7 +6866,7 @@ var Mutation = {
|
|
|
6968
6866
|
const deadline = Date.now() + overallTimeout;
|
|
6969
6867
|
let lastState = state2;
|
|
6970
6868
|
while (Date.now() < deadline) {
|
|
6971
|
-
await
|
|
6869
|
+
await sleep2(pollInterval);
|
|
6972
6870
|
lastState = await buildState();
|
|
6973
6871
|
if (!lastState?.hasMatched) {
|
|
6974
6872
|
continue;
|