{"_id":"puppeteer-devtools","_rev":"53-c6b31b9e529707e675fb3de9a61c3695","name":"puppeteer-devtools","dist-tags":{"latest":"3.3.0","next":"3.2.0-next-06080187"},"versions":{"1.0.0":{"name":"puppeteer-devtools","version":"1.0.0","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^1.20.2","ava":"^2.4.0","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^2.0.0","rimraf":"^3.0.0","standard-version":"^7.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"gitHead":"2de7fcbd4281435d1bad08d356428d5a7ab332de","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@1.0.0","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-WJ1AEgUKAjEaHJAMFe61gHGrvNVYKJSjA9cZJ2773y9EKVjfL7PmUXFcT2jZIQAYUzLBTY5XEccAIR7Zmcg6eA==","shasum":"e746846457f020a4bd07e9d98e9b8c95f107fc31","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-1.0.0.tgz","fileCount":6,"unpackedSize":25295,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejK/xCRA9TVsSAnZWagAA+lQP/R5j37kwRExRCUs9JYzB\ngLRwGhLh6w5dRu1dAdwKxbK083v6OPRuBfFLZArZ9WDCqUMOojZkLcQ/b8c1\n2YwNyLh+ECdqUCo6PYHnZvKKVTcO7VpqkaPsKm9PdXmo3YaUISNRDPhMIb4r\nK2uJPpgMuY/Pvw8ZiJi9zlZ3HC2R9d8HqsTOyKH+5C4Bd+rBG2LZB1la2t9c\nG4zXUn4ELO6r5ZMI9illZVI7tmha7aTV/qucIs0p6SMwEJXKge848sgltxRY\nr7xIJyNoPTHWbXXbbgiYPYtBWK4PLguKe7q4acbfC1DaaJFzFHKqXcNCjdts\nzd692GtQE+BhGaUyf/t+7hVkJhqwOpypRBB/xxIK5uVmLOCvSCslSW/7QvmW\nNIgWMcAvMW4wcH4GveHRr3sGufPPdV5ST6/fWkNQYz+crLwTM+aisqMlOGMg\ni7a11kBCtWwBEcKfJ+ZpUI/BIuBW3ERImJ3lB51n4KA4u3G/4YSy4wemzra0\nGg7nT8r4DvZyg8zlz7J3ZdOI3EL2b2/R7tf+TX4Y0D4hoSHWHJo36L0nSiey\nPyuhYkqAK1yboN+9uTtq1EZvM6PoTsTlcgvjX+V8HtwOao6yMgiydbzlBmWh\n+D0+4EKaKnd7X01zAjE+sceoElL9av34yMTHNVKsCmqkbTiJCO4aK16Dr1pF\nTqcn\r\n=5sz8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDGRhOrVv0ZF+4UjQzLy3fUp+1cw9qYmTRd9bEyo0LXgwIhAKHpEpzv2n+KbkEBaXWv+9U/6alQBAW+Qk58ngUnMz4V"}]},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_1.0.0_1586278385464_0.9050329583730308"},"_hasShrinkwrap":false},"1.0.0-next-e5f3a8a8":{"name":"puppeteer-devtools","version":"1.0.0-next-e5f3a8a8","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^1.20.2","ava":"^2.4.0","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^2.0.0","rimraf":"^3.0.0","standard-version":"^7.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst { getDevtoolsPanel } = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### async getDevtools( page, options? )\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### async getDevtoolsPanel( page, options? )\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2020 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"e5f3a8a82c7a8c87de61fb5e2c21ca0974787d87","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@1.0.0-next-e5f3a8a8","_nodeVersion":"8.17.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-sIE1of0Mlp1fL3rb9aHcnnNxZl3ShY8nat7KuiKBQ/QzjTpCNMNRHn+ROdvcgXe3aAYMO1p1aYPNicmAtx/HdA==","shasum":"0de3fed8d3553c4ddc52abf29e9d7ed995d78c8e","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-1.0.0-next-e5f3a8a8.tgz","fileCount":6,"unpackedSize":25309,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejeCrCRA9TVsSAnZWagAAuzsQAIB2SxXJWxqmUPh+PFMC\nqQfsUMK/Gw0F0YZu8/tYqE5td48ec4VejHS+Z0+nyN9SlObJxGMym6EUZelv\nCIqHlXYb83RodzvLXjR9cgiJ5ltdmDMj//69mAshah4OukZA9OINENFBVMmz\nFswKFlqZewkYy+UCco3h5Yrfl4XQ6hp//tEfCV3QoZE2hbob8PYN2JpTPFtR\nWhUkDCL//puxSqR23MC7GWWoXH+j9qffDHY1Y/R8c4cnpd8hqc0oG6uQkgvz\ntCfj2ph2gcLmQOheeSMLv3QrI6TxHWm44ppheJviFn1WMDrcFWArCOyfef9S\nF9ogMa8qkhE5T8u/Vp9PMGxC6H5FunCqaIrTTzVrNr1EXmyt8VfoLd+8Bodb\n1z2AP5md08drdDpld7hvI0PvLOBDkIsVww5FrDkOheo8fMcuqomyYTxaguzP\nqQeqn5Lz2gzjDn94Xg//JxYtaJHv73pvQnEyC7D62DgtLoK9vKw6e2T0/6OV\nKOau91UsHx3OdJfK/t612AE4pslpzsrMLO6Yf9W7ha75F0iO/FEy+HThCeAb\naD/t8nAsN5WNJJmYM6C68kOwzWQIGaXlei1BWyfvuINAHNPl6HC3RfLP9LpB\nUht85qudLUCPSWoKkd7lMynGBTKojOcbSw8xSpKlsKW17vtHg3JMuRQ6Tkdr\n2FsQ\r\n=3JO1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9dyafBtlsW+ZMnsnRW08a+UFTNFlgT50jA7jfGERiHQIgMwrYHFm9DEhTL+N4mmgjGVGoUaiJW0J229/F9DhkVWI="}]},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_1.0.0-next-e5f3a8a8_1586356394799_0.2640172484709091"},"_hasShrinkwrap":false},"1.0.0-next-7ba851de":{"name":"puppeteer-devtools","version":"1.0.0-next-7ba851de","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^1.20.2","ava":"^2.4.0","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^2.0.0","rimraf":"^3.0.0","standard-version":"^7.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst { getDevtoolsPanel } = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### async getDevtools( page, options? )\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### async getDevtoolsPanel( page, options? )\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2020 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"7ba851de9eeee04ce764e015a07f39264003347d","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@1.0.0-next-7ba851de","_nodeVersion":"8.17.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-/XZJRU6yPZdj9GkfBvNYaJOV79tMQzzOAcyrIzJUpo2i1+/JJGXlF8LmNLTfzhOdKTeM+UIiq2hOwgguSJqsMA==","shasum":"31d46e0b4b9772f54bb8c4c4452e475863f60565","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-1.0.0-next-7ba851de.tgz","fileCount":6,"unpackedSize":25309,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejhz4CRA9TVsSAnZWagAAbrYP/19Y/untrCV9x8yNP6+y\n/gfywLKiukE6bOo5mcFiWUVljtulXIxTkA73/WHxFZ8d8CmeuY2sLNXNXWOm\nMoaOD6DZXRocXsg7wyKhdJ95tXeua1buTJiyiv1gw1O1uhTKOXlvbEJUL0Xs\nWSoblISrCjhjkTmXNzUlTMiKkRU7qQXHNVfr52PMDJTS1P7CuNOH9krZ6oyg\nmFITVkVHoRAqP3NtiH+RP/cYhbrdUQsalsImPK9yOvSnh+xv8BKoBFoSCAUT\nDIbWtaK5nNfVnr2k288GPGP8MCFLMetNI7uRfBHI94vW3HA7hQxMA8XuGR8W\ngAjqOGkY0z9pRpFU0+V1iNQC7EsFogSMNu9O2rsvUG6UQMlu4E3Yc8sFpPXs\n4Iol92sThCHy675vhMbJ0XhOFPjiIbhwGLPWLiF4YbV2bEGzhK+7piqOL3Di\nb7k9KlvYINqxdeQQ6Q+8OD9HBMnLVDIsDDW31/k1gYnestyRXykOEAO9Unlt\noEd0FfXg0qqTXM5IPwk8iPgZaY2upGaxl7L6qm/7VN25mowGYaOEXGhfVfzJ\nzgkec5C6VrnUkFY/WJaGVJxUyKkgur5PmrEFu6fM1VV7Rie0bU9gdRTGXznT\nNnn0RDu+dBUle6+5SsIJBUz4np26KjeOsAnAiMtLuD+zQ+x2MagfUYhseVDh\nPKZ6\r\n=SBMd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPWRzcyKUS/0Sbfz1HMZI/Gz6x98qL/OE3/uoS5EgSDwIhAKOsiJlsW7VIyr+5BRq21IQuo2dVrgiV08nFIL9zZRm6"}]},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_1.0.0-next-7ba851de_1586371831491_0.777712479444918"},"_hasShrinkwrap":false},"1.0.0-next-7defe325":{"name":"puppeteer-devtools","version":"1.0.0-next-7defe325","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^1.20.2","ava":"^2.4.0","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^2.0.0","rimraf":"^3.0.0","standard-version":"^7.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst { getDevtoolsPanel } = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### async getDevtools( page, options? )\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### async getDevtoolsPanel( page, options? )\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2020 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"7defe325db0107aa349d805bd50627db88e41114","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@1.0.0-next-7defe325","_nodeVersion":"8.17.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-T6Qv3zb6TsirkGXwMVrSRL2A9Q5p1qMyA5bpPKtSaArNwHVP6syNVn3fBmucTTkd55yUVdBupiQXt18YEDmKOg==","shasum":"8a5d599c5af7f592d01f7dea6f641a7ca526ca2a","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-1.0.0-next-7defe325.tgz","fileCount":6,"unpackedSize":25425,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejh1QCRA9TVsSAnZWagAA260P/3lIqlrN4sOXpWDkcT36\nBFCjLx168f311714kJnaSiM0aYb1VUZJY7avPvuwQTbFJ0H7Z2J4Kswvge/X\nFpD7qoTAvDCdMxxIi2ceuA2MnIze9HmUs9Fw7JdsKhaMZvvbgS+FHuoTDNmW\nMKI5YbyzkevCUVVjAHfqolS2/Qp97kODWreE93fJ0na44+SKWaKmwURPKL47\nCGmeS4roTwuUwsGT9g2tDb6HaubXiKt+W+XrYe50JsqXJiUtU6PVHUCi4gYL\naplsWTuqr99k4IIa2uld33Xff7WijaSZzdktUz+PKcJHUAFyEgKvVWrdwolw\nNYlUBtXhEFFz0gCX8pqPeAICaKkRHo1og0JMwoOst9tIvIp/hgWfW90vGLqf\n58LQB2ruk6/0Ep0Z2YOWYFuT4kD1wOhUM1vCkfifAGLMh23mUQnzE6wrtmQW\nH7GUlstgRG8IJxmUV0xmMNe2v0rTAEvcWPcmM9GNCVsJCdmHBd/m5UV8CPV2\nFHfOy9xbwpzQRwVDoFv2cez9kBlBlQky6OQ2+ymeelmVtsoQ5ug6RIPzLrNn\n+cpwC7XKMrh0B50Q86Lfvcr3m7VF5vtDS7s+lWe/xhWuk4qhbMOF3BIQfe1s\nU4EBbme4t8L9JAsHHvTKUdd13NXBuG/BX51+6vxTLKlOP20FJZFRPdGQnOm0\nS6WW\r\n=YGdk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGXmaAsmF/kVs42MrF96J6MGX4zkfb1nJzO8J6WhpTCKAiEAgC1HT2Oq2G0FtujjfovF7sA17AGVa9AG1gucEHyNxJc="}]},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_1.0.0-next-7defe325_1586371919701_0.1031901989761217"},"_hasShrinkwrap":false},"1.0.0-next-17191f81":{"name":"puppeteer-devtools","version":"1.0.0-next-17191f81","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^1.20.2","ava":"^2.4.0","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^2.0.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst { getDevtoolsPanel } = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### async getDevtools( page, options? )\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### async getDevtoolsPanel( page, options? )\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2020 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"17191f81523355f81dd4b2e5dcfd4165707a3144","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@1.0.0-next-17191f81","_nodeVersion":"8.17.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-WgcxJRkSXDSBy5d/y99yfUgIazyWi0HUa6R7JRV3psgb/ooeB+nzquau/lv10pn/8ebPb06r9Phc9c40ce/Sdg==","shasum":"65739c1c2f1e45b22065c69cc5273598fd5c96ac","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-1.0.0-next-17191f81.tgz","fileCount":6,"unpackedSize":25425,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDQRdCRA9TVsSAnZWagAAr1UP/jtU3asDZ6Q3fR7YYuar\n1i8Q117ln92kEO8by/rugwFRQbC4rJ3aPARDM19hTp3llF2kgBV0/YW3oyG8\nYDJHo3yZAzoZ4EQq5PZLXWYUwKm5Hx8eNuApgqsEh1iub8dutP5TDwZarfuL\nCap4Wi7jmlhY/WdlY5r/IRxoNAsy7EDpiB/gH9blU8rqUb8rvB8n5HQbGMn7\nEKqe3zwo7B7fYOdgPWtFvwHBjyj/R52AbCcsgPsYZ17RF9O6eulCrGS4vJ7e\nhJJ77lt7OyuagytiB/0mHtpzBo/YAqECSExgJxdzJNfGsA3KD0RRud4nhaUf\nn8GS087gpM1VQ2jYa7sBf46asfrEWRDtErSs8nGJXE09/dZWteJp3ojwbnYT\np7Vb1ezN/rhP3jL7tPPafE8idPLZ6gMK+f+ou/ZTQi55W7HcAiGgZBdJJ9dT\nOkyio85MV/G9puswPemyvQVEdCc5HcBT0gen5xYzE0PBzUsWxoEjU0XNHzHe\nJej9BItUDeY4JQZn2mDo/slHvtDqUeunuitx/44eZOVz0hSs/sVMbI6pDj6g\nUCC5r1+WtgEtXJJzeFt/rpVHghgkhnl0FRRO84TpjkdlDniX30KXu8hunqsf\nSySXm2SwF4zv/r5NuKpqIE4JfSrVwdjgOtDcbyJiKJ2TOY87XpfNe2X76Jqr\niQrl\r\n=DsFo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF8omKh14XaxWcHpiPLvSyBXX8aqoFRbOFt7KoKZkOYCAiBr+q+GP87Nbkb4KeF79IzXBEcR7lUmQQ5EGPYGKzEGZg=="}]},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_1.0.0-next-17191f81_1594688605111_0.13666660723884272"},"_hasShrinkwrap":false},"1.0.0-next-cee5e390":{"name":"puppeteer-devtools","version":"1.0.0-next-cee5e390","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^1.20.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^2.0.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst { getDevtoolsPanel } = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### async getDevtools( page, options? )\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### async getDevtoolsPanel( page, options? )\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2020 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"cee5e39061220382e0b0bac544594a486c4ac70c","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@1.0.0-next-cee5e390","_nodeVersion":"8.17.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-m2L/EpwA5Y/smqqBlsxRg7d5P3PieeXcTFcdiQ76PK16XJComNXO6Q0pEY54viM7gqOdvdbjvjPk6dDRR331vQ==","shasum":"ea782f7228522e91de3191f4ffa154c8ff8fc726","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-1.0.0-next-cee5e390.tgz","fileCount":6,"unpackedSize":25426,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfD0TtCRA9TVsSAnZWagAAzocP/itjNjYnZ6ueGPq1l34h\nfzr/DQyM/8km31293niSFZGH5fWU0iQj4f6YMkf0hvxRSCgGbzE51JY+GYYS\n6QL9oZ/0jwCvn2WFSXsVRmnlgdEoqRyOkbCk3KML8HOS9uj5Ww6UzW24In9Q\n9KuUwxdYIOYKi1rvywNvLWY1XpQf2bu+DQv+JiKy09wHzy/PCCPzD17pd6P3\njk7XyCHt6mKjGZHphZ/YneYT8DsoAfYat8rjyLnrgwUBSA93zL6OILa4O9Fx\nwZMKB2++cUFScmumCoyaE90+BBpccOMSPx7imyyN+/r98oNBPXjyIa4T/gTk\nCekYZtjF7bQThGZMSEoT0DXgYxo4AQzd9PwKOqTHbknQTfx4R7fNIp1HTDa+\ncLEzSDWDiSESxzIIjktfPdy9pGJ3yL2HmL0Iw+NywoQ98SSc95k/zBsfIHVj\nIG6403hLXc6DfIyegBAy9YwyWrYjxcYITpLmj9n1jB6jW5HYc0YKW1QDNGvI\nwM36oVqIsKMaTHcsTRZJNzY89s1j9GIzvykG2ieq5J6HfgzSSpK9RBH3WRQl\n2POF9JTE0YVvZ9RqTmIdbHjy0yPTwN+jfpKEHyPH7tkKQ5WUeADSLDUcCEdw\nn7DVdI4Ug5wQ3XH13ipTATPluK0XyV7cLxreRQLc1L+S7DfFX2+MSBeTO88d\nDpG/\r\n=BaNq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDBoRllmrp0sHscePb8DDj5BigvVJvSi7FKfCiorwncuQIhAOTh5l1o38gVVGIC5HUrjr63cRkuQ8Y+p3fi5Fery/DG"}]},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_1.0.0-next-cee5e390_1594836205140_0.3240434576000466"},"_hasShrinkwrap":false},"1.0.0-next-6de63b66":{"name":"puppeteer-devtools","version":"1.0.0-next-6de63b66","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^1.20.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.1.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst { getDevtoolsPanel } = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### async getDevtools( page, options? )\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### async getDevtoolsPanel( page, options? )\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2020 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"6de63b66038614d0fe40ad06fa3f0456fd3fdc41","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@1.0.0-next-6de63b66","_nodeVersion":"8.17.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-XzUxtqYk5SRZcSvKa1fgYIQFkaRpUmjI1KQb/imEaX9BQCOoV8EDTkrZ/g/wMZ2tr/uQGxKI+3dYD+ooH45+xg==","shasum":"08c61b70b8a1a2b5272f32431a5eb735dfdebbfe","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-1.0.0-next-6de63b66.tgz","fileCount":6,"unpackedSize":25456,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfD0stCRA9TVsSAnZWagAAYfYP/A2OR5Dr3Ypxyquef5NF\n4SNFQ2tkh0QqLl5lTzOyhekOeLFmBalj/rJFxoZ1GgMn7Pz2y+bR8ohD0PVL\n4bf+c3nGjbe7qD3x3AgI8u4VUkqkxIo0V7tGRX5eOO0V6+Dr/LJQtPLDfeDX\nm6Q01WlVrbB155wbfxxzP9ul+huHNxRMHS+OwJQN/vNrkuyMQph9iJllnO8D\n7KHe7kj7Hf/3kkUedJuI5H1jRZZ6dk8CuPy9EJoqMmNdvYznnQgK9RjKSMwP\nTvpFG24z+r9H88+Q7tDoXNtgm95A89EK1gJjJDiKayL0zBHdXWTjTAsmg7oK\ndFfLkPJ07vtCd5wR7Am/dcaMsYsdLn+KsLK9OKpL0SW4siRLXaDt9BCm8o4w\nBAnsT84xhvx5GGkrtOIOoyzzB881U9uLNUqCtl5D+cQyPSs9Tg+AoqJrRVda\naBVsYq/rVLZnO7+CdJzT3DfvYh2cBx9CGj4f8aPO+yxks3TG0mUh6QR+E0gX\nB0+phiH5jn6m/iigZSYGG1XJ1ijTWtuh7QH0aeyPc9fOQnS381ZS7ik+goy9\nuArrBWymuo7Ls4siYklpgEl8EGBR4wKY5ulzu7r2hZRCJV1teuhW+jHT++5H\nRTXoyyXRaNjARSdpei6Ql1SlddxhoJHQmpa5i7Kf7O5H033wevNDoxxJYTKz\nPitl\r\n=Dls7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGa3n4dt6GdtrVJ/5BNvqiBN+7s8I8JLZ19ruGJ3B6KCAiEA2sDl87MjRcxc4sBS+z/hcAzAa5bt2rIwvQ2cPULw6JQ="}]},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_1.0.0-next-6de63b66_1594837805266_0.4906903206063453"},"_hasShrinkwrap":false},"1.0.0-next-036ce950":{"name":"puppeteer-devtools","version":"1.0.0-next-036ce950","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^1.20.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.0.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst { getDevtoolsPanel } = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### async getDevtools( page, options? )\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### async getDevtoolsPanel( page, options? )\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2020 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"036ce950f6105b40d57d6c06011556c878c87378","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@1.0.0-next-036ce950","_nodeVersion":"10.21.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-kDqK65TC1JbC2ECKblOzl57y2pAcF1e8ypJa0/YedCACss4vHWOT2F5QhEmRv0OyHy237PDaP0jS/CelIeKTEg==","shasum":"63550229edc18842d0d8d2c9fbd5d68af2685eb5","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-1.0.0-next-036ce950.tgz","fileCount":6,"unpackedSize":25456,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfD3tKCRA9TVsSAnZWagAArrwP/1hNX4Uk3HSaDjRLGTGq\nNjF/IImXypu5yUi2wxFz1v0Dgss04PMf+hQz/ojCHefNQ1RA6S7oQZKv5b1F\nJEuyQiI2A9FVZvmN2WZnATFGliV7IVog0ZGHsPtUTGHyBW9vyCCNuspHfNH8\nA15gDPmwnDHdpnlLpmz9FVRpCb6bEDjQe6e01fvkVnhWol7/32sQ/1K2DeiN\nNoK50r0qTXrcRgbgSkLdENPRXovkLqbG/eOFuMxstuhKNwEvrVjaBK99rsue\nU0fJVF9L8ltQIAV8OtlLODLb5cOyGT3OE2RaNlG7QzZgYhRThd1zUW5oFR87\n3ew1amYO8bmQv2q+5O0+HbZZibZMRPN3SvaTBwAQgWflZT80NuoFk+YMaSVp\nG6OLIYtzPdSEU85SMNF1v1j9TDhOm3Ro30kJYr9MjcPybC2GbXyVrxzsIOmO\n4aB2XEtkGaQbFMGYKP2kYE+pALnDaJgNZtRccU5Y1gMIJDXb8oVAEzYDe+wf\n3LOhHrHnZ5hh5i7U0YetaeOn+844ebhKP1KtlVipLODejDFR74JMU2jygc+s\nnwUOB5auZJPGs/hCZyrKom2xWVVuwjmzKVPngeeTl9E5fsmilIcjWGYusNB8\n+otMZgifsyUyItLS/iYysbOv5RcpfuSvRmsZuEUTRqP9byE82j8Uxke42vqB\nxHOa\r\n=nxCq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtUb9pF3B5l3uaItulGzBDJX+PkhTZEXzv7Z8n8mS11gIgI8IYsy1IjR0MIM7D2p5Zg/2WnG/vsRdcvA6p3oz1F2k="}]},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_1.0.0-next-036ce950_1594850121608_0.612890386430154"},"_hasShrinkwrap":false},"1.0.0-next-685033a9":{"name":"puppeteer-devtools","version":"1.0.0-next-685033a9","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^1.20.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.0.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst { getDevtoolsPanel } = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### async getDevtools( page, options? )\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### async getDevtoolsPanel( page, options? )\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2020 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"685033a91951e27b51c571fc8b59d592609079ff","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@1.0.0-next-685033a9","_nodeVersion":"10.21.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-luTa1R7pQLUAhxSABekctIHiSnrIQUwe1JEPuvmi2/sY3AqVGQ2PrCJoqnYCW8fvY6DAOvihX3N9VjmsL9ivAQ==","shasum":"6a31641b1ea710b6b5f72bdcfcd02cd345f78737","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-1.0.0-next-685033a9.tgz","fileCount":6,"unpackedSize":25456,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEF2RCRA9TVsSAnZWagAAcJcP/iJxxo8SMnR6NPLQjaf0\n1m6ttJSD8O6PvWkJkWXBF7dbGFcwYCc8EM2FCOjJn++3MI6Kdl9iIDKfLDD5\ns7944TTiU5GG+fqKFpUgBCbGB8J1WNAvhBFdxbMb8FKtCAPU08LgpBaMEW5j\nJ1tscXQt272gOE3rEv+U3G6bKfyRwFlmUKFQ8GdUTZFj+FnzUpz8K9iaV6Ax\n5OEjuYzhAJLfyC/JcPMqH5wB8vr4aWxpgRXwt4eafxeB9OGG2zMi1rA3UBGX\nPV/dEMoBcJAQBd7OkD4I9Gp59rPCM54UP2kChfRr2298dpQEZQQeImuM13VH\nZByWqcvGxDSbRe9gTzAyliAtXx2gTpsz3muWP20Ja6GRoNagFmTPz7Tvyv0c\nivag/9494w3yqrCnHOr7k7Xrro3qGS1R3Hy7JLWLB/YAN0s64rfaon1aT2RT\nOaAMiSmdf89LKRE0kD7ldbs/NKDPoXwXhmYctahLyLYpSl/SOzbbs9pzMvxP\ndVA3+NhGLI4g4hHb2iB4uWpnzMWdsk/13noVeakR07zMwuK5onVYP+pZngGV\n92AoWyj/tXU2ip6KugnulLDlXkYqd9XYW6qxmDRECT+nPIIS5VRu8epFKnZT\nWkK0n9XNQ6AHDSnqb71rU8eIIDu+CXop3D1E6wuCXP9NmUYUxxlHYOsEhGkF\n5vhq\r\n=g1w6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6l+xnjUKlLZ1k88HVUlipQcGMmXnxbzRxtGILmMuHVAIgQ7yB9Dw7/4EgCMdYxm1uPQ6K7jvH1/cSagy+HESmW1w="}]},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_1.0.0-next-685033a9_1594908049177_0.424575587783921"},"_hasShrinkwrap":false},"1.0.1":{"name":"puppeteer-devtools","version":"1.0.1","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^1.20.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.0.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"gitHead":"653eb05f85c3789a58cdbe2ee0cedf28e112ed88","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@1.0.1","_nodeVersion":"10.21.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-snGzbGoKkGJlSVGbcDMqhLMMZIqdX0pGwFEIQfsZBLqpwA+oGd58zzQovqbeRQpcOM56d3ueQBk6BPmgpaMkwA==","shasum":"ef4cf8ab57c01950ef4d62571de586c87e943907","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-1.0.1.tgz","fileCount":6,"unpackedSize":25804,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEH5QCRA9TVsSAnZWagAAHREP/RpsD3F5drmsZ6QG25t7\nU4zna/fKr+DHpcNHxDi4MSBUSc3A3kr7hpbmIhP/lYs9OLfgRX49ADJx75Iz\nrulHPd1RJKajDhJoqIwFJXgSKiOIHPbDHFZ1MlgpVnFn/xEG2WAaUMU752BB\nXSM31RN0vjJ2pp/k/qZ1kxZzCt8zt/uKqqZ7CyKO3KTlbmK1RK7E2wW1HAud\nD6mIK4D/4w6oMH2OVyGxVb7szA9LGq7ODFVzHM9HLS3MmNYCx6GmdrVUxASy\nY0byiH+EeSPYiA9pHz1t80hL4Xdi9MD64jCERjDhbzXnaA8iJ8v6Xz4Qx4/X\nxkECZkL8DhE65y5OO7Jg6LuSo/nhuGOCJ5AYn5dZju6B6EyWwbt1uCUQAN5F\nGm8AyaPR2fDG+stwJUTyCvamQg11fMnv1cqL7lTP3ssd0eO5X/IK5fdoIxsU\nSbNcN1U7/H4dVaG7WUHIG+wB8DH8XRli6fRmiPioylRuRLF2pxnQSi6QvfWn\nr3+EvWInuFTEK2ACdopC1lq/YwFHNn3V2aETNG1lUq14mOxoaZk9gXbJLAEv\npLga9y2ookw7/+1wSxBfzQ4jZYiwuyJAQF9ipHSBcqwZXl0ReMTKdw+j3pN1\nOwtlYyhu0AqTV2tKvFmnlZJG3DqFyclgdYr7fT3WSouTBGGd65HRK7Co6CJq\n/KnN\r\n=0ZJ8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtuYKfkx3LNJzdtIxLCTUB9+jdWtQ+KzOI5iMUe2ru8AIgZvfa4JibwSI2Dk1bKy3fRd8lFmHahqCIziN9xggOp6I="}]},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_1.0.1_1594916432375_0.586675842834937"},"_hasShrinkwrap":false},"1.0.1-next-fdfab6aa":{"name":"puppeteer-devtools","version":"1.0.1-next-fdfab6aa","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^1.20.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.0.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst { getDevtoolsPanel } = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### async getDevtools( page, options? )\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### async getDevtoolsPanel( page, options? )\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2020 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"fdfab6aacd214ab0f60f81d4c90dfaa9f439dbdf","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@1.0.1-next-fdfab6aa","_nodeVersion":"10.21.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-5kKpM7kmnYEutb0now+UXuQXgMIGEWnv+tDBcpVbJaASFCdGOlvfntXSPn6yLzEFOsuommIBoY0YC26kTGN0gQ==","shasum":"8d569809464171e3aee4b6eefcb61d19fc5a3268","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-1.0.1-next-fdfab6aa.tgz","fileCount":6,"unpackedSize":25818,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEIBbCRA9TVsSAnZWagAA5D0QAJVSNpu5WDbBacKaGFvl\n4e0QeNHHlUC5qw0B9G4WXex0C1cWh0A474IgcDWBPPgNakWqxXxAm94AFiq3\nDRJgz7jHhstlDlDLNXGBlDxJagPdLiehagfx+surcUTfAVYuB3EVfG9weEms\nHuaXBmNRF/fM4BjfUjCqlB2Q86LVCK0m0zWQ8yrmLgOQSZw370T4PM9KaLnT\n3Hjr/Mccz8r5T76EsLatiStQ0Zka/utMNUfTrTpM19DvOe1JMgvqr5PQVWQW\ni2sBoPiIR+X6k/Os70sbMQYjgnEMM1oWEL8IZZyOdRCybWgETuIDDnAWNNmz\n0S6DhvYU9J095E+10cZk6W3pazcSpJHRNuyvFerW2pQjkyy9kUPYyokCyO8d\nUfPI4Hs/oWzgfjcqWlL0Lga9R7daL8dDLu92zjeS/bWpLwEWmCZ87L3WVOWq\no35URv6D9Sl7BguAHANguYB4wV80BckdP70cLdbkrFwg4hYdkNWaqz3z2lkr\npEZUjQlKe8ZA7/0NZKRgeCqABowGrU7be3W7+6Ks8pHunwogw6uk/2z9Ng4d\nwbK1xEw41zZ0lw83EQKr1rB80dYVFZioCYHYx6wpyjy1zxXu3j2+bDxPfa9X\nYAa2NwKTH6PE2h99FJSvjg0EBn9shoG9Q3bDr6HwJvYM/gyQaf3E2T4hRMZZ\nK7M1\r\n=rI/k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMwaYU0NkN10QjE+wsrZhwGrhpSFmebE/SK97rt10TewIhAIDumWzQj0IpZoZszcgxY+JUJ0Ex2Hbu20OYrDe9N/jz"}]},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_1.0.1-next-fdfab6aa_1594916954601_0.056255965083449766"},"_hasShrinkwrap":false},"1.0.1-next-3b4cf357":{"name":"puppeteer-devtools","version":"1.0.1-next-3b4cf357","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^1.20.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.0.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst { getDevtoolsPanel } = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### async getDevtools( page, options? )\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### async getDevtoolsPanel( page, options? )\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2020 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"3b4cf3573529792be0080f90c85a135d1cf57fa0","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@1.0.1-next-3b4cf357","_nodeVersion":"10.22.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-b+1Qxr4XI1mWkvqWIQ5W6jYtPMuJl//gzcUMmN81IBqVW0unmwt28I6y38UcBf0Dpq4KYxQHGOU9YOJIJBXrpg==","shasum":"0ad5d17ba5b5b10f391afa5fbfa9d2f931e0f947","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-1.0.1-next-3b4cf357.tgz","fileCount":6,"unpackedSize":25818,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfT+lOCRA9TVsSAnZWagAALWgQAIIaQF9b2RICzp1KqH2w\n9QU2w/t85784n6DdO+iv183IpbTgrG4mBDntL/7e9+6G5zgAA0s4i0Vh87GE\n9wzDKrUwASqYKxI6oN84mP+fenIw2fT+rECHXw9Y7WGVgOdzZ7Mzak83FqSp\n92aG33gNOLeFOtZN9Y3YQgos/GV8o72P/gQJrAEeJtFEgEHkMmwZVj5hn0uu\n3NSSuxsvwvKw4rD+ekKjTQeQTt6CliZPk9zkQqaBdM4o4eAHvXNUy17kDBdM\nxyWIfqm4uBGlGwYPup54SWxnSPULAyX6HLWPYbJJclteh1Cod1EJVEGKPRjD\nlI181qXgKDe7va7+a1WBp213UDBjFxKy/AoTO5oC8NlKjHnGj79J76oeWzUC\nW0yF1iOOtllpNvVc1e6gDTi2C10U2J0yoSQb/7InlnWjr8eTy9sZaWQK+Ud0\nhkELUe6gSWn7b+ZA9FzWCt4Bnc8ycjBexXucnSsGwXBojb6PhVzbQUf5iTKk\nwZa2qcpvNv3JlnSHaBMhlGofSqEqx0aDeNmgSmnJreiabsiHkGs2vuk94n8d\nDKlijXoVwCdDK+W/JLHAMBdIxmJsZTgmyPVQz22Sz7Ux9We06IOs95nUvUwQ\nvRudajP1w0kki4G1vGh/vUH4953bpCrfl9O79piAih4+jx5HIp/Ym2vwbMHe\n8MMk\r\n=BqYB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBqa9XAHPfUOmZtxZKVSXf93Qpir3F89z1UAU+wF6ENgIhAMtoZsaje//WN+jlM0DOJy86ezTtkjT351LErZt1eixd"}]},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_1.0.1-next-3b4cf357_1599072590107_0.7009839271397664"},"_hasShrinkwrap":false},"1.0.1-next-977ca8a0":{"name":"puppeteer-devtools","version":"1.0.1-next-977ca8a0","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^1.20.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.0.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst { getDevtoolsPanel } = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### async getDevtools( page, options? )\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### async getDevtoolsPanel( page, options? )\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2020 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"977ca8a01e7ce5f01cfbfdaa2b5041d225f18cde","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@1.0.1-next-977ca8a0","_nodeVersion":"10.23.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-OoxDvBuJHjBUs2+a9rQc/S44IVePYvceO1iHS1yO48uJHILSRyo6fWrAXO5LpyxoI93+2dznffc0gwy2Ht2SRA==","shasum":"f19752d299bfd3d21d831b3e27dc57727a4e164a","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-1.0.1-next-977ca8a0.tgz","fileCount":6,"unpackedSize":25818,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf6fYPCRA9TVsSAnZWagAAOqkQAION+P3hsVN69RwmnXhn\n+AY0FIOz6LnVANSHl4KzNbEYQ++ZvWIvcfYijD2e/l2mJT2kQEMWv3AG/6th\n1c0+fK8BBjOAxRmR1r6Fk84fjEa4lXxZ8snx1i003kc0hUd/J1+ijHIo5a0U\ntwt2hxgFiAyoiWHpIAfAZoy4hDOQwpuu3eZhDTttDNPyaAsAP+UiwkyWuZWt\nH3bugMYfip3m59oTjZ4ntqQGYK4TdzJKe6wwauGfo7ydgbMuV11JLXwgxvZO\nshR5SPTJZvwVhOw14qbiaQP9So0NWilIurWIntiQl9mgW9uUA/mhKTpj+52v\nWddmSCMZr3Z4rOSRV441rKLaZ7eoqgb38OfYWewP9LzVVUaHSOJr0x4PpJUD\nWK+YpDsqLETEn3WgXOYrYIGq5YFWJB/ZmjwrE2qkOo2OWqE6awgyEwMRbuMf\n+nPBVuaWiIN/O08llb395eL6JdeaiW3GpzsJx83b2cK2bI/XGydg62U+SEnc\n30QX/+EhOPINGz2oMjjc1oM5iyCix5oDuuyEoxI1Y+B/qHy8dZWP2UsK7t6M\n8KeNJAeGgw/mhH4ppAm/1sdkuiL2794Ti1dkUPljdWZG057bDkHWF1Zvu9Ev\npG2Q9kryR8ujV00S6kLj/yl8JPBxhlfHYX9KHlADBtp3RApRa+nzeu1MKijv\nz4zK\r\n=iTdW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICwmbdJ+84rCmP3V3mjLl/Cu472I+F+/XKjUcBcy9zwtAiAkNBP1fMPPyX5WTAVZ/heVVxoMelIi6odSlvZIopD5qQ=="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_1.0.1-next-977ca8a0_1609168399311_0.8211662355132869"},"_hasShrinkwrap":false},"1.0.1-next-d93df4f8":{"name":"puppeteer-devtools","version":"1.0.1-next-d93df4f8","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^1.20.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.0.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst { getDevtoolsPanel } = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### async getDevtools( page, options? )\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### async getDevtoolsPanel( page, options? )\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2020 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"d93df4f83912773a1e95b46b9dc0bf98ddd534cf","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@1.0.1-next-d93df4f8","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-xzcJoOz2wwuLqMr9vsb4KjFp7y1uaFli7GRy5srENrDDO4LhclZ0Z+hQqGK+W1TEQwhNwLwu7QENmjrVrW31Ag==","shasum":"8566aba56daa9006e8e52e539cacc970f06d0b15","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-1.0.1-next-d93df4f8.tgz","fileCount":6,"unpackedSize":25818,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/8iHCRA9TVsSAnZWagAA5ZUP/2LU0wHzDIiwHgZK8pC1\nE1KIyuAz47TtKYAfNW4eOXI7KRCWkXjvMDYeEJwr/cFa/+KYQikpvs7fnuUL\nkZDxK88alOqkiSjpn3NLTsjrZxf8Sk8wV6UIjunemFs1FcUH24nxQq1i1jPa\nU+PNuDmRHdUxpzZ2WP/aiBqdeZ27oKTalo5v7BmTHL0Lqx228Uu0jlYrDO08\nFpHiZEN+9meACc6i3RmdNQ4bQ0W4S33lM3jgiXjoe0veHFEOTuGe87xZNeRy\nbdo6DkgI2WYXHVfbgYKFiRKYQtDb9dZtHewj9H4Uir8BjZZ4fsrAXUU9V+WA\nAFDzb0sgmWS7B2I4QzGAg5XIwa1I7ORj557tH4c8/yldAj3FlmBE3IX8wXO5\n11GTX3MGr6D8oYAef9IpORY1lGAcJ/d4PobISa4WAzlhPg7athZURTN3aPpY\nGfJ8o5HaiqJcucnnKelUInLaQByb2w2H8/+WbHR/JZeh7rzXdrIzRxlMJQ8+\nAVznFrPZJPYyzj6zd3gJ/DTl58/JCJQ85zoTCRZeV8BM3Acqu+pO9WzfKEW7\na1BYJNd82yVp29s/oMseHaH/LiYi4ldq92ZciiXL0c0MZpFkKeswm8LJOUqX\n4HQi+lJA1By5BAhoJWd5HAdWUPqHhFw/L0wXEI4Wt3JQFjCtmXKmfhKsiADf\nVnrb\r\n=Cl6T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA++02nfXHPdxBpCvDju86AoBsYHZ53kB3tGwQVnc8GZAiEAuedLRJp90TZQ8glhw8fkVFw1M+syj0CUxyJRGUIz68o="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_1.0.1-next-d93df4f8_1610598534779_0.8128248818570059"},"_hasShrinkwrap":false},"1.0.1-next-8bd747de":{"name":"puppeteer-devtools","version":"1.0.1-next-8bd747de","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^1.20.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.0.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst { getDevtoolsPanel } = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### async getDevtools( page, options? )\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### async getDevtoolsPanel( page, options? )\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2020 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"8bd747defa22b629051758dd688a1873498dfe34","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@1.0.1-next-8bd747de","_nodeVersion":"10.23.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-1DDKKjeGXnhtcETUrkSWNaKV/v635VuHFKXztjQ2RrpnIGL8VjP9YVgS0NHevGBTzyBWtrP7SYfQbnuWoyko0g==","shasum":"6e887a3b065df8e6f01a1e82b046e09784b5eb99","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-1.0.1-next-8bd747de.tgz","fileCount":6,"unpackedSize":25818,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/8iSCRA9TVsSAnZWagAAW/kP/2+MNAhzJmkz206sz1Zb\n8O4fyZunfQJeWTZA7eLwNvyv7dhUh0LnHVlLJ3Dcpl+3oxoZXQZ50eLeXkyI\nfayqVa2sLGa0YwPC91cNkUyAzqqKSUTsX9NE161BP77SaqhPDI7lDxRtIAVB\n60kfwh+aI5Tga4fynv+IPU+zErBdT1tWFxRVTtZYmgRqKQyMNFci4D5USU2Y\nsxS3rMXbDgvKgRUU8bsiB5Dr82Yn3nvdVDecoU8dqIaJjSqwboOtoU8xJsNX\n2cNVh2wfX7qHmkW+wOHVWaHDzWrvW9kzYv6YhyckoegVYQn24uoJC3gznXwq\nqdbxXyEM2OYFOBV3QX6cAgOXqZiC+WJrm8MGlcUHNBYbWbLdelvHBgRmxXHu\nmMWuKbZ8izoEciQhsJh03NKL4UAEAhxMx+5p3vV0scm/fXiQaDd9Mh/S+vmY\nQlAjptPbHsIEf7IZ5KZ3hHThh/QQM20juWLSGp0BKzEWhh13pgkS2LaxAxmv\nRqJl1EhI18ewDDtDcscipvwzvJSRtA3BPn6IEkvjMZlPWISeuqbDQnvD6ZLn\n3BENvJZF8YAbW4HnhwfDIi4Cget4MFyOYgrqMYqZOne/QuKXey0Tgc/O/OKn\nIvji9woxHUdNQixw5UdLwpuqrH8RdMBKt0ubFssgItWcJsJp/6rnDF6LNXiB\nF9gl\r\n=aIHu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBqSY2PcfmV5VTLZz24jwLnOda+BXXTxul81QSpudL6/AiEAn9kOfaMyPyv+abxMNXaNaWjLyIeHWRDS6oUE0JF8GaY="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_1.0.1-next-8bd747de_1610598546478_0.08741664645606129"},"_hasShrinkwrap":false},"1.0.1-next-81473491":{"name":"puppeteer-devtools","version":"1.0.1-next-81473491","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.5.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"peerDependencies":{"puppeteer":">= 5.2.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"81473491ffb2f79b44720ea427cf08ff483b94b5","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@1.0.1-next-81473491","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-l4sb3Q8h57jVHtMg2ZZpAfUfsk+tSNOydtJzyRqY2jrGaVIfML2tDRBWKNYXv2ZU0vDpRWd7Ug2BMR497oEI1A==","shasum":"5c0a8065ed165015f672740efa08b3097eb20ee5","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-1.0.1-next-81473491.tgz","fileCount":8,"unpackedSize":30100,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBhTDCRA9TVsSAnZWagAAOy0P/iwKXmRFaxB+O+m1UFM1\n3XhHogmamPQiYiYSHAInQGeNyCFWepU+QbVPgem49PulATPLUQL6mPSFe0Ds\niMFvYNm5fxD0qFo/IvJW/9OCp01i2nQ2YqIemETBogxsaw7oFwwi2aP/vtVw\nppSVh4iBBNTcOY3gK2a9WOCXwgY2+dALr+igyuYLTclXLVqOVFWvAQWN8Yu9\nM9HC5f5FfhmaekKZcdlVb/xc7yBh67I0upbIjf4rx83R/j6UwrruntVVqQ+T\nRf45DQonHyqxrv7jVIFQRK+Je/pLLSp3aNhME5pslrJWxZyVc20ADSx7K0ug\nrzantxmB2MaVB1JiDM/BN1DwdfWHKgEo3m/G43VUazmBU+iGGgtqjuzDeuJK\ntc/f0lmc20wTUiVUexOWZjXmVO+yoxGJv8kPDlrymv9t5kF9IqDib2K88f6e\nPMlJhRQyuOWRtA9huXVLax7vNpBpII64chkF3pl2ywUjE94xa8mGW5dqKbmv\nLCEguwk3Xg9X4eKMDpchwpP/UzFTnF5h3c/K4CCPdYg14PI5ajpkbgOhzM5v\nrex4vSMPlckTdAeDlQlqAiDo7WfPAUrjjiBpVG7NdqOWcvNj+YpDd2YBeWkj\nVBqwUHXAxLzCLTdZqCIbuI/5JpAAZp4bGeHbyw0sRxTHjloPjNKDeOgEAS4G\nzJGF\r\n=I/OL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHEpYJApScTGT9qJvSgCNo/7k9jiAL81PrtQWy8/VZ7sAiAiSlTYFKkKZTqy6rrWnXLd6WKhQxEy7sy3Is3v0gbLOg=="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_1.0.1-next-81473491_1611011266823_0.6401628950022749"},"_hasShrinkwrap":false},"1.0.1-next-5ecc8c7f":{"name":"puppeteer-devtools","version":"1.0.1-next-5ecc8c7f","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.5.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"peerDependencies":{"puppeteer":">= 5.2.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"5ecc8c7f28a018f3664b6f20677a307b0b139c42","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@1.0.1-next-5ecc8c7f","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-l1iW+5oLx4hJX1ejqG8CmktZvFpBfpFDKZClkNe9+6WzhRO8cvsf5IOT1yzIpMvMDL9xHnepKy7W+sfVSmgjzA==","shasum":"a7c6c249c9079a89be7da5b07a974a281a069401","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-1.0.1-next-5ecc8c7f.tgz","fileCount":8,"unpackedSize":30100,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBvRFCRA9TVsSAnZWagAA7hUP/1r1DCx9CWtAm7zAJdKc\nPQGvlCnxNUevfZQSvCDRef2QJju99flyxokjVmEAFx4o6LCCLULbwjm7059k\n/CqsaWhqX4LFfl3i06WZ2vNkUuQ7BXMaVYyAVuh+6NF7vSkNqurdWCnuYla9\nuyOxzmyV5/8IwAqYluN6z2RVdvcQi0XchqpIVzITtU9h33j2FmGqS3LmKiKp\nltJdXOIC/W6kUJ5wOc29+Rq1tgeCUkjsnF8olctD/nVdAhtBGzJNvyvOMilr\n+EubG8p5ncxy2VkOEgOli3uLeHOv0DGDyN/1S7+mjCVkekH1zH8giVKOes73\ne3u/2ievwmOD+roCqg+ifT7K+z2x4IzDC5mNwt3s6c4SVZXlw9SfsMoxEmg4\nHd7ZPM7uLci/bLC66OkSllEH9G6zvh+b6TaRqzLrYbky7NTkFjcLde6Axoja\ncUW1t6vN1oYFPM+THTDsz46hf6XuqrNAb6EihHEtl0ywvVPpAU17IziOUv53\n7jKhLkvhVl7vWXAYzOEzwz/7vU8QGBFQ8XF80XH7XcAPVtm5xjPyrgr2yvWy\nuAZCLHinI6nZpyTGBJNiNYhVqXeG8gIl76xUrzYBohOFS7THu0045E2kE/QR\n8AbuEsBvB4hZCItIQzlL2WvnIzPs37572lE5Pcxd88G/Cc8WYe+3R/7Dvhbr\nBROS\r\n=JX+w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYTEfWZ41WTDUGmjt6qBZ+5bzHsDzcEoObHkguR7bBDgIhAJXNnCLfhyQaiKNjRr8RooMWY+NuPSIvJ/dhJdKDeksS"}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_1.0.1-next-5ecc8c7f_1611068485119_0.4672721096919734"},"_hasShrinkwrap":false},"2.0.0-next-81ecead3":{"name":"puppeteer-devtools","version":"2.0.0-next-81ecead3","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.5.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"peerDependencies":{"puppeteer":">= 5.2.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"81ecead3c0208f7e81bc17851d0fd93853205217","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@2.0.0-next-81ecead3","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-CW4rV2pJtb9csOEs0zRXZ3WrTzp/f9DKEiK/ODfMhtUH/UqJ7PZ3NYoGmT/IZyJSEaikCiMOLAjcIeUppJtpjw==","shasum":"7ec662f64a1013c5166afe0df99eb74124e28815","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-2.0.0-next-81ecead3.tgz","fileCount":8,"unpackedSize":30764,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCyjACRA9TVsSAnZWagAArEgP/j0Ly790wNj10ViJ3KTs\n3LvP2ZF7R9kEPfCJS7bkLvBUjFc2BC3RbRsDwM4tcYJFx9kF8e0S2zCNUGHS\nwhzDdNHVQrjAytKUEuL9oj0q2SPLr6Jdu2jy+tAKAGaowgCElVa3J1BOf4yG\nxuu16eqDKEDkQxRXbcaTSymYdHGoAGSccOMSqkdEdi2AHEhNdaN3aHJhchVq\nYzM5lI2dxv86xAtOChF+JFKaqq0CypDprYyJKPmbM6ajyIzV04Cp0AY3zlXe\n1oTalmMoubh9PLubx3Rgh4nFC0nYXcnCk21qOwvhFPshfMSL9cDfG1jZVZtS\nmPVmqG07/Kqf+fYzC28hOWfaI6DzoD2owSZabWoudY0caSA46OtnxtEUnK7R\ntiWXdwdT9jJe7k3QFPv78qgfFOzJlkNUUE0MOj5svELVoxXDnWyNFhTIH4si\nIpZM5cGvN32aO+9DfABNAcpUJ0CnIdPeJPZ8166B20nEKXIp1rbnnwxx7pF3\npU9vzkjdV82mKqZ+paNQbPD107p2jIqRMJHGqowo8rpQSZBZSW8wLyndbocs\nP11VxP9NJz1wqCF0deCEBuxxgSpo4Huv5kt3McUzyjsMnVN5Lb6TNcEPci4j\nY7CuoRRKjXm5LXUiCm6JnLkE7kxLfTAn6yTpat0rWK/KJUR5SnH3/51gKfPv\nAJpR\r\n=L6y7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDpI8fLeojpP6CPktw16HmLZ2m0n8+HAPt/NiZXXyD8DgIgW3kd67710r4ZOoD4ARNhylHYvGA0sOawQtYkpG3Y3uI="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_2.0.0-next-81ecead3_1611344063439_0.038414592326066144"},"_hasShrinkwrap":false},"2.0.0":{"name":"puppeteer-devtools","version":"2.0.0","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.5.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"peerDependencies":{"puppeteer":">= 5.2.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"gitHead":"d951201dfcc65a9db51322c0042bbf3d52b93551","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@2.0.0","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-cIKBa5T0FfinOzovF+LRl5952hGR+sedfQRGW9ACO9qnJKZsel2ls1kZj3ZPTu0a4/4IIAL9OYS67zMUddFqpQ==","shasum":"fc4493cc74169d475f6c43153982f58de53fad1a","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-2.0.0.tgz","fileCount":8,"unpackedSize":30750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEE0sCRA9TVsSAnZWagAAzI8P+wfjEnMyoY4LmdcsC3Gv\nkxqqHGTtf6j3fenJYUwf5VcCtUW5gUBMQIY5YNYtFigNK2333wBCPMMQrSb5\nt9dAVvwk6wd+YVDm7LYGSQYIMvJKs5jSgMtp3OKcZ2Jftu3Tcuon8NejShCF\noRfCaesHxPtpmrlXwu8+2rdLcW/W4IRGJWaPpE0IebnS04pmbhteUBMe5Xro\nvyabx29QhUERehZ3uofPJjfaruHklgsHVLfnbuRqaKY2KyJD152sI8WNapNo\n91PB0kinuoM/Izy7Tav7gaWug2w7z8iLq8jikfk/5dgpOWYeVOjsgJNxhZja\nRC6vHmfjYz5VNM7gOPFIK77EwpkkuXqQDq5hySGM7WDDWusbA2+WKP8HhpW9\neZ3bB7K/DrZvVv9/8omk3nzSrfhREVmRPxhklGX60bx1xYOZwG1AoDgJzhYn\nIZHRz2fyEA+x2pCXcprabaqkeY7cu/DrAosJPGZmITSGCKLJxIt7RByB8Do+\nfKDopTTV9FfXc9U8DFMtcMv+d5I/KKIc+sBx6IUYY87p1hxwJ5j1rYCCU7da\nR/NNBfMVVW7VRcDkI53iF3ksw3ppx7Gk2wpyeeVUaImAFRgSPQqeTTZCRbEC\n2nuRReMMuxcNCqT38utLx2+KJGM7iC5frjLfGl1qHewro+n+yFeSZK0SnrFn\nrZCB\r\n=363b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDsdBh0j0SFOBE31MEVN4EDtnrG1E3oguXfxo+RKDoisAiBObty0YTgV//WW7KRpeibp945rT0cn3WAG2my78inifg=="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_2.0.0_1611681067346_0.8342106506636222"},"_hasShrinkwrap":false},"2.0.0-next-c0242db4":{"name":"puppeteer-devtools","version":"2.0.0-next-c0242db4","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.5.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"peerDependencies":{"puppeteer":">= 5.2.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"c0242db496abeb8da95bf9c33853a3570ed17635","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@2.0.0-next-c0242db4","_nodeVersion":"14.15.4","_npmVersion":"6.14.10","dist":{"integrity":"sha512-74liwHvGt8xma3qevOBaD2YMyYQRZXDTueLcHoKNHpTQwkZNqrfxx4WR+pZyJsEFfZqSgu1GdcyPbQGSeaYuxg==","shasum":"f8291c598b5e48fa034ea08eb7dadaef7cdd0c16","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-2.0.0-next-c0242db4.tgz","fileCount":8,"unpackedSize":30764,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEE2vCRA9TVsSAnZWagAAk+wP/1tqqTGca9LF5kOf185W\n+nyp1K3DNk6kJibD9/TzH9gtPD/hcMGuc3MCDg41SRWeXGIbxpCjmA/NBk+8\nA0y63tIUgKKhlEeR4YKPQOh3uK+WUAN9u6cQPZh5pezccDjjBIYdZWgT7ZUv\n06LQf4seyuHGb+0C3SHDUgM9khKeT5BVrxAgBrcLptOyBqZJM7Twk3dsOnxy\nbpH8y+rjDlp1lFf4xErLGS5QZ/CPwZorXZDHM+tsgvQyvU1tnF00usDUmJJH\n4zsKWzGzGsZ1XwK6X4bKa6RqVoTjRZJ63vkBOjgxMW0e48lOOmqchdQw9p3A\ny0Kr6h5fCEjRhu/wC8J4eyZBzdtRoBWnzTRWdI9FktSu8x7bOpXdIMU7BkdI\n561JsXSU7guP+d6kir2h9EjQGU6iUSiUx8rfPd4cHBdjCRE73dccbbiasPxw\nitT/YPNo8MIqvx5qAhjJp7Vzs5fCXXSihE1186nbEBsSSR4R7L5TLC1RRdaa\n4k87cJK0Gyfmqxxs7d92IYaG2MC6irk1UX1Ffj1TGCjiKl0yWVnTzNPS+koH\nk2J9snL3ij6E/ckxLdlOrUpbhc/rduHu/QLxrs4RYfOvMrNVDNINkl2z5u7r\n5QipjkTNMDgsX8yVpYmyBzO5srsx0p62Tp5yBgM/Irj49P4XqvYCI9RWo9S+\nWp2i\r\n=Ay/w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICyGIBuqbHSdacWhfsLhOHSW/i5uPJdsWoYDdFo3lDzKAiAWdKAUHJfWinmWI2gqQ8E3aHQEksl3RAHtfFlXc1DagQ=="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_2.0.0-next-c0242db4_1611681199072_0.07373110885535517"},"_hasShrinkwrap":false},"2.0.0-next-fa30aadf":{"name":"puppeteer-devtools","version":"2.0.0-next-fa30aadf","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.5.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"peerDependencies":{"puppeteer":">= 5.2.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"fa30aadf5f332536255f2c6faea8a1a55ed261ea","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@2.0.0-next-fa30aadf","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ZDR4B+idksn2LazlHf6mLE6ilen6rH4d+6gaqd90w+kgAg09ELVEfwm9Gj5r/j7dXP6FTeg0HGWst6dh/vCygg==","shasum":"3450be7098cc0521a72fd3eb5d497e339ab7e777","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-2.0.0-next-fa30aadf.tgz","fileCount":8,"unpackedSize":30764,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZOiHCRA9TVsSAnZWagAA/CwP/Aso2FpweApoFiKaOlbG\n1qtAwEE+zX8BKrOSlTvr0y2WMCWx4q6Kf81Ff7PSNsfE45aK3doudZcS5hFa\nOqYqfLanltI6ZrsPEoO4xaGyp4OIuqUa1uJTsOV6hP22qvOtxp3Kas7eEBPa\noSafa9zcOin/yiov4KTuFRg/7LU34FS7cWAc9gXX127/RwFdDgeAZHP9DBXn\nwM6j6hlf0FerFJ3FDcXBxuXx8rfhOiRuOrw8v0JksuFEEs+FbNq1PbfKTppq\nUT4iQsEsji6bOMys7hq4iHaQlCe2rf2kzP8Imyju26TRjGSkgT8IvnTJVil3\nwkQEVCp8Aq/1GGQ/cr0A/Lc1NX1Xovv7vBvupXC+TkQvIcPyF24+wgo1oA5d\nxOlTtOht+/pRKUZng02Uqm761XJ0AtBEfq9Tgctnj5xt5Gw9eVa4I8YySGcS\ny0Q30ZFThX1T/qMqGhqeVmqh6B4647ZuJgoGU2+uWN7yXpvEqGA46xwQbKYV\nufOmaeSpMWaG26KChcQ532fJIet7NAKW25hrgpk/IinAdJVrRVZnPgzYY7Q9\nb03wzfmoXeUG1CuCBqvv8t7atuY3QaK5Rb5yOaCmUHkT7Sp2mf+NNZS3WvR2\nhM3ABTqKpahz3AQZfmdhiwSpXZhRFObybYmUECa+pG/xCSxplnACflJDC1hm\nyY4V\r\n=yF4X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCwqP4WnvZlw/P30jWSSeIt3zWr/HzHk5CuwjAc6QpCdgIgV1yfF0PilvmZ+iCF2ws4Df4E9nFYiP4cNUgW8OHeYyc="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_2.0.0-next-fa30aadf_1617225863519_0.9902453414644967"},"_hasShrinkwrap":false},"2.0.0-next-cdf4945d":{"name":"puppeteer-devtools","version":"2.0.0-next-cdf4945d","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.5.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"peerDependencies":{"puppeteer":">= 5.2.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"cdf4945d7ddead16d92249132ce859052a8c291d","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@2.0.0-next-cdf4945d","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-V9BkUhD6bbdlfNB8U8AWCNEzJKpYnBPL8A+B55KFv+Bs+0ZTjU5ubMnGkacXc07XDWNqwiIyDkBGl1OeyULkxg==","shasum":"dad379dccfcf41f0b6e06827b90e4510fbcd547d","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-2.0.0-next-cdf4945d.tgz","fileCount":8,"unpackedSize":30816,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZmEkCRA9TVsSAnZWagAArU4P/i+I7ctcdGZqPCJ2hk+e\nJty1WEXhfjTzIp87QURJOC95ecIUXbjIIY09IUfIyF5L56RxAsumN6xIpYOB\n1ybnYtgyZ5SYd2xzA7hhr0osHxvFH71YmFRwMyvdbJc+ScRkKYllKSHCLi62\nhuazumDqXeJVz6tJGvzljv2sG7ASbtKGoAqcFIEZbXzL9skhTqicJ+Xuox/g\nPmoC/L3dGjD26TwBmSTjT+LSkVEaMqdrW229dcnxVaH5nhNPtx8SiTA3qwLC\nO3G2TcMJ9dstqULKd3vpdntnTctDluMJl95nHAqQIIVefev8+YlNrga8OP76\nW4vPG5OoXdytKeGWtvicNmfa16uikbyHytAwNmnwDOYpwU6/cpYiMDWjxIsr\nlgWMX8xvX+hFjETQW3+Ax0tmQPn80N/LB8tbtkFkMeg6NM2YbGwFo8OKtIHC\nY80V2IAiGISp8vM4i6y+a4URwwYbcuf0RagI8tqgJjAMDEZJDaVqRBI8Anbh\nD/tYEQNx8t9C72Noe4VlMzfd2AGYM0Rb00iaZGYM98XZlMw81KSkNx4aC6Bp\nSQPV1lQB8tdI3YtaXqy9ruKSeiXb8z+Pu3oIxe12kTgy/KhioDKLyVmKklVs\nJCl3GOTSp5qr+kv+PWQnpiAnoa6GtZunqo9GjWwpbHx1lRnCy9j15IERmca4\nnHmw\r\n=VUo1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDMs5A9nvpryf8sr6AX8H1/X/pfwa7qn/ViqH2ds6slLgIgUoAly0otUmvETXBhYGYeyc8Iv3SzN3H8lf/OGEkhS6A="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_2.0.0-next-cdf4945d_1617322275795_0.7622481692670537"},"_hasShrinkwrap":false},"2.0.1-next-420c5120":{"name":"puppeteer-devtools","version":"2.0.1-next-420c5120","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.5.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"peerDependencies":{"puppeteer":">= 5.2.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"420c51209105beb69a3b80a9905759fc848bb124","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@2.0.1-next-420c5120","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-ydulcXh2wXt52XVU2go9hZDkjaagDF2/FqFs3GF6uiiqNJZTC7P16NhjOpH5J0rfLRcASu5Uk34gcBe4mQjheA==","shasum":"5727142e0737abbd0d9099a906a397d57d3bddda","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-2.0.1-next-420c5120.tgz","fileCount":8,"unpackedSize":31166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZzgBCRA9TVsSAnZWagAAtUkQAJWHggMEUfhSRavCgTwZ\nj6VTUpzFI6ZYZX2UWAfZdAHPLtJV8KCKAVtD5FAwLm2BAWltMev9GOS3f/Ly\nCUuZLPu9yqJkM9a/twACAFvaQgfihJpGF3gAp5RbtJN688K16OtSIKD/7g3R\n9Sd9tW7+7aXvt/v8zi4cBxKcXKiEsMcIygOgGc5G4wlNVB8IT69XINI7t/GI\nYeVq9MenYIHHOwJ2Akl3Xe/blRVj/thcc8Yv6qtyfofCtAdnoFS3wZJx6nkX\nBhvXmQVWiRAAx5fv8ynZLbbUCqPNaAaBL3Cb36I0OXh0yRV6IPztlCcMVW7T\n8aD466sfOYeuznopi8Gl30KB3/mWF6OUh8x2QUGido6L4/SbAwvyuBtTUdJk\nq/ctt8Mca+ZthyksUzLxX6NkaHgBDHZfMpQluK4Xcfm7pxzdCUOStHneruz3\nozbe6/2AdhxqwVFSev82Y+1oIRmIiO+C7hqTwYLWDgtwypWZ9iH1+keM89pq\ngBrtTPcYpTP6iip+YmHcaGE1A7aGDGtr0JG47BSFGJPnPK4/0pddDyEnXaqx\nYafStDW2/ZphlvnWDh+WkUyhh87YsH5VWZ/aw80T15m5NHp/czg4If0Qv4qI\nNBPwByVllaJORBllNz0NsnW4tx6Kkp4S76yAWqDNarY4omXZGB+LxKnxQxVf\nnFvf\r\n=Uy6Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnUxK/4jfcq2WSq0LIwBTzOdr5YblRRN6coj65AFAedgIgTJFreNrOryzQlmnXz0k9lF+9bAWxYV/BHxxxDdw+SnY="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_2.0.1-next-420c5120_1617377280831_0.3887579929140812"},"_hasShrinkwrap":false},"2.0.1":{"name":"puppeteer-devtools","version":"2.0.1","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.5.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"peerDependencies":{"puppeteer":">= 5.2.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"gitHead":"47975d4d924f1cc36e2b6ef317d6c871150f0780","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@2.0.1","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-dLznyJTYnzDAMuOXy/ocN8bvBtpZaUiwFOJg4Se+HbiuRg0vKQwyOLnlpGC6isslFUFnDImexOK+XCn0rszLVw==","shasum":"e1c5e43e4d4dcd7d6a4cb133e79d3f63a92b92b5","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-2.0.1.tgz","fileCount":8,"unpackedSize":31152,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgaIjhCRA9TVsSAnZWagAAwg4P/jD7AZfcFJBcNloK1wn1\n+Dn1ve5Rkh3yj9kiTv/2idDRcICc1ev4P+cXR4Y5AhFtK2ePHd7dcwS4n+u4\nmS9eQTKRLX7tToTo2EqdSx8k99eA0HAHile4ah8Q5sT4+s3pchDhMTY38riq\nsMFDq0ehGqeJp70qwu+wgN3Gz+8C5q7aE8k3Z3Wh9mMx/+dL04YZTs+1vPwC\n60bglAXkBtBPgZARNay3kx5XNtCI8k3YK3H7FcVH+BXnm2f2lSCaI7U5wlnU\n7/IsZFR7qedq/gC/SBYteZyujX5T/AIP9Ff08vXUooSSQWtOOari7CjmgKTK\n0t5uHSGk9YcHveHlRRZGwM+yDsEhw6P5REf47SopEmX2hAHi/aIxjJ3s6xJU\nEihD1M4bJtAZKv/3tgHqnBas3pH+oRT5sLc2QYjqbi8YCFbOSL/+jigB9UR5\nAuJlH8yN7DZKoD2E/e/IHRq3DbRmQdd9qgnb6ogttaN3nzpYQH6+uWH/xHYt\nfplH3BkhToTeewnD1SMwHsWsjVJocPf2fJBkAjuEX9j9R6GxAqdIP5vEJbng\n0h6cMLtaQkxB60ibiwglMGLJIRk406pvEnAn1EkF21L5By+9dWkgwqbz+duo\noh03Vfk8mHkvml60UFWxXXb3f7wc7kisBxA9uOtuMK4vTHTnMoWdfmG/KgMP\nrq7k\r\n=RThR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCJhjAK+0DRNgvtzE0rdulm3a2RJ1+LQu4kLTpnrp4cUAIhAOmK+xb91Nvrr3HuFdX/6H8KGHDKjx66IfaQp7aG8Ckt"}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_2.0.1_1617463520571_0.9956148097213942"},"_hasShrinkwrap":false},"2.0.1-next-c5b3ba3d":{"name":"puppeteer-devtools","version":"2.0.1-next-c5b3ba3d","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.5.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"peerDependencies":{"puppeteer":">= 5.2.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"c5b3ba3dff98581fd4cef07b94022d07a3d09d20","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@2.0.1-next-c5b3ba3d","_nodeVersion":"14.16.0","_npmVersion":"6.14.11","dist":{"integrity":"sha512-rGYUfBUwMvNywTAEeQnzw+hO8yrl3+ZwHgSQaE2ZkZEop2xAKqjNDvkvjaTrBQ/ESa/9fLqVvFUMbrMuxTlc+g==","shasum":"40b60a64171f08d4fd76ffb0585e413c9b6e24fb","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-2.0.1-next-c5b3ba3d.tgz","fileCount":8,"unpackedSize":31166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgaImYCRA9TVsSAnZWagAADroP/iR8URcE/WvXWgqVMyMy\nRoyaWWQ3VfOISKOcGIW8vNWiOQVPWfpt6/NHbMJGQHuS96/ThT3UeiidCfbX\nn0nVpiDjNRRHW/K1vnpivpEY2Vl2vLKEGlSN1XmB+eqmb7Xk8kf27i3wXitm\nc3eHqEjNbL4tuPrvWXOUwALPsMhhaBLVcgTjp0qMoK2RasHY1ACHcciZICZl\nrG9pw+LiTG772uh7iPKkMYeabrZhyAKgFmA/XVHUZqNzTl2ROL/sjQsNEc9/\nkIosUZOpEFt8YXxCvyTFuPi3BpItYJTvm8Uz3HMhsiHDA5jzpnzZY7yHU1vo\nVoBs8NHfTfZI7rPREk7BupSTcQsyUSbw7iYhaJSbkrNJKAIFe77gDctxhICH\nWHgMUKp/OgTl/yNlTO8o5Dm/XB5T8BsyRGZj/t4sbAOFNftUqxhjyouSiSJY\nxlZ3LTkoiDruKxhUGQrW2wbv7cFEG9YStKmaqgsa95lu3aOK8INZHMt92pzo\n6ILUTZVDLVicAaTktbjcLenjKDuwkaYmCQoqO0SwojtOjjqwYpTzRuoDrjni\nikpWOb9hcLX9kcUZngHODR/yX/IoaiOgrs8qCEpfT1iwSzSxuRXcsxKa0V36\nCzQNjtpdwd675dAIF527Go3HsDRcBMVFMPOk0BxGb3HBNz7IOShZ8RwpYz9P\np0nn\r\n=u0OF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDhn2T60xrMj5kHkb8oopzuSrLsCUkf8Wg9LscHkhkoyAIgeYWsdbfCcSC1RTBy4r6OlUGwN+U4oBXs6jsusDkMc/I="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_2.0.1-next-c5b3ba3d_1617463703905_0.004055462488838035"},"_hasShrinkwrap":false},"2.0.1-next-a63ba95b":{"name":"puppeteer-devtools","version":"2.0.1-next-a63ba95b","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.5.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"peerDependencies":{"puppeteer":">= 5.2.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"a63ba95bdc59d9186a6dd21a54e9249336e89a70","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@2.0.1-next-a63ba95b","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-uusEbzuvnHatRHE++H8y/XBq/5juJv5v0EAdEOZzwL+gr7gIRZEbCjgC3U7LhMYXvfUcDYtJ7KBTluBqD80wSA==","shasum":"c5ca964b1cb214f9375736cfc48cafa51363c54f","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-2.0.1-next-a63ba95b.tgz","fileCount":8,"unpackedSize":31166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmoz+CRA9TVsSAnZWagAAKUoP/0u5SFtplbsQPJNc3TXh\nzFh2alkw0cPqDQJ13iA3cnlFEWOPw5Qjkwz95VPx6TpcZ+6XXV9Ed4MLh81S\n5S/ktTlgIaSHz2dn3AYF6EzXKQB70U7syJl6iIZqdCQAmft5SdDNte3LVpdD\nFO5+ufZ7rmT+KzU7rCUVkvEx52ejSbG7IN+6kdU93Ljkmmn9wCZtZWbfZu5f\nsQUJ25mmLvcPOmNRrvHKCATKwNFYqSjmt5Y4dxu+B7XjI9H7SEXVkhsGHCAD\nUsdPV23WRiLATprwKri2xbN/t/bVFuQnbjN6i9ggI5q1lcaUIPcFlvfCnryr\nl3xXFZbMjgdrQJhA7Hkv8yGtkQ+ikr9goPLRIqrgwbYbRUpG7mdTgD4nDa3M\n+ELPVH4LiLe//6Ggs2eHlIIJgPtM707XAqjD3daqVQt560uahlZTefiFrkcP\nogpudc7pGpXukU+xD36hrpE/nXQvBxy0aPOeiQGCsJ+PheVK8py+bAtxieOD\nLN+ncQprlmnhCGqvFu21MBSw3fcCSrA5gEse3wuuXmy9X7BHFq0GabOjLRPL\nNJsJm6kUYM5G2YesOD5DWrWAA2uBVZ24buQJvICtoVEkudx6UvDMdRUYWRX0\niKj38lMrwKETf53iHIaqZxnaKqkQBg3b20C+jbdF5EzlBfeKPV6ZQDA+0smK\npYel\r\n=U5Mu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICbnXmG9XRj9oDAU8TrImCzdXbNLRLyiaO7HHgV2qXv6AiB2ugfl0SL6VMDO/Ks9GE6+A4n9GeTMRiBggImfqL04ZQ=="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_2.0.1-next-a63ba95b_1620741373462_0.38973085642407357"},"_hasShrinkwrap":false},"2.0.1-next-767e5e0d":{"name":"puppeteer-devtools","version":"2.0.1-next-767e5e0d","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.5.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"peerDependencies":{"puppeteer":">= 5.2.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"767e5e0dda9cd371c8037105cbcbbcf0081647b6","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@2.0.1-next-767e5e0d","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-LDUz1u3a1a2Q8fHsBoEgxN36TieTJ+xizj0VmThkUX5az04yxg94GSqMOmx2WZFHgk7KnDr9kiWEZ3P2IZQceA==","shasum":"15679f71825a3eb7233c016da8f2e7fde2a4aed7","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-2.0.1-next-767e5e0d.tgz","fileCount":8,"unpackedSize":31166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmp+GCRA9TVsSAnZWagAAYIsP/ic8TgP9EzVjEXEVF2VQ\nTi89KPyYy3AjH5BZxld7d4+CfambZycCSDnDerKUtD9e7wVcIDuBHsutAE8W\ngc9FC/sITwGQZ4M2A8S4akV5FGBS5SvD6uUiGyrt1m3SRV/KSu94Jl0aFWvv\nTq48kYdFt/Z+QkvPW5rmWnKZv6z9c21qmvx48no3m9XqfySTKC8RX5W2jPDn\nxNm7SMwGH8nrhw3wupYZ8+dwJgQTlOsGZPQjX3Y6nOVw7OeW34sYrgHmmPwm\nnKTztkt7fyKOC5As+p52pK9z5TsKFPgcYdHj9LD2ODTfbyPrpBP8SP23afPt\nPnEyWphcas6EJViRK+f+Jj1OLqk9oPVgQKJYU+/KLhFbdfPa3YWHWYSCBftQ\nvXkgJQe43skG+s6tZr75kqsuRFrjriL4yNW1AD2PZ0WzreimzpUfstpWAcAV\nKOME5W8UZ9+rmyVwRMA2R7JRRY28qk5Wqumv7xfFbZCJMc6AAXFTgIp9vRyq\n5LfMIr1o0MINcQ3nubUmr3C+x0lW1ObYzv4SNJ8rIR00IVHtQ+PxhfyxJa2D\nJHJhuTCJkBC1D3KzJKwrMNRvWpYDZTtLrKtnOL5D6nV0ERzFakJqtXQRV2Jj\nCKgE4AF41EAmrz5DvzsFFMET23WJYZaKTsvoj2mCZHEDT2dOcUyrlgCOkO/u\n05h5\r\n=Tc/3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFJRXcGGXJnd7mQCWlMACsQvQDnNcKpJoTtmd3qGwDviAiAl9/P5Kv/QhUNjQDn6WUFC80RriLDgJXPyf/dH+kGbJQ=="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_2.0.1-next-767e5e0d_1620746118191_0.8546996912016127"},"_hasShrinkwrap":false},"2.0.1-next-ec4ce890":{"name":"puppeteer-devtools","version":"2.0.1-next-ec4ce890","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.5.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"peerDependencies":{"puppeteer":">= 5.2.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"ec4ce890765fc400df574b5d01a09fffe4cafee6","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@2.0.1-next-ec4ce890","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-eYi5v/9aLmlQGP9pRH+8i2Wb1O3dNCd1dn0G3AYErPRjtccXQCluXOu/iBRQnQvYJ7X9U4dJL2gGiFCAyvUfVw==","shasum":"02f3aedd04d61e8bb5766fa41e1ad9acd7b9753d","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-2.0.1-next-ec4ce890.tgz","fileCount":8,"unpackedSize":31166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrqjVCRA9TVsSAnZWagAAXlcP/3zgNk5HQjhUurQwnvfE\nhejk/xYL/t/H5JWDenH0I8OEpO0U3XwKTtDUH3aesdu/8abr2Dzvhy//xKg0\nEJqP7wA/2vsVSYGj+xYXI7n5aT7smWEBQqYhZtp6vmHsNCD1UkQkgFw3btbD\nljCkmvUHzd+6A6AcqEwHIVcFMTmG1/wWfL53oBHnPBia2GpIA/BFTSNsYyz9\nKS0skg3wic5n3l4acxmSw515mP0dmISLOeLUSfYfes9yA400weXWPX4POxxS\nZtB6VdfI7AVJ2VFgELcVBad0ZVm+OaEJgrkLMKhbJRoxYgBGecwTq31JIHtY\nJaqATLE2x0kIwcswUOvyCc8MMR8ZwJuoK+fIOYI7yuiAtu35vtFCF9lIMvC7\nQmtZr0BRTlVkYWwfrqR08fvALO079hyqyxvZg/4NUWCLrLpR8N+MMqlgmb8p\ncn1Szrxy0xr0WsakJfBu/GBXlyn9N1VchXhv4wDx25IbwhrJnNqOmQKoEogG\nzp+oVBqdNOpUqx2+y5A4qjPlVvxfcOYD5+WEZhVT2JIsztnzKuvAiXYfBXDD\nnZudO3sfsebSyORaOKJciDDI0C/rD2UgD8Wz91cFr4F2UxuStHxFBrrivKgJ\nXubE4MViEAVyFcRgjMCfL348t6NLtctQfWNzK0MCFdOt7ETb8rF8gRw9720R\naLsF\r\n=e1ET\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFFYILuwQ+Dk2gFXKCZNG0QsWOCDee2UPFJkhUVLodcHAiBmEybJL0Ti20XEahafBKLy6ytnVDy69/MNdb4LhOjLaw=="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_2.0.1-next-ec4ce890_1622059221069_0.4083530461201359"},"_hasShrinkwrap":false},"2.0.1-next-6911f82d":{"name":"puppeteer-devtools","version":"2.0.1-next-6911f82d","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.5.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"peerDependencies":{"puppeteer":">= 5.2.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"6911f82df8cf91add817a80d5a66f91b33192b72","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@2.0.1-next-6911f82d","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-1mlpO1cUlHpB356JhwMxwA17kAxHJ2gLs2dHACuKQFySBX24sPp21JLGEEEE6l4ijlOKoFRf7kGvaOOKDwFfJw==","shasum":"c15c69d630d18d151a80f489f52577220533de59","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-2.0.1-next-6911f82d.tgz","fileCount":8,"unpackedSize":31166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtkIyCRA9TVsSAnZWagAA+LgQAKAXeJGqEFg9zANX3NlX\n7QCHJaqBobjAWdqjBpL1CiwMJrBdqWroSAAYjYfpzGokXzsNlti7zosTx3sh\nqudHGdXHfJLyXjGqrnEUJmyRRk0/giw9/JWnFdk7zBkUMrji1enfckezNPbR\naOqKK/VK6ih/Pw/QcTU/Yujds+8NKtbjVCIxadnibNObR2/OCBLM0ILB5pga\nH+zWJfYEordPTAuUwnABa2OsNOiLxrJ2cKsFGdHzZwpybD+vGerFtzh9s1pa\nxKkcjRcxHashIAIPNjKTSQctmbLO5MCzjA6aasKmoorgvIk2A/YQSzd6AN4G\n/V4LlbFeQZbgNvtDs/Jxsmui8LWr8m+x4GlWw0MUKwsqW4NArJcMfzmuagt5\nUx54fkHNsXC3ODganKVkBTvpuGFjpcNqI8bOAP2dSgq2Z5Xj3ZJpuvSLYgzA\neBlq7lpGWCqSyEEP+QFxjfzvhSh9xgOjYhsKXbgtCP/WePiEhMwGgr5DEuXI\nNTZD88bxUAB9IReDx8ucNvOaqjjZ/dGmzOe33GdQiXmcyL3dVDCiIaDfnJ5M\nxXk8ddrwyJZ59R8OIN5IFTxhZrHZSoh8Ie28HI0lx0ka+uaQPRv8iaaAZ8ag\n4R2DHskZKA88/VetCWvXgxhQf4erBcU4nfrdM+DQjiVrWhydTM0AkiWX0z7T\nc8oO\r\n=6xSU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGZYrP+eTfetDf8fdcRGWdRb0WRJaUJsmoil4d7nS7pbAiEA65+4xz1EFiV42OG1scIGMjsclzxJMgs2PGuF20dlDcg="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_2.0.1-next-6911f82d_1622557233500_0.9283596593895629"},"_hasShrinkwrap":false},"2.0.1-next-f7f45eff":{"name":"puppeteer-devtools","version":"2.0.1-next-f7f45eff","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.5.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"peerDependencies":{"puppeteer":">= 5.2.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"f7f45effbcbf0e2f6fda35ff813d6c8ecc061a0d","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@2.0.1-next-f7f45eff","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-MoXdr1XRCOvYuj6Q09GkT5CjWimmW8djA6NHdPNHtTOOXXeCvau8KtOFM08tYs/OJhL0JENDRSQSuIET+6oIkw==","shasum":"bcb31a73810a64867a5931b01fc15df7c2e62418","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-2.0.1-next-f7f45eff.tgz","fileCount":8,"unpackedSize":31166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgw3oBCRA9TVsSAnZWagAAWrQP/3Qb50+b6ro8dsEHTlMJ\nNCc1U8VSiqvCZ9Si3rY43SgMSuPsL1L2wiTjg2q8IokGF+XctdsRUfQRjn1Z\nJVVzDd89DdH2cEmOrjcsCJRaYQAlSzbfSqMT9xhskVarZwKzDXB2eMsWVV4D\nvTJPo0PiEtToONbiEAUHsbZrGJq9vYvi/9Dmyc4+4QGN9XhzakpFpsDio9rn\nRruGBEyZa7PL3L68pUufbfYtfczLQQEtUTh6di338XKaDuPFYn2KHsOXnPbA\nUztVucn+81L+HZvIGcZm/KTLTU0uX1psdATnaHrFKy9zVZcr9R/ewhFkI3PN\nHMQXM9DyKft0DkFt4TAFtx+aIXUD9BlmRFAIkHU3mzBHnE7ordJWtOivum5Z\np/4+n9sS2Dc9Wnpfb1mHfmsTzMV1+Cfyxt2357Q39DlNwrG0kM3ebDTU3Q89\nCamSnNGeoODZeFx37ufIbSSQO7ymVnUqa9epkBjqtLic3TyFUj85swzDMQpA\neJpnSy4avbL3w4e/4KWvqqzufFiD8kPUbOWhPjfckFJz/g+n5w02pLTgjTna\n/+HTgQlybLpunGyVhow4HnCP9e5QIIjey4IWhSuO4g4vvghaFkwe2vXxKrPm\n5PHeUpp2naSn5xEzbXhm3y1Bme6Pd+fzjsIRe2fuA/aanLyIMkJrbv1YrFvK\nQxj8\r\n=WihW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDLq5CdAATgm3KqJu2rKL3/2jzNn/gXSNPPNm7X2tD11AiB8OUKS6pcqRbZ42nfAmTg92ALSpK9MT5EFd2mrzANaAw=="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_2.0.1-next-f7f45eff_1623423489766_0.9470092072611929"},"_hasShrinkwrap":false},"2.0.1-next-82344010":{"name":"puppeteer-devtools","version":"2.0.1-next-82344010","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.5.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"peerDependencies":{"puppeteer":">= 5.2.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"823440104af20bcb73e0c01785daccb076bd8767","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@2.0.1-next-82344010","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-DcbCvstbaKidEgobX/zSUJGLDMPAbYFze7ZYQC7r5e721HnjhYbe0kKVanjruhQlokHJn+9zw4nCiHS3BYO8eA==","shasum":"ea0a4c7d4c6eca103206cd32bb0aec1606d99a42","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-2.0.1-next-82344010.tgz","fileCount":8,"unpackedSize":31166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDAV8CRA9TVsSAnZWagAAMe0P/R+Jg/gD0dJciYJLLPXq\nFve7z07OtcBJOS8wqoKlZnNWjeceYhAHp6CN0Vxdfd/va9Fj8M5CXRG5Ldx/\nYeByrXssjB2RyR7KfYxEtVsa6VNd/tedllbAwUCjilYRy25fbxOR9r5YSoaq\nh9uTNwlLyOP58G7SOUI5boiYyuenp6rdDBQXCOmmCP3Cq7J1bzNGjJWFTqXp\nnhQ18+/G9XjBhlkmkh8EOGtzH1dfSW8vXqEQhcA4o1drTwS+uaFmlQOPGA/B\nB21zdLgyH6wA2Dkc4ztM2wFMW6yTrRp7Cain/xiJtEphhpfCJTacSofiSjRb\n/U0jeZas7ejjeWJpEin4lylxgjlvET5F/LjZDH5nfarurtUElWTAP15ij2d9\nuKf5rpOvZQAF2Kb2iABSR4oVylK4siQ+U8Y8qash188mfAC0wz8sF57xY5Cb\nq5ZvJ5soUTp9X7a6wCHOlkkyV+ZY/ZAc7C64p2CSn4kZ49Fgm2JNjnSHRK1Z\ng637A85YX8TqD+nnyG8ChXuXQKEm9ZMTb5JcOvifOoRjjsWUbV/y3Lpblt84\neHgNq16uRiSjaTRMKYotVREWgkgsy2Ux9RtTHe+T9sPgz03nhgX2ZvHkBemS\nvYbxRCG0WcGsUEJMjEeXcUvSXN9xAImlo1ZvlFNuRugCqrjfGRXwPFYXgW5i\nOSdK\r\n=n4eK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0P81nV8DotnArfl/olvxRxwNFHc480EAbthvcm06/lwIhAKggdLVLe/eQ4AV5TRCdKQ7adD0OGuqRDsx950uU3rDS"}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_2.0.1-next-82344010_1628177788606_0.834816432015336"},"_hasShrinkwrap":false},"2.0.1-next-2b5343a8":{"name":"puppeteer-devtools","version":"2.0.1-next-2b5343a8","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.5.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"peerDependencies":{"puppeteer":">= 5.2.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"2b5343a8861fec784941dcf97647b8a67413f44d","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@2.0.1-next-2b5343a8","_nodeVersion":"14.17.4","_npmVersion":"6.14.14","dist":{"integrity":"sha512-8yYgmyf21b+Mn2q6xOuKjU0tbJyvQUfv+eQxQrDGrGPpmsnRQD8wtH3nszHtpxTyXAp4MhfMyOOZwy0qBwuJAg==","shasum":"7c691b989a2555eae1fb4543f50a973b6d485faf","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-2.0.1-next-2b5343a8.tgz","fileCount":8,"unpackedSize":31166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhFSc6CRA9TVsSAnZWagAAkmYQAI97ogtTdQGW20Ky0zFE\njX7o6mA35+1ffQNaA2h8FYaEdWrmgGq2/l1TspOX42N/nejsBBBr2tL+BVIb\ndqj0SWVkpvzeUdAdYSoVFc+fZCTUk5gzkTu8ri1KSp4h9A5zM2CgAqskFDN3\nYXwCvG/grrVRA4owWW0bBuvbTsWMxlZENzF5pFwRIs0gyCLJZnjXEefgMxg5\nAId/YyRC2wEFoSev8KOhNEgrqE5uu7UMUFZvY+9Jxshj0c/YEsiivd7n9fVs\nF6V0PJ5OpS5nMTcnnqFeKCCws8vWEQqoafqOU49DsXAM1GhZPXxUWpL7x+d7\nZvaa225E+ao736SMoy8jwN81arvHOqPtBnbKfLUcEzIPxauCp7AZiN0mdI44\n71F3sVJm7SyZIOpfrahBbvBOC2tDZ+yAdC4zhjZBIwnX6pweCg4A/X0Hov9I\nCwju05dm7Zh4nTSA1y8wsYmfm6CYSZvEoI+M0CBBImr4mKeZJ7C4B49iRnoX\nhreJAFP/0iYQ392Gv7+0e2W/d0gG83Wpkwgl8bFGmZ0DSgy1WS1l5EbrkaCh\nmO1mHtYDWF0S7L+fkr2bVVVa3JcApXcrYfKUmAjNPgSgj7pU1dQu/gSXZVxU\nuysvLIdIvjuIT3dkNeQi9KCh9GyG1BFvjGhneJ7LDgNvVOWE8+LcYCSMcUfN\nKfaT\r\n=WY5R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICmWXmuLmJ7mj5q3hhuLys7j6hwANdb06MPB8v4EfvoGAiEA1pcNXgzVFq+AFVSRqXCQZfOSUh+4adAxfX+6CjJb3Ck="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_2.0.1-next-2b5343a8_1628776250127_0.34056553655147415"},"_hasShrinkwrap":false},"2.0.1-next-32a80136":{"name":"puppeteer-devtools","version":"2.0.1-next-32a80136","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^5.5.0","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"dependencies":{},"peerDependencies":{"puppeteer":">= 5.2.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":88,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"32a80136061ac3f7743fea0ca894a6c111345534","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@2.0.1-next-32a80136","_nodeVersion":"14.17.6","_npmVersion":"6.14.15","dist":{"integrity":"sha512-bWBfYOl1MTLSM94oQRUn7MwQIAoBWUnLgKyLCzPOLRWYUvtr30T4z0XDUfD5FDZiQY/3z1OdbYI0poUYhaAUlA==","shasum":"60b9ba1d08d00e748e81a1d9bdf9868898913d96","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-2.0.1-next-32a80136.tgz","fileCount":8,"unpackedSize":31166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOQ8uCRA9TVsSAnZWagAA0CkP/0BQgStT5+PitB3qyHeO\ncbJZ3qiq0/mVBDPeHd6XOHyPoSBnXkrrUozoRbL1buSuU/xFWv0U3KbaOdI3\nShEKzasT9ohsYB0Y7i/sOh49AsJZ3LbgZQebKL47LYz0IKRboJe9//PsYFe/\nla09FZF4aL29pbQeoYCSTR86cOnknvOS2YwcRmNYcZZUhcI3WQ85n/CeafCe\nohK000v7c0jNrd4Yll0URyEntL3N80P4NsL/rx8I7njnMwG9+isn7IMVtu6s\nkBoziEy2yps0xFYe4tz2LXBFz+wpn8PH3f3hd7oKEpru9LsL5jOLklLWhiPg\n0lu2T9KTAFEMSLGdff2yqvgLMkzewVSSE+YS6Y/+FEfVskGQDVQo09a1xrfc\nNd/rX94XNeQF/JZ+Mv016P/PoRIlE9qRQ63I837DV/lX1e0ACaTDDU/Zj2eA\nPiD2DyiOpPwVArDtCVIdVNv55tVnpCPvy2KAkMNVeslu9boQQ8d6MtV1ZoMc\nSr7uPkHADeor4qNfqffq9DqUWlac9chZWE/Shq2M5AyBatgc/pZ4O1izNHqc\nOOIq3MNztZqhT0EHd+CcwLIJ11C81SvjJHbVu7nTjtHU7lUSuBwC+21138bG\n7zhkJLbFWWAnfaVw5CfEXKNDQ/V4+9q/ybWXRhefnCIrHfTuIHcYKD66Ds6a\nVGGu\r\n=Gp/x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDya3eV/XviXaJgvwCtWx9y44ggMyXH7wfzrStCNzLiugIhAODamQqtdUIx5NS2a/g+rDHMqG5mho3gN17p3raihN0+"}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_2.0.1-next-32a80136_1631129390344_0.2504425339335865"},"_hasShrinkwrap":false},"2.0.1-next-8390e70d":{"name":"puppeteer-devtools","version":"2.0.1-next-8390e70d","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^9.1.1","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"peerDependencies":{"puppeteer":">= 9.0.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":84,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"8390e70d8384cc0e3c306dae4bf0debcca85e7e9","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@2.0.1-next-8390e70d","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-n5ikPtGqv2oB1X1JI+U4iXEtVyH5up0EKAkltLqrt08gFLnMm8N5NrUT/TBkpI4ILAkX+mjVMYXQQx9wyoMn4w==","shasum":"8bfa528973c5ffd01632ddba35777d6bdd13fa5e","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-2.0.1-next-8390e70d.tgz","fileCount":8,"unpackedSize":31382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiBTfjCRA9TVsSAnZWagAAIxcQAJlRtXsTrDQ56U1Pfuva\n6AuTzgtyFJ+DSxjz3XdnPl6QOlaNmjSvYRbmgfdKH7Q+5LZS+xAYFfNJjyMK\nsZyU4FijC+XUkElgw46Hxq1slgLYjlgNQCLELkm1WlbbtH7Td62wSZT49RwY\n5ZOiW343hUUAhZRbzTRdkkRMaYgCypSOEHyQ0DuksXqtjB/q8xRSE6+K3pha\n3L4lu2YGgp7rj1lO/66OrihlIX+NMt7e602AYEhpeQVPPVURC9yaVRNtQfLM\nWGobT31vUgmJTh9SCzBSTQAM4MXRqw/Md13MQckhFWaiq23Q08wABV87Eqi0\n8zD7dB0vCJGH4G0i+H5BF3Ixr7ZbrtnCzt6db/EWACf2lccx6XN/5GLmQ38a\ni8Pyt+Z6c1KPx4LHSKRD9GzD0b2AX3xPpNDuvg2ek4gJaJFTldy/C7E/VAul\nXGMZYE1phM+qM+vWo9rycPu3gUPq+TZxZ474Vyd3KTYktL6v0Ng6ELkxVxDI\ntwuni7BKx/Ra99QRTAaYiLjp9ktL1uvhJYznlf/gtW8XyI4XDXdeZibN9VVm\nJHseryW2FKAzJ5qP3QLKvsq6EbZwu+tiTXPHPXbpqL/7d/zGG93U6WIaQugv\nxefskb2RKvqbbawWmIxBfXyGO4cMATTP0Fc7kse9qOUIDi4Wa9V1ijqUOAvG\n04aU\r\n=YpmA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEqw6qZnKGwWOhnDn7zA/Xgyy81DJ7Qi2YZBZmPfUxrFAiEA+u0k1ydgV+IRq5kAgg4eqUxYA1F3CZC8NtgaNFDrMXg="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_2.0.1-next-8390e70d_1644509155128_0.6863342954396736"},"_hasShrinkwrap":false},"2.0.1-next-65881a1e":{"name":"puppeteer-devtools","version":"2.0.1-next-65881a1e","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^9.4.3","npm-run-all":"^4.1.5","nyc":"^14.1.1","prettier":"^1.19.1","puppeteer":"^9.1.1","rimraf":"^3.0.0","standard-version":"^8.0.1","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"peerDependencies":{"puppeteer":">= 9.0.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":84,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async getBackground( page, options? )`\n\nReturns the underlying Chrome background page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the background page to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"65881a1e5f891e5fe4163b574da40aa73e1fa161","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@2.0.1-next-65881a1e","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-rQE2cbRLOJJ5IgsA03jrqJcQaUk+hVeCmx9QbD6kiiITY9BhGMa9Rkv2vQhxifMTUR07JhF8lIQXJ+yvaR54Yw==","shasum":"985fb113902ba366abc480793e2ea0c478f53495","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-2.0.1-next-65881a1e.tgz","fileCount":8,"unpackedSize":32403,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiBUApCRA9TVsSAnZWagAAHd4P/0vqkdZIzOv2xfOkYqrm\nmdYU8CN0ulzhbLHYldQ95JZk0zOodWfIfCrodIcC5VQex37nhCyq157CgVw3\naVDISEGgD+t5RsKYOXbgenjm16Swxyfd3zn2yMHj/U0R+JfTRZOT2bjHnWvv\n9h5ksB6kZ+xU+YMwE93Pr0UTEdUPHGOajUSQ4+M4kHxz3e+FdpI3D0g3Pa1y\nE1NNRwGuYENxeDu8O9zTrNahj2ezGRjm6iYHjzlq6RUoZK4GfMpUOINpgJWW\nikTXHpeFX8ONY28bW5TivPpwtjVrnSqEZZo7i8AV45KPuSZ/+cAeHXgZA2zi\nS+vBhQVmlTOqPTHoqmZSZzOvbKaTiN7FWLi6ExE1XiX9fSUXv1gYm/f2zfjx\nYZB9dDlUPJm44TvHdebkfBnfI0+gksYoO5HaNOSMpDpUuC24HNFFr2cJv7+L\noBA7AnpbBERsYgy1/uk0Q1zchd5hkLLlc06iiBwmtVEQYQVsE8pSayQL0gHT\naqNiez7zswgT4Fn9/+m7LRH3z+cAi7QwZaK+XfrgZZ557cSehm8/9cc2Lo9s\nUqB01P/65FKphP/qV8vC78J75//mgoarTf66uROFE+X1wbFIzGW/e2v1rTAl\ngAWVCn9Xw3YlymoaseLgmFaA9nFZa+J8dYu4W5Jy7VsP5jt3fNpw3DqI9Ghe\nCjhe\r\n=JOhl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFbW0Jqu+KI7SHwSSgxmhR9CqVpLga1cK4iJSHlJjCn5AiEAjpfBYixadRUOaaLcVkj/mODvP9GPPa6FuzWtecIqYp8="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_2.0.1-next-65881a1e_1644511273535_0.2308872336867811"},"_hasShrinkwrap":false},"2.0.1-next-ae7750c9":{"name":"puppeteer-devtools","version":"2.0.1-next-ae7750c9","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^12.3.3","npm-run-all":"^4.1.5","nyc":"^15.1.0","prettier":"^1.19.1","puppeteer":"^9.1.1","rimraf":"^3.0.0","standard-version":"^9.3.2","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"peerDependencies":{"puppeteer":">= 9.0.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":84,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async getBackground( page, options? )`\n\nReturns the underlying Chrome background page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the background page to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"ae7750c9f35e82fe6564769a7a0db70b18e56f4f","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@2.0.1-next-ae7750c9","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-0+Es6tsNMhIsi4BcTj+jZe7vSHJrUtCijSyBxY3p+JQ9j4ummDRUy4Vj0Vign3WCD5iDxSt8kWnFAnq3UnhTFg==","shasum":"1d73d5b4db0d5c9d27543c409d508f6cf15a67a2","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-2.0.1-next-ae7750c9.tgz","fileCount":8,"unpackedSize":32404,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiBUEtCRA9TVsSAnZWagAAYKwP/ioY/wj9UVxWhGREZKbY\ndEPxSCVphQIB7XRkEalLa4D4hTFdk603b7Sbn5s9VqkCi7BP2I13fEMEqKny\nB0gdAgUxLWgz2YsjLiPPVVIa8DUsDB9gMY5yPOFMCiRkytDjwT739eaIiEg/\nujluF0lYTHM2MA8l/BkmW/3XMnPNVZWszMp/QjoUKaXb2sAAJFjyR+3z73Ub\nJ16HOD9f4z5xKaze+SMut80eg9mP4xj8z+D+Je/k86X5+0jHRyoqcAHJfEmT\n3gaswerbRBjb24KRUedv3w2NMe+Xzxd9ActsdSotnYMjEXsI8LzwV1kv72NC\nxfV76wNF38Usf8VF8T54jAxgaURwica1DU1PDrCwXbs5+gyppRUqyhlL9QIU\nh6FqIOd+lGInS1F8jYCHa+SDAvlIzSbDfD5mYfOvRyc7lJ6yRE4tzU2zxaf9\nOm0OTPFCuUwWSH47ln1gwZ3wiWStynTO3TBns4af9ioHTTL5sE33gC9k61hV\naPo3Ge6CDQw+qk1I7hdbLLOsbBIl4tRiuPwkrTUD9b2Nz8ygssDUk1ZTJ8uR\nRJHASMY6gid5AuwWjKYNn/vFGnij00AUmA1E9YNuZFmw1o4HXYUH+yhH7ohY\nZ1jlnS4jsnISEJbHkqEtXlJ4GaCUp61W3UgNS4HxI8P5gXB7PeTDt2UC7S6a\nFgNa\r\n=UuvB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDnblKGBWi5WI+/6FjIIrxqMaddN1e0zN/5NdBRIkAb3gIhAP688SiWUIYb9BoLOtghFzQ1X5rwx5y5sYHhUyhbXTcc"}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_2.0.1-next-ae7750c9_1644511533615_0.7828583250797592"},"_hasShrinkwrap":false},"3.0.0":{"name":"puppeteer-devtools","version":"3.0.0","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^12.3.3","npm-run-all":"^4.1.5","nyc":"^15.1.0","prettier":"^1.19.1","puppeteer":"^9.1.1","rimraf":"^3.0.0","standard-version":"^9.3.2","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"peerDependencies":{"puppeteer":">= 9.0.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":84,"functions":95,"lines":95},"gitHead":"6b09321a516140b2db6ca86caaaeddfb32231d5d","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@3.0.0","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Shs7Lcusd8EF1cRi19VmqiDMVlpbE7s0q3KuFdf/NJxH900DWXxNiaEpU7k1MQwWAN1Li2c0qgvT+nts4vHslw==","shasum":"5d236d7dc8220c358785b0535d96dc229f1fa28c","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-3.0.0.tgz","fileCount":8,"unpackedSize":33037,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiBUwDCRA9TVsSAnZWagAAYnIP/0NGfU7AVTVwN9kapImr\nNAfKlFXQmYt0+8uYc6z6dWuvd3kL/08BkoRBu6vjD3fRk6Et2yinakZIcd+8\n0dA8uum0jLbkfDMA8wXKbBtWzccV2BDvR4yUp6f9SWBKyrnAPRTLtRCCzGhy\nRLdCsSpvEHUh608Lc/UHpkuOc0Ft92Nnp+zl4Q+RizPCuwCbwCOSbDaxI9Sm\nNg7zxCJ7d+S1kLZuOS1bQRP/1Bb0n2+8BwPFU2C4I6HF80kH/M5k8iTRrIcp\nlIEpLFv1bT88HpRfD/1CABat2a+yLYMIueHpaXBzRYhz0Mtu6NtAnEGAcKyC\nG+5h29T6GtDnPV94YP569zhtepqKk5V8Foc87KLPu6iO3DyiBflW+1EGIivC\njELJuQw3SoDqiQBgR6w0LJGgYw5C/f8NC1LfJ2tQgD868XGod3YdBW5aRpaZ\nLOF3ZYXiaOa21rQWHr8mey5yF1GztwzGKwGXRVfzK8tR58gXCPxaR1B0qR8m\nhlTTQUGBNNo7A230fmm83v3zKMQcCYW8XEgRQ2H1dnOf4oIjnP3wBzHTPOrC\nV8qpmbztdWkLCK87Kz3JLvzJINZs0EOf0LVFvAsEFcxa/68PPdcToSbNWLfp\n3bskeeWHxnH+RB03lfQ+E5d97/7LcYwR7PQzoN62i4rRiiomYQdKyhvXluUw\n2XYx\r\n=8A2y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID6+z4JL2xKWV8aR8wqJBWM7h7FnvZXI4gyBIOoB8iklAiBz3hE4J8vWHwfMJmSMcMei0aHnrWHUMMYy3OQ9O1bdVw=="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_3.0.0_1644514307136_0.16423054331552445"},"_hasShrinkwrap":false},"3.0.0-next-a60ccb09":{"name":"puppeteer-devtools","version":"3.0.0-next-a60ccb09","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^12.3.3","npm-run-all":"^4.1.5","nyc":"^15.1.0","prettier":"^1.19.1","puppeteer":"^9.1.1","rimraf":"^3.0.0","standard-version":"^9.3.2","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"peerDependencies":{"puppeteer":">= 9.0.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":84,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async getBackground( page, options? )`\n\nReturns the underlying Chrome background page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the background page to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"a60ccb0905ae275b9fc5a347ec80a87f2d55c514","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@3.0.0-next-a60ccb09","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-OdCUPibL4FScQ/x5YNB4XeJ6KVBc2NzXAOqWGITNKiDpiWoYunIYuZa8VpbTcembkteTYqK2t7nOfdH4I4W1PA==","shasum":"c13075155e3f02a7e451cfe82cb7630e46e709dd","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-3.0.0-next-a60ccb09.tgz","fileCount":8,"unpackedSize":33051,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiBU0OCRA9TVsSAnZWagAAhaAP/3/mo7Dc9u9QIbZuzcIN\ncHH84tt7gZM2aS5UbtjJWbnxvpQ6JdcplZ6fDTxwDY0h+ppwRksxzXtbl2QZ\n9HMtSrGvl7MCWFR6MGJaE0F3lNITSXJVbP1USrbkUk8kV88J6Boo00+dPcbO\nLht4QzcbURf+QTKcLLx2gtXDoraMkRJJ/DI/o/1dfn2GhEVeL56oos8mGbI1\nn1jwkNfwyHntGZw5M81/xnPOzaORlMo/GUf5yHFgidVoxbgJipRbiapW/ymE\n/YjvYu3Q2jvINuiby5htfBV/BbCJLlBOr2I/1XVCWLbMacVLQE6t14J89kub\nLh/FurME0joYPxFUONyLD5n5Ee/WmHe/u1yjXwKtbajJFe44GbY6/W0xtjyk\n6QTmVCiJ3DsS4VwEGl/vWknsHWErjmI0o8uIH5X9n+xvBfmZRHEPXtg7vgTJ\nQG8Ytf3nz15yShKoXubAVaGMLyposwRc8rRazEIqa2PeeKwGZaFGo6cJ5iZ8\nlimmrUpIbP6K1ffu+ZwtzJnz4KpJNUGW1fVWmg7e2K5mWYg7iiUT/e5W7/N7\nYNwNyWDlDhZSwNmo5pxtMC1xO0F3UugLKVSPpQaHQgqr2rkJna3xZmpc62+U\nmhkzo2UUr6404RKg8qrZIqrIVVw4/R1iVf+WWRG01yb0i4rJpJa050fW29jq\n+waP\r\n=H0Yf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGBJNHNWj7dpP2yaLcX1lJscI9rEVmF4VyW+p8KEOEmlAiEA0uUzBjQVnyfLsxKOORL0f67glbcxYxeVq/bB5u4B0lU="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_3.0.0-next-a60ccb09_1644514574611_0.3317726023833574"},"_hasShrinkwrap":false},"3.0.0-next-1b424e75":{"name":"puppeteer-devtools","version":"3.0.0-next-1b424e75","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^12.3.3","npm-run-all":"^4.1.5","nyc":"^15.1.0","prettier":"^1.19.1","puppeteer":"^9.1.1","rimraf":"^3.0.0","standard-version":"^9.3.2","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"peerDependencies":{"puppeteer":">= 9.0.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":84,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async getBackground( page, options? )`\n\nReturns the underlying Chrome background page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the background page to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"1b424e75a17b6c1eb3ad74f4b492df377537269b","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@3.0.0-next-1b424e75","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-MVEBkR/OaVXGUKg+vrUsuvTN8lZb1Urp/A4z7ZSjtH8nfu4JeM2ti5BXYdJidIhAO0nAUXv4C1d2AbOK3BvOfw==","shasum":"0cbbe5debbbc11bfe6d606070a71f69e72456730","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-3.0.0-next-1b424e75.tgz","fileCount":8,"unpackedSize":33051,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQcSuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqWfw//c29f0aKQAo+v43Pb9Kz6iya/RHe+54ARKmo6v1QnWYMx7Q/F\r\nFpbOxnajZLJ7NMbDJ40qtlnEcD+6f/FCUUufSTq/NfphJWRONF5mGtPMjQ/M\r\nI6YPSrxc/Oi6d0f/t/FcC5ypKjfSB2m4pdobcHF7qYRQLpq/oS17xUr4Q+FH\r\nAd6WwVldhmDKBhJ3J+rSKs52braiIFvweKnDk1vrCU1Gbp49T2nmheEtimJi\r\nGUgStTDwfQl+FvFEVZPxWVPJUk0yyIVcoYI7zxn9PlNbSZzJqHFtGo18zfK5\r\ndf2qgcvYULsyMKueruJwquSUlLuLQ4nJl6s3o4xfOKOEcqnO/I6MXjVMTyTt\r\npli3A7G03WHfAcDTAW//tB03upeVGS1HzPjfGWWcMw+WVAX4mHaWUAVLZFMR\r\nHbIRMdktT9OLNr4noJzR6DguG3OH6FbGi2ySv4EsoZ8kVjwogwuaqK/SQbE5\r\nfPVuAxiR2O1q8owJaib7OHJcvyTVHaFK5CV3L6863SgMlAn6q6qH8umWOu/W\r\nsy2MehOARuGcFjEkMpFs/7PrW5JI10YWbL9NJjw0fN1ylgizhMM4bYmQ/TaD\r\ntiV0H/y1BSgJg6+cm6Hdm5wmLRPX1Wc+WDyuXp8Hj8pSMkAnFN3BecwG0mHO\r\nTDVkbhjd1AlOWYQjDRyFV0qTjSKXVict4Cw=\r\n=2J2Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZMJ3hj6P6yO+BJDoYsbcKwd3Kr2sprqYiknq26J1YPAIgGz1bim/ONWd85UF6IRlhv3DPzZ7xGbCqH1yN0Fa4L/8="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_3.0.0-next-1b424e75_1648477358455_0.7431852394986869"},"_hasShrinkwrap":false},"3.0.0-next-17b6ce15":{"name":"puppeteer-devtools","version":"3.0.0-next-17b6ce15","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^12.3.3","npm-run-all":"^4.1.5","nyc":"^15.1.0","prettier":"^1.19.1","puppeteer":"^9.1.1","rimraf":"^3.0.0","standard-version":"^9.3.2","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"peerDependencies":{"puppeteer":">= 9.0.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":84,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async getBackground( page, options? )`\n\nReturns the underlying Chrome background page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the background page to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"17b6ce157eb3b619daf3191228b937fa3851250d","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@3.0.0-next-17b6ce15","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Ql/IADgwHS5mS3gZ5dTfMv4EEVMYq2s4UDyd1M4jOvtByiOGpIoYrY8LbMklxBn6qZ5NddRbUOoWctBX9xgBqg==","shasum":"290f4acf6fc34f53e5dfc33ff249914849422cc8","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-3.0.0-next-17b6ce15.tgz","fileCount":8,"unpackedSize":33051,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFoRz3LIpjAU4nrMt7nUSt2cWf2mlroSy5jWvjpooMUfAiEAgr99tmsd025NRq9OeQ6CLYwsqKlfyLAO/arffH/w5T0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjMbcyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqfCQ//ZH9XJE27xvSuvyhHD/0ztDS+XPFcaRNUN1zZZ4MF3Cwu+Ho0\r\nWQ30TWjnbiLKaBS/Zj8M2YzXHh41nP7sOTIBqdpKKhxuhdcuesLOhWiFp4oN\r\nvlyJPWPdhum07/d7/wQ3ozzVxvK0ga4oL8G5AekWnCDOdn9Qcmpt3fAbmAtM\r\noyiyV9ENzYz3PcoBEa1xFp1/T34L2DoOr18bI/jmnfaBwRawFMykNhf5LXs/\r\nVazei4WGWxJZf7JYxdBr0N7rzbtxDIi6UnC4sah0cISSw/izaLbp5upJ90IS\r\nlIjKtCIG5Ryp7Is9vmBJpzrIsD2P1KITHb2zHQFOy8pi8IJCiXofSBAXW650\r\n8FcFNw/N+5LamYSYjKtaxLZMpByFHjtTanXu88iyqynV/1Z73nMLy6IKgtTd\r\nZgqCHphcUE9BslyLb88/3zSYz/zRRd8f90aasC/az0A3aXOvePFD40I9vFIb\r\nPqvh8qLc3ErYoIlaXSfEn5ki37MuGroAQNXx/vTzILqRiCCHi+R0Hx4RPKIe\r\nzJM70zuae8mwsWWkhL8KprhwMUz4Zw/gFog01cztLb1/cS+IIAyijX83I5Ct\r\n8nT1R/UJ5Iw6OEKEReZUiu5FSgNSLbqJrtrnZpaO8JelpJi3XEUSo/uBxi7t\r\nCHn2pyfoWA8C+Dtj3nmdBrlDzvw1iKYeWmw=\r\n=AgRg\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_3.0.0-next-17b6ce15_1664202545838_0.9110650929527018"},"_hasShrinkwrap":false},"3.0.0-next-e2186753":{"name":"puppeteer-devtools","version":"3.0.0-next-e2186753","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"tslint --project tsconfig.json 'src/**/*.{ts}'","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/puppeteer":"^5.4.2","ava":"^3.10.1","husky":"^3.1.0","lint-staged":"^12.3.3","npm-run-all":"^4.1.5","nyc":"^15.1.0","prettier":"^1.19.1","puppeteer":"^9.1.1","rimraf":"^3.0.0","standard-version":"^9.3.2","ts-node":"^8.5.2","tslint":"^5.20.1","tslint-config-prettier":"^1.18.0","tslint-plugin-prettier":"^2.0.1","typescript":"^3.7.2"},"peerDependencies":{"puppeteer":">= 9.0.0"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.{ts}":["tslint --fix","prettier --write","git add"],"*.{json,md}":["prettier --write","git add"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":84,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async getBackground( page, options? )`\n\nReturns the underlying Chrome background page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the background page to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"e21867534231ca059b285007b01f3c023d8b94be","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@3.0.0-next-e2186753","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-ojSf2BRKEGkuIiRFpo0ljoqttsceMwhAckIU/W03VeEu979Vu1muNMa9PJNnVecpG0/lDfH1MILRId10vwPIyg==","shasum":"1c53bdc600e6fe7afb91c3764f82485e47e12974","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-3.0.0-next-e2186753.tgz","fileCount":8,"unpackedSize":33051,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEPrV58cvRUy4wq+UquhQto1uVC96KikoQa/TN7awAMCAiBijjf5vdXDAh65jNN3R58ecxBrvHH5uXxPV4opjBROEQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjNFRCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrqxA/5Afj20K0RbWXjh2Vi27XqoXm5FKtIj5o8oaSlFJ+o538X+XKM\r\nsGc0DvJGJgbN9U967hAiuPb7Duivw5vOkFocpm0Nx9/ZNDHYc2c9W0OM4EMa\r\nyEQW15fm8FJwRu40CVE1Czzp3XtHd19g05B8+azX657jCDX+2xwooAHxncrM\r\nsd1k9uHplBtLyLmQYrR8DebIFR3+9sUBeDOPqTj4o6GHs5enuOZ+rtGSVOxL\r\n9XBQ3fCGiiOhki7kOdcju1InydN336ME0aMMLEEIwer0Eaihu5k3wHdrdwXW\r\nrv+Lb6Bkzgf/1ssT7DjttXqKDoNH+RRrp8uicMTrWcddkr6XZY7CPJTCZ7x4\r\niEixI5FJhqRRdz3S8pcP0KD29Vdky0IYD7pKLLbrsg4GKHu08eYri3gcx57j\r\nxbRn9Pg8fXXhWCMIH9h8dUpd4NqerDMjPCumTgFbWObmXQJ2aJkuMYaHS6QS\r\nRDmR2aqwXBZTInaRCz3aUX9Fp8aaa9fIsA4f5grNb+k/Q/XSIJLZbs+q1nyS\r\nyB7E1uQ3O4FBP85euBaafRiC12zrtP8bbcl9sua1ClWMZXsm5K/DGY0d7d0e\r\ndFCKkgbAqLNT88h0VJFDGfzqe5CbQAeLlR9TqlRPplIr0FU3LGAEdVCBhNDE\r\nYaC0iPChkSNoPIgHQjClLNaB8M3bVId1qJQ=\r\n=dX28\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_3.0.0-next-e2186753_1664373826246_0.5964051034602171"},"_hasShrinkwrap":false},"3.0.0-next-56abb8d8":{"name":"puppeteer-devtools","version":"3.0.0-next-56abb8d8","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"eslint .","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@typescript-eslint/eslint-plugin":"^5.61.0","@typescript-eslint/parser":"^5.61.0","ava":"^3.10.1","eslint":"^8.44.0","eslint-config-prettier":"^8.8.0","eslint-plugin-import":"^2.27.5","husky":"^3.1.0","lint-staged":"^12.3.3","npm-run-all":"^4.1.5","nyc":"^15.1.0","prettier":"^3.0.0","puppeteer":"14.1.1","rimraf":"^3.0.0","standard-version":"^9.3.2","ts-node":"^8.5.2","typescript":"^5.1.6"},"peerDependencies":{"puppeteer":">= 9.1.1 <= 14.1.1"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false,"trailingComma":"none"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":84,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async getBackground( page, options? )`\n\nReturns the underlying Chrome background page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the background page to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"56abb8d8769a37f4eca346bac15d66c34bb28ffd","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@3.0.0-next-56abb8d8","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-90QNIWlQdO4tdxXMZbhqMkGpQxtj8c5ZXWzRTV/RUamg2/CNa5yHesP9W4uijf7OnbbmpMgkyL0JflFJLqBskQ==","shasum":"549ec5e65fbb44d5f53ea4035fca7f2cddd33620","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-3.0.0-next-56abb8d8.tgz","fileCount":10,"unpackedSize":33104,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD7+WBLJPV5zhjIgnYwhyyPQxFfX0tJjkSs+DOn8MDrRAIhAJcE/Rcito3dWg1vapIpeorzqpu2/s20mtlOVIlcqyHQ"}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_3.0.0-next-56abb8d8_1689174067107_0.292608994020243"},"_hasShrinkwrap":false},"3.0.0-next-da935658":{"name":"puppeteer-devtools","version":"3.0.0-next-da935658","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"eslint .","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@typescript-eslint/eslint-plugin":"^5.61.0","@typescript-eslint/parser":"^5.61.0","ava":"^3.10.1","eslint":"^8.44.0","eslint-config-prettier":"^8.8.0","eslint-plugin-import":"^2.27.5","husky":"^3.1.0","lint-staged":"^12.3.3","npm-run-all":"^4.1.5","nyc":"^15.1.0","prettier":"^3.0.0","puppeteer":"14.1.1","rimraf":"^3.0.0","standard-version":"^9.3.2","ts-node":"^8.5.2","typescript":"^5.1.6"},"peerDependencies":{"puppeteer":">= 9.1.1 <= 14.1.1"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false,"trailingComma":"none"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":84,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async getBackground( page, options? )`\n\nReturns the underlying Chrome background page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the background page to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"da935658143d6c90dabc901ad493205346d322f3","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@3.0.0-next-da935658","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-31mAWhPbkwdIJZV+NDUIsXwj8ZW8aOXeTXognqyn2I6XqMld56rsH0iISkfRj7rrnDx1GgiN7COYdoVJfLD2rA==","shasum":"e54b5807b981a435deac27941cf2455a459c1169","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-3.0.0-next-da935658.tgz","fileCount":10,"unpackedSize":33116,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE+sH6DXcEjjXtpq+sMqd+grxKe1OMvxj8hACz9KDs5WAiAGSwTja3d8iYjcs9EFI/3GrM55aSvaeDlYPSfovo51eg=="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_3.0.0-next-da935658_1689265429597_0.01074314624545325"},"_hasShrinkwrap":false},"3.1.0":{"name":"puppeteer-devtools","version":"3.1.0","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"eslint .","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@typescript-eslint/eslint-plugin":"^5.61.0","@typescript-eslint/parser":"^5.61.0","ava":"^3.10.1","eslint":"^8.44.0","eslint-config-prettier":"^8.8.0","eslint-plugin-import":"^2.27.5","husky":"^3.1.0","lint-staged":"^12.3.3","npm-run-all":"^4.1.5","nyc":"^15.1.0","prettier":"^3.0.0","puppeteer":"14.1.1","rimraf":"^3.0.0","standard-version":"^9.3.2","ts-node":"^8.5.2","typescript":"^5.1.6"},"peerDependencies":{"puppeteer":">= 9.1.1 <= 14.1.1"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false,"trailingComma":"none"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":84,"functions":95,"lines":95},"gitHead":"5b1a9c6386faa8c17ebd9ee5c621f070ac67f832","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@3.1.0","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-HKsxeWi9MOQ/xfqkWdCa/9wAQnmBKj2NPoW27YhhgPwY0lyXgAgsg1sMnD3+322DWOPLazoH6QnStPQd7/MUUA==","shasum":"dcb6753ba4b8211d00ab4e8d134638beab11cb9d","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-3.1.0.tgz","fileCount":10,"unpackedSize":33640,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC6/AEnFYH7pABro8VxXdh4ayNm0Nl5Wmrq1+0h0xFaVAiAzs+vxZmHwlWN/iWZG3XA+GN+oi+mKPU64AtEiwvIV2Q=="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_3.1.0_1689267766319_0.6652558020438994"},"_hasShrinkwrap":false},"3.1.0-next-98af2541":{"name":"puppeteer-devtools","version":"3.1.0-next-98af2541","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"eslint .","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@typescript-eslint/eslint-plugin":"^5.61.0","@typescript-eslint/parser":"^5.61.0","ava":"^3.10.1","eslint":"^8.44.0","eslint-config-prettier":"^8.8.0","eslint-plugin-import":"^2.27.5","husky":"^3.1.0","lint-staged":"^12.3.3","npm-run-all":"^4.1.5","nyc":"^15.1.0","prettier":"^3.0.0","puppeteer":"14.1.1","rimraf":"^3.0.0","standard-version":"^9.3.2","ts-node":"^8.5.2","typescript":"^5.1.6"},"peerDependencies":{"puppeteer":">= 9.1.1 <= 14.1.1"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false,"trailingComma":"none"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":84,"functions":95,"lines":95},"readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async getBackground( page, options? )`\n\nReturns the underlying Chrome background page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the background page to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"98af25412dba6bc92800c3f1284614bb14e26681","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_id":"puppeteer-devtools@3.1.0-next-98af2541","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-VbsCX0vMJ6qHCbfyHfq+uefYHrQzz2tE08bHoESAYow0OOI82I6ELpBobUfCGFuQS3TyyUmCEfJ40pD0BYNhtA==","shasum":"d28d38e457ba783f81463dcc9e5571c383935de0","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-3.1.0-next-98af2541.tgz","fileCount":10,"unpackedSize":33654,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICrKhCJ3EfiRMyvWYRnXxo2A9fAdNwI0SY3zE+iV1ywWAiA56+TPioq/5tUb5Pfwu8qjdPMBbNx7ZSFi53kvSAnfxg=="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_3.1.0-next-98af2541_1689267975471_0.5212429902116127"},"_hasShrinkwrap":false},"3.1.0-next-e013f8aa":{"name":"puppeteer-devtools","version":"3.1.0-next-e013f8aa","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"eslint .","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@typescript-eslint/eslint-plugin":"^5.61.0","@typescript-eslint/parser":"^5.61.0","ava":"^3.10.1","eslint":"^8.44.0","eslint-config-prettier":"^8.8.0","eslint-plugin-import":"^2.27.5","husky":"^3.1.0","lint-staged":"^12.3.3","npm-run-all":"^4.1.5","nyc":"^15.1.0","prettier":"^3.0.0","puppeteer":"14.1.1","rimraf":"^3.0.0","standard-version":"^9.3.2","ts-node":"^8.5.2","typescript":"^5.1.6"},"peerDependencies":{"puppeteer":">= 9.1.1 <= 14.1.1"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false,"trailingComma":"none"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":84,"functions":95,"lines":95},"_id":"puppeteer-devtools@3.1.0-next-e013f8aa","readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async getBackground( page, options? )`\n\nReturns the underlying Chrome background page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the background page to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"e013f8aa39c0e80a183aeed350155eadf0891ecc","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-7YHBQJBF+X8ltmVUJzZG6DxGMDMlIoueVlXMOYKdJ97QCf+BN/SnxUu88i6daud0Qqcq8UNV8XCTlBuwvHdejA==","shasum":"5f6c5954db665d5c2ba23f1ecda9cbc7c1fa7567","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-3.1.0-next-e013f8aa.tgz","fileCount":9,"unpackedSize":32384,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDIVireFpg+2/TgEqwWpU/WFEzb0q58EQ8HFFm2BaDRMAIgKeH+I+CxzczAFI28x3ptIybNQi/l4WaX0SuassktdwA="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_3.1.0-next-e013f8aa_1707147040677_0.7586873477678184"},"_hasShrinkwrap":false},"3.1.0-next-4a311ae6":{"name":"puppeteer-devtools","version":"3.1.0-next-4a311ae6","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc ava test/*.ts","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"eslint .","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"ava --verbose test/*.ts"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@typescript-eslint/eslint-plugin":"^5.61.0","@typescript-eslint/parser":"^5.61.0","ava":"^3.10.1","eslint":"^8.44.0","eslint-config-prettier":"^8.8.0","eslint-plugin-import":"^2.27.5","husky":"^3.1.0","lint-staged":"^12.3.3","npm-run-all":"^4.1.5","nyc":"^15.1.0","prettier":"^3.0.0","puppeteer":"14.1.1","rimraf":"^3.0.0","standard-version":"^9.3.2","ts-node":"^8.5.2","typescript":"^5.1.6"},"peerDependencies":{"puppeteer":">= 9.1.1 <= 14.1.1"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false,"trailingComma":"none"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":84,"functions":95,"lines":95},"_id":"puppeteer-devtools@3.1.0-next-4a311ae6","readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async getBackground( page, options? )`\n\nReturns the underlying Chrome background page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the background page to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"4a311ae6a72623fe0e1b84791e56143d25fe9bb7","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-n7L7IUHzysRvKVKJli4UJaKPyFc6oEldYLcM5afUlez1UIBa9x37NUiANCweUQWp5iP8xcT3lnSHDCZ8ykkHNA==","shasum":"9afb7fc4bdc97a5f54f4480ee54643ea3cb573b9","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-3.1.0-next-4a311ae6.tgz","fileCount":9,"unpackedSize":32362,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCrZ4LRSaru19Gn3qx//jU7gXhvOv200teBN7ziuWGhVAIhAIFHeYfCnYl2E310JJjVCHMmRl8BH0axnd8lpp6MbQhB"}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_3.1.0-next-4a311ae6_1707161176146_0.7385032814980441"},"_hasShrinkwrap":false},"3.1.0-next-086be9c8":{"name":"puppeteer-devtools","version":"3.1.0-next-086be9c8","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc mocha","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"eslint .","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"mocha --parallel"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/mocha":"^10.0.6","@typescript-eslint/eslint-plugin":"^5.61.0","@typescript-eslint/parser":"^5.61.0","eslint":"^8.44.0","eslint-config-prettier":"^8.8.0","eslint-plugin-import":"^2.27.5","husky":"^3.1.0","lint-staged":"^12.3.3","mocha":"^10.2.0","npm-run-all":"^4.1.5","nyc":"^15.1.0","prettier":"^3.0.0","puppeteer":"14.1.1","rimraf":"^3.0.0","standard-version":"^9.3.2","ts-node":"^8.5.2","typescript":"^5.1.6"},"peerDependencies":{"puppeteer":">= 9.1.1 <= 14.1.1"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false,"trailingComma":"none"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":84,"functions":95,"lines":95},"_id":"puppeteer-devtools@3.1.0-next-086be9c8","readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async getBackground( page, options? )`\n\nReturns the underlying Chrome background page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the background page to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2021 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"086be9c8b5a0cf6a93e0a34f00b76d64ba6596ef","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-5mRbUcu1CScnbKA6eQfC9InfWsxaNt7EH8+35+AHK1hGHxhGkLoySaBVpLqej5iHNJtl3lOZrQIcmtbOFkSn7g==","shasum":"e64e383d8ef467389c12e5c29c55fdd895445fa3","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-3.1.0-next-086be9c8.tgz","fileCount":9,"unpackedSize":32378,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC46kAqYRQH6C5+lDMoc9A9IXlHSlFfvZq63odDhNNy2gIgEXPu2RLVBAQvanoqC4XsYTt9yYlaSxvvehDU7ZbSqDk="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_3.1.0-next-086be9c8_1707162581382_0.6837743831169283"},"_hasShrinkwrap":false},"3.2.0":{"name":"puppeteer-devtools","version":"3.2.0","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc mocha","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"eslint .","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"mocha --parallel"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/mocha":"^10.0.6","@typescript-eslint/eslint-plugin":"^5.61.0","@typescript-eslint/parser":"^5.61.0","eslint":"^8.44.0","eslint-config-prettier":"^8.8.0","eslint-plugin-import":"^2.27.5","husky":"^3.1.0","lint-staged":"^12.3.3","mocha":"^10.2.0","npm-run-all":"^4.1.5","nyc":"^15.1.0","prettier":"^3.0.0","puppeteer":"14.1.1","rimraf":"^3.0.0","standard-version":"^9.3.2","ts-node":"^8.5.2","typescript":"^5.1.6"},"peerDependencies":{"puppeteer":">= 9.1.1 <= 14.1.1"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false,"trailingComma":"none"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":84,"functions":95,"lines":95},"_id":"puppeteer-devtools@3.2.0","gitHead":"5589f1c4e7b5b87aed1d714981de72b998fdc6db","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-Lu0o5HYy69u28vpAO6hxyMRyzIeREbiLStJOjS9ryoVEFN9y0VJfuKZCpXLSwIA1ledvMx8H/njMiX/SRU6XVw==","shasum":"85472eaee43ab2df62ea882d3a60126bf3ab2a43","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-3.2.0.tgz","fileCount":9,"unpackedSize":32364,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcqEyKc2SJ0ROtpdW0LImCW14xlfi2aG3QxAYvKD2yKwIhAKScXp/z/uvBKzMPpxoOzuxN5LLSyCopF7rLd7GtFPAh"}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_3.2.0_1707168408056_0.5823651240900494"},"_hasShrinkwrap":false},"3.1.0-next-4ccdd352":{"name":"puppeteer-devtools","version":"3.1.0-next-4ccdd352","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc mocha","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"eslint .","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"mocha --parallel"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/mocha":"^10.0.6","@typescript-eslint/eslint-plugin":"^5.61.0","@typescript-eslint/parser":"^5.61.0","eslint":"^8.44.0","eslint-config-prettier":"^8.8.0","eslint-plugin-import":"^2.27.5","husky":"^3.1.0","lint-staged":"^12.3.3","mocha":"^10.2.0","npm-run-all":"^4.1.5","nyc":"^15.1.0","prettier":"^3.0.0","puppeteer":"14.1.1","rimraf":"^3.0.0","standard-version":"^9.3.2","ts-node":"^8.5.2","typescript":"^5.1.6"},"peerDependencies":{"puppeteer":">= 9.1.1 <= 14.1.1"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false,"trailingComma":"none"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":84,"functions":95,"lines":95},"_id":"puppeteer-devtools@3.1.0-next-4ccdd352","readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n### Using a different browser executable\n\n`puppeteer-devtools` currently is [limited to versions of puppeteer &lt; `16.1.0`](https://github.com/dequelabs/puppeteer-devtools/issues/67#issuecomment-1629700824), meaning that in order to use versions of Chrome that are newer than the packaged version, you must use some variation of executable path:\n\n#### `browser.launch`\n\n```ts\nawait puppeteer.launch({\n  ...options,\n  executablePath: '/path/to/chrome'\n})\n```\n\n#### Env Var\n\n```sh\nPUPPETEER_EXECUTABLE_PATH=/path/to/chrome npm run tests\n```\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async getBackground( page, options? )`\n\nReturns the underlying Chrome background page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the background page to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2024 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"4ccdd352bb43f1340366ffd82f2bea1abd2d5e75","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-GZIjS6u8Y1LD+YvEscFs5CIg0IIB5lktmtfBg33RvyrYbPDnjlDpewZYrdu8nLv/OPR3pwCf77QU0XhYO9nQOw==","shasum":"a5c98db3a3d3851792c5063236c60b332a2bcd43","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-3.1.0-next-4ccdd352.tgz","fileCount":9,"unpackedSize":32919,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGJs9sxGdj9jYs02Hz6aFvXWeTzoCFuPouHRHSG4MQShAiBf+pgy6EvJlVl51X6ePmhQkmypr7K3LEIYzuZOCe45hQ=="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_3.1.0-next-4ccdd352_1707168427127_0.10811438208182023"},"_hasShrinkwrap":false},"3.2.0-next-fc51a636":{"name":"puppeteer-devtools","version":"3.2.0-next-fc51a636","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc mocha","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"eslint .","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"mocha --parallel"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/mocha":"^10.0.6","@typescript-eslint/eslint-plugin":"^5.61.0","@typescript-eslint/parser":"^5.61.0","eslint":"^8.44.0","eslint-config-prettier":"^8.8.0","eslint-plugin-import":"^2.27.5","husky":"^3.1.0","lint-staged":"^12.3.3","mocha":"^10.2.0","npm-run-all":"^4.1.5","nyc":"^15.1.0","prettier":"^3.0.0","puppeteer":"14.1.1","rimraf":"^3.0.0","standard-version":"^9.3.2","ts-node":"^8.5.2","typescript":"^5.1.6"},"peerDependencies":{"puppeteer":">= 9.1.1 <= 14.1.1"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false,"trailingComma":"none"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":84,"functions":95,"lines":95},"_id":"puppeteer-devtools@3.2.0-next-fc51a636","readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n### Using a different browser executable\n\n`puppeteer-devtools` currently is [limited to versions of puppeteer &lt; `16.1.0`](https://github.com/dequelabs/puppeteer-devtools/issues/67#issuecomment-1629700824), meaning that in order to use versions of Chrome that are newer than the packaged version, you must use some variation of executable path:\n\n#### `browser.launch`\n\n```ts\nawait puppeteer.launch({\n  ...options,\n  executablePath: '/path/to/chrome'\n})\n```\n\n#### Env Var\n\n```sh\nPUPPETEER_EXECUTABLE_PATH=/path/to/chrome npm run tests\n```\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async getBackground( page, options? )`\n\nReturns the underlying Chrome background page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the background page to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2024 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"fc51a6367e22cd178010d2b3c25a7970e0192dc1","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-IM6HuXrkvmMadsFqjVpbbnY9YGb6AjSDzUNL0D6Vv/ngAKJ9KJZMlvGY4ezLurssmtLgaGsLZBFWh30ut0Vjxg==","shasum":"451b895fc3a088297395d77d75aff10bb382de80","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-3.2.0-next-fc51a636.tgz","fileCount":9,"unpackedSize":32919,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDY4WfgwnSgn5Oe5rHNUFZFUvyPLF/0b4hH8Ps474VB0AiAj49Nh5Gmrs3tD1v9bO/RT5IzG7PzH5bTAo1l1v1RoJw=="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_3.2.0-next-fc51a636_1707169901197_0.18746327202478574"},"_hasShrinkwrap":false},"3.2.0-next-06080187":{"name":"puppeteer-devtools","version":"3.2.0-next-06080187","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc mocha","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"eslint .","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"mocha --parallel"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/mocha":"^10.0.6","@typescript-eslint/eslint-plugin":"^5.61.0","@typescript-eslint/parser":"^5.61.0","eslint":"^8.44.0","eslint-config-prettier":"^8.8.0","eslint-plugin-import":"^2.27.5","husky":"^3.1.0","lint-staged":"^12.3.3","mocha":"^10.2.0","npm-run-all":"^4.1.5","nyc":"^15.1.0","prettier":"^3.0.0","puppeteer":"14.1.1","rimraf":"^3.0.0","standard-version":"^9.3.2","ts-node":"^8.5.2","typescript":"^5.1.6"},"peerDependencies":{"puppeteer":">= 9.1.1 <= 14.1.1"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false,"trailingComma":"none"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":84,"functions":95,"lines":95},"_id":"puppeteer-devtools@3.2.0-next-06080187","readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n### Using a different browser executable\n\n`puppeteer-devtools` currently is [limited to versions of puppeteer &lt; `16.1.0`](https://github.com/dequelabs/puppeteer-devtools/issues/67#issuecomment-1629700824), meaning that in order to use versions of Chrome that are newer than the packaged version, you must use some variation of executable path:\n\n#### `browser.launch`\n\n```ts\nawait puppeteer.launch({\n  ...options,\n  executablePath: '/path/to/chrome'\n})\n```\n\n#### Env Var\n\n```sh\nPUPPETEER_EXECUTABLE_PATH=/path/to/chrome npm run tests\n```\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async getBackground( page, options? )`\n\nReturns the underlying Chrome background page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the background page to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2024 Deque Systems, Inc.\n","readmeFilename":"README.md","gitHead":"06080187a19c13bc664eeff71074ae2084cc673c","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-Q2m9w00KuF3ozQRw73X20LXFK6VGa6pLpufX3cPqGrKH0p1TfBHyiJjgXHup4f43k6lGVAdxe6SYk3sBgz8e8w==","shasum":"83eafab7d2f3a2f47135f46fa8341ed65c44e4ff","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-3.2.0-next-06080187.tgz","fileCount":10,"unpackedSize":34086,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIChx0SMFioz0/Kb8T8KopEx8VsUuJ68GCr9lZMsbcYoAAiEA/YwhHQqQGCEi8/Z+ZbvY7+kr0NzRPll5qHRI+KCbAHM="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_3.2.0-next-06080187_1711137553716_0.9205190916387511"},"_hasShrinkwrap":false},"3.3.0":{"name":"puppeteer-devtools","version":"3.3.0","description":"Extended puppeteer methods for getting extension devtools contexts","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"npm-run-all build:definition build:ts","build:definition":"tsc --emitDeclarationOnly","build:ts":"babel src --out-dir dist --extensions \".ts\"","clean:dist":"rimraf dist","coverage":"nyc mocha","fmt":"prettier --write *.{md,js,json} 'src/**/*.{md,ts,json}'","lint":"eslint .","prebuild":"npm-run-all clean:*","prepare":"npm run build","release":"standard-version","test":"mocha --parallel"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"license":"MPL-2.0","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/cli":"^7.7.0","@babel/core":"^7.7.2","@babel/preset-env":"^7.7.1","@babel/preset-typescript":"^7.7.2","@types/mocha":"^10.0.6","@typescript-eslint/eslint-plugin":"^5.61.0","@typescript-eslint/parser":"^5.61.0","eslint":"^8.44.0","eslint-config-prettier":"^8.8.0","eslint-plugin-import":"^2.27.5","husky":"^3.1.0","lint-staged":"^12.3.3","mocha":"^10.2.0","npm-run-all":"^4.1.5","nyc":"^15.1.0","prettier":"^3.0.0","puppeteer":"14.1.1","rimraf":"^3.0.0","standard-version":"^9.3.2","ts-node":"^8.5.2","typescript":"^5.1.6"},"peerDependencies":{"puppeteer":">= 9.1.1 <= 14.1.1"},"prettier":{"singleQuote":true,"arrowParens":"avoid","bracketSpacing":true,"printWidth":80,"semi":false,"tabWidth":2,"useTabs":false,"trailingComma":"none"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.ts":["eslint --fix","prettier --write"],"*.{json,md}":["prettier --write"]},"nyc":{"include":["src/**/*.ts"],"extension":[".ts"],"require":["ts-node/register"],"reporter":["text-summary","html"],"sourceMap":true,"instrument":true,"checkCoverage":true,"statements":95,"branches":84,"functions":95,"lines":95},"_id":"puppeteer-devtools@3.3.0","gitHead":"fe89e386017cf331e3135a556a8a84b74507ca2e","bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-uRabNAcCJMSUuQTob1HoUwYcEWhE2IHwbKc31GVGIEJQE7qxLtw/aofS/pR6039V6CZEZfcDZI7SD04QU02qGQ==","shasum":"1896c7c8621c9955f04fc9192198917f38b33ac7","tarball":"https://registry.npmjs.org/puppeteer-devtools/-/puppeteer-devtools-3.3.0.tgz","fileCount":10,"unpackedSize":34072,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE24oo08xGWBQ+Y0JdSDB6bhnKGXrmmb2RbnKuCfqTd1AiEAom/OsSHDuQIX2TMRQm2QaqV9/qArMafcklDql8EtayE="}]},"_npmUser":{"name":"npmdeque","email":"axe@deque.com"},"directories":{},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/puppeteer-devtools_3.3.0_1712338698213_0.8003165744907959"},"_hasShrinkwrap":false}},"time":{"created":"2020-04-07T16:53:05.463Z","1.0.0":"2020-04-07T16:53:05.572Z","modified":"2024-04-05T17:38:18.577Z","1.0.0-next-e5f3a8a8":"2020-04-08T14:33:14.969Z","1.0.0-next-7ba851de":"2020-04-08T18:50:31.659Z","1.0.0-next-7defe325":"2020-04-08T18:51:59.805Z","1.0.0-next-17191f81":"2020-07-14T01:03:25.304Z","1.0.0-next-cee5e390":"2020-07-15T18:03:25.290Z","1.0.0-next-6de63b66":"2020-07-15T18:30:05.643Z","1.0.0-next-036ce950":"2020-07-15T21:55:21.778Z","1.0.0-next-685033a9":"2020-07-16T14:00:49.324Z","1.0.1":"2020-07-16T16:20:32.462Z","1.0.1-next-fdfab6aa":"2020-07-16T16:29:14.765Z","1.0.1-next-3b4cf357":"2020-09-02T18:49:50.258Z","1.0.1-next-977ca8a0":"2020-12-28T15:13:19.472Z","1.0.1-next-d93df4f8":"2021-01-14T04:28:54.909Z","1.0.1-next-8bd747de":"2021-01-14T04:29:06.587Z","1.0.1-next-81473491":"2021-01-18T23:07:47.076Z","1.0.1-next-5ecc8c7f":"2021-01-19T15:01:25.229Z","2.0.0-next-81ecead3":"2021-01-22T19:34:23.627Z","2.0.0":"2021-01-26T17:11:07.612Z","2.0.0-next-c0242db4":"2021-01-26T17:13:19.219Z","2.0.0-next-fa30aadf":"2021-03-31T21:24:23.614Z","2.0.0-next-cdf4945d":"2021-04-02T00:11:15.901Z","2.0.1-next-420c5120":"2021-04-02T15:28:00.970Z","2.0.1":"2021-04-03T15:25:20.684Z","2.0.1-next-c5b3ba3d":"2021-04-03T15:28:24.051Z","2.0.1-next-a63ba95b":"2021-05-11T13:56:13.617Z","2.0.1-next-767e5e0d":"2021-05-11T15:15:18.373Z","2.0.1-next-ec4ce890":"2021-05-26T20:00:21.201Z","2.0.1-next-6911f82d":"2021-06-01T14:20:33.660Z","2.0.1-next-f7f45eff":"2021-06-11T14:58:09.909Z","2.0.1-next-82344010":"2021-08-05T15:36:28.761Z","2.0.1-next-2b5343a8":"2021-08-12T13:50:50.308Z","2.0.1-next-32a80136":"2021-09-08T19:29:50.480Z","2.0.1-next-8390e70d":"2022-02-10T16:05:55.279Z","2.0.1-next-65881a1e":"2022-02-10T16:41:13.672Z","2.0.1-next-ae7750c9":"2022-02-10T16:45:33.810Z","3.0.0":"2022-02-10T17:31:47.491Z","3.0.0-next-a60ccb09":"2022-02-10T17:36:14.775Z","3.0.0-next-1b424e75":"2022-03-28T14:22:38.585Z","3.0.0-next-17b6ce15":"2022-09-26T14:29:05.972Z","3.0.0-next-e2186753":"2022-09-28T14:03:46.440Z","3.0.0-next-56abb8d8":"2023-07-12T15:01:07.385Z","3.0.0-next-da935658":"2023-07-13T16:23:49.824Z","3.1.0":"2023-07-13T17:02:46.582Z","3.1.0-next-98af2541":"2023-07-13T17:06:15.648Z","3.1.0-next-e013f8aa":"2024-02-05T15:30:40.859Z","3.1.0-next-4a311ae6":"2024-02-05T19:26:16.299Z","3.1.0-next-086be9c8":"2024-02-05T19:49:41.600Z","3.2.0":"2024-02-05T21:26:48.257Z","3.1.0-next-4ccdd352":"2024-02-05T21:27:07.271Z","3.2.0-next-fc51a636":"2024-02-05T21:51:41.368Z","3.2.0-next-06080187":"2024-03-22T19:59:13.895Z","3.3.0":"2024-04-05T17:38:18.380Z"},"maintainers":[{"name":"npmdeque","email":"axe@deque.com"}],"description":"Extended puppeteer methods for getting extension devtools contexts","homepage":"https://github.com/dequelabs/puppeteer-devtools#readme","repository":{"type":"git","url":"git+https://github.com/dequelabs/puppeteer-devtools.git"},"author":{"name":"Jason Wilson","email":"jason.wilson@deque.com"},"bugs":{"url":"https://github.com/dequelabs/puppeteer-devtools/issues"},"license":"MPL-2.0","readme":"# puppeteer-devtools\n\n[![CircleCI](https://circleci.com/gh/dequelabs/puppeteer-devtools.svg?style=shield)](https://circleci.com/gh/dequelabs/puppeteer-devtools)\n[![Version](https://img.shields.io/npm/v/puppeteer-devtools.svg)](https://www.npmjs.com/package/puppeteer-devtools)\n\nExtended puppeteer methods for getting extension devtools contexts.\n\n> This package relies on using internal puppeteer methods to return the Chrome devtools panel, along with extension panels. Since it is dependent on undocumented puppeteer apis, it could break in future versions of Chrome/puppeteer so use at your own risk.\n\n## Install\n\n`npm install --save-dev puppeteer-devtools`\n\n## Usage\n\n```js\nconst puppeteer = require('puppeteer')\nconst {\n  getDevtoolsPanel,\n  setCaptureContentScriptExecutionContexts,\n  getContentScriptExcecutionContext\n} = require('puppeteer-devtools')\nconst path = require('path')\n\nconst extension = path.resolve('/path/to/extension')\n\nconst browser = await puppeteer.launch({\n  args: [\n    `--disable-extensions-except=${extension}`,\n    `--load-extension=${extension}`\n  ],\n  devtools: true,\n  headless: false\n})\n\nconst [page] = await browser.pages()\nawait setCaptureContentScriptExecutionContexts(page)\n\nawait page.goto('https://google.com', { waitUntil: 'networkidle0' })\nconst panel = await getDevtoolsPanel(page, { panelName: 'panel.html' })\nconst contentScriptExecutionContext = await getContentScriptExecutionContext(\n  page\n)\n```\n\nNote: `devtools` must be enabled, and `headless` mode must be turned off. Chrome [does not currently support extensions in headless mode](https://bugs.chromium.org/p/chromium/issues/detail?id=706008).\n\n### Using a different browser executable\n\n`puppeteer-devtools` currently is [limited to versions of puppeteer &lt; `16.1.0`](https://github.com/dequelabs/puppeteer-devtools/issues/67#issuecomment-1629700824), meaning that in order to use versions of Chrome that are newer than the packaged version, you must use some variation of executable path:\n\n#### `browser.launch`\n\n```ts\nawait puppeteer.launch({\n  ...options,\n  executablePath: '/path/to/chrome'\n})\n```\n\n#### Env Var\n\n```sh\nPUPPETEER_EXECUTABLE_PATH=/path/to/chrome npm run tests\n```\n\n## Methods\n\n### `async getDevtools( page, options? )`\n\nReturns the underlying Chrome `devtools://` page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the devtools page to become available. Uses puppeteer's default timeout if not set.\n\n### `async getDevtoolsPanel( page, options? )`\n\nReturns the underlying Chrome `chrome-extension://` panel as a <code>Promise<[Frame](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-frame)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`panelName`** - <`string`> The file name of the extension panel to find. A devtools page with `chrome.devtools.panels.create('name', 'icon.png', 'panel.html', (panel) => { ... })` would have `panel.html` as its value.\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the chrome extension panel to become available. Uses puppeteer's default timeout if not set.\n\n### `async getBackground( page, options? )`\n\nReturns the underlying Chrome background page as a <code>Promise<[Page](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)></code>.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n- **`options`** - <`object`>\n  - **`timeout`** - <`number | null`> Maximum time in milliseconds to wait for the background page to become available. Uses puppeteer's default timeout if not set.\n\n### `async setCaptureContentScriptExecutionContexts( page )`\n\nActivating capture content script execution contexts will allow for the usage of an extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This must be activated before a page is navigated.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n### `async getContentScriptExcecutionContext( page )`\n\nIf `setCaptureContentScriptExecutionContexts` has been enabled for a page, this returns the extension's content script [`ExecutionContext`](https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#class-executioncontext). This will error for pages that the extension does not have permissions for or for extensions that do not have content scripts.\n\n- **`page`** - <[`Page`](https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#class-page)> Puppeteer page object.\n\n## License\n\n[MPL 2.0](LICENSE)\n\n## Copyright\n\nCopyright (c) 2019-2024 Deque Systems, Inc.\n","readmeFilename":"README.md"}