@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.js
CHANGED
|
@@ -4707,53 +4707,8 @@ var resolveDeviceFromPage3 = (page) => normalizeDevice(page?.[PageRuntimeStateKe
|
|
|
4707
4707
|
var isMobilePage = (page) => resolveDeviceFromPage3(page) === Device.Mobile;
|
|
4708
4708
|
var isPageLike2 = (value) => value && typeof value === "object" && typeof value.evaluate === "function";
|
|
4709
4709
|
var isPoint2 = (value) => value && typeof value === "object" && Number.isFinite(Number(value.x)) && Number.isFinite(Number(value.y));
|
|
4710
|
-
var
|
|
4711
|
-
var
|
|
4712
|
-
const viewport = page?.viewportSize?.() || { width: 1365, height: 900 };
|
|
4713
|
-
return {
|
|
4714
|
-
x: Math.round(viewport.width / 2),
|
|
4715
|
-
y: Math.round(viewport.height / 2)
|
|
4716
|
-
};
|
|
4717
|
-
};
|
|
4718
|
-
var readViewportScroll = async (page) => await page.evaluate(() => ({ x: window.scrollX, y: window.scrollY })).catch(() => ({ x: 0, y: 0 }));
|
|
4719
|
-
var getTargetBox = async (target) => {
|
|
4720
|
-
if (!target || typeof target.boundingBox !== "function") {
|
|
4721
|
-
return null;
|
|
4722
|
-
}
|
|
4723
|
-
return await target.boundingBox().catch(() => null);
|
|
4724
|
-
};
|
|
4725
|
-
var clickOptionsFrom = (options = {}) => {
|
|
4726
|
-
const nextOptions = {
|
|
4727
|
-
force: true
|
|
4728
|
-
};
|
|
4729
|
-
if (options.timeout != null) {
|
|
4730
|
-
nextOptions.timeout = options.timeout;
|
|
4731
|
-
}
|
|
4732
|
-
return nextOptions;
|
|
4733
|
-
};
|
|
4734
|
-
var typeOptionsFrom = (options = {}) => {
|
|
4735
|
-
const nextOptions = {};
|
|
4736
|
-
if (options.timeout != null) {
|
|
4737
|
-
nextOptions.timeout = options.timeout;
|
|
4738
|
-
}
|
|
4739
|
-
if (options.baseDelay != null) {
|
|
4740
|
-
nextOptions.delay = Math.max(0, Number(options.baseDelay) || 0);
|
|
4741
|
-
}
|
|
4742
|
-
return nextOptions;
|
|
4743
|
-
};
|
|
4744
|
-
var pressOptionsFrom = (options = {}) => {
|
|
4745
|
-
const nextOptions = {};
|
|
4746
|
-
if (options.timeout != null) {
|
|
4747
|
-
nextOptions.timeout = options.timeout;
|
|
4748
|
-
}
|
|
4749
|
-
if (options.holdDelay != null) {
|
|
4750
|
-
nextOptions.delay = Math.max(0, Number(options.holdDelay) || 0);
|
|
4751
|
-
}
|
|
4752
|
-
return nextOptions;
|
|
4753
|
-
};
|
|
4754
|
-
var waitDesktopJitter = async (baseMs, jitterPercent = 0.3) => {
|
|
4755
|
-
await delay4(jitterMs(baseMs, jitterPercent));
|
|
4756
|
-
};
|
|
4710
|
+
var resolveTarget = (page, target) => typeof target === "string" ? page.locator(target).first() : target;
|
|
4711
|
+
var sleep = (base, jitter = 0.3) => delay4(jitterMs(base, jitter));
|
|
4757
4712
|
var DesktopCloakHumanize = {
|
|
4758
4713
|
jitterMs(base, jitterPercent = 0.3) {
|
|
4759
4714
|
return jitterMs(base, jitterPercent);
|
|
@@ -4762,43 +4717,23 @@ var DesktopCloakHumanize = {
|
|
|
4762
4717
|
return Boolean(page);
|
|
4763
4718
|
},
|
|
4764
4719
|
async humanMove(page, target) {
|
|
4765
|
-
if (target == null)
|
|
4766
|
-
return false;
|
|
4767
|
-
}
|
|
4720
|
+
if (target == null) return false;
|
|
4768
4721
|
if (isPoint2(target)) {
|
|
4769
4722
|
await page.mouse.move(Number(target.x), Number(target.y));
|
|
4770
4723
|
return true;
|
|
4771
4724
|
}
|
|
4772
|
-
|
|
4773
|
-
if (typeof resolvedTarget?.hover === "function") {
|
|
4774
|
-
await resolvedTarget.hover(clickOptionsFrom());
|
|
4775
|
-
return true;
|
|
4776
|
-
}
|
|
4777
|
-
const box = await getTargetBox(resolvedTarget);
|
|
4778
|
-
if (!box) {
|
|
4779
|
-
return false;
|
|
4780
|
-
}
|
|
4781
|
-
await page.mouse.move(box.x + box.width / 2, box.y + box.height / 2);
|
|
4725
|
+
await resolveTarget(page, target).hover();
|
|
4782
4726
|
return true;
|
|
4783
4727
|
},
|
|
4784
4728
|
async humanScroll(page, target) {
|
|
4785
|
-
const
|
|
4786
|
-
if (!
|
|
4787
|
-
|
|
4788
|
-
}
|
|
4789
|
-
const before = await readViewportScroll(page);
|
|
4790
|
-
await resolvedTarget.scrollIntoViewIfNeeded?.();
|
|
4791
|
-
const after = await readViewportScroll(page);
|
|
4792
|
-
return {
|
|
4793
|
-
element: resolvedTarget,
|
|
4794
|
-
didScroll: before.x !== after.x || before.y !== after.y,
|
|
4795
|
-
restore: null
|
|
4796
|
-
};
|
|
4729
|
+
const element = resolveTarget(page, target);
|
|
4730
|
+
if (!element) return { element: null, didScroll: false, restore: null };
|
|
4731
|
+
await element.scrollIntoViewIfNeeded?.();
|
|
4732
|
+
return { element, didScroll: true, restore: null };
|
|
4797
4733
|
},
|
|
4798
|
-
async humanClick(page, target
|
|
4734
|
+
async humanClick(page, target) {
|
|
4799
4735
|
if (target == null) {
|
|
4800
|
-
|
|
4801
|
-
await page.mouse.click(center.x, center.y);
|
|
4736
|
+
await page.mouse.click(0, 0);
|
|
4802
4737
|
return true;
|
|
4803
4738
|
}
|
|
4804
4739
|
if (isPoint2(target)) {
|
|
@@ -4806,22 +4741,14 @@ var DesktopCloakHumanize = {
|
|
|
4806
4741
|
return true;
|
|
4807
4742
|
}
|
|
4808
4743
|
if (typeof target === "string") {
|
|
4809
|
-
await page.click(target
|
|
4810
|
-
return true;
|
|
4811
|
-
}
|
|
4812
|
-
if (typeof target?.click === "function") {
|
|
4813
|
-
await target.click(clickOptionsFrom(options));
|
|
4744
|
+
await page.click(target);
|
|
4814
4745
|
return true;
|
|
4815
4746
|
}
|
|
4816
|
-
|
|
4817
|
-
if (!box) {
|
|
4818
|
-
return false;
|
|
4819
|
-
}
|
|
4820
|
-
await page.mouse.click(box.x + box.width / 2, box.y + box.height / 2);
|
|
4747
|
+
await target.click();
|
|
4821
4748
|
return true;
|
|
4822
4749
|
},
|
|
4823
4750
|
async randomSleep(baseMs, jitterPercent = 0.3) {
|
|
4824
|
-
await
|
|
4751
|
+
await sleep(baseMs, jitterPercent);
|
|
4825
4752
|
},
|
|
4826
4753
|
async simulateGaze(page, baseDurationMs = 2500) {
|
|
4827
4754
|
const durationMs = jitterMs(baseDurationMs, 0.4);
|
|
@@ -4832,77 +4759,49 @@ var DesktopCloakHumanize = {
|
|
|
4832
4759
|
100 + Math.random() * Math.max(120, viewport.width - 200),
|
|
4833
4760
|
100 + Math.random() * Math.max(120, viewport.height - 200)
|
|
4834
4761
|
);
|
|
4835
|
-
await
|
|
4762
|
+
await sleep(300, 0.5);
|
|
4836
4763
|
}
|
|
4837
4764
|
},
|
|
4838
|
-
async humanType(page, selector, text
|
|
4765
|
+
async humanType(page, selector, text) {
|
|
4839
4766
|
if (typeof selector === "string") {
|
|
4840
|
-
await page.type(selector, text
|
|
4767
|
+
await page.type(selector, text);
|
|
4841
4768
|
return;
|
|
4842
4769
|
}
|
|
4843
|
-
await selector.type(text
|
|
4770
|
+
await selector.type(text);
|
|
4844
4771
|
},
|
|
4845
|
-
async humanPress(page, targetOrKey, maybeKey
|
|
4846
|
-
|
|
4847
|
-
|
|
4848
|
-
const pressOptions = hasTarget ? options : maybeKey || options;
|
|
4849
|
-
if (!hasTarget) {
|
|
4850
|
-
await page.keyboard.press(key, pressOptionsFrom(pressOptions));
|
|
4772
|
+
async humanPress(page, targetOrKey, maybeKey) {
|
|
4773
|
+
if (typeof maybeKey !== "string") {
|
|
4774
|
+
await page.keyboard.press(targetOrKey);
|
|
4851
4775
|
return true;
|
|
4852
4776
|
}
|
|
4853
4777
|
if (typeof targetOrKey === "string") {
|
|
4854
|
-
await page.press(targetOrKey,
|
|
4778
|
+
await page.press(targetOrKey, maybeKey);
|
|
4855
4779
|
return true;
|
|
4856
4780
|
}
|
|
4857
|
-
|
|
4858
|
-
await targetOrKey.press(key, pressOptionsFrom(pressOptions));
|
|
4859
|
-
return true;
|
|
4860
|
-
}
|
|
4861
|
-
await page.keyboard.press(key, pressOptionsFrom(pressOptions));
|
|
4781
|
+
await targetOrKey.press(maybeKey);
|
|
4862
4782
|
return true;
|
|
4863
4783
|
},
|
|
4864
4784
|
async humanClear(page, selector) {
|
|
4865
4785
|
if (typeof selector === "string") {
|
|
4866
|
-
|
|
4867
|
-
await page.clear(selector, clickOptionsFrom());
|
|
4868
|
-
return;
|
|
4869
|
-
}
|
|
4870
|
-
await page.fill(selector, "", clickOptionsFrom());
|
|
4871
|
-
return;
|
|
4872
|
-
}
|
|
4873
|
-
if (typeof selector?.clear === "function") {
|
|
4874
|
-
await selector.clear(clickOptionsFrom());
|
|
4875
|
-
return;
|
|
4876
|
-
}
|
|
4877
|
-
if (typeof selector?.fill === "function") {
|
|
4878
|
-
await selector.fill("", clickOptionsFrom());
|
|
4786
|
+
await page.fill(selector, "");
|
|
4879
4787
|
return;
|
|
4880
4788
|
}
|
|
4789
|
+
await selector.fill("");
|
|
4881
4790
|
},
|
|
4882
4791
|
async warmUpBrowsing(page, baseDuration = 3500) {
|
|
4883
|
-
|
|
4884
|
-
const startedAt = Date.now();
|
|
4885
|
-
while (Date.now() - startedAt < durationMs) {
|
|
4886
|
-
await this.simulateGaze(page, 240);
|
|
4887
|
-
await this.naturalScroll(page, Math.random() > 0.4 ? "down" : "up", 160, 3);
|
|
4888
|
-
await waitDesktopJitter(250, 0.35);
|
|
4889
|
-
}
|
|
4792
|
+
await this.simulateGaze(page, Math.min(baseDuration, 900));
|
|
4890
4793
|
},
|
|
4891
4794
|
async naturalScroll(page, direction = "down", distance = 300, baseSteps = 5) {
|
|
4892
4795
|
const steps = Math.max(1, Number(baseSteps) || 1);
|
|
4893
|
-
const
|
|
4894
|
-
const sign = direction === "down" ? 1 : -1;
|
|
4796
|
+
const delta = (Number(distance) || 0) / steps * (direction === "down" ? 1 : -1);
|
|
4895
4797
|
for (let index = 0; index < steps; index += 1) {
|
|
4896
|
-
await page.mouse.wheel(0,
|
|
4897
|
-
await
|
|
4798
|
+
await page.mouse.wheel(0, delta);
|
|
4799
|
+
await sleep(60 + index * 20, 0.3);
|
|
4898
4800
|
}
|
|
4899
4801
|
}
|
|
4900
4802
|
};
|
|
4901
4803
|
var resolveDelegate2 = (page) => isMobilePage(page) ? MobileHumanize : DesktopCloakHumanize;
|
|
4902
|
-
var callDelegate2 = (method, page, args) =>
|
|
4903
|
-
const delegate = resolveDelegate2(page);
|
|
4904
|
-
return delegate[method](page, ...args);
|
|
4905
|
-
};
|
|
4804
|
+
var callDelegate2 = (method, page, args) => resolveDelegate2(page)[method](page, ...args);
|
|
4906
4805
|
var CloakBrowserHumanize = {
|
|
4907
4806
|
jitterMs(base, jitterPercent = 0.3) {
|
|
4908
4807
|
return jitterMs(base, jitterPercent);
|
|
@@ -4921,8 +4820,7 @@ var CloakBrowserHumanize = {
|
|
|
4921
4820
|
},
|
|
4922
4821
|
randomSleep(pageOrBaseMs, maybeBaseMs, maybeJitterPercent) {
|
|
4923
4822
|
if (isPageLike2(pageOrBaseMs)) {
|
|
4924
|
-
|
|
4925
|
-
return delegate.randomSleep(maybeBaseMs, maybeJitterPercent);
|
|
4823
|
+
return resolveDelegate2(pageOrBaseMs).randomSleep(maybeBaseMs, maybeJitterPercent);
|
|
4926
4824
|
}
|
|
4927
4825
|
return DesktopCloakHumanize.randomSleep(pageOrBaseMs, maybeBaseMs);
|
|
4928
4826
|
},
|
|
@@ -6748,7 +6646,7 @@ var Mutation = {
|
|
|
6748
6646
|
const overallTimeout = options.timeout ?? 180 * 1e3;
|
|
6749
6647
|
const onMutation = options.onMutation;
|
|
6750
6648
|
const pollInterval = 500;
|
|
6751
|
-
const
|
|
6649
|
+
const sleep2 = (ms) => new Promise((resolve) => {
|
|
6752
6650
|
setTimeout(resolve, ms);
|
|
6753
6651
|
});
|
|
6754
6652
|
const truncate = (value, max = 800) => {
|
|
@@ -6940,7 +6838,7 @@ var Mutation = {
|
|
|
6940
6838
|
const deadline = Date.now() + overallTimeout;
|
|
6941
6839
|
let lastState = state2;
|
|
6942
6840
|
while (Date.now() < deadline) {
|
|
6943
|
-
await
|
|
6841
|
+
await sleep2(pollInterval);
|
|
6944
6842
|
lastState = await buildState();
|
|
6945
6843
|
if (!lastState?.hasMatched) {
|
|
6946
6844
|
continue;
|