@wordpress/e2e-test-utils-playwright
Version:
End-To-End (E2E) test utils for WordPress.
8 lines (7 loc) • 4.48 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../src/page-utils/emulate-network-conditions.ts"],
"sourcesContent": ["/**\n * Internal dependencies\n */\nimport type { PageUtils } from './';\n\ninterface NetworkConditions {\n\t/**\n\t * True to emulate internet disconnection.\n\t */\n\toffline: boolean;\n\t/**\n\t * Minimum latency from request sent to response headers received (ms).\n\t */\n\tlatency: number;\n\t/**\n\t * Maximal aggregated download throughput (bytes/sec). -1 disables download throttling.\n\t */\n\tdownloadThroughput: number;\n\t/**\n\t * Maximal aggregated upload throughput (bytes/sec). -1 disables upload throttling.\n\t */\n\tuploadThroughput: number;\n}\n\n// Defaults from https://github.com/puppeteer/puppeteer/blob/401355610874beac23a51dcb75739a4bb4191a2b/packages/puppeteer-core/src/cdp/PredefinedNetworkConditions.ts.\nconst PredefinedNetworkConditions: Record< string, NetworkConditions > = {\n\t// Generally aligned with DevTools\n\t// https://source.chromium.org/chromium/chromium/src/+/main:third_party/devtools-frontend/src/front_end/core/sdk/NetworkManager.ts;l=398;drc=225e1240f522ca684473f541ae6dae6cd766dd33.\n\t'Slow 3G': {\n\t\toffline: false,\n\t\t// ~500Kbps down\n\t\tdownloadThroughput: ( ( 500 * 1000 ) / 8 ) * 0.8,\n\t\t// ~500Kbps up\n\t\tuploadThroughput: ( ( 500 * 1000 ) / 8 ) * 0.8,\n\t\t// 400ms RTT\n\t\tlatency: 400 * 5,\n\t},\n\t'Fast 3G': {\n\t\toffline: false,\n\t\t// ~1.6 Mbps down\n\t\tdownloadThroughput: ( ( 1.6 * 1000 * 1000 ) / 8 ) * 0.9,\n\t\t// ~0.75 Mbps up\n\t\tuploadThroughput: ( ( 750 * 1000 ) / 8 ) * 0.9,\n\t\t// 150ms RTT\n\t\tlatency: 150 * 3.75,\n\t},\n\t// alias to Fast 3G to align with Lighthouse (crbug.com/342406608)\n\t// and DevTools (crbug.com/342406608),\n\t'Slow 4G': {\n\t\toffline: false,\n\t\t// ~1.6 Mbps down\n\t\tdownloadThroughput: ( ( 1.6 * 1000 * 1000 ) / 8 ) * 0.9,\n\t\t// ~0.75 Mbps up\n\t\tuploadThroughput: ( ( 750 * 1000 ) / 8 ) * 0.9,\n\t\t// 150ms RTT\n\t\tlatency: 150 * 3.75,\n\t},\n\t'Fast 4G': {\n\t\toffline: false,\n\t\t// 9 Mbps down\n\t\tdownloadThroughput: ( ( 9 * 1000 * 1000 ) / 8 ) * 0.9,\n\t\t// 1.5 Mbps up\n\t\tuploadThroughput: ( ( 1.5 * 1000 * 1000 ) / 8 ) * 0.9,\n\t\t// 60ms RTT\n\t\tlatency: 60 * 2.75,\n\t},\n\t/**\n\t * Network conditions used for desktop in Lighthouse/PSI.\n\t *\n\t * 10,240 kb/s throughput with 40 ms TCP RTT.\n\t *\n\t * @see https://github.com/paulirish/lighthouse/blob/f0855904aaffaecf3089169449646960782d7e92/core/config/constants.js#L40-L49\n\t * @see https://docs.google.com/document/d/1-p4HSp42REEA5-jCBVB6PqQcVhI1nQIblBCNKhPJUXg/edit?tab=t.0#heading=h.jsap7yf4phk6\n\t */\n\tBroadband: {\n\t\toffline: false,\n\t\tdownloadThroughput: ( 10240 * 1000 ) / 8,\n\t\tuploadThroughput: ( 10240 * 1000 ) / 8,\n\t\tlatency: 40,\n\t},\n};\n\nexport async function emulateNetworkConditions(\n\tthis: PageUtils,\n\tcondition: keyof typeof PredefinedNetworkConditions | NetworkConditions\n) {\n\tif ( 'chromium' !== this.browserName ) {\n\t\tthrow new Error(\n\t\t\t'CDP sessions are only supported on Chromium-based browsers'\n\t\t);\n\t}\n\n\tconst session = await this.page.context().newCDPSession( this.page );\n\tawait session.send(\n\t\t'Network.emulateNetworkConditions',\n\t\t'string' === typeof condition\n\t\t\t? PredefinedNetworkConditions[ condition ]\n\t\t\t: condition\n\t);\n\tawait session.detach();\n}\n"],
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAyBA,IAAM,8BAAmE;AAAA;AAAA;AAAA,EAGxE,WAAW;AAAA,IACV,SAAS;AAAA;AAAA,IAET,oBAAwB,MAAM,MAAS,IAAM;AAAA;AAAA,IAE7C,kBAAsB,MAAM,MAAS,IAAM;AAAA;AAAA,IAE3C,SAAS,MAAM;AAAA,EAChB;AAAA,EACA,WAAW;AAAA,IACV,SAAS;AAAA;AAAA,IAET,oBAAwB,MAAM,MAAO,MAAS,IAAM;AAAA;AAAA,IAEpD,kBAAsB,MAAM,MAAS,IAAM;AAAA;AAAA,IAE3C,SAAS,MAAM;AAAA,EAChB;AAAA;AAAA;AAAA,EAGA,WAAW;AAAA,IACV,SAAS;AAAA;AAAA,IAET,oBAAwB,MAAM,MAAO,MAAS,IAAM;AAAA;AAAA,IAEpD,kBAAsB,MAAM,MAAS,IAAM;AAAA;AAAA,IAE3C,SAAS,MAAM;AAAA,EAChB;AAAA,EACA,WAAW;AAAA,IACV,SAAS;AAAA;AAAA,IAET,oBAAwB,IAAI,MAAO,MAAS,IAAM;AAAA;AAAA,IAElD,kBAAsB,MAAM,MAAO,MAAS,IAAM;AAAA;AAAA,IAElD,SAAS,KAAK;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,WAAW;AAAA,IACV,SAAS;AAAA,IACT,oBAAsB,QAAQ,MAAS;AAAA,IACvC,kBAAoB,QAAQ,MAAS;AAAA,IACrC,SAAS;AAAA,EACV;AACD;AAEA,eAAsB,yBAErB,WACC;AACD,MAAK,eAAe,KAAK,aAAc;AACtC,UAAM,IAAI;AAAA,MACT;AAAA,IACD;AAAA,EACD;AAEA,QAAM,UAAU,MAAM,KAAK,KAAK,QAAQ,EAAE,cAAe,KAAK,IAAK;AACnE,QAAM,QAAQ;AAAA,IACb;AAAA,IACA,aAAa,OAAO,YACjB,4BAA6B,SAAU,IACvC;AAAA,EACJ;AACA,QAAM,QAAQ,OAAO;AACtB;",
"names": []
}