@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.cjs
CHANGED
|
@@ -4735,53 +4735,9 @@ 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
|
-
|
|
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));
|
|
4740
|
+
var FORCE_OPTIONS = Object.freeze({ force: true });
|
|
4785
4741
|
var DesktopCloakHumanize = {
|
|
4786
4742
|
jitterMs(base, jitterPercent = 0.3) {
|
|
4787
4743
|
return jitterMs(base, jitterPercent);
|
|
@@ -4790,43 +4746,23 @@ var DesktopCloakHumanize = {
|
|
|
4790
4746
|
return Boolean(page);
|
|
4791
4747
|
},
|
|
4792
4748
|
async humanMove(page, target) {
|
|
4793
|
-
if (target == null)
|
|
4794
|
-
return false;
|
|
4795
|
-
}
|
|
4749
|
+
if (target == null) return false;
|
|
4796
4750
|
if (isPoint2(target)) {
|
|
4797
4751
|
await page.mouse.move(Number(target.x), Number(target.y));
|
|
4798
4752
|
return true;
|
|
4799
4753
|
}
|
|
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);
|
|
4754
|
+
await resolveTarget(page, target).hover(FORCE_OPTIONS);
|
|
4810
4755
|
return true;
|
|
4811
4756
|
},
|
|
4812
4757
|
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
|
-
};
|
|
4758
|
+
const element = resolveTarget(page, target);
|
|
4759
|
+
if (!element) return { element: null, didScroll: false, restore: null };
|
|
4760
|
+
await element.scrollIntoViewIfNeeded?.();
|
|
4761
|
+
return { element, didScroll: true, restore: null };
|
|
4825
4762
|
},
|
|
4826
|
-
async humanClick(page, target
|
|
4763
|
+
async humanClick(page, target) {
|
|
4827
4764
|
if (target == null) {
|
|
4828
|
-
|
|
4829
|
-
await page.mouse.click(center.x, center.y);
|
|
4765
|
+
await page.mouse.click(0, 0);
|
|
4830
4766
|
return true;
|
|
4831
4767
|
}
|
|
4832
4768
|
if (isPoint2(target)) {
|
|
@@ -4834,22 +4770,14 @@ var DesktopCloakHumanize = {
|
|
|
4834
4770
|
return true;
|
|
4835
4771
|
}
|
|
4836
4772
|
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));
|
|
4773
|
+
await page.click(target, FORCE_OPTIONS);
|
|
4842
4774
|
return true;
|
|
4843
4775
|
}
|
|
4844
|
-
|
|
4845
|
-
if (!box) {
|
|
4846
|
-
return false;
|
|
4847
|
-
}
|
|
4848
|
-
await page.mouse.click(box.x + box.width / 2, box.y + box.height / 2);
|
|
4776
|
+
await target.click(FORCE_OPTIONS);
|
|
4849
4777
|
return true;
|
|
4850
4778
|
},
|
|
4851
4779
|
async randomSleep(baseMs, jitterPercent = 0.3) {
|
|
4852
|
-
await
|
|
4780
|
+
await sleep(baseMs, jitterPercent);
|
|
4853
4781
|
},
|
|
4854
4782
|
async simulateGaze(page, baseDurationMs = 2500) {
|
|
4855
4783
|
const durationMs = jitterMs(baseDurationMs, 0.4);
|
|
@@ -4860,77 +4788,44 @@ var DesktopCloakHumanize = {
|
|
|
4860
4788
|
100 + Math.random() * Math.max(120, viewport.width - 200),
|
|
4861
4789
|
100 + Math.random() * Math.max(120, viewport.height - 200)
|
|
4862
4790
|
);
|
|
4863
|
-
await
|
|
4791
|
+
await sleep(300, 0.5);
|
|
4864
4792
|
}
|
|
4865
4793
|
},
|
|
4866
|
-
async humanType(page, selector, text
|
|
4867
|
-
|
|
4868
|
-
|
|
4869
|
-
|
|
4870
|
-
}
|
|
4871
|
-
await selector.type(text, typeOptionsFrom(options));
|
|
4794
|
+
async humanType(page, selector, text) {
|
|
4795
|
+
const target = resolveTarget(page, selector);
|
|
4796
|
+
await target.click(FORCE_OPTIONS);
|
|
4797
|
+
await page.keyboard.type(text);
|
|
4872
4798
|
},
|
|
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));
|
|
4879
|
-
return true;
|
|
4880
|
-
}
|
|
4881
|
-
if (typeof targetOrKey === "string") {
|
|
4882
|
-
await page.press(targetOrKey, key, pressOptionsFrom(pressOptions));
|
|
4883
|
-
return true;
|
|
4884
|
-
}
|
|
4885
|
-
if (typeof targetOrKey?.press === "function") {
|
|
4886
|
-
await targetOrKey.press(key, pressOptionsFrom(pressOptions));
|
|
4799
|
+
async humanPress(page, targetOrKey, maybeKey) {
|
|
4800
|
+
if (typeof maybeKey !== "string") {
|
|
4801
|
+
await page.keyboard.press(targetOrKey);
|
|
4887
4802
|
return true;
|
|
4888
4803
|
}
|
|
4889
|
-
await page
|
|
4804
|
+
await resolveTarget(page, targetOrKey).click(FORCE_OPTIONS);
|
|
4805
|
+
await page.keyboard.press(maybeKey);
|
|
4890
4806
|
return true;
|
|
4891
4807
|
},
|
|
4892
4808
|
async humanClear(page, selector) {
|
|
4893
4809
|
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());
|
|
4810
|
+
await page.fill(selector, "", FORCE_OPTIONS);
|
|
4907
4811
|
return;
|
|
4908
4812
|
}
|
|
4813
|
+
await selector.fill("", FORCE_OPTIONS);
|
|
4909
4814
|
},
|
|
4910
4815
|
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
|
-
}
|
|
4816
|
+
await this.simulateGaze(page, Math.min(baseDuration, 900));
|
|
4918
4817
|
},
|
|
4919
4818
|
async naturalScroll(page, direction = "down", distance = 300, baseSteps = 5) {
|
|
4920
4819
|
const steps = Math.max(1, Number(baseSteps) || 1);
|
|
4921
|
-
const
|
|
4922
|
-
const sign = direction === "down" ? 1 : -1;
|
|
4820
|
+
const delta = (Number(distance) || 0) / steps * (direction === "down" ? 1 : -1);
|
|
4923
4821
|
for (let index = 0; index < steps; index += 1) {
|
|
4924
|
-
await page.mouse.wheel(0,
|
|
4925
|
-
await
|
|
4822
|
+
await page.mouse.wheel(0, delta);
|
|
4823
|
+
await sleep(60 + index * 20, 0.3);
|
|
4926
4824
|
}
|
|
4927
4825
|
}
|
|
4928
4826
|
};
|
|
4929
4827
|
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
|
-
};
|
|
4828
|
+
var callDelegate2 = (method, page, args) => resolveDelegate2(page)[method](page, ...args);
|
|
4934
4829
|
var CloakBrowserHumanize = {
|
|
4935
4830
|
jitterMs(base, jitterPercent = 0.3) {
|
|
4936
4831
|
return jitterMs(base, jitterPercent);
|
|
@@ -4949,8 +4844,7 @@ var CloakBrowserHumanize = {
|
|
|
4949
4844
|
},
|
|
4950
4845
|
randomSleep(pageOrBaseMs, maybeBaseMs, maybeJitterPercent) {
|
|
4951
4846
|
if (isPageLike2(pageOrBaseMs)) {
|
|
4952
|
-
|
|
4953
|
-
return delegate.randomSleep(maybeBaseMs, maybeJitterPercent);
|
|
4847
|
+
return resolveDelegate2(pageOrBaseMs).randomSleep(maybeBaseMs, maybeJitterPercent);
|
|
4954
4848
|
}
|
|
4955
4849
|
return DesktopCloakHumanize.randomSleep(pageOrBaseMs, maybeBaseMs);
|
|
4956
4850
|
},
|
|
@@ -6776,7 +6670,7 @@ var Mutation = {
|
|
|
6776
6670
|
const overallTimeout = options.timeout ?? 180 * 1e3;
|
|
6777
6671
|
const onMutation = options.onMutation;
|
|
6778
6672
|
const pollInterval = 500;
|
|
6779
|
-
const
|
|
6673
|
+
const sleep2 = (ms) => new Promise((resolve) => {
|
|
6780
6674
|
setTimeout(resolve, ms);
|
|
6781
6675
|
});
|
|
6782
6676
|
const truncate = (value, max = 800) => {
|
|
@@ -6968,7 +6862,7 @@ var Mutation = {
|
|
|
6968
6862
|
const deadline = Date.now() + overallTimeout;
|
|
6969
6863
|
let lastState = state2;
|
|
6970
6864
|
while (Date.now() < deadline) {
|
|
6971
|
-
await
|
|
6865
|
+
await sleep2(pollInterval);
|
|
6972
6866
|
lastState = await buildState();
|
|
6973
6867
|
if (!lastState?.hasMatched) {
|
|
6974
6868
|
continue;
|