@skrillex1224/playwright-toolkit 2.1.281 → 2.1.283
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 +34 -140
- package/dist/index.cjs.map +3 -3
- package/dist/index.js +34 -140
- package/dist/index.js.map +3 -3
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -4707,53 +4707,9 @@ 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
|
-
|
|
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));
|
|
4712
|
+
var FORCE_OPTIONS = Object.freeze({ force: true });
|
|
4757
4713
|
var DesktopCloakHumanize = {
|
|
4758
4714
|
jitterMs(base, jitterPercent = 0.3) {
|
|
4759
4715
|
return jitterMs(base, jitterPercent);
|
|
@@ -4762,43 +4718,23 @@ var DesktopCloakHumanize = {
|
|
|
4762
4718
|
return Boolean(page);
|
|
4763
4719
|
},
|
|
4764
4720
|
async humanMove(page, target) {
|
|
4765
|
-
if (target == null)
|
|
4766
|
-
return false;
|
|
4767
|
-
}
|
|
4721
|
+
if (target == null) return false;
|
|
4768
4722
|
if (isPoint2(target)) {
|
|
4769
4723
|
await page.mouse.move(Number(target.x), Number(target.y));
|
|
4770
4724
|
return true;
|
|
4771
4725
|
}
|
|
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);
|
|
4726
|
+
await resolveTarget(page, target).hover(FORCE_OPTIONS);
|
|
4782
4727
|
return true;
|
|
4783
4728
|
},
|
|
4784
4729
|
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
|
-
};
|
|
4730
|
+
const element = resolveTarget(page, target);
|
|
4731
|
+
if (!element) return { element: null, didScroll: false, restore: null };
|
|
4732
|
+
await element.scrollIntoViewIfNeeded?.();
|
|
4733
|
+
return { element, didScroll: true, restore: null };
|
|
4797
4734
|
},
|
|
4798
|
-
async humanClick(page, target
|
|
4735
|
+
async humanClick(page, target) {
|
|
4799
4736
|
if (target == null) {
|
|
4800
|
-
|
|
4801
|
-
await page.mouse.click(center.x, center.y);
|
|
4737
|
+
await page.mouse.click(0, 0);
|
|
4802
4738
|
return true;
|
|
4803
4739
|
}
|
|
4804
4740
|
if (isPoint2(target)) {
|
|
@@ -4806,22 +4742,14 @@ var DesktopCloakHumanize = {
|
|
|
4806
4742
|
return true;
|
|
4807
4743
|
}
|
|
4808
4744
|
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));
|
|
4745
|
+
await page.click(target, FORCE_OPTIONS);
|
|
4814
4746
|
return true;
|
|
4815
4747
|
}
|
|
4816
|
-
|
|
4817
|
-
if (!box) {
|
|
4818
|
-
return false;
|
|
4819
|
-
}
|
|
4820
|
-
await page.mouse.click(box.x + box.width / 2, box.y + box.height / 2);
|
|
4748
|
+
await target.click(FORCE_OPTIONS);
|
|
4821
4749
|
return true;
|
|
4822
4750
|
},
|
|
4823
4751
|
async randomSleep(baseMs, jitterPercent = 0.3) {
|
|
4824
|
-
await
|
|
4752
|
+
await sleep(baseMs, jitterPercent);
|
|
4825
4753
|
},
|
|
4826
4754
|
async simulateGaze(page, baseDurationMs = 2500) {
|
|
4827
4755
|
const durationMs = jitterMs(baseDurationMs, 0.4);
|
|
@@ -4832,77 +4760,44 @@ var DesktopCloakHumanize = {
|
|
|
4832
4760
|
100 + Math.random() * Math.max(120, viewport.width - 200),
|
|
4833
4761
|
100 + Math.random() * Math.max(120, viewport.height - 200)
|
|
4834
4762
|
);
|
|
4835
|
-
await
|
|
4763
|
+
await sleep(300, 0.5);
|
|
4836
4764
|
}
|
|
4837
4765
|
},
|
|
4838
|
-
async humanType(page, selector, text
|
|
4839
|
-
|
|
4840
|
-
|
|
4841
|
-
|
|
4842
|
-
}
|
|
4843
|
-
await selector.type(text, typeOptionsFrom(options));
|
|
4766
|
+
async humanType(page, selector, text) {
|
|
4767
|
+
const target = resolveTarget(page, selector);
|
|
4768
|
+
await target.click(FORCE_OPTIONS);
|
|
4769
|
+
await page.keyboard.type(text);
|
|
4844
4770
|
},
|
|
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));
|
|
4851
|
-
return true;
|
|
4852
|
-
}
|
|
4853
|
-
if (typeof targetOrKey === "string") {
|
|
4854
|
-
await page.press(targetOrKey, key, pressOptionsFrom(pressOptions));
|
|
4855
|
-
return true;
|
|
4856
|
-
}
|
|
4857
|
-
if (typeof targetOrKey?.press === "function") {
|
|
4858
|
-
await targetOrKey.press(key, pressOptionsFrom(pressOptions));
|
|
4771
|
+
async humanPress(page, targetOrKey, maybeKey) {
|
|
4772
|
+
if (typeof maybeKey !== "string") {
|
|
4773
|
+
await page.keyboard.press(targetOrKey);
|
|
4859
4774
|
return true;
|
|
4860
4775
|
}
|
|
4861
|
-
await page
|
|
4776
|
+
await resolveTarget(page, targetOrKey).click(FORCE_OPTIONS);
|
|
4777
|
+
await page.keyboard.press(maybeKey);
|
|
4862
4778
|
return true;
|
|
4863
4779
|
},
|
|
4864
4780
|
async humanClear(page, selector) {
|
|
4865
4781
|
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());
|
|
4782
|
+
await page.fill(selector, "", FORCE_OPTIONS);
|
|
4879
4783
|
return;
|
|
4880
4784
|
}
|
|
4785
|
+
await selector.fill("", FORCE_OPTIONS);
|
|
4881
4786
|
},
|
|
4882
4787
|
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
|
-
}
|
|
4788
|
+
await this.simulateGaze(page, Math.min(baseDuration, 900));
|
|
4890
4789
|
},
|
|
4891
4790
|
async naturalScroll(page, direction = "down", distance = 300, baseSteps = 5) {
|
|
4892
4791
|
const steps = Math.max(1, Number(baseSteps) || 1);
|
|
4893
|
-
const
|
|
4894
|
-
const sign = direction === "down" ? 1 : -1;
|
|
4792
|
+
const delta = (Number(distance) || 0) / steps * (direction === "down" ? 1 : -1);
|
|
4895
4793
|
for (let index = 0; index < steps; index += 1) {
|
|
4896
|
-
await page.mouse.wheel(0,
|
|
4897
|
-
await
|
|
4794
|
+
await page.mouse.wheel(0, delta);
|
|
4795
|
+
await sleep(60 + index * 20, 0.3);
|
|
4898
4796
|
}
|
|
4899
4797
|
}
|
|
4900
4798
|
};
|
|
4901
4799
|
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
|
-
};
|
|
4800
|
+
var callDelegate2 = (method, page, args) => resolveDelegate2(page)[method](page, ...args);
|
|
4906
4801
|
var CloakBrowserHumanize = {
|
|
4907
4802
|
jitterMs(base, jitterPercent = 0.3) {
|
|
4908
4803
|
return jitterMs(base, jitterPercent);
|
|
@@ -4921,8 +4816,7 @@ var CloakBrowserHumanize = {
|
|
|
4921
4816
|
},
|
|
4922
4817
|
randomSleep(pageOrBaseMs, maybeBaseMs, maybeJitterPercent) {
|
|
4923
4818
|
if (isPageLike2(pageOrBaseMs)) {
|
|
4924
|
-
|
|
4925
|
-
return delegate.randomSleep(maybeBaseMs, maybeJitterPercent);
|
|
4819
|
+
return resolveDelegate2(pageOrBaseMs).randomSleep(maybeBaseMs, maybeJitterPercent);
|
|
4926
4820
|
}
|
|
4927
4821
|
return DesktopCloakHumanize.randomSleep(pageOrBaseMs, maybeBaseMs);
|
|
4928
4822
|
},
|
|
@@ -6748,7 +6642,7 @@ var Mutation = {
|
|
|
6748
6642
|
const overallTimeout = options.timeout ?? 180 * 1e3;
|
|
6749
6643
|
const onMutation = options.onMutation;
|
|
6750
6644
|
const pollInterval = 500;
|
|
6751
|
-
const
|
|
6645
|
+
const sleep2 = (ms) => new Promise((resolve) => {
|
|
6752
6646
|
setTimeout(resolve, ms);
|
|
6753
6647
|
});
|
|
6754
6648
|
const truncate = (value, max = 800) => {
|
|
@@ -6940,7 +6834,7 @@ var Mutation = {
|
|
|
6940
6834
|
const deadline = Date.now() + overallTimeout;
|
|
6941
6835
|
let lastState = state2;
|
|
6942
6836
|
while (Date.now() < deadline) {
|
|
6943
|
-
await
|
|
6837
|
+
await sleep2(pollInterval);
|
|
6944
6838
|
lastState = await buildState();
|
|
6945
6839
|
if (!lastState?.hasMatched) {
|
|
6946
6840
|
continue;
|