유저스토리 목록 테이블 추가
- 전체 유저스토리 요약 테이블 (20개) - 우선순위별/서비스별/복잡도별 통계 - 주요 기능별 상세 목록 - 기술 스택 및 아키텍처 정보 - 개발 로드맵 및 리스크 관리 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
dbc5894427
commit
e4f390a200
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
8f651bb05b4ef8c432d01dcc99ca6db83bb94412 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/@img%2fsharp-linux-x64","integrity":"sha512-uXYRfFTvlEv9SZgmw/E2+BdzPfVtzSYuHHsAQM04LXPbn6VpvbBVa0HKDv2NHUR1KlWsbO/pL5kxPtB+N/uI2w==","time":1761024072869,"size":58661,"metadata":{"time":1761024072859,"url":"https://registry.npmjs.org/@img%2fsharp-linux-x64","reqHeaders":{"accept":"application/json"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/json","date":"Tue, 21 Oct 2025 05:21:12 GMT","etag":"W/\"0f5190a5d394df3ea1dbfbedb37cad02\"","last-modified":"Wed, 17 Sep 2025 13:19:42 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
4bcc3f12c8110568ff39e366b3e57718a6d64d80 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-2.0.24.tgz","integrity":"sha512-6f/AXoTi3SmFYZl42l6L8brdPSkL+MDQWesRBJwgZy3enNI0LaVn1j/6RxQ7toPKnIyChCN0r6hZi61N8znzzQ==","time":1761024081842,"size":36170399,"metadata":{"time":1761024073192,"url":"https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-2.0.24.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, must-revalidate, max-age=31557600","content-type":"application/octet-stream","date":"Tue, 21 Oct 2025 05:21:13 GMT","etag":"\"4cef9d0e7eda403d0d23c27a0d472cd3\"","last-modified":"Mon, 20 Oct 2025 18:36:51 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
|
||||||
|
6d5d98b73eb64aacfbfab08de86f9e8ea05121c7 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/playwright","integrity":"sha512-/zRrt0zNC4mvuIjTdg62tObLFArwaZ+5cMw+qIul2AlrEhCrGbdAHw/nrD6nuo21HINKog800cx9nwasTs4TaQ==","time":1761023965439,"size":15125186,"metadata":{"time":1761023961706,"url":"https://registry.npmjs.org/playwright","reqHeaders":{"accept":"application/json"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/json","date":"Tue, 21 Oct 2025 05:19:21 GMT","etag":"W/\"7fd643ce56eb6e67ecf3ae6d88e740f7\"","last-modified":"Tue, 21 Oct 2025 05:17:13 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}
|
||||||
|
fab51387c648667b4add1d1d531f0a97afd29b59 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/playwright","integrity":"sha512-/zRrt0zNC4mvuIjTdg62tObLFArwaZ+5cMw+qIul2AlrEhCrGbdAHw/nrD6nuo21HINKog800cx9nwasTs4TaQ==","time":1761023967418,"size":15125186,"metadata":{"time":1761023961703,"url":"https://registry.npmjs.org/playwright","reqHeaders":{"accept":"application/json"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/json","date":"Tue, 21 Oct 2025 05:19:21 GMT","etag":"W/\"7fd643ce56eb6e67ecf3ae6d88e740f7\"","last-modified":"Tue, 21 Oct 2025 05:17:13 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
f1a6003533d3762bd1a2a4c3d95e0afad55ada2f {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/@img%2fsharp-darwin-x64","integrity":"sha512-5O6Sl0mbAPgnFiVq8elwQVKuNmg2mia7RnzXmYqGNcr0h3lHCAZgmjEYrhYDhzLLWf46NpSzBLxPvbxVBsjFHg==","time":1761024072869,"size":57736,"metadata":{"time":1761024072860,"url":"https://registry.npmjs.org/@img%2fsharp-darwin-x64","reqHeaders":{"accept":"application/json"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/json","date":"Tue, 21 Oct 2025 05:21:12 GMT","etag":"W/\"011c56ac46afbdeba6b61f39d015d8f3\"","last-modified":"Wed, 17 Sep 2025 13:19:27 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
4127bf7653bcc65cccef3c8d21c78b3b1126af83 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/@img%2fsharp-libvips-linux-x64","integrity":"sha512-3qKair8isAhmd1JFAcJZyiobv0GUpTm73Hfx0hmDEBXiNxXkBivtc06bnhiNVD9waKcu4QKyVW36ByRJ6dOW6w==","time":1761024073004,"size":52698,"metadata":{"time":1761024072999,"url":"https://registry.npmjs.org/@img%2fsharp-libvips-linux-x64","reqHeaders":{"accept":"application/json"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/json","date":"Tue, 21 Oct 2025 05:21:13 GMT","etag":"W/\"bf3320d891d988fcd15050529a23dd1a\"","last-modified":"Wed, 17 Sep 2025 10:35:37 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
ad73ec784e37a97369d237ee52eed5bdd27e10ef {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/@img%2fsharp-libvips-linux-arm64","integrity":"sha512-CBsWSk5HCMLFq7nGwcgyJfctp8QuXD8P7W1NlUroI8z1jN8F2q8/pTwgnsxhjve7YaUoRyu5mtvksAmG+BvdRA==","time":1761024072972,"size":51425,"metadata":{"time":1761024072959,"url":"https://registry.npmjs.org/@img%2fsharp-libvips-linux-arm64","reqHeaders":{"accept":"application/json"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/json","date":"Tue, 21 Oct 2025 05:21:12 GMT","etag":"W/\"ef00a56c710410650540954620b7699b\"","last-modified":"Wed, 17 Sep 2025 10:35:06 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
c92f9f9d3c1e02a3d3e578678dcd0f8b1923649f {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/@img%2fsharp-libvips-darwin-arm64","integrity":"sha512-VKkg/rDmU0ExrtLotyucG/lHPUoPYzV1zocUQxbhiaXnPwOZmQroexvEVnQcpmQvKsuSjNmE9/tO3EXuRiVo/Q==","time":1761024072993,"size":48626,"metadata":{"time":1761024072976,"url":"https://registry.npmjs.org/@img%2fsharp-libvips-darwin-arm64","reqHeaders":{"accept":"application/json"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/json","date":"Tue, 21 Oct 2025 05:21:13 GMT","etag":"W/\"c6e5b0860bf1dd59efd00431f8eb8770\"","last-modified":"Wed, 17 Sep 2025 10:34:58 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
|
||||||
|
091d7896dba26ade2d5a5a64ae847c24a1662961 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/@anthropic-ai%2fclaude-code","integrity":"sha512-ccwAlkDYxowrd42wwE0TWHWqbGE3JIcj/Wtx3JXFqq1g0LVR2sHN5hdk0jzFbNK2DjHuV9mFqO4yO8AO4S/Hzg==","time":1761024395954,"size":593659,"metadata":{"time":1761024395953,"url":"https://registry.npmjs.org/@anthropic-ai%2fclaude-code","reqHeaders":{"accept":"application/json"},"resHeaders":{"cache-control":"public, max-age=300","date":"Tue, 21 Oct 2025 05:26:35 GMT","etag":"\"0159b2a726fe1f6768de486f47def338\"","last-modified":"Mon, 20 Oct 2025 19:07:39 GMT","vary":"Accept-Encoding","content-encoding":"gzip","content-type":"application/json"},"options":{"compress":true}}}
|
||||||
|
fd00b135ee4d0c6c45895e04f5d47f2ff04e9018 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/@anthropic-ai%2fclaude-code","integrity":"sha512-ccwAlkDYxowrd42wwE0TWHWqbGE3JIcj/Wtx3JXFqq1g0LVR2sHN5hdk0jzFbNK2DjHuV9mFqO4yO8AO4S/Hzg==","time":1761024519290,"size":593659,"metadata":{"time":1761024519289,"url":"https://registry.npmjs.org/@anthropic-ai%2fclaude-code","reqHeaders":{"accept":"application/json"},"resHeaders":{"cache-control":"public, max-age=300","date":"Tue, 21 Oct 2025 05:28:39 GMT","etag":"\"0159b2a726fe1f6768de486f47def338\"","last-modified":"Mon, 20 Oct 2025 19:07:39 GMT","vary":"Accept-Encoding","content-encoding":"gzip","content-type":"application/json"},"options":{"compress":true}}}
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
6b54771f02fb2364749c1989ed1805e95b991734 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/@img%2fsharp-libvips-linux-arm","integrity":"sha512-yP+ZvJPerEY2OoPtntgb06NLAvhiveDZLXhfYLunCEyFbkXwRv+z0I5Vlq6YxOCH9/9QM4etUWTcSCNZmVoteA==","time":1761024072953,"size":54624,"metadata":{"time":1761024072942,"url":"https://registry.npmjs.org/@img%2fsharp-libvips-linux-arm","reqHeaders":{"accept":"application/json"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/json","date":"Tue, 21 Oct 2025 05:21:12 GMT","etag":"W/\"01a7d4898ec3c8c87d8cab1d35b29717\"","last-modified":"Wed, 17 Sep 2025 10:35:02 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
2009fa59d3f8cc250adc4a4eea68d538aeb370f9 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0-alpha-2025-10-16.tgz","integrity":"sha512-QfB4sdxqkxN3mrBii/Fqh65qSggrPbcDMJcsqjwsShn1lxbX48P8WuNNSdF05lwDfgS3BsQBkay3SdY3caueAg==","time":1761023967646,"size":1971154,"metadata":{"time":1761023965781,"url":"https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0-alpha-2025-10-16.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, immutable, max-age=31557600","content-type":"application/octet-stream","date":"Tue, 21 Oct 2025 05:19:25 GMT","etag":"\"2a08f9e5bf6cfc9c3a44d0d09a117ce1\"","last-modified":"Thu, 16 Oct 2025 05:17:21 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
|
||||||
|
2f179e403ed72ed58d8107fc49391f3f6b001c6c {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/playwright-core","integrity":"sha512-IcoyUQQGKr/l7ocr3/m5Jp+bekTZZqaFsCeB9fSrL/HWLEWH4WQ1cmkUUe8jaUxJZBQTM/8lfeOJWStgN3EW1g==","time":1761023965252,"size":17078481,"metadata":{"time":1761023962288,"url":"https://registry.npmjs.org/playwright-core","reqHeaders":{"accept":"application/json"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/json","date":"Tue, 21 Oct 2025 05:19:22 GMT","etag":"W/\"d27b3c673afeef9fdcc5804951fa949b\"","last-modified":"Tue, 21 Oct 2025 05:17:24 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}
|
||||||
|
35eba26089167ecbed7d0fe5f165e577ffc2d67b {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/playwright-core","integrity":"sha512-IcoyUQQGKr/l7ocr3/m5Jp+bekTZZqaFsCeB9fSrL/HWLEWH4WQ1cmkUUe8jaUxJZBQTM/8lfeOJWStgN3EW1g==","time":1761023965355,"size":17078481,"metadata":{"time":1761023962346,"url":"https://registry.npmjs.org/playwright-core","reqHeaders":{"accept":"application/json"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/json","date":"Tue, 21 Oct 2025 05:19:22 GMT","etag":"W/\"d27b3c673afeef9fdcc5804951fa949b\"","last-modified":"Tue, 21 Oct 2025 05:17:24 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
c36cb5dcd8bd790d1954c705724f6b91ce4e9e67 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/@playwright%2fmcp","integrity":"sha512-qNtpH7Q9DQS56FXXO6KICwtNXRe4vw8Gkk5CWEn4UYamheUxaDLhXl37zRawuzOSjg/DnUTfWxABfDr6BiwvVQ==","time":1761023961630,"size":297330,"metadata":{"time":1761023961589,"url":"https://registry.npmjs.org/@playwright%2fmcp","reqHeaders":{"accept":"application/json"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/json","date":"Tue, 21 Oct 2025 05:19:21 GMT","etag":"W/\"86eb85b2374016a5c37660cbd6f25fdd\"","last-modified":"Sun, 19 Oct 2025 08:06:23 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}
|
||||||
|
30c12ef8946292257539740acf21c2be538c3b85 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/@playwright%2fmcp","integrity":"sha512-2hT5VvwVBjSanaCKgsQgG7gJIz5FjwRHQw+LUlx8SNjz9ZMitzub4xMiXs0QK2MkDEqeSC674G/0HG9pljk0ow==","time":1761024068168,"size":122908,"metadata":{"time":1761024068168,"url":"https://registry.npmjs.org/@playwright%2fmcp","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","date":"Tue, 21 Oct 2025 05:21:08 GMT","etag":"\"fd331abec481c37728c62444e171ae3b\"","last-modified":"Sun, 19 Oct 2025 08:06:23 GMT","vary":"Accept-Encoding","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json"},"options":{"compress":true}}}
|
||||||
|
0c60943f45f83892aafada063aef1897eeaf0ea7 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/@playwright%2fmcp","integrity":"sha512-2hT5VvwVBjSanaCKgsQgG7gJIz5FjwRHQw+LUlx8SNjz9ZMitzub4xMiXs0QK2MkDEqeSC674G/0HG9pljk0ow==","time":1761024393852,"size":122908,"metadata":{"time":1761024393851,"url":"https://registry.npmjs.org/@playwright%2fmcp","reqHeaders":{"accept":"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*"},"resHeaders":{"cache-control":"public, max-age=300","date":"Tue, 21 Oct 2025 05:26:33 GMT","etag":"\"fd331abec481c37728c62444e171ae3b\"","last-modified":"Sun, 19 Oct 2025 08:06:23 GMT","vary":"Accept-Encoding","content-encoding":"gzip","content-type":"application/vnd.npm.install-v1+json"},"options":{"compress":true}}}
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
e24ba8c1923d657570be4398d44c2e6def523566 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/@img%2fsharp-libvips-darwin-x64","integrity":"sha512-t5fpQBZiexmdBDarF8/Dab1gR1kTT6Mep5x1aSR1NHI8vo/eRIVcLrsLKDYaAaL2xE4qZVwJVVTLLqiABN8reQ==","time":1761024072962,"size":48115,"metadata":{"time":1761024072951,"url":"https://registry.npmjs.org/@img%2fsharp-libvips-darwin-x64","reqHeaders":{"accept":"application/json"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/json","date":"Tue, 21 Oct 2025 05:21:12 GMT","etag":"W/\"f1e58f990a36a5093f87e1fe2ab7905d\"","last-modified":"Wed, 17 Sep 2025 10:34:54 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
53e3c0b600904fca47da1abffdf43a640b37b3ed {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/@img%2fsharp-darwin-arm64","integrity":"sha512-tKkq3S6LvdAVWOfI/Q5EAdhHijbMOsgTDUlffpVs4ThuWChVRvtz7R3OzlNBB0z0mi1yBZtaCXS637pTXlTftg==","time":1761024072866,"size":58537,"metadata":{"time":1761024072819,"url":"https://registry.npmjs.org/@img%2fsharp-darwin-arm64","reqHeaders":{"accept":"application/json"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/json","date":"Tue, 21 Oct 2025 05:21:12 GMT","etag":"W/\"6df8d6d801af4000c6681654af2725ea\"","last-modified":"Wed, 17 Sep 2025 13:19:24 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
4018d15dafc9ab5f4dee141ace8ab81b4e5a034f {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/@img%2fsharp-win32-x64","integrity":"sha512-QhkZZN4XhM/FBfOnE69wyUM+GNWnqcxX2Gaxb8/uqQ21KugEQunWcR4QteLM8GHeLGKjsyuO28hMWapIhSXDUQ==","time":1761024072815,"size":61227,"metadata":{"time":1761024072806,"url":"https://registry.npmjs.org/@img%2fsharp-win32-x64","reqHeaders":{"accept":"application/json"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/json","date":"Tue, 21 Oct 2025 05:21:12 GMT","etag":"W/\"ec6ad35f2fd60d30c1856c938f920175\"","last-modified":"Wed, 17 Sep 2025 13:20:08 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
42cd54502adb54a2427a3018bb4ce698a62b4e44 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/@img%2fsharp-linux-arm64","integrity":"sha512-XWSEsrTrqyUZKyRi+BxGxAbEgXpaau4uThLksZqShdeCo0F3hC+v3mU3Q1FCFN4p9iXTZCAGkP8zvAVn/OCTkw==","time":1761024072867,"size":59459,"metadata":{"time":1761024072857,"url":"https://registry.npmjs.org/@img%2fsharp-linux-arm64","reqHeaders":{"accept":"application/json"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/json","date":"Tue, 21 Oct 2025 05:21:12 GMT","etag":"W/\"fc0ac4d28c2a51645cefda53dcd3e2d5\"","last-modified":"Wed, 17 Sep 2025 13:19:33 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
cb4ebef868eb275b2fe0131e1b512e0892d095ad {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/fsevents","integrity":"sha512-Klf4UxS6xy3of86KfXg7DeVG4hewT4gzCjlYeaMqXhp/bZrOguRWDes1FpGv+OhHgRlb2kgYkLYQUbIJUFDvkA==","time":1761023965646,"size":182472,"metadata":{"time":1761023965637,"url":"https://registry.npmjs.org/fsevents","reqHeaders":{"accept":"application/json"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/json","date":"Tue, 21 Oct 2025 05:19:25 GMT","etag":"W/\"1e06736734002ad46c8fb4363badb304\"","last-modified":"Wed, 18 Sep 2024 05:34:04 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
b5fc71695ef76e3278bbfa14ea4ff65173df12b0 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/@img%2fsharp-linux-arm","integrity":"sha512-A1oO3wyxWJQfkGez8vwxSF8f07VZ1teq7Xd0Si5N4GsiUrMmLnGiKFwldF7suw1kxmfdpw0OogI/PY3DKJwrsA==","time":1761024072811,"size":58964,"metadata":{"time":1761024072792,"url":"https://registry.npmjs.org/@img%2fsharp-linux-arm","reqHeaders":{"accept":"application/json"},"resHeaders":{"cache-control":"public, max-age=300","content-encoding":"gzip","content-type":"application/json","date":"Tue, 21 Oct 2025 05:21:12 GMT","etag":"W/\"964a7a7f11b9d51bda5021f441a582be\"","last-modified":"Wed, 17 Sep 2025 13:19:30 GMT","vary":"accept-encoding, accept"},"options":{"compress":true}}}
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
5c38c854a5acde778069e297150c21863b0a46d5 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz","integrity":"sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==","time":1761024076309,"size":8181067,"metadata":{"time":1761024073139,"url":"https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, must-revalidate, max-age=31557600","content-type":"application/octet-stream","date":"Tue, 21 Oct 2025 05:21:13 GMT","etag":"\"fcc9bacb756f400b47944966cc751dbe\"","last-modified":"Fri, 16 Aug 2024 13:09:59 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
7c05a5671156f26b94ae72840f28736daacfe164 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/@playwright/mcp/-/mcp-0.0.43.tgz","integrity":"sha512-MqZ7AljsV/Z0t02L/IXFbb+uMSRLpoIJanXkFHT62MQSVj92qTyQt/9yey5KlRpBuqOkOw5LoTyGEUqCF4l/lQ==","time":1761023965927,"size":14555,"metadata":{"time":1761023965899,"url":"https://registry.npmjs.org/@playwright/mcp/-/mcp-0.0.43.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, must-revalidate, max-age=31557600","content-type":"application/octet-stream","date":"Tue, 21 Oct 2025 05:19:25 GMT","etag":"\"d4ce438320b6d0cf0c07064db7baccb6\"","last-modified":"Thu, 16 Oct 2025 23:21:35 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
c1b336a78987c2eee1fa3a26d416af7e9e4edde3 {"key":"make-fetch-happen:request-cache:https://registry.npmjs.org/playwright/-/playwright-1.57.0-alpha-2025-10-16.tgz","integrity":"sha512-a1527pq+d/EQRwfoUpnTfjZqA04qs5y3A3HedQZiU6Vicc35VcIIpYin99pklFQdyBd1M9oj9oKFsHbilflo6g==","time":1761023966254,"size":867473,"metadata":{"time":1761023965755,"url":"https://registry.npmjs.org/playwright/-/playwright-1.57.0-alpha-2025-10-16.tgz","reqHeaders":{},"resHeaders":{"cache-control":"public, immutable, max-age=31557600","content-type":"application/octet-stream","date":"Tue, 21 Oct 2025 05:19:25 GMT","etag":"\"3a6c64591d0dbed9f697659a712c8630\"","last-modified":"Thu, 16 Oct 2025 05:17:15 GMT","vary":"Accept-Encoding"},"options":{"compress":true}}}
|
||||||
16
.npm-global/_logs/2025-10-21T05_25_49_574Z-debug-0.log
Normal file
16
.npm-global/_logs/2025-10-21T05_25_49_574Z-debug-0.log
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
0 verbose cli C:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js
|
||||||
|
1 info using npm@10.9.2
|
||||||
|
2 info using node@v22.15.1
|
||||||
|
3 silly config load:file:C:\Program Files\nodejs\node_modules\npm\npmrc
|
||||||
|
4 silly config load:file:C:\Users\KTDS\.npmrc
|
||||||
|
5 silly config load:file:C:\Users\KTDS\.npm-global\etc\npmrc
|
||||||
|
6 verbose title npm config get prefix
|
||||||
|
7 verbose argv "--global" "config" "get" "prefix"
|
||||||
|
8 verbose logfile logs-max:10 dir:C:\Users\KTDS\home\workspace\kt-event-marketing\.npm-global\_logs\2025-10-21T05_25_49_574Z-
|
||||||
|
9 verbose logfile C:\Users\KTDS\home\workspace\kt-event-marketing\.npm-global\_logs\2025-10-21T05_25_49_574Z-debug-0.log
|
||||||
|
10 verbose cwd C:\Users\KTDS\home\workspace\kt-event-marketing
|
||||||
|
11 verbose os Windows_NT 10.0.26100
|
||||||
|
12 verbose node v22.15.1
|
||||||
|
13 verbose npm v10.9.2
|
||||||
|
14 verbose exit 0
|
||||||
|
15 info ok
|
||||||
147
.npm-global/_logs/2025-10-21T05_25_49_913Z-debug-0.log
Normal file
147
.npm-global/_logs/2025-10-21T05_25_49_913Z-debug-0.log
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
0 verbose cli C:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js
|
||||||
|
1 info using npm@10.9.2
|
||||||
|
2 info using node@v22.15.1
|
||||||
|
3 silly config load:file:C:\Program Files\nodejs\node_modules\npm\npmrc
|
||||||
|
4 silly config load:file:C:\Users\KTDS\.npmrc
|
||||||
|
5 silly config load:file:C:\Users\KTDS\.npm-global\etc\npmrc
|
||||||
|
6 verbose title npm install @anthropic-ai/claude-code
|
||||||
|
7 verbose argv "install" "--global" "@anthropic-ai/claude-code"
|
||||||
|
8 verbose logfile logs-max:10 dir:C:\Users\KTDS\home\workspace\kt-event-marketing\.npm-global\_logs\2025-10-21T05_25_49_913Z-
|
||||||
|
9 verbose logfile C:\Users\KTDS\home\workspace\kt-event-marketing\.npm-global\_logs\2025-10-21T05_25_49_913Z-debug-0.log
|
||||||
|
10 silly packumentCache heap:4345298944 maxSize:1086324736 maxEntrySize:543162368
|
||||||
|
11 silly logfile start cleaning logs, removing 3 files
|
||||||
|
12 silly idealTree buildDeps
|
||||||
|
13 silly fetch manifest @anthropic-ai/claude-code@*
|
||||||
|
14 silly packumentCache full:https://registry.npmjs.org/@anthropic-ai%2fclaude-code cache-miss
|
||||||
|
15 silly logfile done cleaning log files
|
||||||
|
16 http cache https://registry.npmjs.org/@anthropic-ai%2fclaude-code 21ms (cache hit)
|
||||||
|
17 silly packumentCache full:https://registry.npmjs.org/@anthropic-ai%2fclaude-code set size:593659 disposed:false
|
||||||
|
18 silly placeDep ROOT @anthropic-ai/claude-code@2.0.24 OK for: want: *
|
||||||
|
19 silly fetch manifest @img/sharp-linux-arm@^0.33.5
|
||||||
|
20 silly packumentCache full:https://registry.npmjs.org/@img%2fsharp-linux-arm cache-miss
|
||||||
|
21 silly fetch manifest @img/sharp-linux-x64@^0.33.5
|
||||||
|
22 silly packumentCache full:https://registry.npmjs.org/@img%2fsharp-linux-x64 cache-miss
|
||||||
|
23 silly fetch manifest @img/sharp-win32-x64@^0.33.5
|
||||||
|
24 silly packumentCache full:https://registry.npmjs.org/@img%2fsharp-win32-x64 cache-miss
|
||||||
|
25 silly fetch manifest @img/sharp-darwin-x64@^0.33.5
|
||||||
|
26 silly packumentCache full:https://registry.npmjs.org/@img%2fsharp-darwin-x64 cache-miss
|
||||||
|
27 silly fetch manifest @img/sharp-linux-arm64@^0.33.5
|
||||||
|
28 silly packumentCache full:https://registry.npmjs.org/@img%2fsharp-linux-arm64 cache-miss
|
||||||
|
29 silly fetch manifest @img/sharp-darwin-arm64@^0.33.5
|
||||||
|
30 silly packumentCache full:https://registry.npmjs.org/@img%2fsharp-darwin-arm64 cache-miss
|
||||||
|
31 http cache https://registry.npmjs.org/@img%2fsharp-win32-x64 16ms (cache hit)
|
||||||
|
32 silly packumentCache full:https://registry.npmjs.org/@img%2fsharp-win32-x64 set size:61227 disposed:false
|
||||||
|
33 http cache https://registry.npmjs.org/@img%2fsharp-linux-arm 19ms (cache hit)
|
||||||
|
34 silly packumentCache full:https://registry.npmjs.org/@img%2fsharp-linux-arm set size:58964 disposed:false
|
||||||
|
35 http cache https://registry.npmjs.org/@img%2fsharp-linux-x64 19ms (cache hit)
|
||||||
|
36 silly packumentCache full:https://registry.npmjs.org/@img%2fsharp-linux-x64 set size:58661 disposed:false
|
||||||
|
37 http cache https://registry.npmjs.org/@img%2fsharp-linux-arm64 19ms (cache hit)
|
||||||
|
38 silly packumentCache full:https://registry.npmjs.org/@img%2fsharp-linux-arm64 set size:59459 disposed:false
|
||||||
|
39 http cache https://registry.npmjs.org/@img%2fsharp-darwin-x64 21ms (cache hit)
|
||||||
|
40 silly packumentCache full:https://registry.npmjs.org/@img%2fsharp-darwin-x64 set size:57736 disposed:false
|
||||||
|
41 http cache https://registry.npmjs.org/@img%2fsharp-darwin-arm64 21ms (cache hit)
|
||||||
|
42 silly packumentCache full:https://registry.npmjs.org/@img%2fsharp-darwin-arm64 set size:58537 disposed:false
|
||||||
|
43 silly placeDep node_modules/@anthropic-ai/claude-code @img/sharp-darwin-arm64@0.33.5 OK for: @anthropic-ai/claude-code@2.0.24 want: ^0.33.5
|
||||||
|
44 silly placeDep node_modules/@anthropic-ai/claude-code @img/sharp-darwin-x64@0.33.5 OK for: @anthropic-ai/claude-code@2.0.24 want: ^0.33.5
|
||||||
|
45 silly placeDep node_modules/@anthropic-ai/claude-code @img/sharp-linux-arm@0.33.5 OK for: @anthropic-ai/claude-code@2.0.24 want: ^0.33.5
|
||||||
|
46 silly placeDep node_modules/@anthropic-ai/claude-code @img/sharp-linux-arm64@0.33.5 OK for: @anthropic-ai/claude-code@2.0.24 want: ^0.33.5
|
||||||
|
47 silly placeDep node_modules/@anthropic-ai/claude-code @img/sharp-linux-x64@0.33.5 OK for: @anthropic-ai/claude-code@2.0.24 want: ^0.33.5
|
||||||
|
48 silly placeDep node_modules/@anthropic-ai/claude-code @img/sharp-win32-x64@0.33.5 OK for: @anthropic-ai/claude-code@2.0.24 want: ^0.33.5
|
||||||
|
49 silly fetch manifest @img/sharp-libvips-darwin-arm64@1.0.4
|
||||||
|
50 silly packumentCache full:https://registry.npmjs.org/@img%2fsharp-libvips-darwin-arm64 cache-miss
|
||||||
|
51 silly fetch manifest @img/sharp-libvips-darwin-x64@1.0.4
|
||||||
|
52 silly packumentCache full:https://registry.npmjs.org/@img%2fsharp-libvips-darwin-x64 cache-miss
|
||||||
|
53 silly fetch manifest @img/sharp-libvips-linux-arm@1.0.5
|
||||||
|
54 silly packumentCache full:https://registry.npmjs.org/@img%2fsharp-libvips-linux-arm cache-miss
|
||||||
|
55 silly fetch manifest @img/sharp-libvips-linux-arm64@1.0.4
|
||||||
|
56 silly packumentCache full:https://registry.npmjs.org/@img%2fsharp-libvips-linux-arm64 cache-miss
|
||||||
|
57 silly fetch manifest @img/sharp-libvips-linux-x64@1.0.4
|
||||||
|
58 silly packumentCache full:https://registry.npmjs.org/@img%2fsharp-libvips-linux-x64 cache-miss
|
||||||
|
59 http cache https://registry.npmjs.org/@img%2fsharp-libvips-darwin-arm64 11ms (cache hit)
|
||||||
|
60 silly packumentCache full:https://registry.npmjs.org/@img%2fsharp-libvips-darwin-arm64 set size:48626 disposed:false
|
||||||
|
61 http cache https://registry.npmjs.org/@img%2fsharp-libvips-linux-x64 12ms (cache hit)
|
||||||
|
62 silly packumentCache full:https://registry.npmjs.org/@img%2fsharp-libvips-linux-x64 set size:52698 disposed:false
|
||||||
|
63 http cache https://registry.npmjs.org/@img%2fsharp-libvips-darwin-x64 15ms (cache hit)
|
||||||
|
64 silly packumentCache full:https://registry.npmjs.org/@img%2fsharp-libvips-darwin-x64 set size:48115 disposed:false
|
||||||
|
65 http cache https://registry.npmjs.org/@img%2fsharp-libvips-linux-arm 16ms (cache hit)
|
||||||
|
66 silly packumentCache full:https://registry.npmjs.org/@img%2fsharp-libvips-linux-arm set size:54624 disposed:false
|
||||||
|
67 http cache https://registry.npmjs.org/@img%2fsharp-libvips-linux-arm64 16ms (cache hit)
|
||||||
|
68 silly packumentCache full:https://registry.npmjs.org/@img%2fsharp-libvips-linux-arm64 set size:51425 disposed:false
|
||||||
|
69 silly placeDep node_modules/@anthropic-ai/claude-code @img/sharp-libvips-darwin-arm64@1.0.4 OK for: @img/sharp-darwin-arm64@0.33.5 want: 1.0.4
|
||||||
|
70 silly placeDep node_modules/@anthropic-ai/claude-code @img/sharp-libvips-darwin-x64@1.0.4 OK for: @img/sharp-darwin-x64@0.33.5 want: 1.0.4
|
||||||
|
71 silly placeDep node_modules/@anthropic-ai/claude-code @img/sharp-libvips-linux-arm@1.0.5 OK for: @img/sharp-linux-arm@0.33.5 want: 1.0.5
|
||||||
|
72 silly placeDep node_modules/@anthropic-ai/claude-code @img/sharp-libvips-linux-arm64@1.0.4 OK for: @img/sharp-linux-arm64@0.33.5 want: 1.0.4
|
||||||
|
73 silly placeDep node_modules/@anthropic-ai/claude-code @img/sharp-libvips-linux-x64@1.0.4 OK for: @img/sharp-linux-x64@0.33.5 want: 1.0.4
|
||||||
|
74 silly reify mark retired [
|
||||||
|
74 silly reify 'C:\\Users\\KTDS\\.npm-global\\node_modules\\@anthropic-ai\\claude-code',
|
||||||
|
74 silly reify 'C:\\Users\\KTDS\\.npm-global\\claude',
|
||||||
|
74 silly reify 'C:\\Users\\KTDS\\.npm-global\\claude.cmd',
|
||||||
|
74 silly reify 'C:\\Users\\KTDS\\.npm-global\\claude.ps1'
|
||||||
|
74 silly reify ]
|
||||||
|
75 silly reify moves {
|
||||||
|
75 silly reify 'C:\\Users\\KTDS\\.npm-global\\node_modules\\@anthropic-ai\\claude-code': 'C:\\Users\\KTDS\\.npm-global\\node_modules\\@anthropic-ai\\.claude-code-y1rxyKnA',
|
||||||
|
75 silly reify 'C:\\Users\\KTDS\\.npm-global\\claude': 'C:\\Users\\KTDS\\.npm-global\\.claude-AMO2TXmM',
|
||||||
|
75 silly reify 'C:\\Users\\KTDS\\.npm-global\\claude.cmd': 'C:\\Users\\KTDS\\.npm-global\\.claude.cmd-kPIJ9J4C',
|
||||||
|
75 silly reify 'C:\\Users\\KTDS\\.npm-global\\claude.ps1': 'C:\\Users\\KTDS\\.npm-global\\.claude.ps1-eRSB3SOJ'
|
||||||
|
75 silly reify }
|
||||||
|
76 verbose reify failed optional dependency C:\Users\KTDS\.npm-global\node_modules\@anthropic-ai\claude-code\node_modules\@img\sharp-libvips-linux-x64
|
||||||
|
77 silly reify mark deleted [
|
||||||
|
77 silly reify 'C:\\Users\\KTDS\\.npm-global\\node_modules\\@anthropic-ai\\claude-code\\node_modules\\@img\\sharp-libvips-linux-x64'
|
||||||
|
77 silly reify ]
|
||||||
|
78 verbose reify failed optional dependency C:\Users\KTDS\.npm-global\node_modules\@anthropic-ai\claude-code\node_modules\@img\sharp-libvips-linux-arm64
|
||||||
|
79 silly reify mark deleted [
|
||||||
|
79 silly reify 'C:\\Users\\KTDS\\.npm-global\\node_modules\\@anthropic-ai\\claude-code\\node_modules\\@img\\sharp-libvips-linux-arm64'
|
||||||
|
79 silly reify ]
|
||||||
|
80 verbose reify failed optional dependency C:\Users\KTDS\.npm-global\node_modules\@anthropic-ai\claude-code\node_modules\@img\sharp-libvips-linux-arm
|
||||||
|
81 silly reify mark deleted [
|
||||||
|
81 silly reify 'C:\\Users\\KTDS\\.npm-global\\node_modules\\@anthropic-ai\\claude-code\\node_modules\\@img\\sharp-libvips-linux-arm'
|
||||||
|
81 silly reify ]
|
||||||
|
82 verbose reify failed optional dependency C:\Users\KTDS\.npm-global\node_modules\@anthropic-ai\claude-code\node_modules\@img\sharp-libvips-darwin-x64
|
||||||
|
83 silly reify mark deleted [
|
||||||
|
83 silly reify 'C:\\Users\\KTDS\\.npm-global\\node_modules\\@anthropic-ai\\claude-code\\node_modules\\@img\\sharp-libvips-darwin-x64'
|
||||||
|
83 silly reify ]
|
||||||
|
84 verbose reify failed optional dependency C:\Users\KTDS\.npm-global\node_modules\@anthropic-ai\claude-code\node_modules\@img\sharp-libvips-darwin-arm64
|
||||||
|
85 silly reify mark deleted [
|
||||||
|
85 silly reify 'C:\\Users\\KTDS\\.npm-global\\node_modules\\@anthropic-ai\\claude-code\\node_modules\\@img\\sharp-libvips-darwin-arm64'
|
||||||
|
85 silly reify ]
|
||||||
|
86 verbose reify failed optional dependency C:\Users\KTDS\.npm-global\node_modules\@anthropic-ai\claude-code\node_modules\@img\sharp-linux-x64
|
||||||
|
87 silly reify mark deleted [
|
||||||
|
87 silly reify 'C:\\Users\\KTDS\\.npm-global\\node_modules\\@anthropic-ai\\claude-code\\node_modules\\@img\\sharp-linux-x64'
|
||||||
|
87 silly reify ]
|
||||||
|
88 verbose reify failed optional dependency C:\Users\KTDS\.npm-global\node_modules\@anthropic-ai\claude-code\node_modules\@img\sharp-linux-arm64
|
||||||
|
89 silly reify mark deleted [
|
||||||
|
89 silly reify 'C:\\Users\\KTDS\\.npm-global\\node_modules\\@anthropic-ai\\claude-code\\node_modules\\@img\\sharp-linux-arm64'
|
||||||
|
89 silly reify ]
|
||||||
|
90 verbose reify failed optional dependency C:\Users\KTDS\.npm-global\node_modules\@anthropic-ai\claude-code\node_modules\@img\sharp-linux-arm
|
||||||
|
91 silly reify mark deleted [
|
||||||
|
91 silly reify 'C:\\Users\\KTDS\\.npm-global\\node_modules\\@anthropic-ai\\claude-code\\node_modules\\@img\\sharp-linux-arm'
|
||||||
|
91 silly reify ]
|
||||||
|
92 verbose reify failed optional dependency C:\Users\KTDS\.npm-global\node_modules\@anthropic-ai\claude-code\node_modules\@img\sharp-darwin-x64
|
||||||
|
93 silly reify mark deleted [
|
||||||
|
93 silly reify 'C:\\Users\\KTDS\\.npm-global\\node_modules\\@anthropic-ai\\claude-code\\node_modules\\@img\\sharp-darwin-x64'
|
||||||
|
93 silly reify ]
|
||||||
|
94 verbose reify failed optional dependency C:\Users\KTDS\.npm-global\node_modules\@anthropic-ai\claude-code\node_modules\@img\sharp-darwin-arm64
|
||||||
|
95 silly reify mark deleted [
|
||||||
|
95 silly reify 'C:\\Users\\KTDS\\.npm-global\\node_modules\\@anthropic-ai\\claude-code\\node_modules\\@img\\sharp-darwin-arm64'
|
||||||
|
95 silly reify ]
|
||||||
|
96 http cache @anthropic-ai/claude-code@https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-2.0.24.tgz 0ms (cache hit)
|
||||||
|
97 http cache @img/sharp-win32-x64@https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz 0ms (cache hit)
|
||||||
|
98 silly CHANGE node_modules/@anthropic-ai/claude-code
|
||||||
|
99 silly ADD
|
||||||
|
100 silly ADD
|
||||||
|
101 silly ADD
|
||||||
|
102 silly ADD
|
||||||
|
103 silly ADD
|
||||||
|
104 silly ADD
|
||||||
|
105 silly ADD
|
||||||
|
106 silly ADD
|
||||||
|
107 silly ADD
|
||||||
|
108 silly ADD
|
||||||
|
109 silly CHANGE node_modules/@anthropic-ai/claude-code/node_modules/@img/sharp-win32-x64
|
||||||
|
110 verbose cwd C:\Users\KTDS\home\workspace\kt-event-marketing
|
||||||
|
111 verbose os Windows_NT 10.0.26100
|
||||||
|
112 verbose node v22.15.1
|
||||||
|
113 verbose npm v10.9.2
|
||||||
|
114 verbose exit 0
|
||||||
|
115 info ok
|
||||||
|
116 error A complete log of this run can be found in: C:\Users\KTDS\home\workspace\kt-event-marketing\.npm-global\_logs\2025-10-21T05_25_49_913Z-debug-0.log
|
||||||
18
.npm-global/_logs/2025-10-21T05_26_27_364Z-debug-0.log
Normal file
18
.npm-global/_logs/2025-10-21T05_26_27_364Z-debug-0.log
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
0 verbose cli C:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js
|
||||||
|
1 info using npm@10.9.2
|
||||||
|
2 info using node@v22.15.1
|
||||||
|
3 silly config load:file:C:\Program Files\nodejs\node_modules\npm\npmrc
|
||||||
|
4 silly config load:file:C:\Users\KTDS\home\workspace\kt-event-marketing\.npmrc
|
||||||
|
5 silly config load:file:C:\Users\KTDS\.npmrc
|
||||||
|
6 silly config load:file:C:\Users\KTDS\.npm-global\etc\npmrc
|
||||||
|
7 verbose title npm config get prefix
|
||||||
|
8 verbose argv "config" "get" "prefix"
|
||||||
|
9 verbose logfile logs-max:10 dir:C:\Users\KTDS\home\workspace\kt-event-marketing\.npm-global\_logs\2025-10-21T05_26_27_364Z-
|
||||||
|
10 verbose logfile C:\Users\KTDS\home\workspace\kt-event-marketing\.npm-global\_logs\2025-10-21T05_26_27_364Z-debug-0.log
|
||||||
|
11 silly logfile start cleaning logs, removing 1 files
|
||||||
|
12 verbose cwd C:\Users\KTDS\home\workspace\kt-event-marketing
|
||||||
|
13 verbose os Windows_NT 10.0.26100
|
||||||
|
14 verbose node v22.15.1
|
||||||
|
15 verbose npm v10.9.2
|
||||||
|
16 verbose exit 0
|
||||||
|
17 info ok
|
||||||
18
.npm-global/_logs/2025-10-21T05_26_33_321Z-debug-0.log
Normal file
18
.npm-global/_logs/2025-10-21T05_26_33_321Z-debug-0.log
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
0 verbose cli C:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js
|
||||||
|
1 info using npm@10.9.2
|
||||||
|
2 info using node@v22.15.1
|
||||||
|
3 silly config load:file:C:\Program Files\nodejs\node_modules\npm\npmrc
|
||||||
|
4 silly config load:file:C:\Users\KTDS\home\workspace\kt-event-marketing\.npmrc
|
||||||
|
5 silly config load:file:C:\Users\KTDS\.npmrc
|
||||||
|
6 silly config load:file:C:\Users\KTDS\.npm-global\etc\npmrc
|
||||||
|
7 verbose title npm config get prefix
|
||||||
|
8 verbose argv "config" "get" "prefix"
|
||||||
|
9 verbose logfile logs-max:10 dir:C:\Users\KTDS\home\workspace\kt-event-marketing\.npm-global\_logs\2025-10-21T05_26_33_321Z-
|
||||||
|
10 verbose logfile C:\Users\KTDS\home\workspace\kt-event-marketing\.npm-global\_logs\2025-10-21T05_26_33_321Z-debug-0.log
|
||||||
|
11 silly logfile start cleaning logs, removing 3 files
|
||||||
|
12 verbose cwd C:\Users\KTDS\home\workspace\kt-event-marketing
|
||||||
|
13 verbose os Windows_NT 10.0.26100
|
||||||
|
14 verbose node v22.15.1
|
||||||
|
15 verbose npm v10.9.2
|
||||||
|
16 verbose exit 0
|
||||||
|
17 info ok
|
||||||
18
.npm-global/_logs/2025-10-21T05_26_33_628Z-debug-0.log
Normal file
18
.npm-global/_logs/2025-10-21T05_26_33_628Z-debug-0.log
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
0 verbose cli C:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js
|
||||||
|
1 info using npm@10.9.2
|
||||||
|
2 info using node@v22.15.1
|
||||||
|
3 silly config load:file:C:\Program Files\nodejs\node_modules\npm\npmrc
|
||||||
|
4 silly config load:file:C:\Users\KTDS\home\workspace\kt-event-marketing\.npmrc
|
||||||
|
5 silly config load:file:C:\Users\KTDS\.npmrc
|
||||||
|
6 silly config load:file:C:\Users\KTDS\.npm-global\etc\npmrc
|
||||||
|
7 verbose title npm config get prefix
|
||||||
|
8 verbose argv "config" "get" "prefix"
|
||||||
|
9 verbose logfile logs-max:10 dir:C:\Users\KTDS\home\workspace\kt-event-marketing\.npm-global\_logs\2025-10-21T05_26_33_628Z-
|
||||||
|
10 verbose logfile C:\Users\KTDS\home\workspace\kt-event-marketing\.npm-global\_logs\2025-10-21T05_26_33_628Z-debug-0.log
|
||||||
|
11 silly logfile start cleaning logs, removing 2 files
|
||||||
|
12 verbose cwd C:\Users\KTDS\home\workspace\kt-event-marketing
|
||||||
|
13 verbose os Windows_NT 10.0.26100
|
||||||
|
14 verbose node v22.15.1
|
||||||
|
15 verbose npm v10.9.2
|
||||||
|
16 verbose exit 0
|
||||||
|
17 info ok
|
||||||
18
.npm-global/_logs/2025-10-21T05_26_33_973Z-debug-0.log
Normal file
18
.npm-global/_logs/2025-10-21T05_26_33_973Z-debug-0.log
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
0 verbose cli C:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js
|
||||||
|
1 info using npm@10.9.2
|
||||||
|
2 info using node@v22.15.1
|
||||||
|
3 silly config load:file:C:\Program Files\nodejs\node_modules\npm\npmrc
|
||||||
|
4 silly config load:file:C:\Users\KTDS\home\workspace\kt-event-marketing\.npmrc
|
||||||
|
5 silly config load:file:C:\Users\KTDS\.npmrc
|
||||||
|
6 silly config load:file:C:\Users\KTDS\.npm-global\etc\npmrc
|
||||||
|
7 verbose title npm config get prefix
|
||||||
|
8 verbose argv "config" "get" "prefix"
|
||||||
|
9 verbose logfile logs-max:10 dir:C:\Users\KTDS\home\workspace\kt-event-marketing\.npm-global\_logs\2025-10-21T05_26_33_973Z-
|
||||||
|
10 verbose logfile C:\Users\KTDS\home\workspace\kt-event-marketing\.npm-global\_logs\2025-10-21T05_26_33_973Z-debug-0.log
|
||||||
|
11 silly logfile start cleaning logs, removing 3 files
|
||||||
|
12 verbose cwd C:\Users\KTDS\home\workspace\kt-event-marketing
|
||||||
|
13 verbose os Windows_NT 10.0.26100
|
||||||
|
14 verbose node v22.15.1
|
||||||
|
15 verbose npm v10.9.2
|
||||||
|
16 verbose exit 0
|
||||||
|
17 info ok
|
||||||
20
.npm-global/_logs/2025-10-21T05_26_35_483Z-debug-0.log
Normal file
20
.npm-global/_logs/2025-10-21T05_26_35_483Z-debug-0.log
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
0 verbose cli C:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js
|
||||||
|
1 info using npm@10.9.2
|
||||||
|
2 info using node@v22.15.1
|
||||||
|
3 silly config load:file:C:\Program Files\nodejs\node_modules\npm\npmrc
|
||||||
|
4 silly config load:file:C:\Users\KTDS\home\workspace\kt-event-marketing\.npmrc
|
||||||
|
5 silly config load:file:C:\Users\KTDS\.npmrc
|
||||||
|
6 silly config load:file:C:\Users\KTDS\.npm-global\etc\npmrc
|
||||||
|
7 verbose title npm view @anthropic-ai/claude-code@latest version
|
||||||
|
8 verbose argv "view" "@anthropic-ai/claude-code@latest" "version"
|
||||||
|
9 verbose logfile logs-max:10 dir:C:\Users\KTDS\home\workspace\kt-event-marketing\.npm-global\_logs\2025-10-21T05_26_35_483Z-
|
||||||
|
10 verbose logfile C:\Users\KTDS\home\workspace\kt-event-marketing\.npm-global\_logs\2025-10-21T05_26_35_483Z-debug-0.log
|
||||||
|
11 silly logfile start cleaning logs, removing 4 files
|
||||||
|
12 silly logfile done cleaning log files
|
||||||
|
13 http fetch GET 200 https://registry.npmjs.org/@anthropic-ai%2fclaude-code 165ms (cache revalidated)
|
||||||
|
14 verbose cwd C:\Users\KTDS\home\workspace\kt-event-marketing
|
||||||
|
15 verbose os Windows_NT 10.0.26100
|
||||||
|
16 verbose node v22.15.1
|
||||||
|
17 verbose npm v10.9.2
|
||||||
|
18 verbose exit 0
|
||||||
|
19 info ok
|
||||||
18
.npm-global/_logs/2025-10-21T05_28_38_102Z-debug-0.log
Normal file
18
.npm-global/_logs/2025-10-21T05_28_38_102Z-debug-0.log
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
0 verbose cli C:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js
|
||||||
|
1 info using npm@10.9.2
|
||||||
|
2 info using node@v22.15.1
|
||||||
|
3 silly config load:file:C:\Program Files\nodejs\node_modules\npm\npmrc
|
||||||
|
4 silly config load:file:C:\Users\KTDS\home\workspace\kt-event-marketing\.npmrc
|
||||||
|
5 silly config load:file:C:\Users\KTDS\.npmrc
|
||||||
|
6 silly config load:file:C:\Users\KTDS\.npm-global\etc\npmrc
|
||||||
|
7 verbose title npm config get prefix
|
||||||
|
8 verbose argv "config" "get" "prefix"
|
||||||
|
9 verbose logfile logs-max:10 dir:C:\Users\KTDS\home\workspace\kt-event-marketing\.npm-global\_logs\2025-10-21T05_28_38_102Z-
|
||||||
|
10 verbose logfile C:\Users\KTDS\home\workspace\kt-event-marketing\.npm-global\_logs\2025-10-21T05_28_38_102Z-debug-0.log
|
||||||
|
11 silly logfile start cleaning logs, removing 1 files
|
||||||
|
12 verbose cwd C:\Users\KTDS\home\workspace\kt-event-marketing
|
||||||
|
13 verbose os Windows_NT 10.0.26100
|
||||||
|
14 verbose node v22.15.1
|
||||||
|
15 verbose npm v10.9.2
|
||||||
|
16 verbose exit 0
|
||||||
|
17 info ok
|
||||||
18
.npm-global/_logs/2025-10-21T05_28_38_403Z-debug-0.log
Normal file
18
.npm-global/_logs/2025-10-21T05_28_38_403Z-debug-0.log
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
0 verbose cli C:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js
|
||||||
|
1 info using npm@10.9.2
|
||||||
|
2 info using node@v22.15.1
|
||||||
|
3 silly config load:file:C:\Program Files\nodejs\node_modules\npm\npmrc
|
||||||
|
4 silly config load:file:C:\Users\KTDS\home\workspace\kt-event-marketing\.npmrc
|
||||||
|
5 silly config load:file:C:\Users\KTDS\.npmrc
|
||||||
|
6 silly config load:file:C:\Users\KTDS\.npm-global\etc\npmrc
|
||||||
|
7 verbose title npm config get prefix
|
||||||
|
8 verbose argv "config" "get" "prefix"
|
||||||
|
9 verbose logfile logs-max:10 dir:C:\Users\KTDS\home\workspace\kt-event-marketing\.npm-global\_logs\2025-10-21T05_28_38_403Z-
|
||||||
|
10 verbose logfile C:\Users\KTDS\home\workspace\kt-event-marketing\.npm-global\_logs\2025-10-21T05_28_38_403Z-debug-0.log
|
||||||
|
11 silly logfile start cleaning logs, removing 2 files
|
||||||
|
12 verbose cwd C:\Users\KTDS\home\workspace\kt-event-marketing
|
||||||
|
13 verbose os Windows_NT 10.0.26100
|
||||||
|
14 verbose node v22.15.1
|
||||||
|
15 verbose npm v10.9.2
|
||||||
|
16 verbose exit 0
|
||||||
|
17 info ok
|
||||||
20
.npm-global/_logs/2025-10-21T05_28_38_760Z-debug-0.log
Normal file
20
.npm-global/_logs/2025-10-21T05_28_38_760Z-debug-0.log
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
0 verbose cli C:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js
|
||||||
|
1 info using npm@10.9.2
|
||||||
|
2 info using node@v22.15.1
|
||||||
|
3 silly config load:file:C:\Program Files\nodejs\node_modules\npm\npmrc
|
||||||
|
4 silly config load:file:C:\Users\KTDS\home\workspace\kt-event-marketing\.npmrc
|
||||||
|
5 silly config load:file:C:\Users\KTDS\.npmrc
|
||||||
|
6 silly config load:file:C:\Users\KTDS\.npm-global\etc\npmrc
|
||||||
|
7 verbose title npm view @anthropic-ai/claude-code@latest version
|
||||||
|
8 verbose argv "view" "@anthropic-ai/claude-code@latest" "version"
|
||||||
|
9 verbose logfile logs-max:10 dir:C:\Users\KTDS\home\workspace\kt-event-marketing\.npm-global\_logs\2025-10-21T05_28_38_760Z-
|
||||||
|
10 verbose logfile C:\Users\KTDS\home\workspace\kt-event-marketing\.npm-global\_logs\2025-10-21T05_28_38_760Z-debug-0.log
|
||||||
|
11 silly logfile start cleaning logs, removing 3 files
|
||||||
|
12 silly logfile done cleaning log files
|
||||||
|
13 http fetch GET 200 https://registry.npmjs.org/@anthropic-ai%2fclaude-code 194ms (cache revalidated)
|
||||||
|
14 verbose cwd C:\Users\KTDS\home\workspace\kt-event-marketing
|
||||||
|
15 verbose os Windows_NT 10.0.26100
|
||||||
|
16 verbose node v22.15.1
|
||||||
|
17 verbose npm v10.9.2
|
||||||
|
18 verbose exit 0
|
||||||
|
19 info ok
|
||||||
16
.npm-global/_npx/9833c18b2d85bc59/node_modules/.bin/mcp-server-playwright
generated
vendored
Normal file
16
.npm-global/_npx/9833c18b2d85bc59/node_modules/.bin/mcp-server-playwright
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||||
|
|
||||||
|
case `uname` in
|
||||||
|
*CYGWIN*|*MINGW*|*MSYS*)
|
||||||
|
if command -v cygpath > /dev/null 2>&1; then
|
||||||
|
basedir=`cygpath -w "$basedir"`
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -x "$basedir/node" ]; then
|
||||||
|
exec "$basedir/node" "$basedir/../@playwright/mcp/cli.js" "$@"
|
||||||
|
else
|
||||||
|
exec node "$basedir/../@playwright/mcp/cli.js" "$@"
|
||||||
|
fi
|
||||||
17
.npm-global/_npx/9833c18b2d85bc59/node_modules/.bin/mcp-server-playwright.cmd
generated
vendored
Normal file
17
.npm-global/_npx/9833c18b2d85bc59/node_modules/.bin/mcp-server-playwright.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
@ECHO off
|
||||||
|
GOTO start
|
||||||
|
:find_dp0
|
||||||
|
SET dp0=%~dp0
|
||||||
|
EXIT /b
|
||||||
|
:start
|
||||||
|
SETLOCAL
|
||||||
|
CALL :find_dp0
|
||||||
|
|
||||||
|
IF EXIST "%dp0%\node.exe" (
|
||||||
|
SET "_prog=%dp0%\node.exe"
|
||||||
|
) ELSE (
|
||||||
|
SET "_prog=node"
|
||||||
|
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||||
|
)
|
||||||
|
|
||||||
|
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\@playwright\mcp\cli.js" %*
|
||||||
28
.npm-global/_npx/9833c18b2d85bc59/node_modules/.bin/mcp-server-playwright.ps1
generated
vendored
Normal file
28
.npm-global/_npx/9833c18b2d85bc59/node_modules/.bin/mcp-server-playwright.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env pwsh
|
||||||
|
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||||
|
|
||||||
|
$exe=""
|
||||||
|
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||||
|
# Fix case when both the Windows and Linux builds of Node
|
||||||
|
# are installed in the same directory
|
||||||
|
$exe=".exe"
|
||||||
|
}
|
||||||
|
$ret=0
|
||||||
|
if (Test-Path "$basedir/node$exe") {
|
||||||
|
# Support pipeline input
|
||||||
|
if ($MyInvocation.ExpectingInput) {
|
||||||
|
$input | & "$basedir/node$exe" "$basedir/../@playwright/mcp/cli.js" $args
|
||||||
|
} else {
|
||||||
|
& "$basedir/node$exe" "$basedir/../@playwright/mcp/cli.js" $args
|
||||||
|
}
|
||||||
|
$ret=$LASTEXITCODE
|
||||||
|
} else {
|
||||||
|
# Support pipeline input
|
||||||
|
if ($MyInvocation.ExpectingInput) {
|
||||||
|
$input | & "node$exe" "$basedir/../@playwright/mcp/cli.js" $args
|
||||||
|
} else {
|
||||||
|
& "node$exe" "$basedir/../@playwright/mcp/cli.js" $args
|
||||||
|
}
|
||||||
|
$ret=$LASTEXITCODE
|
||||||
|
}
|
||||||
|
exit $ret
|
||||||
16
.npm-global/_npx/9833c18b2d85bc59/node_modules/.bin/playwright
generated
vendored
Normal file
16
.npm-global/_npx/9833c18b2d85bc59/node_modules/.bin/playwright
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||||
|
|
||||||
|
case `uname` in
|
||||||
|
*CYGWIN*|*MINGW*|*MSYS*)
|
||||||
|
if command -v cygpath > /dev/null 2>&1; then
|
||||||
|
basedir=`cygpath -w "$basedir"`
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -x "$basedir/node" ]; then
|
||||||
|
exec "$basedir/node" "$basedir/../playwright/cli.js" "$@"
|
||||||
|
else
|
||||||
|
exec node "$basedir/../playwright/cli.js" "$@"
|
||||||
|
fi
|
||||||
16
.npm-global/_npx/9833c18b2d85bc59/node_modules/.bin/playwright-core
generated
vendored
Normal file
16
.npm-global/_npx/9833c18b2d85bc59/node_modules/.bin/playwright-core
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
||||||
|
|
||||||
|
case `uname` in
|
||||||
|
*CYGWIN*|*MINGW*|*MSYS*)
|
||||||
|
if command -v cygpath > /dev/null 2>&1; then
|
||||||
|
basedir=`cygpath -w "$basedir"`
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -x "$basedir/node" ]; then
|
||||||
|
exec "$basedir/node" "$basedir/../playwright-core/cli.js" "$@"
|
||||||
|
else
|
||||||
|
exec node "$basedir/../playwright-core/cli.js" "$@"
|
||||||
|
fi
|
||||||
17
.npm-global/_npx/9833c18b2d85bc59/node_modules/.bin/playwright-core.cmd
generated
vendored
Normal file
17
.npm-global/_npx/9833c18b2d85bc59/node_modules/.bin/playwright-core.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
@ECHO off
|
||||||
|
GOTO start
|
||||||
|
:find_dp0
|
||||||
|
SET dp0=%~dp0
|
||||||
|
EXIT /b
|
||||||
|
:start
|
||||||
|
SETLOCAL
|
||||||
|
CALL :find_dp0
|
||||||
|
|
||||||
|
IF EXIST "%dp0%\node.exe" (
|
||||||
|
SET "_prog=%dp0%\node.exe"
|
||||||
|
) ELSE (
|
||||||
|
SET "_prog=node"
|
||||||
|
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||||
|
)
|
||||||
|
|
||||||
|
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\playwright-core\cli.js" %*
|
||||||
28
.npm-global/_npx/9833c18b2d85bc59/node_modules/.bin/playwright-core.ps1
generated
vendored
Normal file
28
.npm-global/_npx/9833c18b2d85bc59/node_modules/.bin/playwright-core.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env pwsh
|
||||||
|
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||||
|
|
||||||
|
$exe=""
|
||||||
|
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||||
|
# Fix case when both the Windows and Linux builds of Node
|
||||||
|
# are installed in the same directory
|
||||||
|
$exe=".exe"
|
||||||
|
}
|
||||||
|
$ret=0
|
||||||
|
if (Test-Path "$basedir/node$exe") {
|
||||||
|
# Support pipeline input
|
||||||
|
if ($MyInvocation.ExpectingInput) {
|
||||||
|
$input | & "$basedir/node$exe" "$basedir/../playwright-core/cli.js" $args
|
||||||
|
} else {
|
||||||
|
& "$basedir/node$exe" "$basedir/../playwright-core/cli.js" $args
|
||||||
|
}
|
||||||
|
$ret=$LASTEXITCODE
|
||||||
|
} else {
|
||||||
|
# Support pipeline input
|
||||||
|
if ($MyInvocation.ExpectingInput) {
|
||||||
|
$input | & "node$exe" "$basedir/../playwright-core/cli.js" $args
|
||||||
|
} else {
|
||||||
|
& "node$exe" "$basedir/../playwright-core/cli.js" $args
|
||||||
|
}
|
||||||
|
$ret=$LASTEXITCODE
|
||||||
|
}
|
||||||
|
exit $ret
|
||||||
17
.npm-global/_npx/9833c18b2d85bc59/node_modules/.bin/playwright.cmd
generated
vendored
Normal file
17
.npm-global/_npx/9833c18b2d85bc59/node_modules/.bin/playwright.cmd
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
@ECHO off
|
||||||
|
GOTO start
|
||||||
|
:find_dp0
|
||||||
|
SET dp0=%~dp0
|
||||||
|
EXIT /b
|
||||||
|
:start
|
||||||
|
SETLOCAL
|
||||||
|
CALL :find_dp0
|
||||||
|
|
||||||
|
IF EXIST "%dp0%\node.exe" (
|
||||||
|
SET "_prog=%dp0%\node.exe"
|
||||||
|
) ELSE (
|
||||||
|
SET "_prog=node"
|
||||||
|
SET PATHEXT=%PATHEXT:;.JS;=;%
|
||||||
|
)
|
||||||
|
|
||||||
|
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\playwright\cli.js" %*
|
||||||
28
.npm-global/_npx/9833c18b2d85bc59/node_modules/.bin/playwright.ps1
generated
vendored
Normal file
28
.npm-global/_npx/9833c18b2d85bc59/node_modules/.bin/playwright.ps1
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env pwsh
|
||||||
|
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
|
||||||
|
|
||||||
|
$exe=""
|
||||||
|
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
|
||||||
|
# Fix case when both the Windows and Linux builds of Node
|
||||||
|
# are installed in the same directory
|
||||||
|
$exe=".exe"
|
||||||
|
}
|
||||||
|
$ret=0
|
||||||
|
if (Test-Path "$basedir/node$exe") {
|
||||||
|
# Support pipeline input
|
||||||
|
if ($MyInvocation.ExpectingInput) {
|
||||||
|
$input | & "$basedir/node$exe" "$basedir/../playwright/cli.js" $args
|
||||||
|
} else {
|
||||||
|
& "$basedir/node$exe" "$basedir/../playwright/cli.js" $args
|
||||||
|
}
|
||||||
|
$ret=$LASTEXITCODE
|
||||||
|
} else {
|
||||||
|
# Support pipeline input
|
||||||
|
if ($MyInvocation.ExpectingInput) {
|
||||||
|
$input | & "node$exe" "$basedir/../playwright/cli.js" $args
|
||||||
|
} else {
|
||||||
|
& "node$exe" "$basedir/../playwright/cli.js" $args
|
||||||
|
}
|
||||||
|
$ret=$LASTEXITCODE
|
||||||
|
}
|
||||||
|
exit $ret
|
||||||
53
.npm-global/_npx/9833c18b2d85bc59/node_modules/.package-lock.json
generated
vendored
Normal file
53
.npm-global/_npx/9833c18b2d85bc59/node_modules/.package-lock.json
generated
vendored
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
{
|
||||||
|
"name": "9833c18b2d85bc59",
|
||||||
|
"lockfileVersion": 3,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"node_modules/@playwright/mcp": {
|
||||||
|
"version": "0.0.43",
|
||||||
|
"resolved": "https://registry.npmjs.org/@playwright/mcp/-/mcp-0.0.43.tgz",
|
||||||
|
"integrity": "sha512-MqZ7AljsV/Z0t02L/IXFbb+uMSRLpoIJanXkFHT62MQSVj92qTyQt/9yey5KlRpBuqOkOw5LoTyGEUqCF4l/lQ==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"playwright": "1.57.0-alpha-2025-10-16",
|
||||||
|
"playwright-core": "1.57.0-alpha-2025-10-16"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"mcp-server-playwright": "cli.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/playwright": {
|
||||||
|
"version": "1.57.0-alpha-2025-10-16",
|
||||||
|
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0-alpha-2025-10-16.tgz",
|
||||||
|
"integrity": "sha512-a1527pq+d/EQRwfoUpnTfjZqA04qs5y3A3HedQZiU6Vicc35VcIIpYin99pklFQdyBd1M9oj9oKFsHbilflo6g==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"playwright-core": "1.57.0-alpha-2025-10-16"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"playwright": "cli.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"fsevents": "2.3.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/playwright-core": {
|
||||||
|
"version": "1.57.0-alpha-2025-10-16",
|
||||||
|
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0-alpha-2025-10-16.tgz",
|
||||||
|
"integrity": "sha512-QfB4sdxqkxN3mrBii/Fqh65qSggrPbcDMJcsqjwsShn1lxbX48P8WuNNSdF05lwDfgS3BsQBkay3SdY3caueAg==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"bin": {
|
||||||
|
"playwright-core": "cli.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
202
.npm-global/_npx/9833c18b2d85bc59/node_modules/@playwright/mcp/LICENSE
generated
vendored
Normal file
202
.npm-global/_npx/9833c18b2d85bc59/node_modules/@playwright/mcp/LICENSE
generated
vendored
Normal file
@ -0,0 +1,202 @@
|
|||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Portions Copyright (c) Microsoft Corporation.
|
||||||
|
Portions Copyright 2017 Google Inc.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
888
.npm-global/_npx/9833c18b2d85bc59/node_modules/@playwright/mcp/README.md
generated
vendored
Normal file
888
.npm-global/_npx/9833c18b2d85bc59/node_modules/@playwright/mcp/README.md
generated
vendored
Normal file
@ -0,0 +1,888 @@
|
|||||||
|
## Playwright MCP
|
||||||
|
|
||||||
|
A Model Context Protocol (MCP) server that provides browser automation capabilities using [Playwright](https://playwright.dev). This server enables LLMs to interact with web pages through structured accessibility snapshots, bypassing the need for screenshots or visually-tuned models.
|
||||||
|
|
||||||
|
### Key Features
|
||||||
|
|
||||||
|
- **Fast and lightweight**. Uses Playwright's accessibility tree, not pixel-based input.
|
||||||
|
- **LLM-friendly**. No vision models needed, operates purely on structured data.
|
||||||
|
- **Deterministic tool application**. Avoids ambiguity common with screenshot-based approaches.
|
||||||
|
|
||||||
|
### Requirements
|
||||||
|
- Node.js 18 or newer
|
||||||
|
- VS Code, Cursor, Windsurf, Claude Desktop, Goose or any other MCP client
|
||||||
|
|
||||||
|
<!--
|
||||||
|
// Generate using:
|
||||||
|
node utils/generate-links.js
|
||||||
|
-->
|
||||||
|
|
||||||
|
### Getting started
|
||||||
|
|
||||||
|
First, install the Playwright MCP server with your client.
|
||||||
|
|
||||||
|
**Standard config** works in most of the tools:
|
||||||
|
|
||||||
|
```js
|
||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"playwright": {
|
||||||
|
"command": "npx",
|
||||||
|
"args": [
|
||||||
|
"@playwright/mcp@latest"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
[<img src="https://img.shields.io/badge/VS_Code-VS_Code?style=flat-square&label=Install%20Server&color=0098FF" alt="Install in VS Code">](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522playwright%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522%2540playwright%252Fmcp%2540latest%2522%255D%257D) [<img alt="Install in VS Code Insiders" src="https://img.shields.io/badge/VS_Code_Insiders-VS_Code_Insiders?style=flat-square&label=Install%20Server&color=24bfa5">](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522playwright%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522%2540playwright%252Fmcp%2540latest%2522%255D%257D)
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Amp</summary>
|
||||||
|
|
||||||
|
Add via the Amp VS Code extension settings screen or by updating your settings.json file:
|
||||||
|
|
||||||
|
```json
|
||||||
|
"amp.mcpServers": {
|
||||||
|
"playwright": {
|
||||||
|
"command": "npx",
|
||||||
|
"args": [
|
||||||
|
"@playwright/mcp@latest"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Amp CLI Setup:**
|
||||||
|
|
||||||
|
Add via the `amp mcp add`command below
|
||||||
|
|
||||||
|
```bash
|
||||||
|
amp mcp add playwright -- npx @playwright/mcp@latest
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Claude Code</summary>
|
||||||
|
|
||||||
|
Use the Claude Code CLI to add the Playwright MCP server:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
claude mcp add playwright npx @playwright/mcp@latest
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Claude Desktop</summary>
|
||||||
|
|
||||||
|
Follow the MCP install [guide](https://modelcontextprotocol.io/quickstart/user), use the standard config above.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Codex</summary>
|
||||||
|
|
||||||
|
Create or edit the configuration file `~/.codex/config.toml` and add:
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[mcp_servers.playwright]
|
||||||
|
command = "npx"
|
||||||
|
args = ["@playwright/mcp@latest"]
|
||||||
|
```
|
||||||
|
|
||||||
|
For more information, see the [Codex MCP documentation](https://github.com/openai/codex/blob/main/codex-rs/config.md#mcp_servers).
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Cursor</summary>
|
||||||
|
|
||||||
|
#### Click the button to install:
|
||||||
|
|
||||||
|
[<img src="https://cursor.com/deeplink/mcp-install-dark.svg" alt="Install in Cursor">](https://cursor.com/en/install-mcp?name=Playwright&config=eyJjb21tYW5kIjoibnB4IEBwbGF5d3JpZ2h0L21jcEBsYXRlc3QifQ%3D%3D)
|
||||||
|
|
||||||
|
#### Or install manually:
|
||||||
|
|
||||||
|
Go to `Cursor Settings` -> `MCP` -> `Add new MCP Server`. Name to your liking, use `command` type with the command `npx @playwright/mcp@latest`. You can also verify config or add command like arguments via clicking `Edit`.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Gemini CLI</summary>
|
||||||
|
|
||||||
|
Follow the MCP install [guide](https://github.com/google-gemini/gemini-cli/blob/main/docs/tools/mcp-server.md#configure-the-mcp-server-in-settingsjson), use the standard config above.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Goose</summary>
|
||||||
|
|
||||||
|
#### Click the button to install:
|
||||||
|
|
||||||
|
[](https://block.github.io/goose/extension?cmd=npx&arg=%40playwright%2Fmcp%40latest&id=playwright&name=Playwright&description=Interact%20with%20web%20pages%20through%20structured%20accessibility%20snapshots%20using%20Playwright)
|
||||||
|
|
||||||
|
#### Or install manually:
|
||||||
|
|
||||||
|
Go to `Advanced settings` -> `Extensions` -> `Add custom extension`. Name to your liking, use type `STDIO`, and set the `command` to `npx @playwright/mcp`. Click "Add Extension".
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>LM Studio</summary>
|
||||||
|
|
||||||
|
#### Click the button to install:
|
||||||
|
|
||||||
|
[](https://lmstudio.ai/install-mcp?name=playwright&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyJAcGxheXdyaWdodC9tY3BAbGF0ZXN0Il19)
|
||||||
|
|
||||||
|
#### Or install manually:
|
||||||
|
|
||||||
|
Go to `Program` in the right sidebar -> `Install` -> `Edit mcp.json`. Use the standard config above.
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>opencode</summary>
|
||||||
|
|
||||||
|
Follow the MCP Servers [documentation](https://opencode.ai/docs/mcp-servers/). For example in `~/.config/opencode/opencode.json`:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"$schema": "https://opencode.ai/config.json",
|
||||||
|
"mcp": {
|
||||||
|
"playwright": {
|
||||||
|
"type": "local",
|
||||||
|
"command": [
|
||||||
|
"npx",
|
||||||
|
"@playwright/mcp@latest"
|
||||||
|
],
|
||||||
|
"enabled": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Qodo Gen</summary>
|
||||||
|
|
||||||
|
Open [Qodo Gen](https://docs.qodo.ai/qodo-documentation/qodo-gen) chat panel in VSCode or IntelliJ → Connect more tools → + Add new MCP → Paste the standard config above.
|
||||||
|
|
||||||
|
Click <code>Save</code>.
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>VS Code</summary>
|
||||||
|
|
||||||
|
#### Click the button to install:
|
||||||
|
|
||||||
|
[<img src="https://img.shields.io/badge/VS_Code-VS_Code?style=flat-square&label=Install%20Server&color=0098FF" alt="Install in VS Code">](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522playwright%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522%2540playwright%252Fmcp%2540latest%2522%255D%257D) [<img alt="Install in VS Code Insiders" src="https://img.shields.io/badge/VS_Code_Insiders-VS_Code_Insiders?style=flat-square&label=Install%20Server&color=24bfa5">](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522playwright%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522%2540playwright%252Fmcp%2540latest%2522%255D%257D)
|
||||||
|
|
||||||
|
#### Or install manually:
|
||||||
|
|
||||||
|
Follow the MCP install [guide](https://code.visualstudio.com/docs/copilot/chat/mcp-servers#_add-an-mcp-server), use the standard config above. You can also install the Playwright MCP server using the VS Code CLI:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# For VS Code
|
||||||
|
code --add-mcp '{"name":"playwright","command":"npx","args":["@playwright/mcp@latest"]}'
|
||||||
|
```
|
||||||
|
|
||||||
|
After installation, the Playwright MCP server will be available for use with your GitHub Copilot agent in VS Code.
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Warp</summary>
|
||||||
|
|
||||||
|
Go to `Settings` -> `AI` -> `Manage MCP Servers` -> `+ Add` to [add an MCP Server](https://docs.warp.dev/knowledge-and-collaboration/mcp#adding-an-mcp-server). Use the standard config above.
|
||||||
|
|
||||||
|
Alternatively, use the slash command `/add-mcp` in the Warp prompt and paste the standard config from above:
|
||||||
|
```js
|
||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"playwright": {
|
||||||
|
"command": "npx",
|
||||||
|
"args": [
|
||||||
|
"@playwright/mcp@latest"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Windsurf</summary>
|
||||||
|
|
||||||
|
Follow Windsurf MCP [documentation](https://docs.windsurf.com/windsurf/cascade/mcp). Use the standard config above.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
### Configuration
|
||||||
|
|
||||||
|
Playwright MCP server supports following arguments. They can be provided in the JSON configuration above, as a part of the `"args"` list:
|
||||||
|
|
||||||
|
<!--- Options generated by update-readme.js -->
|
||||||
|
|
||||||
|
```
|
||||||
|
> npx @playwright/mcp@latest --help
|
||||||
|
--allowed-hosts <hosts...> comma-separated list of hosts this
|
||||||
|
server is allowed to serve from.
|
||||||
|
Defaults to the host the server is bound
|
||||||
|
to. Pass '*' to disable the host check.
|
||||||
|
--allowed-origins <origins> semicolon-separated list of origins to
|
||||||
|
allow the browser to request. Default is
|
||||||
|
to allow all.
|
||||||
|
--blocked-origins <origins> semicolon-separated list of origins to
|
||||||
|
block the browser from requesting.
|
||||||
|
Blocklist is evaluated before allowlist.
|
||||||
|
If used without the allowlist, requests
|
||||||
|
not matching the blocklist are still
|
||||||
|
allowed.
|
||||||
|
--block-service-workers block service workers
|
||||||
|
--browser <browser> browser or chrome channel to use,
|
||||||
|
possible values: chrome, firefox,
|
||||||
|
webkit, msedge.
|
||||||
|
--caps <caps> comma-separated list of additional
|
||||||
|
capabilities to enable, possible values:
|
||||||
|
vision, pdf.
|
||||||
|
--cdp-endpoint <endpoint> CDP endpoint to connect to.
|
||||||
|
--cdp-header <headers...> CDP headers to send with the connect
|
||||||
|
request, multiple can be specified.
|
||||||
|
--config <path> path to the configuration file.
|
||||||
|
--device <device> device to emulate, for example: "iPhone
|
||||||
|
15"
|
||||||
|
--executable-path <path> path to the browser executable.
|
||||||
|
--extension Connect to a running browser instance
|
||||||
|
(Edge/Chrome only). Requires the
|
||||||
|
"Playwright MCP Bridge" browser
|
||||||
|
extension to be installed.
|
||||||
|
--grant-permissions <permissions...> List of permissions to grant to the
|
||||||
|
browser context, for example
|
||||||
|
"geolocation", "clipboard-read",
|
||||||
|
"clipboard-write".
|
||||||
|
--headless run browser in headless mode, headed by
|
||||||
|
default
|
||||||
|
--host <host> host to bind server to. Default is
|
||||||
|
localhost. Use 0.0.0.0 to bind to all
|
||||||
|
interfaces.
|
||||||
|
--ignore-https-errors ignore https errors
|
||||||
|
--init-script <path...> path to JavaScript file to add as an
|
||||||
|
initialization script. The script will
|
||||||
|
be evaluated in every page before any of
|
||||||
|
the page's scripts. Can be specified
|
||||||
|
multiple times.
|
||||||
|
--isolated keep the browser profile in memory, do
|
||||||
|
not save it to disk.
|
||||||
|
--image-responses <mode> whether to send image responses to the
|
||||||
|
client. Can be "allow" or "omit",
|
||||||
|
Defaults to "allow".
|
||||||
|
--no-sandbox disable the sandbox for all process
|
||||||
|
types that are normally sandboxed.
|
||||||
|
--output-dir <path> path to the directory for output files.
|
||||||
|
--port <port> port to listen on for SSE transport.
|
||||||
|
--proxy-bypass <bypass> comma-separated domains to bypass proxy,
|
||||||
|
for example
|
||||||
|
".com,chromium.org,.domain.com"
|
||||||
|
--proxy-server <proxy> specify proxy server, for example
|
||||||
|
"http://myproxy:3128" or
|
||||||
|
"socks5://myproxy:8080"
|
||||||
|
--save-session Whether to save the Playwright MCP
|
||||||
|
session into the output directory.
|
||||||
|
--save-trace Whether to save the Playwright Trace of
|
||||||
|
the session into the output directory.
|
||||||
|
--save-video <size> Whether to save the video of the session
|
||||||
|
into the output directory. For example
|
||||||
|
"--save-video=800x600"
|
||||||
|
--secrets <path> path to a file containing secrets in the
|
||||||
|
dotenv format
|
||||||
|
--shared-browser-context reuse the same browser context between
|
||||||
|
all connected HTTP clients.
|
||||||
|
--storage-state <path> path to the storage state file for
|
||||||
|
isolated sessions.
|
||||||
|
--test-id-attribute <attribute> specify the attribute to use for test
|
||||||
|
ids, defaults to "data-testid"
|
||||||
|
--timeout-action <timeout> specify action timeout in milliseconds,
|
||||||
|
defaults to 5000ms
|
||||||
|
--timeout-navigation <timeout> specify navigation timeout in
|
||||||
|
milliseconds, defaults to 60000ms
|
||||||
|
--user-agent <ua string> specify user agent string
|
||||||
|
--user-data-dir <path> path to the user data directory. If not
|
||||||
|
specified, a temporary directory will be
|
||||||
|
created.
|
||||||
|
--viewport-size <size> specify browser viewport size in pixels,
|
||||||
|
for example "1280x720"
|
||||||
|
```
|
||||||
|
|
||||||
|
<!--- End of options generated section -->
|
||||||
|
|
||||||
|
### User profile
|
||||||
|
|
||||||
|
You can run Playwright MCP with persistent profile like a regular browser (default), in isolated contexts for testing sessions, or connect to your existing browser using the browser extension.
|
||||||
|
|
||||||
|
**Persistent profile**
|
||||||
|
|
||||||
|
All the logged in information will be stored in the persistent profile, you can delete it between sessions if you'd like to clear the offline state.
|
||||||
|
Persistent profile is located at the following locations and you can override it with the `--user-data-dir` argument.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Windows
|
||||||
|
%USERPROFILE%\AppData\Local\ms-playwright\mcp-{channel}-profile
|
||||||
|
|
||||||
|
# macOS
|
||||||
|
- ~/Library/Caches/ms-playwright/mcp-{channel}-profile
|
||||||
|
|
||||||
|
# Linux
|
||||||
|
- ~/.cache/ms-playwright/mcp-{channel}-profile
|
||||||
|
```
|
||||||
|
|
||||||
|
**Isolated**
|
||||||
|
|
||||||
|
In the isolated mode, each session is started in the isolated profile. Every time you ask MCP to close the browser,
|
||||||
|
the session is closed and all the storage state for this session is lost. You can provide initial storage state
|
||||||
|
to the browser via the config's `contextOptions` or via the `--storage-state` argument. Learn more about the storage
|
||||||
|
state [here](https://playwright.dev/docs/auth).
|
||||||
|
|
||||||
|
```js
|
||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"playwright": {
|
||||||
|
"command": "npx",
|
||||||
|
"args": [
|
||||||
|
"@playwright/mcp@latest",
|
||||||
|
"--isolated",
|
||||||
|
"--storage-state={path/to/storage.json}"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Browser Extension**
|
||||||
|
|
||||||
|
The Playwright MCP Chrome Extension allows you to connect to existing browser tabs and leverage your logged-in sessions and browser state. See [extension/README.md](extension/README.md) for installation and setup instructions.
|
||||||
|
|
||||||
|
### Configuration file
|
||||||
|
|
||||||
|
The Playwright MCP server can be configured using a JSON configuration file. You can specify the configuration file
|
||||||
|
using the `--config` command line option:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npx @playwright/mcp@latest --config path/to/config.json
|
||||||
|
```
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Configuration file schema</summary>
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
{
|
||||||
|
// Browser configuration
|
||||||
|
browser?: {
|
||||||
|
// Browser type to use (chromium, firefox, or webkit)
|
||||||
|
browserName?: 'chromium' | 'firefox' | 'webkit';
|
||||||
|
|
||||||
|
// Keep the browser profile in memory, do not save it to disk.
|
||||||
|
isolated?: boolean;
|
||||||
|
|
||||||
|
// Path to user data directory for browser profile persistence
|
||||||
|
userDataDir?: string;
|
||||||
|
|
||||||
|
// Browser launch options (see Playwright docs)
|
||||||
|
// @see https://playwright.dev/docs/api/class-browsertype#browser-type-launch
|
||||||
|
launchOptions?: {
|
||||||
|
channel?: string; // Browser channel (e.g. 'chrome')
|
||||||
|
headless?: boolean; // Run in headless mode
|
||||||
|
executablePath?: string; // Path to browser executable
|
||||||
|
// ... other Playwright launch options
|
||||||
|
};
|
||||||
|
|
||||||
|
// Browser context options
|
||||||
|
// @see https://playwright.dev/docs/api/class-browser#browser-new-context
|
||||||
|
contextOptions?: {
|
||||||
|
viewport?: { width: number, height: number };
|
||||||
|
// ... other Playwright context options
|
||||||
|
};
|
||||||
|
|
||||||
|
// CDP endpoint for connecting to existing browser
|
||||||
|
cdpEndpoint?: string;
|
||||||
|
|
||||||
|
// Remote Playwright server endpoint
|
||||||
|
remoteEndpoint?: string;
|
||||||
|
},
|
||||||
|
|
||||||
|
// Server configuration
|
||||||
|
server?: {
|
||||||
|
port?: number; // Port to listen on
|
||||||
|
host?: string; // Host to bind to (default: localhost)
|
||||||
|
},
|
||||||
|
|
||||||
|
// List of additional capabilities
|
||||||
|
capabilities?: Array<
|
||||||
|
'tabs' | // Tab management
|
||||||
|
'install' | // Browser installation
|
||||||
|
'pdf' | // PDF generation
|
||||||
|
'vision' | // Coordinate-based interactions
|
||||||
|
>;
|
||||||
|
|
||||||
|
// Directory for output files
|
||||||
|
outputDir?: string;
|
||||||
|
|
||||||
|
// Network configuration
|
||||||
|
network?: {
|
||||||
|
// List of origins to allow the browser to request. Default is to allow all. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
|
||||||
|
allowedOrigins?: string[];
|
||||||
|
|
||||||
|
// List of origins to block the browser to request. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
|
||||||
|
blockedOrigins?: string[];
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether to send image responses to the client. Can be "allow" or "omit".
|
||||||
|
* Defaults to "allow".
|
||||||
|
*/
|
||||||
|
imageResponses?: 'allow' | 'omit';
|
||||||
|
}
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
|
### Standalone MCP server
|
||||||
|
|
||||||
|
When running headed browser on system w/o display or from worker processes of the IDEs,
|
||||||
|
run the MCP server from environment with the DISPLAY and pass the `--port` flag to enable HTTP transport.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npx @playwright/mcp@latest --port 8931
|
||||||
|
```
|
||||||
|
|
||||||
|
And then in MCP client config, set the `url` to the HTTP endpoint:
|
||||||
|
|
||||||
|
```js
|
||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"playwright": {
|
||||||
|
"url": "http://localhost:8931/mcp"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><b>Docker</b></summary>
|
||||||
|
|
||||||
|
**NOTE:** The Docker implementation only supports headless chromium at the moment.
|
||||||
|
|
||||||
|
```js
|
||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"playwright": {
|
||||||
|
"command": "docker",
|
||||||
|
"args": ["run", "-i", "--rm", "--init", "--pull=always", "mcr.microsoft.com/playwright/mcp"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Or If you prefer to run the container as a long-lived service instead of letting the MCP client spawn it, use:
|
||||||
|
|
||||||
|
```
|
||||||
|
docker run -d -i --rm --init --pull=always \
|
||||||
|
--entrypoint node \
|
||||||
|
--name playwright \
|
||||||
|
-p 8931:8931 \
|
||||||
|
mcr.microsoft.com/playwright/mcp \
|
||||||
|
cli.js --headless --browser chromium --no-sandbox --port 8931
|
||||||
|
```
|
||||||
|
|
||||||
|
The server will listen on host port **8931** and can be reached by any MCP client.
|
||||||
|
|
||||||
|
You can build the Docker image yourself.
|
||||||
|
|
||||||
|
```
|
||||||
|
docker build -t mcr.microsoft.com/playwright/mcp .
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><b>Programmatic usage</b></summary>
|
||||||
|
|
||||||
|
```js
|
||||||
|
import http from 'http';
|
||||||
|
|
||||||
|
import { createConnection } from '@playwright/mcp';
|
||||||
|
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
|
||||||
|
|
||||||
|
http.createServer(async (req, res) => {
|
||||||
|
// ...
|
||||||
|
|
||||||
|
// Creates a headless Playwright MCP server with SSE transport
|
||||||
|
const connection = await createConnection({ browser: { launchOptions: { headless: true } } });
|
||||||
|
const transport = new SSEServerTransport('/messages', res);
|
||||||
|
await connection.connect(transport);
|
||||||
|
|
||||||
|
// ...
|
||||||
|
});
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
|
### Tools
|
||||||
|
|
||||||
|
<!--- Tools generated by update-readme.js -->
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><b>Core automation</b></summary>
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_click**
|
||||||
|
- Title: Click
|
||||||
|
- Description: Perform click on a web page
|
||||||
|
- Parameters:
|
||||||
|
- `element` (string): Human-readable element description used to obtain permission to interact with the element
|
||||||
|
- `ref` (string): Exact target element reference from the page snapshot
|
||||||
|
- `doubleClick` (boolean, optional): Whether to perform a double click instead of a single click
|
||||||
|
- `button` (string, optional): Button to click, defaults to left
|
||||||
|
- `modifiers` (array, optional): Modifier keys to press
|
||||||
|
- Read-only: **false**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_close**
|
||||||
|
- Title: Close browser
|
||||||
|
- Description: Close the page
|
||||||
|
- Parameters: None
|
||||||
|
- Read-only: **false**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_console_messages**
|
||||||
|
- Title: Get console messages
|
||||||
|
- Description: Returns all console messages
|
||||||
|
- Parameters:
|
||||||
|
- `onlyErrors` (boolean, optional): Only return error messages
|
||||||
|
- Read-only: **true**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_drag**
|
||||||
|
- Title: Drag mouse
|
||||||
|
- Description: Perform drag and drop between two elements
|
||||||
|
- Parameters:
|
||||||
|
- `startElement` (string): Human-readable source element description used to obtain the permission to interact with the element
|
||||||
|
- `startRef` (string): Exact source element reference from the page snapshot
|
||||||
|
- `endElement` (string): Human-readable target element description used to obtain the permission to interact with the element
|
||||||
|
- `endRef` (string): Exact target element reference from the page snapshot
|
||||||
|
- Read-only: **false**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_evaluate**
|
||||||
|
- Title: Evaluate JavaScript
|
||||||
|
- Description: Evaluate JavaScript expression on page or element
|
||||||
|
- Parameters:
|
||||||
|
- `function` (string): () => { /* code */ } or (element) => { /* code */ } when element is provided
|
||||||
|
- `element` (string, optional): Human-readable element description used to obtain permission to interact with the element
|
||||||
|
- `ref` (string, optional): Exact target element reference from the page snapshot
|
||||||
|
- Read-only: **false**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_file_upload**
|
||||||
|
- Title: Upload files
|
||||||
|
- Description: Upload one or multiple files
|
||||||
|
- Parameters:
|
||||||
|
- `paths` (array, optional): The absolute paths to the files to upload. Can be single file or multiple files. If omitted, file chooser is cancelled.
|
||||||
|
- Read-only: **false**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_fill_form**
|
||||||
|
- Title: Fill form
|
||||||
|
- Description: Fill multiple form fields
|
||||||
|
- Parameters:
|
||||||
|
- `fields` (array): Fields to fill in
|
||||||
|
- Read-only: **false**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_handle_dialog**
|
||||||
|
- Title: Handle a dialog
|
||||||
|
- Description: Handle a dialog
|
||||||
|
- Parameters:
|
||||||
|
- `accept` (boolean): Whether to accept the dialog.
|
||||||
|
- `promptText` (string, optional): The text of the prompt in case of a prompt dialog.
|
||||||
|
- Read-only: **false**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_hover**
|
||||||
|
- Title: Hover mouse
|
||||||
|
- Description: Hover over element on page
|
||||||
|
- Parameters:
|
||||||
|
- `element` (string): Human-readable element description used to obtain permission to interact with the element
|
||||||
|
- `ref` (string): Exact target element reference from the page snapshot
|
||||||
|
- Read-only: **false**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_navigate**
|
||||||
|
- Title: Navigate to a URL
|
||||||
|
- Description: Navigate to a URL
|
||||||
|
- Parameters:
|
||||||
|
- `url` (string): The URL to navigate to
|
||||||
|
- Read-only: **false**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_navigate_back**
|
||||||
|
- Title: Go back
|
||||||
|
- Description: Go back to the previous page
|
||||||
|
- Parameters: None
|
||||||
|
- Read-only: **false**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_network_requests**
|
||||||
|
- Title: List network requests
|
||||||
|
- Description: Returns all network requests since loading the page
|
||||||
|
- Parameters: None
|
||||||
|
- Read-only: **true**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_press_key**
|
||||||
|
- Title: Press a key
|
||||||
|
- Description: Press a key on the keyboard
|
||||||
|
- Parameters:
|
||||||
|
- `key` (string): Name of the key to press or a character to generate, such as `ArrowLeft` or `a`
|
||||||
|
- Read-only: **false**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_resize**
|
||||||
|
- Title: Resize browser window
|
||||||
|
- Description: Resize the browser window
|
||||||
|
- Parameters:
|
||||||
|
- `width` (number): Width of the browser window
|
||||||
|
- `height` (number): Height of the browser window
|
||||||
|
- Read-only: **false**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_select_option**
|
||||||
|
- Title: Select option
|
||||||
|
- Description: Select an option in a dropdown
|
||||||
|
- Parameters:
|
||||||
|
- `element` (string): Human-readable element description used to obtain permission to interact with the element
|
||||||
|
- `ref` (string): Exact target element reference from the page snapshot
|
||||||
|
- `values` (array): Array of values to select in the dropdown. This can be a single value or multiple values.
|
||||||
|
- Read-only: **false**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_snapshot**
|
||||||
|
- Title: Page snapshot
|
||||||
|
- Description: Capture accessibility snapshot of the current page, this is better than screenshot
|
||||||
|
- Parameters: None
|
||||||
|
- Read-only: **true**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_take_screenshot**
|
||||||
|
- Title: Take a screenshot
|
||||||
|
- Description: Take a screenshot of the current page. You can't perform actions based on the screenshot, use browser_snapshot for actions.
|
||||||
|
- Parameters:
|
||||||
|
- `type` (string, optional): Image format for the screenshot. Default is png.
|
||||||
|
- `filename` (string, optional): File name to save the screenshot to. Defaults to `page-{timestamp}.{png|jpeg}` if not specified. Prefer relative file names to stay within the output directory.
|
||||||
|
- `element` (string, optional): Human-readable element description used to obtain permission to screenshot the element. If not provided, the screenshot will be taken of viewport. If element is provided, ref must be provided too.
|
||||||
|
- `ref` (string, optional): Exact target element reference from the page snapshot. If not provided, the screenshot will be taken of viewport. If ref is provided, element must be provided too.
|
||||||
|
- `fullPage` (boolean, optional): When true, takes a screenshot of the full scrollable page, instead of the currently visible viewport. Cannot be used with element screenshots.
|
||||||
|
- Read-only: **true**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_type**
|
||||||
|
- Title: Type text
|
||||||
|
- Description: Type text into editable element
|
||||||
|
- Parameters:
|
||||||
|
- `element` (string): Human-readable element description used to obtain permission to interact with the element
|
||||||
|
- `ref` (string): Exact target element reference from the page snapshot
|
||||||
|
- `text` (string): Text to type into the element
|
||||||
|
- `submit` (boolean, optional): Whether to submit entered text (press Enter after)
|
||||||
|
- `slowly` (boolean, optional): Whether to type one character at a time. Useful for triggering key handlers in the page. By default entire text is filled in at once.
|
||||||
|
- Read-only: **false**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_wait_for**
|
||||||
|
- Title: Wait for
|
||||||
|
- Description: Wait for text to appear or disappear or a specified time to pass
|
||||||
|
- Parameters:
|
||||||
|
- `time` (number, optional): The time to wait in seconds
|
||||||
|
- `text` (string, optional): The text to wait for
|
||||||
|
- `textGone` (string, optional): The text to wait for to disappear
|
||||||
|
- Read-only: **false**
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><b>Tab management</b></summary>
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_tabs**
|
||||||
|
- Title: Manage tabs
|
||||||
|
- Description: List, create, close, or select a browser tab.
|
||||||
|
- Parameters:
|
||||||
|
- `action` (string): Operation to perform
|
||||||
|
- `index` (number, optional): Tab index, used for close/select. If omitted for close, current tab is closed.
|
||||||
|
- Read-only: **false**
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><b>Browser installation</b></summary>
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_install**
|
||||||
|
- Title: Install the browser specified in the config
|
||||||
|
- Description: Install the browser specified in the config. Call this if you get an error about the browser not being installed.
|
||||||
|
- Parameters: None
|
||||||
|
- Read-only: **false**
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><b>Coordinate-based (opt-in via --caps=vision)</b></summary>
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_mouse_click_xy**
|
||||||
|
- Title: Click
|
||||||
|
- Description: Click left mouse button at a given position
|
||||||
|
- Parameters:
|
||||||
|
- `element` (string): Human-readable element description used to obtain permission to interact with the element
|
||||||
|
- `x` (number): X coordinate
|
||||||
|
- `y` (number): Y coordinate
|
||||||
|
- Read-only: **false**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_mouse_drag_xy**
|
||||||
|
- Title: Drag mouse
|
||||||
|
- Description: Drag left mouse button to a given position
|
||||||
|
- Parameters:
|
||||||
|
- `element` (string): Human-readable element description used to obtain permission to interact with the element
|
||||||
|
- `startX` (number): Start X coordinate
|
||||||
|
- `startY` (number): Start Y coordinate
|
||||||
|
- `endX` (number): End X coordinate
|
||||||
|
- `endY` (number): End Y coordinate
|
||||||
|
- Read-only: **false**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_mouse_move_xy**
|
||||||
|
- Title: Move mouse
|
||||||
|
- Description: Move mouse to a given position
|
||||||
|
- Parameters:
|
||||||
|
- `element` (string): Human-readable element description used to obtain permission to interact with the element
|
||||||
|
- `x` (number): X coordinate
|
||||||
|
- `y` (number): Y coordinate
|
||||||
|
- Read-only: **false**
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><b>PDF generation (opt-in via --caps=pdf)</b></summary>
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_pdf_save**
|
||||||
|
- Title: Save as PDF
|
||||||
|
- Description: Save page as PDF
|
||||||
|
- Parameters:
|
||||||
|
- `filename` (string, optional): File name to save the pdf to. Defaults to `page-{timestamp}.pdf` if not specified. Prefer relative file names to stay within the output directory.
|
||||||
|
- Read-only: **true**
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><b>Test assertions (opt-in via --caps=testing)</b></summary>
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_generate_locator**
|
||||||
|
- Title: Create locator for element
|
||||||
|
- Description: Generate locator for the given element to use in tests
|
||||||
|
- Parameters:
|
||||||
|
- `element` (string): Human-readable element description used to obtain permission to interact with the element
|
||||||
|
- `ref` (string): Exact target element reference from the page snapshot
|
||||||
|
- Read-only: **true**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_verify_element_visible**
|
||||||
|
- Title: Verify element visible
|
||||||
|
- Description: Verify element is visible on the page
|
||||||
|
- Parameters:
|
||||||
|
- `role` (string): ROLE of the element. Can be found in the snapshot like this: `- {ROLE} "Accessible Name":`
|
||||||
|
- `accessibleName` (string): ACCESSIBLE_NAME of the element. Can be found in the snapshot like this: `- role "{ACCESSIBLE_NAME}"`
|
||||||
|
- Read-only: **false**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_verify_list_visible**
|
||||||
|
- Title: Verify list visible
|
||||||
|
- Description: Verify list is visible on the page
|
||||||
|
- Parameters:
|
||||||
|
- `element` (string): Human-readable list description
|
||||||
|
- `ref` (string): Exact target element reference that points to the list
|
||||||
|
- `items` (array): Items to verify
|
||||||
|
- Read-only: **false**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_verify_text_visible**
|
||||||
|
- Title: Verify text visible
|
||||||
|
- Description: Verify text is visible on the page. Prefer browser_verify_element_visible if possible.
|
||||||
|
- Parameters:
|
||||||
|
- `text` (string): TEXT to verify. Can be found in the snapshot like this: `- role "Accessible Name": {TEXT}` or like this: `- text: {TEXT}`
|
||||||
|
- Read-only: **false**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_verify_value**
|
||||||
|
- Title: Verify value
|
||||||
|
- Description: Verify element value
|
||||||
|
- Parameters:
|
||||||
|
- `type` (string): Type of the element
|
||||||
|
- `element` (string): Human-readable element description
|
||||||
|
- `ref` (string): Exact target element reference that points to the element
|
||||||
|
- `value` (string): Value to verify. For checkbox, use "true" or "false".
|
||||||
|
- Read-only: **false**
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><b>Tracing (opt-in via --caps=tracing)</b></summary>
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_start_tracing**
|
||||||
|
- Title: Start tracing
|
||||||
|
- Description: Start trace recording
|
||||||
|
- Parameters: None
|
||||||
|
- Read-only: **true**
|
||||||
|
|
||||||
|
<!-- NOTE: This has been generated via update-readme.js -->
|
||||||
|
|
||||||
|
- **browser_stop_tracing**
|
||||||
|
- Title: Stop tracing
|
||||||
|
- Description: Stop trace recording
|
||||||
|
- Parameters: None
|
||||||
|
- Read-only: **true**
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
|
||||||
|
<!--- End of tools generated section -->
|
||||||
24
.npm-global/_npx/9833c18b2d85bc59/node_modules/@playwright/mcp/cli.js
generated
vendored
Normal file
24
.npm-global/_npx/9833c18b2d85bc59/node_modules/@playwright/mcp/cli.js
generated
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
/**
|
||||||
|
* Copyright (c) Microsoft Corporation.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const { program } = require('playwright-core/lib/utilsBundle');
|
||||||
|
const { decorateCommand } = require('playwright/lib/mcp/program');
|
||||||
|
|
||||||
|
const packageJSON = require('./package.json');
|
||||||
|
const p = program.version('Version ' + packageJSON.version).name('Playwright MCP');
|
||||||
|
decorateCommand(p, packageJSON.version)
|
||||||
|
void program.parseAsync(process.argv);
|
||||||
174
.npm-global/_npx/9833c18b2d85bc59/node_modules/@playwright/mcp/config.d.ts
generated
vendored
Normal file
174
.npm-global/_npx/9833c18b2d85bc59/node_modules/@playwright/mcp/config.d.ts
generated
vendored
Normal file
@ -0,0 +1,174 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) Microsoft Corporation.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import type * as playwright from 'playwright';
|
||||||
|
|
||||||
|
export type ToolCapability = 'core' | 'core-tabs' | 'core-install' | 'vision' | 'pdf' | 'testing' | 'tracing';
|
||||||
|
|
||||||
|
export type Config = {
|
||||||
|
/**
|
||||||
|
* The browser to use.
|
||||||
|
*/
|
||||||
|
browser?: {
|
||||||
|
/**
|
||||||
|
* The type of browser to use.
|
||||||
|
*/
|
||||||
|
browserName?: 'chromium' | 'firefox' | 'webkit';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Keep the browser profile in memory, do not save it to disk.
|
||||||
|
*/
|
||||||
|
isolated?: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Path to a user data directory for browser profile persistence.
|
||||||
|
* Temporary directory is created by default.
|
||||||
|
*/
|
||||||
|
userDataDir?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Launch options passed to
|
||||||
|
* @see https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context
|
||||||
|
*
|
||||||
|
* This is useful for settings options like `channel`, `headless`, `executablePath`, etc.
|
||||||
|
*/
|
||||||
|
launchOptions?: playwright.LaunchOptions;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Context options for the browser context.
|
||||||
|
*
|
||||||
|
* This is useful for settings options like `viewport`.
|
||||||
|
*/
|
||||||
|
contextOptions?: playwright.BrowserContextOptions;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Chrome DevTools Protocol endpoint to connect to an existing browser instance in case of Chromium family browsers.
|
||||||
|
*/
|
||||||
|
cdpEndpoint?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CDP headers to send with the connect request.
|
||||||
|
*/
|
||||||
|
cdpHeaders?: Record<string, string>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remote endpoint to connect to an existing Playwright server.
|
||||||
|
*/
|
||||||
|
remoteEndpoint?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Paths to JavaScript files to add as initialization scripts.
|
||||||
|
* The scripts will be evaluated in every page before any of the page's scripts.
|
||||||
|
*/
|
||||||
|
initScript?: string[];
|
||||||
|
},
|
||||||
|
|
||||||
|
server?: {
|
||||||
|
/**
|
||||||
|
* The port to listen on for SSE or MCP transport.
|
||||||
|
*/
|
||||||
|
port?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The host to bind the server to. Default is localhost. Use 0.0.0.0 to bind to all interfaces.
|
||||||
|
*/
|
||||||
|
host?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The hosts this server is allowed to serve from. Defaults to the host server is bound to.
|
||||||
|
* This is not for CORS, but rather for the DNS rebinding protection.
|
||||||
|
*/
|
||||||
|
allowedHosts?: string[];
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List of enabled tool capabilities. Possible values:
|
||||||
|
* - 'core': Core browser automation features.
|
||||||
|
* - 'pdf': PDF generation and manipulation.
|
||||||
|
* - 'vision': Coordinate-based interactions.
|
||||||
|
*/
|
||||||
|
capabilities?: ToolCapability[];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether to save the Playwright session into the output directory.
|
||||||
|
*/
|
||||||
|
saveSession?: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether to save the Playwright trace of the session into the output directory.
|
||||||
|
*/
|
||||||
|
saveTrace?: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If specified, saves the Playwright video of the session into the output directory.
|
||||||
|
*/
|
||||||
|
saveVideo?: {
|
||||||
|
width: number;
|
||||||
|
height: number;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reuse the same browser context between all connected HTTP clients.
|
||||||
|
*/
|
||||||
|
sharedBrowserContext?: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Secrets are used to prevent LLM from getting sensitive data while
|
||||||
|
* automating scenarios such as authentication.
|
||||||
|
* Prefer the browser.contextOptions.storageState over secrets file as a more secure alternative.
|
||||||
|
*/
|
||||||
|
secrets?: Record<string, string>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The directory to save output files.
|
||||||
|
*/
|
||||||
|
outputDir?: string;
|
||||||
|
|
||||||
|
network?: {
|
||||||
|
/**
|
||||||
|
* List of origins to allow the browser to request. Default is to allow all. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
|
||||||
|
*/
|
||||||
|
allowedOrigins?: string[];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List of origins to block the browser to request. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
|
||||||
|
*/
|
||||||
|
blockedOrigins?: string[];
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specify the attribute to use for test ids, defaults to "data-testid".
|
||||||
|
*/
|
||||||
|
testIdAttribute?: string;
|
||||||
|
|
||||||
|
timeouts?: {
|
||||||
|
/*
|
||||||
|
* Configures default action timeout: https://playwright.dev/docs/api/class-page#page-set-default-timeout. Defaults to 5000ms.
|
||||||
|
*/
|
||||||
|
action?: number;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Configures default navigation timeout: https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout. Defaults to 60000ms.
|
||||||
|
*/
|
||||||
|
navigation?: number;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether to send image responses to the client. Can be "allow", "omit", or "auto". Defaults to "auto", which sends images if the client can display them.
|
||||||
|
*/
|
||||||
|
imageResponses?: 'allow' | 'omit';
|
||||||
|
};
|
||||||
|
|
||||||
23
.npm-global/_npx/9833c18b2d85bc59/node_modules/@playwright/mcp/index.d.ts
generated
vendored
Normal file
23
.npm-global/_npx/9833c18b2d85bc59/node_modules/@playwright/mcp/index.d.ts
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
/**
|
||||||
|
* Copyright (c) Microsoft Corporation.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import type { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
||||||
|
import type { Config } from './config';
|
||||||
|
import type { BrowserContext } from 'playwright';
|
||||||
|
|
||||||
|
export declare function createConnection(config?: Config, contextGetter?: () => Promise<BrowserContext>): Promise<Server>;
|
||||||
|
export {};
|
||||||
19
.npm-global/_npx/9833c18b2d85bc59/node_modules/@playwright/mcp/index.js
generated
vendored
Normal file
19
.npm-global/_npx/9833c18b2d85bc59/node_modules/@playwright/mcp/index.js
generated
vendored
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
/**
|
||||||
|
* Copyright (c) Microsoft Corporation.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const { createConnection } = require('playwright/lib/mcp/index');
|
||||||
|
module.exports = { createConnection };
|
||||||
50
.npm-global/_npx/9833c18b2d85bc59/node_modules/@playwright/mcp/package.json
generated
vendored
Normal file
50
.npm-global/_npx/9833c18b2d85bc59/node_modules/@playwright/mcp/package.json
generated
vendored
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
{
|
||||||
|
"name": "@playwright/mcp",
|
||||||
|
"version": "0.0.43",
|
||||||
|
"description": "Playwright Tools for MCP",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/microsoft/playwright-mcp.git"
|
||||||
|
},
|
||||||
|
"homepage": "https://playwright.dev",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"name": "Microsoft Corporation"
|
||||||
|
},
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"scripts": {
|
||||||
|
"lint": "npm run update-readme",
|
||||||
|
"update-readme": "node update-readme.js",
|
||||||
|
"docker-build": "docker build --no-cache -t playwright-mcp-dev:latest .",
|
||||||
|
"test": "playwright test",
|
||||||
|
"ctest": "playwright test --project=chrome",
|
||||||
|
"ftest": "playwright test --project=firefox",
|
||||||
|
"wtest": "playwright test --project=webkit",
|
||||||
|
"dtest": "MCP_IN_DOCKER=1 playwright test --project=chromium-docker",
|
||||||
|
"npm-publish": "npm run clean && npm run test && npm publish",
|
||||||
|
"copy-config": "cp ../playwright/packages/playwright/src/mcp/config.d.ts . && perl -pi -e \"s|import type \\* as playwright from 'playwright-core';|import type * as playwright from 'playwright';|\" ./config.d.ts",
|
||||||
|
"roll": "npm run copy-config && npm run lint"
|
||||||
|
},
|
||||||
|
"exports": {
|
||||||
|
"./package.json": "./package.json",
|
||||||
|
".": {
|
||||||
|
"types": "./index.d.ts",
|
||||||
|
"default": "./index.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"playwright": "1.57.0-alpha-2025-10-16",
|
||||||
|
"playwright-core": "1.57.0-alpha-2025-10-16"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"mcp-server-playwright": "cli.js"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@modelcontextprotocol/sdk": "^1.17.5",
|
||||||
|
"@playwright/test": "1.57.0-alpha-2025-10-16",
|
||||||
|
"@types/node": "^24.3.0",
|
||||||
|
"zod-to-json-schema": "^3.24.6"
|
||||||
|
}
|
||||||
|
}
|
||||||
202
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/LICENSE
generated
vendored
Normal file
202
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/LICENSE
generated
vendored
Normal file
@ -0,0 +1,202 @@
|
|||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Portions Copyright (c) Microsoft Corporation.
|
||||||
|
Portions Copyright 2017 Google Inc.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
5
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/NOTICE
generated
vendored
Normal file
5
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/NOTICE
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Playwright
|
||||||
|
Copyright (c) Microsoft Corporation
|
||||||
|
|
||||||
|
This software contains code derived from the Puppeteer project (https://github.com/puppeteer/puppeteer),
|
||||||
|
available under the Apache 2.0 license (https://github.com/puppeteer/puppeteer/blob/master/LICENSE).
|
||||||
3
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/README.md
generated
vendored
Normal file
3
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/README.md
generated
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# playwright-core
|
||||||
|
|
||||||
|
This package contains the no-browser flavor of [Playwright](http://github.com/microsoft/playwright).
|
||||||
1134
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/ThirdPartyNotices.txt
generated
vendored
Normal file
1134
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/ThirdPartyNotices.txt
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
5
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/install_media_pack.ps1
generated
vendored
Normal file
5
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/install_media_pack.ps1
generated
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
$osInfo = Get-WmiObject -Class Win32_OperatingSystem
|
||||||
|
# check if running on Windows Server
|
||||||
|
if ($osInfo.ProductType -eq 3) {
|
||||||
|
Install-WindowsFeature Server-Media-Foundation
|
||||||
|
}
|
||||||
35
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/install_webkit_wsl.ps1
generated
vendored
Normal file
35
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/install_webkit_wsl.ps1
generated
vendored
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
$ErrorActionPreference = 'Stop'
|
||||||
|
|
||||||
|
# WebKit WSL Installation Script
|
||||||
|
# See webkit-wsl-transport-server.ts for the complete architecture diagram.
|
||||||
|
# This script sets up a WSL distribution that will be used to run WebKit.
|
||||||
|
|
||||||
|
$Distribution = "playwright"
|
||||||
|
$Username = "pwuser"
|
||||||
|
|
||||||
|
$distributions = (wsl --list --quiet) -split "\r?\n"
|
||||||
|
if ($distributions -contains $Distribution) {
|
||||||
|
Write-Host "WSL distribution '$Distribution' already exists. Skipping installation."
|
||||||
|
} else {
|
||||||
|
Write-Host "Installing new WSL distribution '$Distribution'..."
|
||||||
|
$VhdSize = "10GB"
|
||||||
|
wsl --install -d Ubuntu-24.04 --name $Distribution --no-launch --vhd-size $VhdSize
|
||||||
|
wsl -d $Distribution -u root adduser --gecos GECOS --disabled-password $Username
|
||||||
|
}
|
||||||
|
|
||||||
|
$pwshDirname = (Resolve-Path -Path $PSScriptRoot).Path;
|
||||||
|
$playwrightCoreRoot = Resolve-Path (Join-Path $pwshDirname "..")
|
||||||
|
|
||||||
|
$initScript = @"
|
||||||
|
if [ ! -f "/home/$Username/node/bin/node" ]; then
|
||||||
|
mkdir -p /home/$Username/node
|
||||||
|
curl -fsSL https://nodejs.org/dist/v22.17.0/node-v22.17.0-linux-x64.tar.xz -o /home/$Username/node/node-v22.17.0-linux-x64.tar.xz
|
||||||
|
tar -xJf /home/$Username/node/node-v22.17.0-linux-x64.tar.xz -C /home/$Username/node --strip-components=1
|
||||||
|
fi
|
||||||
|
/home/$Username/node/bin/node cli.js install-deps webkit
|
||||||
|
cp lib/server/webkit/wsl/webkit-wsl-transport-client.js /home/$Username/
|
||||||
|
sudo -u $Username PLAYWRIGHT_SKIP_BROWSER_GC=1 /home/$Username/node/bin/node cli.js install webkit
|
||||||
|
"@ -replace "\r\n", "`n"
|
||||||
|
|
||||||
|
wsl -d $Distribution --cd $playwrightCoreRoot -u root -- bash -c "$initScript"
|
||||||
|
Write-Host "Done!"
|
||||||
42
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_chrome_beta_linux.sh
generated
vendored
Normal file
42
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_chrome_beta_linux.sh
generated
vendored
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
if [[ $(arch) == "aarch64" ]]; then
|
||||||
|
echo "ERROR: not supported on Linux Arm64"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$PLAYWRIGHT_HOST_PLATFORM_OVERRIDE" ]; then
|
||||||
|
if [[ ! -f "/etc/os-release" ]]; then
|
||||||
|
echo "ERROR: cannot install on unknown linux distribution (/etc/os-release is missing)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
ID=$(bash -c 'source /etc/os-release && echo $ID')
|
||||||
|
if [[ "${ID}" != "ubuntu" && "${ID}" != "debian" ]]; then
|
||||||
|
echo "ERROR: cannot install on $ID distribution - only Ubuntu and Debian are supported"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 1. make sure to remove old beta if any.
|
||||||
|
if dpkg --get-selections | grep -q "^google-chrome-beta[[:space:]]*install$" >/dev/null; then
|
||||||
|
apt-get remove -y google-chrome-beta
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 2. Update apt lists (needed to install curl and chrome dependencies)
|
||||||
|
apt-get update
|
||||||
|
|
||||||
|
# 3. Install curl to download chrome
|
||||||
|
if ! command -v curl >/dev/null; then
|
||||||
|
apt-get install -y curl
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 4. download chrome beta from dl.google.com and install it.
|
||||||
|
cd /tmp
|
||||||
|
curl -O https://dl.google.com/linux/direct/google-chrome-beta_current_amd64.deb
|
||||||
|
apt-get install -y ./google-chrome-beta_current_amd64.deb
|
||||||
|
rm -rf ./google-chrome-beta_current_amd64.deb
|
||||||
|
cd -
|
||||||
|
google-chrome-beta --version
|
||||||
13
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_chrome_beta_mac.sh
generated
vendored
Normal file
13
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_chrome_beta_mac.sh
generated
vendored
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
rm -rf "/Applications/Google Chrome Beta.app"
|
||||||
|
cd /tmp
|
||||||
|
curl --retry 3 -o ./googlechromebeta.dmg https://dl.google.com/chrome/mac/universal/beta/googlechromebeta.dmg
|
||||||
|
hdiutil attach -nobrowse -quiet -noautofsck -noautoopen -mountpoint /Volumes/googlechromebeta.dmg ./googlechromebeta.dmg
|
||||||
|
cp -pR "/Volumes/googlechromebeta.dmg/Google Chrome Beta.app" /Applications
|
||||||
|
hdiutil detach /Volumes/googlechromebeta.dmg
|
||||||
|
rm -rf /tmp/googlechromebeta.dmg
|
||||||
|
|
||||||
|
/Applications/Google\ Chrome\ Beta.app/Contents/MacOS/Google\ Chrome\ Beta --version
|
||||||
24
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_chrome_beta_win.ps1
generated
vendored
Normal file
24
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_chrome_beta_win.ps1
generated
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
$ErrorActionPreference = 'Stop'
|
||||||
|
|
||||||
|
$url = 'https://dl.google.com/tag/s/dl/chrome/install/beta/googlechromebetastandaloneenterprise64.msi'
|
||||||
|
|
||||||
|
Write-Host "Downloading Google Chrome Beta"
|
||||||
|
$wc = New-Object net.webclient
|
||||||
|
$msiInstaller = "$env:temp\google-chrome-beta.msi"
|
||||||
|
$wc.Downloadfile($url, $msiInstaller)
|
||||||
|
|
||||||
|
Write-Host "Installing Google Chrome Beta"
|
||||||
|
$arguments = "/i `"$msiInstaller`" /quiet"
|
||||||
|
Start-Process msiexec.exe -ArgumentList $arguments -Wait
|
||||||
|
Remove-Item $msiInstaller
|
||||||
|
|
||||||
|
$suffix = "\\Google\\Chrome Beta\\Application\\chrome.exe"
|
||||||
|
if (Test-Path "${env:ProgramFiles(x86)}$suffix") {
|
||||||
|
(Get-Item "${env:ProgramFiles(x86)}$suffix").VersionInfo
|
||||||
|
} elseif (Test-Path "${env:ProgramFiles}$suffix") {
|
||||||
|
(Get-Item "${env:ProgramFiles}$suffix").VersionInfo
|
||||||
|
} else {
|
||||||
|
Write-Host "ERROR: Failed to install Google Chrome Beta."
|
||||||
|
Write-Host "ERROR: This could be due to insufficient privileges, in which case re-running as Administrator may help."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
42
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_chrome_stable_linux.sh
generated
vendored
Normal file
42
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_chrome_stable_linux.sh
generated
vendored
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
if [[ $(arch) == "aarch64" ]]; then
|
||||||
|
echo "ERROR: not supported on Linux Arm64"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$PLAYWRIGHT_HOST_PLATFORM_OVERRIDE" ]; then
|
||||||
|
if [[ ! -f "/etc/os-release" ]]; then
|
||||||
|
echo "ERROR: cannot install on unknown linux distribution (/etc/os-release is missing)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
ID=$(bash -c 'source /etc/os-release && echo $ID')
|
||||||
|
if [[ "${ID}" != "ubuntu" && "${ID}" != "debian" ]]; then
|
||||||
|
echo "ERROR: cannot install on $ID distribution - only Ubuntu and Debian are supported"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 1. make sure to remove old stable if any.
|
||||||
|
if dpkg --get-selections | grep -q "^google-chrome[[:space:]]*install$" >/dev/null; then
|
||||||
|
apt-get remove -y google-chrome
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 2. Update apt lists (needed to install curl and chrome dependencies)
|
||||||
|
apt-get update
|
||||||
|
|
||||||
|
# 3. Install curl to download chrome
|
||||||
|
if ! command -v curl >/dev/null; then
|
||||||
|
apt-get install -y curl
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 4. download chrome stable from dl.google.com and install it.
|
||||||
|
cd /tmp
|
||||||
|
curl -O https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
|
||||||
|
apt-get install -y ./google-chrome-stable_current_amd64.deb
|
||||||
|
rm -rf ./google-chrome-stable_current_amd64.deb
|
||||||
|
cd -
|
||||||
|
google-chrome --version
|
||||||
12
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_chrome_stable_mac.sh
generated
vendored
Normal file
12
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_chrome_stable_mac.sh
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
rm -rf "/Applications/Google Chrome.app"
|
||||||
|
cd /tmp
|
||||||
|
curl --retry 3 -o ./googlechrome.dmg https://dl.google.com/chrome/mac/universal/stable/GGRO/googlechrome.dmg
|
||||||
|
hdiutil attach -nobrowse -quiet -noautofsck -noautoopen -mountpoint /Volumes/googlechrome.dmg ./googlechrome.dmg
|
||||||
|
cp -pR "/Volumes/googlechrome.dmg/Google Chrome.app" /Applications
|
||||||
|
hdiutil detach /Volumes/googlechrome.dmg
|
||||||
|
rm -rf /tmp/googlechrome.dmg
|
||||||
|
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --version
|
||||||
24
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_chrome_stable_win.ps1
generated
vendored
Normal file
24
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_chrome_stable_win.ps1
generated
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
$ErrorActionPreference = 'Stop'
|
||||||
|
$url = 'https://dl.google.com/tag/s/dl/chrome/install/googlechromestandaloneenterprise64.msi'
|
||||||
|
|
||||||
|
$wc = New-Object net.webclient
|
||||||
|
$msiInstaller = "$env:temp\google-chrome.msi"
|
||||||
|
Write-Host "Downloading Google Chrome"
|
||||||
|
$wc.Downloadfile($url, $msiInstaller)
|
||||||
|
|
||||||
|
Write-Host "Installing Google Chrome"
|
||||||
|
$arguments = "/i `"$msiInstaller`" /quiet"
|
||||||
|
Start-Process msiexec.exe -ArgumentList $arguments -Wait
|
||||||
|
Remove-Item $msiInstaller
|
||||||
|
|
||||||
|
|
||||||
|
$suffix = "\\Google\\Chrome\\Application\\chrome.exe"
|
||||||
|
if (Test-Path "${env:ProgramFiles(x86)}$suffix") {
|
||||||
|
(Get-Item "${env:ProgramFiles(x86)}$suffix").VersionInfo
|
||||||
|
} elseif (Test-Path "${env:ProgramFiles}$suffix") {
|
||||||
|
(Get-Item "${env:ProgramFiles}$suffix").VersionInfo
|
||||||
|
} else {
|
||||||
|
Write-Host "ERROR: Failed to install Google Chrome."
|
||||||
|
Write-Host "ERROR: This could be due to insufficient privileges, in which case re-running as Administrator may help."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
48
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_msedge_beta_linux.sh
generated
vendored
Normal file
48
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_msedge_beta_linux.sh
generated
vendored
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
if [[ $(arch) == "aarch64" ]]; then
|
||||||
|
echo "ERROR: not supported on Linux Arm64"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$PLAYWRIGHT_HOST_PLATFORM_OVERRIDE" ]; then
|
||||||
|
if [[ ! -f "/etc/os-release" ]]; then
|
||||||
|
echo "ERROR: cannot install on unknown linux distribution (/etc/os-release is missing)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
ID=$(bash -c 'source /etc/os-release && echo $ID')
|
||||||
|
if [[ "${ID}" != "ubuntu" && "${ID}" != "debian" ]]; then
|
||||||
|
echo "ERROR: cannot install on $ID distribution - only Ubuntu and Debian are supported"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 1. make sure to remove old beta if any.
|
||||||
|
if dpkg --get-selections | grep -q "^microsoft-edge-beta[[:space:]]*install$" >/dev/null; then
|
||||||
|
apt-get remove -y microsoft-edge-beta
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 2. Install curl to download Microsoft gpg key
|
||||||
|
if ! command -v curl >/dev/null; then
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y curl
|
||||||
|
fi
|
||||||
|
|
||||||
|
# GnuPG is not preinstalled in slim images
|
||||||
|
if ! command -v gpg >/dev/null; then
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y gpg
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 3. Add the GPG key, the apt repo, update the apt cache, and install the package
|
||||||
|
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /tmp/microsoft.gpg
|
||||||
|
install -o root -g root -m 644 /tmp/microsoft.gpg /etc/apt/trusted.gpg.d/
|
||||||
|
sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge-dev.list'
|
||||||
|
rm /tmp/microsoft.gpg
|
||||||
|
apt-get update && apt-get install -y microsoft-edge-beta
|
||||||
|
|
||||||
|
microsoft-edge-beta --version
|
||||||
11
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_msedge_beta_mac.sh
generated
vendored
Normal file
11
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_msedge_beta_mac.sh
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
cd /tmp
|
||||||
|
curl --retry 3 -o ./msedge_beta.pkg "$1"
|
||||||
|
# Note: there's no way to uninstall previously installed MSEdge.
|
||||||
|
# However, running PKG again seems to update installation.
|
||||||
|
sudo installer -pkg /tmp/msedge_beta.pkg -target /
|
||||||
|
rm -rf /tmp/msedge_beta.pkg
|
||||||
|
/Applications/Microsoft\ Edge\ Beta.app/Contents/MacOS/Microsoft\ Edge\ Beta --version
|
||||||
23
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_msedge_beta_win.ps1
generated
vendored
Normal file
23
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_msedge_beta_win.ps1
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
$ErrorActionPreference = 'Stop'
|
||||||
|
$url = $args[0]
|
||||||
|
|
||||||
|
Write-Host "Downloading Microsoft Edge Beta"
|
||||||
|
$wc = New-Object net.webclient
|
||||||
|
$msiInstaller = "$env:temp\microsoft-edge-beta.msi"
|
||||||
|
$wc.Downloadfile($url, $msiInstaller)
|
||||||
|
|
||||||
|
Write-Host "Installing Microsoft Edge Beta"
|
||||||
|
$arguments = "/i `"$msiInstaller`" /quiet"
|
||||||
|
Start-Process msiexec.exe -ArgumentList $arguments -Wait
|
||||||
|
Remove-Item $msiInstaller
|
||||||
|
|
||||||
|
$suffix = "\\Microsoft\\Edge Beta\\Application\\msedge.exe"
|
||||||
|
if (Test-Path "${env:ProgramFiles(x86)}$suffix") {
|
||||||
|
(Get-Item "${env:ProgramFiles(x86)}$suffix").VersionInfo
|
||||||
|
} elseif (Test-Path "${env:ProgramFiles}$suffix") {
|
||||||
|
(Get-Item "${env:ProgramFiles}$suffix").VersionInfo
|
||||||
|
} else {
|
||||||
|
Write-Host "ERROR: Failed to install Microsoft Edge Beta."
|
||||||
|
Write-Host "ERROR: This could be due to insufficient privileges, in which case re-running as Administrator may help."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
48
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_msedge_dev_linux.sh
generated
vendored
Normal file
48
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_msedge_dev_linux.sh
generated
vendored
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
if [[ $(arch) == "aarch64" ]]; then
|
||||||
|
echo "ERROR: not supported on Linux Arm64"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$PLAYWRIGHT_HOST_PLATFORM_OVERRIDE" ]; then
|
||||||
|
if [[ ! -f "/etc/os-release" ]]; then
|
||||||
|
echo "ERROR: cannot install on unknown linux distribution (/etc/os-release is missing)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
ID=$(bash -c 'source /etc/os-release && echo $ID')
|
||||||
|
if [[ "${ID}" != "ubuntu" && "${ID}" != "debian" ]]; then
|
||||||
|
echo "ERROR: cannot install on $ID distribution - only Ubuntu and Debian are supported"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 1. make sure to remove old dev if any.
|
||||||
|
if dpkg --get-selections | grep -q "^microsoft-edge-dev[[:space:]]*install$" >/dev/null; then
|
||||||
|
apt-get remove -y microsoft-edge-dev
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 2. Install curl to download Microsoft gpg key
|
||||||
|
if ! command -v curl >/dev/null; then
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y curl
|
||||||
|
fi
|
||||||
|
|
||||||
|
# GnuPG is not preinstalled in slim images
|
||||||
|
if ! command -v gpg >/dev/null; then
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y gpg
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 3. Add the GPG key, the apt repo, update the apt cache, and install the package
|
||||||
|
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /tmp/microsoft.gpg
|
||||||
|
install -o root -g root -m 644 /tmp/microsoft.gpg /etc/apt/trusted.gpg.d/
|
||||||
|
sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge-dev.list'
|
||||||
|
rm /tmp/microsoft.gpg
|
||||||
|
apt-get update && apt-get install -y microsoft-edge-dev
|
||||||
|
|
||||||
|
microsoft-edge-dev --version
|
||||||
11
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_msedge_dev_mac.sh
generated
vendored
Normal file
11
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_msedge_dev_mac.sh
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
cd /tmp
|
||||||
|
curl --retry 3 -o ./msedge_dev.pkg "$1"
|
||||||
|
# Note: there's no way to uninstall previously installed MSEdge.
|
||||||
|
# However, running PKG again seems to update installation.
|
||||||
|
sudo installer -pkg /tmp/msedge_dev.pkg -target /
|
||||||
|
rm -rf /tmp/msedge_dev.pkg
|
||||||
|
/Applications/Microsoft\ Edge\ Dev.app/Contents/MacOS/Microsoft\ Edge\ Dev --version
|
||||||
23
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_msedge_dev_win.ps1
generated
vendored
Normal file
23
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_msedge_dev_win.ps1
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
$ErrorActionPreference = 'Stop'
|
||||||
|
$url = $args[0]
|
||||||
|
|
||||||
|
Write-Host "Downloading Microsoft Edge Dev"
|
||||||
|
$wc = New-Object net.webclient
|
||||||
|
$msiInstaller = "$env:temp\microsoft-edge-dev.msi"
|
||||||
|
$wc.Downloadfile($url, $msiInstaller)
|
||||||
|
|
||||||
|
Write-Host "Installing Microsoft Edge Dev"
|
||||||
|
$arguments = "/i `"$msiInstaller`" /quiet"
|
||||||
|
Start-Process msiexec.exe -ArgumentList $arguments -Wait
|
||||||
|
Remove-Item $msiInstaller
|
||||||
|
|
||||||
|
$suffix = "\\Microsoft\\Edge Dev\\Application\\msedge.exe"
|
||||||
|
if (Test-Path "${env:ProgramFiles(x86)}$suffix") {
|
||||||
|
(Get-Item "${env:ProgramFiles(x86)}$suffix").VersionInfo
|
||||||
|
} elseif (Test-Path "${env:ProgramFiles}$suffix") {
|
||||||
|
(Get-Item "${env:ProgramFiles}$suffix").VersionInfo
|
||||||
|
} else {
|
||||||
|
Write-Host "ERROR: Failed to install Microsoft Edge Dev."
|
||||||
|
Write-Host "ERROR: This could be due to insufficient privileges, in which case re-running as Administrator may help."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
48
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_msedge_stable_linux.sh
generated
vendored
Normal file
48
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_msedge_stable_linux.sh
generated
vendored
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
if [[ $(arch) == "aarch64" ]]; then
|
||||||
|
echo "ERROR: not supported on Linux Arm64"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$PLAYWRIGHT_HOST_PLATFORM_OVERRIDE" ]; then
|
||||||
|
if [[ ! -f "/etc/os-release" ]]; then
|
||||||
|
echo "ERROR: cannot install on unknown linux distribution (/etc/os-release is missing)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
ID=$(bash -c 'source /etc/os-release && echo $ID')
|
||||||
|
if [[ "${ID}" != "ubuntu" && "${ID}" != "debian" ]]; then
|
||||||
|
echo "ERROR: cannot install on $ID distribution - only Ubuntu and Debian are supported"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 1. make sure to remove old stable if any.
|
||||||
|
if dpkg --get-selections | grep -q "^microsoft-edge-stable[[:space:]]*install$" >/dev/null; then
|
||||||
|
apt-get remove -y microsoft-edge-stable
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 2. Install curl to download Microsoft gpg key
|
||||||
|
if ! command -v curl >/dev/null; then
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y curl
|
||||||
|
fi
|
||||||
|
|
||||||
|
# GnuPG is not preinstalled in slim images
|
||||||
|
if ! command -v gpg >/dev/null; then
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y gpg
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 3. Add the GPG key, the apt repo, update the apt cache, and install the package
|
||||||
|
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /tmp/microsoft.gpg
|
||||||
|
install -o root -g root -m 644 /tmp/microsoft.gpg /etc/apt/trusted.gpg.d/
|
||||||
|
sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge-stable.list'
|
||||||
|
rm /tmp/microsoft.gpg
|
||||||
|
apt-get update && apt-get install -y microsoft-edge-stable
|
||||||
|
|
||||||
|
microsoft-edge-stable --version
|
||||||
11
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_msedge_stable_mac.sh
generated
vendored
Normal file
11
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_msedge_stable_mac.sh
generated
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
cd /tmp
|
||||||
|
curl --retry 3 -o ./msedge_stable.pkg "$1"
|
||||||
|
# Note: there's no way to uninstall previously installed MSEdge.
|
||||||
|
# However, running PKG again seems to update installation.
|
||||||
|
sudo installer -pkg /tmp/msedge_stable.pkg -target /
|
||||||
|
rm -rf /tmp/msedge_stable.pkg
|
||||||
|
/Applications/Microsoft\ Edge.app/Contents/MacOS/Microsoft\ Edge --version
|
||||||
24
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_msedge_stable_win.ps1
generated
vendored
Normal file
24
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/bin/reinstall_msedge_stable_win.ps1
generated
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
$ErrorActionPreference = 'Stop'
|
||||||
|
|
||||||
|
$url = $args[0]
|
||||||
|
|
||||||
|
Write-Host "Downloading Microsoft Edge"
|
||||||
|
$wc = New-Object net.webclient
|
||||||
|
$msiInstaller = "$env:temp\microsoft-edge-stable.msi"
|
||||||
|
$wc.Downloadfile($url, $msiInstaller)
|
||||||
|
|
||||||
|
Write-Host "Installing Microsoft Edge"
|
||||||
|
$arguments = "/i `"$msiInstaller`" /quiet"
|
||||||
|
Start-Process msiexec.exe -ArgumentList $arguments -Wait
|
||||||
|
Remove-Item $msiInstaller
|
||||||
|
|
||||||
|
$suffix = "\\Microsoft\\Edge\\Application\\msedge.exe"
|
||||||
|
if (Test-Path "${env:ProgramFiles(x86)}$suffix") {
|
||||||
|
(Get-Item "${env:ProgramFiles(x86)}$suffix").VersionInfo
|
||||||
|
} elseif (Test-Path "${env:ProgramFiles}$suffix") {
|
||||||
|
(Get-Item "${env:ProgramFiles}$suffix").VersionInfo
|
||||||
|
} else {
|
||||||
|
Write-Host "ERROR: Failed to install Microsoft Edge."
|
||||||
|
Write-Host "ERROR: This could be due to insufficient privileges, in which case re-running as Administrator may help."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
80
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/browsers.json
generated
vendored
Normal file
80
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/browsers.json
generated
vendored
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
{
|
||||||
|
"comment": "Do not edit this file, use utils/roll_browser.js",
|
||||||
|
"browsers": [
|
||||||
|
{
|
||||||
|
"name": "chromium",
|
||||||
|
"revision": "1194",
|
||||||
|
"installByDefault": true,
|
||||||
|
"browserVersion": "141.0.7390.37"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "chromium-headless-shell",
|
||||||
|
"revision": "1194",
|
||||||
|
"installByDefault": true,
|
||||||
|
"browserVersion": "141.0.7390.37"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "chromium-tip-of-tree",
|
||||||
|
"revision": "1371",
|
||||||
|
"installByDefault": false,
|
||||||
|
"browserVersion": "142.0.7430.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "chromium-tip-of-tree-headless-shell",
|
||||||
|
"revision": "1371",
|
||||||
|
"installByDefault": false,
|
||||||
|
"browserVersion": "142.0.7430.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "firefox",
|
||||||
|
"revision": "1495",
|
||||||
|
"installByDefault": true,
|
||||||
|
"browserVersion": "142.0.1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "firefox-beta",
|
||||||
|
"revision": "1490",
|
||||||
|
"installByDefault": false,
|
||||||
|
"browserVersion": "143.0b10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "webkit",
|
||||||
|
"revision": "2215",
|
||||||
|
"installByDefault": true,
|
||||||
|
"revisionOverrides": {
|
||||||
|
"debian11-x64": "2105",
|
||||||
|
"debian11-arm64": "2105",
|
||||||
|
"mac10.14": "1446",
|
||||||
|
"mac10.15": "1616",
|
||||||
|
"mac11": "1816",
|
||||||
|
"mac11-arm64": "1816",
|
||||||
|
"mac12": "2009",
|
||||||
|
"mac12-arm64": "2009",
|
||||||
|
"mac13": "2140",
|
||||||
|
"mac13-arm64": "2140",
|
||||||
|
"ubuntu20.04-x64": "2092",
|
||||||
|
"ubuntu20.04-arm64": "2092"
|
||||||
|
},
|
||||||
|
"browserVersion": "26.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ffmpeg",
|
||||||
|
"revision": "1011",
|
||||||
|
"installByDefault": true,
|
||||||
|
"revisionOverrides": {
|
||||||
|
"mac12": "1010",
|
||||||
|
"mac12-arm64": "1010"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "winldd",
|
||||||
|
"revision": "1007",
|
||||||
|
"installByDefault": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "android",
|
||||||
|
"revision": "1001",
|
||||||
|
"installByDefault": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
18
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/cli.js
generated
vendored
Normal file
18
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/cli.js
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
/**
|
||||||
|
* Copyright (c) Microsoft Corporation.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
const { program } = require('./lib/cli/programWithTestStub');
|
||||||
|
program.parse(process.argv);
|
||||||
17
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/index.d.ts
generated
vendored
Normal file
17
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/index.d.ts
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) Microsoft Corporation.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export * from './types/types';
|
||||||
32
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/index.js
generated
vendored
Normal file
32
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/index.js
generated
vendored
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) Microsoft Corporation.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
const minimumMajorNodeVersion = 18;
|
||||||
|
const currentNodeVersion = process.versions.node;
|
||||||
|
const semver = currentNodeVersion.split('.');
|
||||||
|
const [major] = [+semver[0]];
|
||||||
|
|
||||||
|
if (major < minimumMajorNodeVersion) {
|
||||||
|
console.error(
|
||||||
|
'You are running Node.js ' +
|
||||||
|
currentNodeVersion +
|
||||||
|
'.\n' +
|
||||||
|
`Playwright requires Node.js ${minimumMajorNodeVersion} or higher. \n` +
|
||||||
|
'Please update your version of Node.js.'
|
||||||
|
);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = require('./lib/inprocess');
|
||||||
28
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/index.mjs
generated
vendored
Normal file
28
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/index.mjs
generated
vendored
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) Microsoft Corporation.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import playwright from './index.js';
|
||||||
|
|
||||||
|
export const chromium = playwright.chromium;
|
||||||
|
export const firefox = playwright.firefox;
|
||||||
|
export const webkit = playwright.webkit;
|
||||||
|
export const selectors = playwright.selectors;
|
||||||
|
export const devices = playwright.devices;
|
||||||
|
export const errors = playwright.errors;
|
||||||
|
export const request = playwright.request;
|
||||||
|
export const _electron = playwright._electron;
|
||||||
|
export const _android = playwright._android;
|
||||||
|
export default playwright;
|
||||||
65
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/lib/androidServerImpl.js
generated
vendored
Normal file
65
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/lib/androidServerImpl.js
generated
vendored
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
"use strict";
|
||||||
|
var __defProp = Object.defineProperty;
|
||||||
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||||
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||||
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||||
|
var __export = (target, all) => {
|
||||||
|
for (var name in all)
|
||||||
|
__defProp(target, name, { get: all[name], enumerable: true });
|
||||||
|
};
|
||||||
|
var __copyProps = (to, from, except, desc) => {
|
||||||
|
if (from && typeof from === "object" || typeof from === "function") {
|
||||||
|
for (let key of __getOwnPropNames(from))
|
||||||
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
||||||
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
||||||
|
}
|
||||||
|
return to;
|
||||||
|
};
|
||||||
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||||
|
var androidServerImpl_exports = {};
|
||||||
|
__export(androidServerImpl_exports, {
|
||||||
|
AndroidServerLauncherImpl: () => AndroidServerLauncherImpl
|
||||||
|
});
|
||||||
|
module.exports = __toCommonJS(androidServerImpl_exports);
|
||||||
|
var import_playwrightServer = require("./remote/playwrightServer");
|
||||||
|
var import_playwright = require("./server/playwright");
|
||||||
|
var import_crypto = require("./server/utils/crypto");
|
||||||
|
var import_utilsBundle = require("./utilsBundle");
|
||||||
|
var import_progress = require("./server/progress");
|
||||||
|
class AndroidServerLauncherImpl {
|
||||||
|
async launchServer(options = {}) {
|
||||||
|
const playwright = (0, import_playwright.createPlaywright)({ sdkLanguage: "javascript", isServer: true });
|
||||||
|
const controller = new import_progress.ProgressController();
|
||||||
|
let devices = await controller.run((progress) => playwright.android.devices(progress, {
|
||||||
|
host: options.adbHost,
|
||||||
|
port: options.adbPort,
|
||||||
|
omitDriverInstall: options.omitDriverInstall
|
||||||
|
}));
|
||||||
|
if (devices.length === 0)
|
||||||
|
throw new Error("No devices found");
|
||||||
|
if (options.deviceSerialNumber) {
|
||||||
|
devices = devices.filter((d) => d.serial === options.deviceSerialNumber);
|
||||||
|
if (devices.length === 0)
|
||||||
|
throw new Error(`No device with serial number '${options.deviceSerialNumber}' was found`);
|
||||||
|
}
|
||||||
|
if (devices.length > 1)
|
||||||
|
throw new Error(`More than one device found. Please specify deviceSerialNumber`);
|
||||||
|
const device = devices[0];
|
||||||
|
const path = options.wsPath ? options.wsPath.startsWith("/") ? options.wsPath : `/${options.wsPath}` : `/${(0, import_crypto.createGuid)()}`;
|
||||||
|
const server = new import_playwrightServer.PlaywrightServer({ mode: "launchServer", path, maxConnections: 1, preLaunchedAndroidDevice: device });
|
||||||
|
const wsEndpoint = await server.listen(options.port, options.host);
|
||||||
|
const browserServer = new import_utilsBundle.ws.EventEmitter();
|
||||||
|
browserServer.wsEndpoint = () => wsEndpoint;
|
||||||
|
browserServer.close = () => device.close();
|
||||||
|
browserServer.kill = () => device.close();
|
||||||
|
device.on("close", () => {
|
||||||
|
server.close();
|
||||||
|
browserServer.emit("close");
|
||||||
|
});
|
||||||
|
return browserServer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Annotate the CommonJS export names for ESM import in node:
|
||||||
|
0 && (module.exports = {
|
||||||
|
AndroidServerLauncherImpl
|
||||||
|
});
|
||||||
120
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/lib/browserServerImpl.js
generated
vendored
Normal file
120
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/lib/browserServerImpl.js
generated
vendored
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
"use strict";
|
||||||
|
var __create = Object.create;
|
||||||
|
var __defProp = Object.defineProperty;
|
||||||
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||||
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||||
|
var __getProtoOf = Object.getPrototypeOf;
|
||||||
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||||
|
var __export = (target, all) => {
|
||||||
|
for (var name in all)
|
||||||
|
__defProp(target, name, { get: all[name], enumerable: true });
|
||||||
|
};
|
||||||
|
var __copyProps = (to, from, except, desc) => {
|
||||||
|
if (from && typeof from === "object" || typeof from === "function") {
|
||||||
|
for (let key of __getOwnPropNames(from))
|
||||||
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
||||||
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
||||||
|
}
|
||||||
|
return to;
|
||||||
|
};
|
||||||
|
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
||||||
|
// If the importer is in node compatibility mode or this is not an ESM
|
||||||
|
// file that has been converted to a CommonJS file using a Babel-
|
||||||
|
// compatible transform (i.e. "__esModule" has not been set), then set
|
||||||
|
// "default" to the CommonJS "module.exports" for node compatibility.
|
||||||
|
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
||||||
|
mod
|
||||||
|
));
|
||||||
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||||
|
var browserServerImpl_exports = {};
|
||||||
|
__export(browserServerImpl_exports, {
|
||||||
|
BrowserServerLauncherImpl: () => BrowserServerLauncherImpl
|
||||||
|
});
|
||||||
|
module.exports = __toCommonJS(browserServerImpl_exports);
|
||||||
|
var import_playwrightServer = require("./remote/playwrightServer");
|
||||||
|
var import_helper = require("./server/helper");
|
||||||
|
var import_playwright = require("./server/playwright");
|
||||||
|
var import_crypto = require("./server/utils/crypto");
|
||||||
|
var import_debug = require("./server/utils/debug");
|
||||||
|
var import_stackTrace = require("./utils/isomorphic/stackTrace");
|
||||||
|
var import_time = require("./utils/isomorphic/time");
|
||||||
|
var import_utilsBundle = require("./utilsBundle");
|
||||||
|
var validatorPrimitives = __toESM(require("./protocol/validatorPrimitives"));
|
||||||
|
var import_progress = require("./server/progress");
|
||||||
|
class BrowserServerLauncherImpl {
|
||||||
|
constructor(browserName) {
|
||||||
|
this._browserName = browserName;
|
||||||
|
}
|
||||||
|
async launchServer(options = {}) {
|
||||||
|
const playwright = (0, import_playwright.createPlaywright)({ sdkLanguage: "javascript", isServer: true });
|
||||||
|
const metadata = { id: "", startTime: 0, endTime: 0, type: "Internal", method: "", params: {}, log: [], internal: true };
|
||||||
|
const validatorContext = {
|
||||||
|
tChannelImpl: (names, arg, path2) => {
|
||||||
|
throw new validatorPrimitives.ValidationError(`${path2}: channels are not expected in launchServer`);
|
||||||
|
},
|
||||||
|
binary: "buffer",
|
||||||
|
isUnderTest: import_debug.isUnderTest
|
||||||
|
};
|
||||||
|
let launchOptions = {
|
||||||
|
...options,
|
||||||
|
ignoreDefaultArgs: Array.isArray(options.ignoreDefaultArgs) ? options.ignoreDefaultArgs : void 0,
|
||||||
|
ignoreAllDefaultArgs: !!options.ignoreDefaultArgs && !Array.isArray(options.ignoreDefaultArgs),
|
||||||
|
env: options.env ? envObjectToArray(options.env) : void 0,
|
||||||
|
timeout: options.timeout ?? import_time.DEFAULT_PLAYWRIGHT_LAUNCH_TIMEOUT
|
||||||
|
};
|
||||||
|
let browser;
|
||||||
|
try {
|
||||||
|
const controller = new import_progress.ProgressController(metadata);
|
||||||
|
browser = await controller.run(async (progress) => {
|
||||||
|
if (options._userDataDir !== void 0) {
|
||||||
|
const validator = validatorPrimitives.scheme["BrowserTypeLaunchPersistentContextParams"];
|
||||||
|
launchOptions = validator({ ...launchOptions, userDataDir: options._userDataDir }, "", validatorContext);
|
||||||
|
const context = await playwright[this._browserName].launchPersistentContext(progress, options._userDataDir, launchOptions);
|
||||||
|
return context._browser;
|
||||||
|
} else {
|
||||||
|
const validator = validatorPrimitives.scheme["BrowserTypeLaunchParams"];
|
||||||
|
launchOptions = validator(launchOptions, "", validatorContext);
|
||||||
|
return await playwright[this._browserName].launch(progress, launchOptions, toProtocolLogger(options.logger));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
const log = import_helper.helper.formatBrowserLogs(metadata.log);
|
||||||
|
(0, import_stackTrace.rewriteErrorMessage)(e, `${e.message} Failed to launch browser.${log}`);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
const path = options.wsPath ? options.wsPath.startsWith("/") ? options.wsPath : `/${options.wsPath}` : `/${(0, import_crypto.createGuid)()}`;
|
||||||
|
const server = new import_playwrightServer.PlaywrightServer({ mode: options._sharedBrowser ? "launchServerShared" : "launchServer", path, maxConnections: Infinity, preLaunchedBrowser: browser });
|
||||||
|
const wsEndpoint = await server.listen(options.port, options.host);
|
||||||
|
const browserServer = new import_utilsBundle.ws.EventEmitter();
|
||||||
|
browserServer.process = () => browser.options.browserProcess.process;
|
||||||
|
browserServer.wsEndpoint = () => wsEndpoint;
|
||||||
|
browserServer.close = () => browser.options.browserProcess.close();
|
||||||
|
browserServer[Symbol.asyncDispose] = browserServer.close;
|
||||||
|
browserServer.kill = () => browser.options.browserProcess.kill();
|
||||||
|
browserServer._disconnectForTest = () => server.close();
|
||||||
|
browserServer._userDataDirForTest = browser._userDataDirForTest;
|
||||||
|
browser.options.browserProcess.onclose = (exitCode, signal) => {
|
||||||
|
server.close();
|
||||||
|
browserServer.emit("close", exitCode, signal);
|
||||||
|
};
|
||||||
|
return browserServer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function toProtocolLogger(logger) {
|
||||||
|
return logger ? (direction, message) => {
|
||||||
|
if (logger.isEnabled("protocol", "verbose"))
|
||||||
|
logger.log("protocol", "verbose", (direction === "send" ? "SEND \u25BA " : "\u25C0 RECV ") + JSON.stringify(message), [], {});
|
||||||
|
} : void 0;
|
||||||
|
}
|
||||||
|
function envObjectToArray(env) {
|
||||||
|
const result = [];
|
||||||
|
for (const name in env) {
|
||||||
|
if (!Object.is(env[name], void 0))
|
||||||
|
result.push({ name, value: String(env[name]) });
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
// Annotate the CommonJS export names for ESM import in node:
|
||||||
|
0 && (module.exports = {
|
||||||
|
BrowserServerLauncherImpl
|
||||||
|
});
|
||||||
97
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/lib/cli/driver.js
generated
vendored
Normal file
97
.npm-global/_npx/9833c18b2d85bc59/node_modules/playwright-core/lib/cli/driver.js
generated
vendored
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
"use strict";
|
||||||
|
var __create = Object.create;
|
||||||
|
var __defProp = Object.defineProperty;
|
||||||
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||||
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||||
|
var __getProtoOf = Object.getPrototypeOf;
|
||||||
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||||
|
var __export = (target, all) => {
|
||||||
|
for (var name in all)
|
||||||
|
__defProp(target, name, { get: all[name], enumerable: true });
|
||||||
|
};
|
||||||
|
var __copyProps = (to, from, except, desc) => {
|
||||||
|
if (from && typeof from === "object" || typeof from === "function") {
|
||||||
|
for (let key of __getOwnPropNames(from))
|
||||||
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
||||||
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
||||||
|
}
|
||||||
|
return to;
|
||||||
|
};
|
||||||
|
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
||||||
|
// If the importer is in node compatibility mode or this is not an ESM
|
||||||
|
// file that has been converted to a CommonJS file using a Babel-
|
||||||
|
// compatible transform (i.e. "__esModule" has not been set), then set
|
||||||
|
// "default" to the CommonJS "module.exports" for node compatibility.
|
||||||
|
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
||||||
|
mod
|
||||||
|
));
|
||||||
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||||
|
var driver_exports = {};
|
||||||
|
__export(driver_exports, {
|
||||||
|
launchBrowserServer: () => launchBrowserServer,
|
||||||
|
printApiJson: () => printApiJson,
|
||||||
|
runDriver: () => runDriver,
|
||||||
|
runServer: () => runServer
|
||||||
|
});
|
||||||
|
module.exports = __toCommonJS(driver_exports);
|
||||||
|
var import_fs = __toESM(require("fs"));
|
||||||
|
var playwright = __toESM(require("../.."));
|
||||||
|
var import_pipeTransport = require("../server/utils/pipeTransport");
|
||||||
|
var import_playwrightServer = require("../remote/playwrightServer");
|
||||||
|
var import_server = require("../server");
|
||||||
|
var import_processLauncher = require("../server/utils/processLauncher");
|
||||||
|
function printApiJson() {
|
||||||
|
console.log(JSON.stringify(require("../../api.json")));
|
||||||
|
}
|
||||||
|
function runDriver() {
|
||||||
|
const dispatcherConnection = new import_server.DispatcherConnection();
|
||||||
|
new import_server.RootDispatcher(dispatcherConnection, async (rootScope, { sdkLanguage }) => {
|
||||||
|
const playwright2 = (0, import_server.createPlaywright)({ sdkLanguage });
|
||||||
|
return new import_server.PlaywrightDispatcher(rootScope, playwright2);
|
||||||
|
});
|
||||||
|
const transport = new import_pipeTransport.PipeTransport(process.stdout, process.stdin);
|
||||||
|
transport.onmessage = (message) => dispatcherConnection.dispatch(JSON.parse(message));
|
||||||
|
const isJavaScriptLanguageBinding = !process.env.PW_LANG_NAME || process.env.PW_LANG_NAME === "javascript";
|
||||||
|
const replacer = !isJavaScriptLanguageBinding && String.prototype.toWellFormed ? (key, value) => {
|
||||||
|
if (typeof value === "string")
|
||||||
|
return value.toWellFormed();
|
||||||
|
return value;
|
||||||
|
} : void 0;
|
||||||
|
dispatcherConnection.onmessage = (message) => transport.send(JSON.stringify(message, replacer));
|
||||||
|
transport.onclose = () => {
|
||||||
|
dispatcherConnection.onmessage = () => {
|
||||||
|
};
|
||||||
|
(0, import_processLauncher.gracefullyProcessExitDoNotHang)(0);
|
||||||
|
};
|
||||||
|
process.on("SIGINT", () => {
|
||||||
|
});
|
||||||
|
}
|
||||||
|
async function runServer(options) {
|
||||||
|
const {
|
||||||
|
port,
|
||||||
|
host,
|
||||||
|
path = "/",
|
||||||
|
maxConnections = Infinity,
|
||||||
|
extension
|
||||||
|
} = options;
|
||||||
|
const server = new import_playwrightServer.PlaywrightServer({ mode: extension ? "extension" : "default", path, maxConnections });
|
||||||
|
const wsEndpoint = await server.listen(port, host);
|
||||||
|
process.on("exit", () => server.close().catch(console.error));
|
||||||
|
console.log("Listening on " + wsEndpoint);
|
||||||
|
process.stdin.on("close", () => (0, import_processLauncher.gracefullyProcessExitDoNotHang)(0));
|
||||||
|
}
|
||||||
|
async function launchBrowserServer(browserName, configFile) {
|
||||||
|
let options = {};
|
||||||
|
if (configFile)
|
||||||
|
options = JSON.parse(import_fs.default.readFileSync(configFile).toString());
|
||||||
|
const browserType = playwright[browserName];
|
||||||
|
const server = await browserType.launchServer(options);
|
||||||
|
console.log(server.wsEndpoint());
|
||||||
|
}
|
||||||
|
// Annotate the CommonJS export names for ESM import in node:
|
||||||
|
0 && (module.exports = {
|
||||||
|
launchBrowserServer,
|
||||||
|
printApiJson,
|
||||||
|
runDriver,
|
||||||
|
runServer
|
||||||
|
});
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user