@skrillex1224/playwright-toolkit 2.1.162 → 2.1.164
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 +64 -12
- package/dist/index.cjs.map +2 -2
- package/dist/index.js +64 -12
- package/dist/index.js.map +2 -2
- package/index.d.ts +1 -0
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -631,7 +631,7 @@ async function createApifyKit() {
|
|
|
631
631
|
logger2.success(`[RetryStep] before \u94A9\u5B50\u5B8C\u6210`);
|
|
632
632
|
} else if (retryMode === "refresh") {
|
|
633
633
|
logger2.start(`[RetryStep] \u5237\u65B0\u9875\u9762 (\u7B2C ${attemptNumber} \u6B21\u91CD\u8BD5)`);
|
|
634
|
-
await page.reload({ waitUntil: "
|
|
634
|
+
await page.reload({ waitUntil: "commit" });
|
|
635
635
|
logger2.success(`[RetryStep] \u9875\u9762\u5237\u65B0\u5B8C\u6210`);
|
|
636
636
|
} else {
|
|
637
637
|
logger2.start(`[RetryStep] \u7B49\u5F85 3 \u79D2 (\u7B2C ${attemptNumber} \u6B21\u91CD\u8BD5)`);
|
|
@@ -1460,6 +1460,19 @@ var createTrafficState = () => ({
|
|
|
1460
1460
|
directDownloadBytes: 0
|
|
1461
1461
|
});
|
|
1462
1462
|
var ensureRoute = (route) => route === "proxy" ? "proxy" : "direct";
|
|
1463
|
+
var formatBytes = (bytes = 0) => {
|
|
1464
|
+
const value = toSafeNumber(bytes);
|
|
1465
|
+
if (value <= 0) return "0B";
|
|
1466
|
+
const units = ["B", "KB", "MB", "GB", "TB"];
|
|
1467
|
+
let size = value;
|
|
1468
|
+
let unit = 0;
|
|
1469
|
+
while (size >= 1024 && unit < units.length - 1) {
|
|
1470
|
+
size /= 1024;
|
|
1471
|
+
unit += 1;
|
|
1472
|
+
}
|
|
1473
|
+
const precision = size >= 100 || unit === 0 ? 0 : 2;
|
|
1474
|
+
return `${size.toFixed(precision)}${units[unit]}`;
|
|
1475
|
+
};
|
|
1463
1476
|
var addRequests = (state, route, count = 1) => {
|
|
1464
1477
|
const c = toSafeNumber(count);
|
|
1465
1478
|
if (c <= 0) return;
|
|
@@ -1495,7 +1508,8 @@ var addDownloadBytes = (state, route, bytes = 0) => {
|
|
|
1495
1508
|
};
|
|
1496
1509
|
var createTrafficMeter = ({
|
|
1497
1510
|
enableProxy = false,
|
|
1498
|
-
byPassRules = []
|
|
1511
|
+
byPassRules = [],
|
|
1512
|
+
debugMode = false
|
|
1499
1513
|
} = {}) => {
|
|
1500
1514
|
const state = createTrafficState();
|
|
1501
1515
|
const requestMap = /* @__PURE__ */ new Map();
|
|
@@ -1507,31 +1521,53 @@ var createTrafficMeter = ({
|
|
|
1507
1521
|
byPassRules
|
|
1508
1522
|
}).route;
|
|
1509
1523
|
};
|
|
1524
|
+
const debugLog = (message) => {
|
|
1525
|
+
if (!debugMode) return;
|
|
1526
|
+
logger6.info(`[\u9010\u8BF7\u6C42\u8C03\u8BD5] ${message}`);
|
|
1527
|
+
};
|
|
1510
1528
|
const recordRequest = (params = {}) => {
|
|
1511
1529
|
const requestId = String(params.requestId || "");
|
|
1512
1530
|
const request = params.request && typeof params.request === "object" ? params.request : {};
|
|
1513
|
-
const
|
|
1531
|
+
const url = String(request.url || "");
|
|
1532
|
+
const route = resolveRoute(url);
|
|
1533
|
+
const resourceType = String(params.type || request.type || "other").trim().toLowerCase() || "other";
|
|
1514
1534
|
addRequests(state, route, 1);
|
|
1515
1535
|
const uploadBytes = estimateRequestBytes(request);
|
|
1516
1536
|
addUploadBytes(state, route, uploadBytes);
|
|
1517
1537
|
if (requestId) {
|
|
1518
1538
|
requestMap.set(requestId, {
|
|
1519
|
-
route
|
|
1539
|
+
route,
|
|
1540
|
+
resourceType,
|
|
1541
|
+
url,
|
|
1542
|
+
uploadBytes
|
|
1520
1543
|
});
|
|
1521
1544
|
}
|
|
1545
|
+
debugLog(
|
|
1546
|
+
`request id=${requestId || "-"} route=${route} type=${resourceType} upload=${formatBytes(uploadBytes)} (${uploadBytes}) method=${String(request.method || "GET")} url=${url || "-"}`
|
|
1547
|
+
);
|
|
1522
1548
|
};
|
|
1523
1549
|
const recordLoadingFinished = (params = {}) => {
|
|
1524
1550
|
const requestId = String(params.requestId || "");
|
|
1525
1551
|
const requestState = requestId ? requestMap.get(requestId) : null;
|
|
1526
1552
|
const route = requestState?.route || "direct";
|
|
1553
|
+
const resourceType = requestState?.resourceType || "other";
|
|
1527
1554
|
const downloadBytes = toSafeNumber(params.encodedDataLength);
|
|
1528
1555
|
addDownloadBytes(state, route, downloadBytes);
|
|
1556
|
+
const uploadBytes = toSafeNumber(requestState?.uploadBytes);
|
|
1557
|
+
const totalBytes = uploadBytes + downloadBytes;
|
|
1558
|
+
debugLog(
|
|
1559
|
+
`finish id=${requestId || "-"} route=${route} type=${resourceType} download=${formatBytes(downloadBytes)} (${downloadBytes}) total=${formatBytes(totalBytes)} (${totalBytes}) url=${requestState?.url || "-"}`
|
|
1560
|
+
);
|
|
1529
1561
|
if (requestId) {
|
|
1530
1562
|
requestMap.delete(requestId);
|
|
1531
1563
|
}
|
|
1532
1564
|
};
|
|
1533
1565
|
const recordRequestFailed = (params = {}) => {
|
|
1534
1566
|
const requestId = String(params.requestId || "");
|
|
1567
|
+
const requestState = requestId ? requestMap.get(requestId) : null;
|
|
1568
|
+
debugLog(
|
|
1569
|
+
`failed id=${requestId || "-"} route=${requestState?.route || "direct"} type=${requestState?.resourceType || "other"} reason=${String(params.errorText || "").trim() || "unknown"} canceled=${Boolean(params.canceled)} url=${requestState?.url || "-"}`
|
|
1570
|
+
);
|
|
1535
1571
|
if (requestId) {
|
|
1536
1572
|
requestMap.delete(requestId);
|
|
1537
1573
|
}
|
|
@@ -1540,30 +1576,39 @@ var createTrafficMeter = ({
|
|
|
1540
1576
|
const requestId = String(params.requestId || "");
|
|
1541
1577
|
if (!requestId) return;
|
|
1542
1578
|
const route = resolveRoute(params.url || "");
|
|
1543
|
-
wsRouteMap.set(requestId, route);
|
|
1579
|
+
wsRouteMap.set(requestId, { route, url: String(params.url || "") });
|
|
1544
1580
|
};
|
|
1545
1581
|
const clearWebSocketRoute = (params = {}) => {
|
|
1546
1582
|
const requestId = String(params.requestId || "");
|
|
1547
1583
|
if (!requestId) return;
|
|
1548
1584
|
wsRouteMap.delete(requestId);
|
|
1549
1585
|
};
|
|
1550
|
-
const
|
|
1551
|
-
if (!requestId) return "direct";
|
|
1552
|
-
|
|
1586
|
+
const getWebSocketMeta = (requestId = "") => {
|
|
1587
|
+
if (!requestId) return { route: "direct", url: "" };
|
|
1588
|
+
const meta = wsRouteMap.get(requestId);
|
|
1589
|
+
if (!meta || typeof meta !== "object") {
|
|
1590
|
+
return { route: "direct", url: "" };
|
|
1591
|
+
}
|
|
1592
|
+
return {
|
|
1593
|
+
route: ensureRoute(meta.route),
|
|
1594
|
+
url: String(meta.url || "")
|
|
1595
|
+
};
|
|
1553
1596
|
};
|
|
1554
1597
|
const recordWebSocketFrameSent = (params = {}) => {
|
|
1555
1598
|
const requestId = String(params.requestId || "");
|
|
1556
|
-
const route =
|
|
1599
|
+
const { route, url } = getWebSocketMeta(requestId);
|
|
1557
1600
|
const payload = params.response && typeof params.response === "object" ? params.response.payloadData : "";
|
|
1558
1601
|
const bytes = byteLength(payload || "");
|
|
1559
1602
|
addUploadBytes(state, route, bytes);
|
|
1603
|
+
debugLog(`ws-send id=${requestId || "-"} route=${route} bytes=${formatBytes(bytes)} (${bytes}) url=${url || "-"}`);
|
|
1560
1604
|
};
|
|
1561
1605
|
const recordWebSocketFrameReceived = (params = {}) => {
|
|
1562
1606
|
const requestId = String(params.requestId || "");
|
|
1563
|
-
const route =
|
|
1607
|
+
const { route, url } = getWebSocketMeta(requestId);
|
|
1564
1608
|
const payload = params.response && typeof params.response === "object" ? params.response.payloadData : "";
|
|
1565
1609
|
const bytes = byteLength(payload || "");
|
|
1566
1610
|
addDownloadBytes(state, route, bytes);
|
|
1611
|
+
debugLog(`ws-recv id=${requestId || "-"} route=${route} bytes=${formatBytes(bytes)} (${bytes}) url=${url || "-"}`);
|
|
1567
1612
|
};
|
|
1568
1613
|
const attachPage = async (page) => {
|
|
1569
1614
|
if (!page || typeof page.context !== "function") return;
|
|
@@ -1657,6 +1702,7 @@ var Launch = {
|
|
|
1657
1702
|
proxyConfiguration = {},
|
|
1658
1703
|
log: logOptions = null,
|
|
1659
1704
|
runInHeadfulMode = false,
|
|
1705
|
+
debugMode = false,
|
|
1660
1706
|
isRunningOnApify = false,
|
|
1661
1707
|
launcher = null,
|
|
1662
1708
|
preNavigationHooks = [],
|
|
@@ -1666,7 +1712,8 @@ var Launch = {
|
|
|
1666
1712
|
const byPassRules = buildByPassDomainRules(byPassDomains);
|
|
1667
1713
|
const trafficMeter2 = createTrafficMeter({
|
|
1668
1714
|
enableProxy: Boolean(launchProxy),
|
|
1669
|
-
byPassRules
|
|
1715
|
+
byPassRules,
|
|
1716
|
+
debugMode: Boolean(debugMode)
|
|
1670
1717
|
});
|
|
1671
1718
|
setTrafficMeter(trafficMeter2);
|
|
1672
1719
|
const launchOptions = {
|
|
@@ -1684,18 +1731,23 @@ var Launch = {
|
|
|
1684
1731
|
logger7.info(
|
|
1685
1732
|
`[\u4EE3\u7406\u5DF2\u542F\u7528] \u4EE3\u7406\u670D\u52A1=${launchProxy.server} \u76F4\u8FDE\u57DF\u540D=${(byPassDomains || []).join(",")}`
|
|
1686
1733
|
);
|
|
1734
|
+
logger7.info(`[\u6D41\u91CF\u89C2\u6D4B] \u9010\u8BF7\u6C42\u8C03\u8BD5=${Boolean(debugMode) ? "\u5F00\u542F" : "\u5173\u95ED"}\uFF08\u6C47\u603B\u59CB\u7EC8\u5F00\u542F\uFF09`);
|
|
1687
1735
|
} else if (enableByPassLogger && enableProxy && !launchProxy) {
|
|
1688
1736
|
logger7.info(
|
|
1689
1737
|
`[\u4EE3\u7406\u672A\u542F\u7528] enable_proxy=true \u4F46 proxy_url \u4E3A\u7A7A`
|
|
1690
1738
|
);
|
|
1739
|
+
logger7.info(`[\u6D41\u91CF\u89C2\u6D4B] \u9010\u8BF7\u6C42\u8C03\u8BD5=${Boolean(debugMode) ? "\u5F00\u542F" : "\u5173\u95ED"}\uFF08\u6C47\u603B\u59CB\u7EC8\u5F00\u542F\uFF09`);
|
|
1691
1740
|
} else if (enableByPassLogger && !enableProxy && proxyUrl) {
|
|
1692
1741
|
logger7.info(
|
|
1693
1742
|
`[\u4EE3\u7406\u672A\u542F\u7528] enable_proxy=false \u4E14 proxy_url \u5DF2\u914D\u7F6E`
|
|
1694
1743
|
);
|
|
1744
|
+
logger7.info(`[\u6D41\u91CF\u89C2\u6D4B] \u9010\u8BF7\u6C42\u8C03\u8BD5=${Boolean(debugMode) ? "\u5F00\u542F" : "\u5173\u95ED"}\uFF08\u6C47\u603B\u59CB\u7EC8\u5F00\u542F\uFF09`);
|
|
1745
|
+
} else if (enableByPassLogger) {
|
|
1746
|
+
logger7.info(`[\u6D41\u91CF\u89C2\u6D4B] \u9010\u8BF7\u6C42\u8C03\u8BD5=${Boolean(debugMode) ? "\u5F00\u542F" : "\u5173\u95ED"}\uFF08\u6C47\u603B\u59CB\u7EC8\u5F00\u542F\uFF09`);
|
|
1695
1747
|
}
|
|
1696
1748
|
const onPageCreated = (page) => {
|
|
1697
1749
|
const recommendedGotoOptions = {
|
|
1698
|
-
waitUntil: "
|
|
1750
|
+
waitUntil: "commit"
|
|
1699
1751
|
};
|
|
1700
1752
|
if (page && typeof page.on === "function") {
|
|
1701
1753
|
trafficMeter2.attachPage(page);
|