@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.js
CHANGED
|
@@ -604,7 +604,7 @@ async function createApifyKit() {
|
|
|
604
604
|
logger2.success(`[RetryStep] before \u94A9\u5B50\u5B8C\u6210`);
|
|
605
605
|
} else if (retryMode === "refresh") {
|
|
606
606
|
logger2.start(`[RetryStep] \u5237\u65B0\u9875\u9762 (\u7B2C ${attemptNumber} \u6B21\u91CD\u8BD5)`);
|
|
607
|
-
await page.reload({ waitUntil: "
|
|
607
|
+
await page.reload({ waitUntil: "commit" });
|
|
608
608
|
logger2.success(`[RetryStep] \u9875\u9762\u5237\u65B0\u5B8C\u6210`);
|
|
609
609
|
} else {
|
|
610
610
|
logger2.start(`[RetryStep] \u7B49\u5F85 3 \u79D2 (\u7B2C ${attemptNumber} \u6B21\u91CD\u8BD5)`);
|
|
@@ -1433,6 +1433,19 @@ var createTrafficState = () => ({
|
|
|
1433
1433
|
directDownloadBytes: 0
|
|
1434
1434
|
});
|
|
1435
1435
|
var ensureRoute = (route) => route === "proxy" ? "proxy" : "direct";
|
|
1436
|
+
var formatBytes = (bytes = 0) => {
|
|
1437
|
+
const value = toSafeNumber(bytes);
|
|
1438
|
+
if (value <= 0) return "0B";
|
|
1439
|
+
const units = ["B", "KB", "MB", "GB", "TB"];
|
|
1440
|
+
let size = value;
|
|
1441
|
+
let unit = 0;
|
|
1442
|
+
while (size >= 1024 && unit < units.length - 1) {
|
|
1443
|
+
size /= 1024;
|
|
1444
|
+
unit += 1;
|
|
1445
|
+
}
|
|
1446
|
+
const precision = size >= 100 || unit === 0 ? 0 : 2;
|
|
1447
|
+
return `${size.toFixed(precision)}${units[unit]}`;
|
|
1448
|
+
};
|
|
1436
1449
|
var addRequests = (state, route, count = 1) => {
|
|
1437
1450
|
const c = toSafeNumber(count);
|
|
1438
1451
|
if (c <= 0) return;
|
|
@@ -1468,7 +1481,8 @@ var addDownloadBytes = (state, route, bytes = 0) => {
|
|
|
1468
1481
|
};
|
|
1469
1482
|
var createTrafficMeter = ({
|
|
1470
1483
|
enableProxy = false,
|
|
1471
|
-
byPassRules = []
|
|
1484
|
+
byPassRules = [],
|
|
1485
|
+
debugMode = false
|
|
1472
1486
|
} = {}) => {
|
|
1473
1487
|
const state = createTrafficState();
|
|
1474
1488
|
const requestMap = /* @__PURE__ */ new Map();
|
|
@@ -1480,31 +1494,53 @@ var createTrafficMeter = ({
|
|
|
1480
1494
|
byPassRules
|
|
1481
1495
|
}).route;
|
|
1482
1496
|
};
|
|
1497
|
+
const debugLog = (message) => {
|
|
1498
|
+
if (!debugMode) return;
|
|
1499
|
+
logger6.info(`[\u9010\u8BF7\u6C42\u8C03\u8BD5] ${message}`);
|
|
1500
|
+
};
|
|
1483
1501
|
const recordRequest = (params = {}) => {
|
|
1484
1502
|
const requestId = String(params.requestId || "");
|
|
1485
1503
|
const request = params.request && typeof params.request === "object" ? params.request : {};
|
|
1486
|
-
const
|
|
1504
|
+
const url = String(request.url || "");
|
|
1505
|
+
const route = resolveRoute(url);
|
|
1506
|
+
const resourceType = String(params.type || request.type || "other").trim().toLowerCase() || "other";
|
|
1487
1507
|
addRequests(state, route, 1);
|
|
1488
1508
|
const uploadBytes = estimateRequestBytes(request);
|
|
1489
1509
|
addUploadBytes(state, route, uploadBytes);
|
|
1490
1510
|
if (requestId) {
|
|
1491
1511
|
requestMap.set(requestId, {
|
|
1492
|
-
route
|
|
1512
|
+
route,
|
|
1513
|
+
resourceType,
|
|
1514
|
+
url,
|
|
1515
|
+
uploadBytes
|
|
1493
1516
|
});
|
|
1494
1517
|
}
|
|
1518
|
+
debugLog(
|
|
1519
|
+
`request id=${requestId || "-"} route=${route} type=${resourceType} upload=${formatBytes(uploadBytes)} (${uploadBytes}) method=${String(request.method || "GET")} url=${url || "-"}`
|
|
1520
|
+
);
|
|
1495
1521
|
};
|
|
1496
1522
|
const recordLoadingFinished = (params = {}) => {
|
|
1497
1523
|
const requestId = String(params.requestId || "");
|
|
1498
1524
|
const requestState = requestId ? requestMap.get(requestId) : null;
|
|
1499
1525
|
const route = requestState?.route || "direct";
|
|
1526
|
+
const resourceType = requestState?.resourceType || "other";
|
|
1500
1527
|
const downloadBytes = toSafeNumber(params.encodedDataLength);
|
|
1501
1528
|
addDownloadBytes(state, route, downloadBytes);
|
|
1529
|
+
const uploadBytes = toSafeNumber(requestState?.uploadBytes);
|
|
1530
|
+
const totalBytes = uploadBytes + downloadBytes;
|
|
1531
|
+
debugLog(
|
|
1532
|
+
`finish id=${requestId || "-"} route=${route} type=${resourceType} download=${formatBytes(downloadBytes)} (${downloadBytes}) total=${formatBytes(totalBytes)} (${totalBytes}) url=${requestState?.url || "-"}`
|
|
1533
|
+
);
|
|
1502
1534
|
if (requestId) {
|
|
1503
1535
|
requestMap.delete(requestId);
|
|
1504
1536
|
}
|
|
1505
1537
|
};
|
|
1506
1538
|
const recordRequestFailed = (params = {}) => {
|
|
1507
1539
|
const requestId = String(params.requestId || "");
|
|
1540
|
+
const requestState = requestId ? requestMap.get(requestId) : null;
|
|
1541
|
+
debugLog(
|
|
1542
|
+
`failed id=${requestId || "-"} route=${requestState?.route || "direct"} type=${requestState?.resourceType || "other"} reason=${String(params.errorText || "").trim() || "unknown"} canceled=${Boolean(params.canceled)} url=${requestState?.url || "-"}`
|
|
1543
|
+
);
|
|
1508
1544
|
if (requestId) {
|
|
1509
1545
|
requestMap.delete(requestId);
|
|
1510
1546
|
}
|
|
@@ -1513,30 +1549,39 @@ var createTrafficMeter = ({
|
|
|
1513
1549
|
const requestId = String(params.requestId || "");
|
|
1514
1550
|
if (!requestId) return;
|
|
1515
1551
|
const route = resolveRoute(params.url || "");
|
|
1516
|
-
wsRouteMap.set(requestId, route);
|
|
1552
|
+
wsRouteMap.set(requestId, { route, url: String(params.url || "") });
|
|
1517
1553
|
};
|
|
1518
1554
|
const clearWebSocketRoute = (params = {}) => {
|
|
1519
1555
|
const requestId = String(params.requestId || "");
|
|
1520
1556
|
if (!requestId) return;
|
|
1521
1557
|
wsRouteMap.delete(requestId);
|
|
1522
1558
|
};
|
|
1523
|
-
const
|
|
1524
|
-
if (!requestId) return "direct";
|
|
1525
|
-
|
|
1559
|
+
const getWebSocketMeta = (requestId = "") => {
|
|
1560
|
+
if (!requestId) return { route: "direct", url: "" };
|
|
1561
|
+
const meta = wsRouteMap.get(requestId);
|
|
1562
|
+
if (!meta || typeof meta !== "object") {
|
|
1563
|
+
return { route: "direct", url: "" };
|
|
1564
|
+
}
|
|
1565
|
+
return {
|
|
1566
|
+
route: ensureRoute(meta.route),
|
|
1567
|
+
url: String(meta.url || "")
|
|
1568
|
+
};
|
|
1526
1569
|
};
|
|
1527
1570
|
const recordWebSocketFrameSent = (params = {}) => {
|
|
1528
1571
|
const requestId = String(params.requestId || "");
|
|
1529
|
-
const route =
|
|
1572
|
+
const { route, url } = getWebSocketMeta(requestId);
|
|
1530
1573
|
const payload = params.response && typeof params.response === "object" ? params.response.payloadData : "";
|
|
1531
1574
|
const bytes = byteLength(payload || "");
|
|
1532
1575
|
addUploadBytes(state, route, bytes);
|
|
1576
|
+
debugLog(`ws-send id=${requestId || "-"} route=${route} bytes=${formatBytes(bytes)} (${bytes}) url=${url || "-"}`);
|
|
1533
1577
|
};
|
|
1534
1578
|
const recordWebSocketFrameReceived = (params = {}) => {
|
|
1535
1579
|
const requestId = String(params.requestId || "");
|
|
1536
|
-
const route =
|
|
1580
|
+
const { route, url } = getWebSocketMeta(requestId);
|
|
1537
1581
|
const payload = params.response && typeof params.response === "object" ? params.response.payloadData : "";
|
|
1538
1582
|
const bytes = byteLength(payload || "");
|
|
1539
1583
|
addDownloadBytes(state, route, bytes);
|
|
1584
|
+
debugLog(`ws-recv id=${requestId || "-"} route=${route} bytes=${formatBytes(bytes)} (${bytes}) url=${url || "-"}`);
|
|
1540
1585
|
};
|
|
1541
1586
|
const attachPage = async (page) => {
|
|
1542
1587
|
if (!page || typeof page.context !== "function") return;
|
|
@@ -1630,6 +1675,7 @@ var Launch = {
|
|
|
1630
1675
|
proxyConfiguration = {},
|
|
1631
1676
|
log: logOptions = null,
|
|
1632
1677
|
runInHeadfulMode = false,
|
|
1678
|
+
debugMode = false,
|
|
1633
1679
|
isRunningOnApify = false,
|
|
1634
1680
|
launcher = null,
|
|
1635
1681
|
preNavigationHooks = [],
|
|
@@ -1639,7 +1685,8 @@ var Launch = {
|
|
|
1639
1685
|
const byPassRules = buildByPassDomainRules(byPassDomains);
|
|
1640
1686
|
const trafficMeter2 = createTrafficMeter({
|
|
1641
1687
|
enableProxy: Boolean(launchProxy),
|
|
1642
|
-
byPassRules
|
|
1688
|
+
byPassRules,
|
|
1689
|
+
debugMode: Boolean(debugMode)
|
|
1643
1690
|
});
|
|
1644
1691
|
setTrafficMeter(trafficMeter2);
|
|
1645
1692
|
const launchOptions = {
|
|
@@ -1657,18 +1704,23 @@ var Launch = {
|
|
|
1657
1704
|
logger7.info(
|
|
1658
1705
|
`[\u4EE3\u7406\u5DF2\u542F\u7528] \u4EE3\u7406\u670D\u52A1=${launchProxy.server} \u76F4\u8FDE\u57DF\u540D=${(byPassDomains || []).join(",")}`
|
|
1659
1706
|
);
|
|
1707
|
+
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`);
|
|
1660
1708
|
} else if (enableByPassLogger && enableProxy && !launchProxy) {
|
|
1661
1709
|
logger7.info(
|
|
1662
1710
|
`[\u4EE3\u7406\u672A\u542F\u7528] enable_proxy=true \u4F46 proxy_url \u4E3A\u7A7A`
|
|
1663
1711
|
);
|
|
1712
|
+
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`);
|
|
1664
1713
|
} else if (enableByPassLogger && !enableProxy && proxyUrl) {
|
|
1665
1714
|
logger7.info(
|
|
1666
1715
|
`[\u4EE3\u7406\u672A\u542F\u7528] enable_proxy=false \u4E14 proxy_url \u5DF2\u914D\u7F6E`
|
|
1667
1716
|
);
|
|
1717
|
+
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`);
|
|
1718
|
+
} else if (enableByPassLogger) {
|
|
1719
|
+
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`);
|
|
1668
1720
|
}
|
|
1669
1721
|
const onPageCreated = (page) => {
|
|
1670
1722
|
const recommendedGotoOptions = {
|
|
1671
|
-
waitUntil: "
|
|
1723
|
+
waitUntil: "commit"
|
|
1672
1724
|
};
|
|
1673
1725
|
if (page && typeof page.on === "function") {
|
|
1674
1726
|
trafficMeter2.attachPage(page);
|