easytouch-linux 1.0.6 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. package/.playwright/node/LICENSE +2607 -0
  2. package/.playwright/node/linux-x64/node +0 -0
  3. package/.playwright/package/README.md +3 -0
  4. package/.playwright/package/ThirdPartyNotices.txt +1602 -0
  5. package/.playwright/package/api.json +1 -0
  6. package/.playwright/package/bin/install_media_pack.ps1 +5 -0
  7. package/.playwright/package/bin/reinstall_chrome_beta_linux.sh +42 -0
  8. package/.playwright/package/bin/reinstall_chrome_beta_mac.sh +13 -0
  9. package/.playwright/package/bin/reinstall_chrome_beta_win.ps1 +24 -0
  10. package/.playwright/package/bin/reinstall_chrome_stable_linux.sh +42 -0
  11. package/.playwright/package/bin/reinstall_chrome_stable_mac.sh +12 -0
  12. package/.playwright/package/bin/reinstall_chrome_stable_win.ps1 +24 -0
  13. package/.playwright/package/bin/reinstall_msedge_beta_linux.sh +48 -0
  14. package/.playwright/package/bin/reinstall_msedge_beta_mac.sh +11 -0
  15. package/.playwright/package/bin/reinstall_msedge_beta_win.ps1 +23 -0
  16. package/.playwright/package/bin/reinstall_msedge_dev_linux.sh +48 -0
  17. package/.playwright/package/bin/reinstall_msedge_dev_mac.sh +11 -0
  18. package/.playwright/package/bin/reinstall_msedge_dev_win.ps1 +23 -0
  19. package/.playwright/package/bin/reinstall_msedge_stable_linux.sh +48 -0
  20. package/.playwright/package/bin/reinstall_msedge_stable_mac.sh +11 -0
  21. package/.playwright/package/bin/reinstall_msedge_stable_win.ps1 +24 -0
  22. package/.playwright/package/browsers.json +66 -0
  23. package/.playwright/package/cli.js +18 -0
  24. package/.playwright/package/index.d.ts +17 -0
  25. package/.playwright/package/index.js +33 -0
  26. package/.playwright/package/index.mjs +28 -0
  27. package/.playwright/package/lib/androidServerImpl.js +69 -0
  28. package/.playwright/package/lib/browserServerImpl.js +92 -0
  29. package/.playwright/package/lib/cli/driver.js +95 -0
  30. package/.playwright/package/lib/cli/program.js +583 -0
  31. package/.playwright/package/lib/cli/programWithTestStub.js +67 -0
  32. package/.playwright/package/lib/client/accessibility.js +50 -0
  33. package/.playwright/package/lib/client/android.js +473 -0
  34. package/.playwright/package/lib/client/api.js +285 -0
  35. package/.playwright/package/lib/client/artifact.js +79 -0
  36. package/.playwright/package/lib/client/browser.js +145 -0
  37. package/.playwright/package/lib/client/browserContext.js +559 -0
  38. package/.playwright/package/lib/client/browserType.js +241 -0
  39. package/.playwright/package/lib/client/cdpSession.js +53 -0
  40. package/.playwright/package/lib/client/channelOwner.js +215 -0
  41. package/.playwright/package/lib/client/clientHelper.js +57 -0
  42. package/.playwright/package/lib/client/clientInstrumentation.js +52 -0
  43. package/.playwright/package/lib/client/clock.js +68 -0
  44. package/.playwright/package/lib/client/connection.js +333 -0
  45. package/.playwright/package/lib/client/consoleMessage.js +55 -0
  46. package/.playwright/package/lib/client/coverage.js +41 -0
  47. package/.playwright/package/lib/client/dialog.js +57 -0
  48. package/.playwright/package/lib/client/download.js +62 -0
  49. package/.playwright/package/lib/client/electron.js +135 -0
  50. package/.playwright/package/lib/client/elementHandle.js +321 -0
  51. package/.playwright/package/lib/client/errors.js +77 -0
  52. package/.playwright/package/lib/client/eventEmitter.js +314 -0
  53. package/.playwright/package/lib/client/events.js +94 -0
  54. package/.playwright/package/lib/client/fetch.js +391 -0
  55. package/.playwright/package/lib/client/fileChooser.js +45 -0
  56. package/.playwright/package/lib/client/frame.js +504 -0
  57. package/.playwright/package/lib/client/harRouter.js +99 -0
  58. package/.playwright/package/lib/client/input.js +111 -0
  59. package/.playwright/package/lib/client/jsHandle.js +121 -0
  60. package/.playwright/package/lib/client/jsonPipe.js +35 -0
  61. package/.playwright/package/lib/client/localUtils.js +36 -0
  62. package/.playwright/package/lib/client/locator.js +448 -0
  63. package/.playwright/package/lib/client/network.js +769 -0
  64. package/.playwright/package/lib/client/page.js +748 -0
  65. package/.playwright/package/lib/client/playwright.js +80 -0
  66. package/.playwright/package/lib/client/selectors.js +67 -0
  67. package/.playwright/package/lib/client/stream.js +54 -0
  68. package/.playwright/package/lib/client/tracing.js +147 -0
  69. package/.playwright/package/lib/client/types.js +24 -0
  70. package/.playwright/package/lib/client/video.js +51 -0
  71. package/.playwright/package/lib/client/waiter.js +162 -0
  72. package/.playwright/package/lib/client/webError.js +37 -0
  73. package/.playwright/package/lib/client/worker.js +71 -0
  74. package/.playwright/package/lib/client/writableStream.js +54 -0
  75. package/.playwright/package/lib/common/socksProxy.js +569 -0
  76. package/.playwright/package/lib/common/timeoutSettings.js +73 -0
  77. package/.playwright/package/lib/common/types.js +5 -0
  78. package/.playwright/package/lib/generated/clockSource.js +7 -0
  79. package/.playwright/package/lib/generated/consoleApiSource.js +7 -0
  80. package/.playwright/package/lib/generated/injectedScriptSource.js +7 -0
  81. package/.playwright/package/lib/generated/pollingRecorderSource.js +7 -0
  82. package/.playwright/package/lib/generated/utilityScriptSource.js +7 -0
  83. package/.playwright/package/lib/generated/webSocketMockSource.js +7 -0
  84. package/.playwright/package/lib/image_tools/colorUtils.js +98 -0
  85. package/.playwright/package/lib/image_tools/compare.js +108 -0
  86. package/.playwright/package/lib/image_tools/imageChannel.js +70 -0
  87. package/.playwright/package/lib/image_tools/stats.js +102 -0
  88. package/.playwright/package/lib/inProcessFactory.js +56 -0
  89. package/.playwright/package/lib/inprocess.js +20 -0
  90. package/.playwright/package/lib/outofprocess.js +67 -0
  91. package/.playwright/package/lib/protocol/debug.js +27 -0
  92. package/.playwright/package/lib/protocol/serializers.js +173 -0
  93. package/.playwright/package/lib/protocol/transport.js +82 -0
  94. package/.playwright/package/lib/protocol/validator.js +2780 -0
  95. package/.playwright/package/lib/protocol/validatorPrimitives.js +139 -0
  96. package/.playwright/package/lib/remote/playwrightConnection.js +275 -0
  97. package/.playwright/package/lib/remote/playwrightServer.js +111 -0
  98. package/.playwright/package/lib/server/accessibility.js +62 -0
  99. package/.playwright/package/lib/server/android/android.js +441 -0
  100. package/.playwright/package/lib/server/android/backendAdb.js +172 -0
  101. package/.playwright/package/lib/server/artifact.js +104 -0
  102. package/.playwright/package/lib/server/bidi/bidiBrowser.js +314 -0
  103. package/.playwright/package/lib/server/bidi/bidiChromium.js +124 -0
  104. package/.playwright/package/lib/server/bidi/bidiConnection.js +204 -0
  105. package/.playwright/package/lib/server/bidi/bidiExecutionContext.js +175 -0
  106. package/.playwright/package/lib/server/bidi/bidiFirefox.js +104 -0
  107. package/.playwright/package/lib/server/bidi/bidiInput.js +160 -0
  108. package/.playwright/package/lib/server/bidi/bidiNetworkManager.js +337 -0
  109. package/.playwright/package/lib/server/bidi/bidiOverCdp.js +103 -0
  110. package/.playwright/package/lib/server/bidi/bidiPage.js +518 -0
  111. package/.playwright/package/lib/server/bidi/bidiPdf.js +140 -0
  112. package/.playwright/package/lib/server/bidi/third_party/bidiDeserializer.js +93 -0
  113. package/.playwright/package/lib/server/bidi/third_party/bidiKeyboard.js +240 -0
  114. package/.playwright/package/lib/server/bidi/third_party/bidiProtocol.js +139 -0
  115. package/.playwright/package/lib/server/bidi/third_party/bidiSerializer.js +144 -0
  116. package/.playwright/package/lib/server/bidi/third_party/firefoxPrefs.js +221 -0
  117. package/.playwright/package/lib/server/browser.js +148 -0
  118. package/.playwright/package/lib/server/browserContext.js +675 -0
  119. package/.playwright/package/lib/server/browserType.js +338 -0
  120. package/.playwright/package/lib/server/chromium/appIcon.png +0 -0
  121. package/.playwright/package/lib/server/chromium/chromium.js +354 -0
  122. package/.playwright/package/lib/server/chromium/chromiumSwitches.js +46 -0
  123. package/.playwright/package/lib/server/chromium/crAccessibility.js +237 -0
  124. package/.playwright/package/lib/server/chromium/crBrowser.js +516 -0
  125. package/.playwright/package/lib/server/chromium/crConnection.js +228 -0
  126. package/.playwright/package/lib/server/chromium/crCoverage.js +246 -0
  127. package/.playwright/package/lib/server/chromium/crDevTools.js +104 -0
  128. package/.playwright/package/lib/server/chromium/crDragDrop.js +143 -0
  129. package/.playwright/package/lib/server/chromium/crExecutionContext.js +132 -0
  130. package/.playwright/package/lib/server/chromium/crInput.js +182 -0
  131. package/.playwright/package/lib/server/chromium/crNetworkManager.js +767 -0
  132. package/.playwright/package/lib/server/chromium/crPage.js +1122 -0
  133. package/.playwright/package/lib/server/chromium/crPdf.js +153 -0
  134. package/.playwright/package/lib/server/chromium/crProtocolHelper.js +133 -0
  135. package/.playwright/package/lib/server/chromium/crServiceWorker.js +112 -0
  136. package/.playwright/package/lib/server/chromium/defaultFontFamilies.js +145 -0
  137. package/.playwright/package/lib/server/chromium/videoRecorder.js +155 -0
  138. package/.playwright/package/lib/server/clock.js +125 -0
  139. package/.playwright/package/lib/server/codegen/csharp.js +304 -0
  140. package/.playwright/package/lib/server/codegen/java.js +243 -0
  141. package/.playwright/package/lib/server/codegen/javascript.js +253 -0
  142. package/.playwright/package/lib/server/codegen/jsonl.js +47 -0
  143. package/.playwright/package/lib/server/codegen/language.js +88 -0
  144. package/.playwright/package/lib/server/codegen/languages.js +30 -0
  145. package/.playwright/package/lib/server/codegen/python.js +262 -0
  146. package/.playwright/package/lib/server/codegen/types.js +5 -0
  147. package/.playwright/package/lib/server/console.js +57 -0
  148. package/.playwright/package/lib/server/cookieStore.js +185 -0
  149. package/.playwright/package/lib/server/debugController.js +212 -0
  150. package/.playwright/package/lib/server/debugger.js +132 -0
  151. package/.playwright/package/lib/server/deviceDescriptors.js +26 -0
  152. package/.playwright/package/lib/server/deviceDescriptorsSource.json +1669 -0
  153. package/.playwright/package/lib/server/dialog.js +71 -0
  154. package/.playwright/package/lib/server/dispatchers/androidDispatcher.js +204 -0
  155. package/.playwright/package/lib/server/dispatchers/artifactDispatcher.js +118 -0
  156. package/.playwright/package/lib/server/dispatchers/browserContextDispatcher.js +357 -0
  157. package/.playwright/package/lib/server/dispatchers/browserDispatcher.js +170 -0
  158. package/.playwright/package/lib/server/dispatchers/browserTypeDispatcher.js +55 -0
  159. package/.playwright/package/lib/server/dispatchers/cdpSessionDispatcher.js +48 -0
  160. package/.playwright/package/lib/server/dispatchers/debugControllerDispatcher.js +105 -0
  161. package/.playwright/package/lib/server/dispatchers/dialogDispatcher.js +44 -0
  162. package/.playwright/package/lib/server/dispatchers/dispatcher.js +395 -0
  163. package/.playwright/package/lib/server/dispatchers/electronDispatcher.js +93 -0
  164. package/.playwright/package/lib/server/dispatchers/elementHandlerDispatcher.js +228 -0
  165. package/.playwright/package/lib/server/dispatchers/frameDispatcher.js +294 -0
  166. package/.playwright/package/lib/server/dispatchers/jsHandleDispatcher.js +97 -0
  167. package/.playwright/package/lib/server/dispatchers/jsonPipeDispatcher.js +59 -0
  168. package/.playwright/package/lib/server/dispatchers/localUtilsDispatcher.js +413 -0
  169. package/.playwright/package/lib/server/dispatchers/networkDispatchers.js +221 -0
  170. package/.playwright/package/lib/server/dispatchers/pageDispatcher.js +367 -0
  171. package/.playwright/package/lib/server/dispatchers/playwrightDispatcher.js +107 -0
  172. package/.playwright/package/lib/server/dispatchers/selectorsDispatcher.js +36 -0
  173. package/.playwright/package/lib/server/dispatchers/streamDispatcher.js +62 -0
  174. package/.playwright/package/lib/server/dispatchers/tracingDispatcher.js +64 -0
  175. package/.playwright/package/lib/server/dispatchers/webSocketRouteDispatcher.js +188 -0
  176. package/.playwright/package/lib/server/dispatchers/writableStreamDispatcher.js +58 -0
  177. package/.playwright/package/lib/server/dom.js +893 -0
  178. package/.playwright/package/lib/server/download.js +60 -0
  179. package/.playwright/package/lib/server/electron/electron.js +296 -0
  180. package/.playwright/package/lib/server/electron/loader.js +57 -0
  181. package/.playwright/package/lib/server/errors.js +68 -0
  182. package/.playwright/package/lib/server/fetch.js +663 -0
  183. package/.playwright/package/lib/server/fileChooser.js +42 -0
  184. package/.playwright/package/lib/server/fileUploadUtils.js +75 -0
  185. package/.playwright/package/lib/server/firefox/ffAccessibility.js +216 -0
  186. package/.playwright/package/lib/server/firefox/ffBrowser.js +462 -0
  187. package/.playwright/package/lib/server/firefox/ffConnection.js +168 -0
  188. package/.playwright/package/lib/server/firefox/ffExecutionContext.js +123 -0
  189. package/.playwright/package/lib/server/firefox/ffInput.js +161 -0
  190. package/.playwright/package/lib/server/firefox/ffNetworkManager.js +233 -0
  191. package/.playwright/package/lib/server/firefox/ffPage.js +544 -0
  192. package/.playwright/package/lib/server/firefox/firefox.js +99 -0
  193. package/.playwright/package/lib/server/formData.js +75 -0
  194. package/.playwright/package/lib/server/frameSelectors.js +171 -0
  195. package/.playwright/package/lib/server/frames.js +1663 -0
  196. package/.playwright/package/lib/server/har/harRecorder.js +139 -0
  197. package/.playwright/package/lib/server/har/harTracer.js +542 -0
  198. package/.playwright/package/lib/server/helper.js +103 -0
  199. package/.playwright/package/lib/server/index.js +108 -0
  200. package/.playwright/package/lib/server/input.js +309 -0
  201. package/.playwright/package/lib/server/instrumentation.js +70 -0
  202. package/.playwright/package/lib/server/isomorphic/utilityScriptSerializers.js +226 -0
  203. package/.playwright/package/lib/server/javascript.js +293 -0
  204. package/.playwright/package/lib/server/launchApp.js +91 -0
  205. package/.playwright/package/lib/server/macEditingCommands.js +139 -0
  206. package/.playwright/package/lib/server/network.js +617 -0
  207. package/.playwright/package/lib/server/page.js +863 -0
  208. package/.playwright/package/lib/server/pipeTransport.js +85 -0
  209. package/.playwright/package/lib/server/playwright.js +88 -0
  210. package/.playwright/package/lib/server/progress.js +99 -0
  211. package/.playwright/package/lib/server/protocolError.js +49 -0
  212. package/.playwright/package/lib/server/recorder/chat.js +177 -0
  213. package/.playwright/package/lib/server/recorder/contextRecorder.js +290 -0
  214. package/.playwright/package/lib/server/recorder/recorderApp.js +187 -0
  215. package/.playwright/package/lib/server/recorder/recorderCollection.js +104 -0
  216. package/.playwright/package/lib/server/recorder/recorderFrontend.js +5 -0
  217. package/.playwright/package/lib/server/recorder/recorderRunner.js +159 -0
  218. package/.playwright/package/lib/server/recorder/recorderUtils.js +89 -0
  219. package/.playwright/package/lib/server/recorder/throttledFile.js +46 -0
  220. package/.playwright/package/lib/server/recorder.js +367 -0
  221. package/.playwright/package/lib/server/registry/browserFetcher.js +168 -0
  222. package/.playwright/package/lib/server/registry/dependencies.js +322 -0
  223. package/.playwright/package/lib/server/registry/index.js +1165 -0
  224. package/.playwright/package/lib/server/registry/nativeDeps.js +496 -0
  225. package/.playwright/package/lib/server/registry/oopDownloadBrowserMain.js +138 -0
  226. package/.playwright/package/lib/server/screenshotter.js +348 -0
  227. package/.playwright/package/lib/server/selectors.js +73 -0
  228. package/.playwright/package/lib/server/socksClientCertificatesInterceptor.js +340 -0
  229. package/.playwright/package/lib/server/socksInterceptor.js +100 -0
  230. package/.playwright/package/lib/server/trace/recorder/snapshotter.js +161 -0
  231. package/.playwright/package/lib/server/trace/recorder/snapshotterInjected.js +518 -0
  232. package/.playwright/package/lib/server/trace/recorder/tracing.js +596 -0
  233. package/.playwright/package/lib/server/trace/test/inMemorySnapshotter.js +93 -0
  234. package/.playwright/package/lib/server/trace/viewer/traceViewer.js +219 -0
  235. package/.playwright/package/lib/server/transport.js +192 -0
  236. package/.playwright/package/lib/server/types.js +24 -0
  237. package/.playwright/package/lib/server/usKeyboardLayout.js +555 -0
  238. package/.playwright/package/lib/server/webkit/webkit.js +87 -0
  239. package/.playwright/package/lib/server/webkit/wkAccessibility.js +194 -0
  240. package/.playwright/package/lib/server/webkit/wkBrowser.js +329 -0
  241. package/.playwright/package/lib/server/webkit/wkConnection.js +173 -0
  242. package/.playwright/package/lib/server/webkit/wkExecutionContext.js +131 -0
  243. package/.playwright/package/lib/server/webkit/wkInput.js +179 -0
  244. package/.playwright/package/lib/server/webkit/wkInterceptableRequest.js +162 -0
  245. package/.playwright/package/lib/server/webkit/wkPage.js +1207 -0
  246. package/.playwright/package/lib/server/webkit/wkProvisionalPage.js +94 -0
  247. package/.playwright/package/lib/server/webkit/wkWorkers.js +104 -0
  248. package/.playwright/package/lib/third_party/pixelmatch.js +255 -0
  249. package/.playwright/package/lib/utils/ascii.js +31 -0
  250. package/.playwright/package/lib/utils/comparators.js +159 -0
  251. package/.playwright/package/lib/utils/crypto.js +171 -0
  252. package/.playwright/package/lib/utils/debug.js +46 -0
  253. package/.playwright/package/lib/utils/debugLogger.js +93 -0
  254. package/.playwright/package/lib/utils/env.js +49 -0
  255. package/.playwright/package/lib/utils/eventsHelper.js +38 -0
  256. package/.playwright/package/lib/utils/expectUtils.js +33 -0
  257. package/.playwright/package/lib/utils/fileUtils.js +205 -0
  258. package/.playwright/package/lib/utils/happy-eyeballs.js +194 -0
  259. package/.playwright/package/lib/utils/headers.js +52 -0
  260. package/.playwright/package/lib/utils/hostPlatform.js +145 -0
  261. package/.playwright/package/lib/utils/httpServer.js +233 -0
  262. package/.playwright/package/lib/utils/index.js +368 -0
  263. package/.playwright/package/lib/utils/isomorphic/ariaSnapshot.js +391 -0
  264. package/.playwright/package/lib/utils/isomorphic/cssParser.js +250 -0
  265. package/.playwright/package/lib/utils/isomorphic/cssTokenizer.js +979 -0
  266. package/.playwright/package/lib/utils/isomorphic/locatorGenerators.js +660 -0
  267. package/.playwright/package/lib/utils/isomorphic/locatorParser.js +185 -0
  268. package/.playwright/package/lib/utils/isomorphic/locatorUtils.js +62 -0
  269. package/.playwright/package/lib/utils/isomorphic/mimeType.js +29 -0
  270. package/.playwright/package/lib/utils/isomorphic/selectorParser.js +397 -0
  271. package/.playwright/package/lib/utils/isomorphic/stringUtils.js +169 -0
  272. package/.playwright/package/lib/utils/isomorphic/traceUtils.js +39 -0
  273. package/.playwright/package/lib/utils/isomorphic/urlMatch.js +122 -0
  274. package/.playwright/package/lib/utils/linuxUtils.js +78 -0
  275. package/.playwright/package/lib/utils/manualPromise.js +109 -0
  276. package/.playwright/package/lib/utils/multimap.js +75 -0
  277. package/.playwright/package/lib/utils/network.js +160 -0
  278. package/.playwright/package/lib/utils/processLauncher.js +248 -0
  279. package/.playwright/package/lib/utils/profiler.js +53 -0
  280. package/.playwright/package/lib/utils/rtti.js +44 -0
  281. package/.playwright/package/lib/utils/semaphore.js +51 -0
  282. package/.playwright/package/lib/utils/sequence.js +64 -0
  283. package/.playwright/package/lib/utils/spawnAsync.js +45 -0
  284. package/.playwright/package/lib/utils/stackTrace.js +134 -0
  285. package/.playwright/package/lib/utils/task.js +58 -0
  286. package/.playwright/package/lib/utils/time.js +37 -0
  287. package/.playwright/package/lib/utils/timeoutRunner.js +66 -0
  288. package/.playwright/package/lib/utils/traceUtils.js +44 -0
  289. package/.playwright/package/lib/utils/userAgent.js +105 -0
  290. package/.playwright/package/lib/utils/wsServer.js +128 -0
  291. package/.playwright/package/lib/utils/zipFile.js +75 -0
  292. package/.playwright/package/lib/utils/zones.js +69 -0
  293. package/.playwright/package/lib/utilsBundle.js +81 -0
  294. package/.playwright/package/lib/utilsBundleImpl/index.js +210 -0
  295. package/.playwright/package/lib/utilsBundleImpl/xdg-open +1066 -0
  296. package/.playwright/package/lib/vite/htmlReport/index.html +69 -0
  297. package/.playwright/package/lib/vite/recorder/assets/codeMirrorModule-C3UTv-Ge.css +1 -0
  298. package/.playwright/package/lib/vite/recorder/assets/codeMirrorModule-k-61wZCK.js +24 -0
  299. package/.playwright/package/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  300. package/.playwright/package/lib/vite/recorder/assets/index-B70BEW3b.js +184 -0
  301. package/.playwright/package/lib/vite/recorder/assets/index-eHBmevrY.css +1 -0
  302. package/.playwright/package/lib/vite/recorder/index.html +29 -0
  303. package/.playwright/package/lib/vite/recorder/playwright-logo.svg +9 -0
  304. package/.playwright/package/lib/vite/traceViewer/assets/codeMirrorModule-CyuxU5C-.js +24 -0
  305. package/.playwright/package/lib/vite/traceViewer/assets/defaultSettingsView-5nVJRt0A.js +243 -0
  306. package/.playwright/package/lib/vite/traceViewer/assets/xtermModule-c-SNdYZy.js +9 -0
  307. package/.playwright/package/lib/vite/traceViewer/codeMirrorModule.C3UTv-Ge.css +1 -0
  308. package/.playwright/package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  309. package/.playwright/package/lib/vite/traceViewer/defaultSettingsView.2xeEXCXv.css +1 -0
  310. package/.playwright/package/lib/vite/traceViewer/index.CFOW-Ezb.css +1 -0
  311. package/.playwright/package/lib/vite/traceViewer/index.html +43 -0
  312. package/.playwright/package/lib/vite/traceViewer/index.qVn2ZnpC.js +2 -0
  313. package/.playwright/package/lib/vite/traceViewer/playwright-logo.svg +9 -0
  314. package/.playwright/package/lib/vite/traceViewer/snapshot.html +21 -0
  315. package/.playwright/package/lib/vite/traceViewer/sw.bundle.js +3 -0
  316. package/.playwright/package/lib/vite/traceViewer/uiMode.BatfzHMG.css +1 -0
  317. package/.playwright/package/lib/vite/traceViewer/uiMode.html +17 -0
  318. package/.playwright/package/lib/vite/traceViewer/uiMode.m4IPRPOd.js +5 -0
  319. package/.playwright/package/lib/vite/traceViewer/xtermModule.Beg8tuEN.css +32 -0
  320. package/.playwright/package/lib/zipBundle.js +25 -0
  321. package/.playwright/package/lib/zipBundleImpl.js +5 -0
  322. package/.playwright/package/package.json +44 -0
  323. package/.playwright/package/protocol.yml +3758 -0
  324. package/.playwright/package/types/protocol.d.ts +21868 -0
  325. package/.playwright/package/types/structs.d.ts +45 -0
  326. package/.playwright/package/types/types.d.ts +22663 -0
  327. package/README.md +6 -6
  328. package/et +0 -0
  329. package/package.json +7 -2
  330. package/playwright.ps1 +7 -0
  331. package/scripts/playwright-bridge.js +560 -0
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  目前:
6
6
 
7
7
  - [x] Windows
8
- - [ ] Linux
8
+ - [x] Linux
9
9
  - [ ] MAC(目前缺少设备验证功能)
10
10
 
11
11
 
@@ -44,13 +44,13 @@
44
44
 
45
45
  ```bash
46
46
  # Windows
47
- npm i @whuanle/easytouch-windows
47
+ npm i easytouch-windows
48
48
 
49
49
  # Linux
50
- npm i @whuanle/easytouch-linux
50
+ npm i easytouch-linux
51
51
 
52
52
  # macOS
53
- npm i @whuanle/easytouch-mac
53
+ npm i easytouch-mac
54
54
  ```
55
55
 
56
56
 
@@ -115,7 +115,7 @@ npx skills add https://github.com/whuanle/EasyTouch
115
115
 
116
116
 
117
117
 
118
- 注:skills 里面不带脚本,需提前使用 `npm i @whuanle/easytouch-windows` 安装工具。
118
+ 注:skills 里面不带脚本,需提前使用 `npm i easytouch-windows` 安装工具。
119
119
 
120
120
  ![image-20260224090411080](images/image-20260224090411080.png)
121
121
 
@@ -125,7 +125,7 @@ npx skills add https://github.com/whuanle/EasyTouch
125
125
 
126
126
  如果只是给 AI 工具使用,建议使用 skills 即可,配置 MCP 可能会麻烦一些。
127
127
 
128
- 在 Claude、Cursor 等工具中,配置 MCP 的方式都是大同小异,通过 npm/bun 等方式安装的 EasyTouch,程序文件在 `$basedir/node_modules/@whuanle/easytouch-windows` 下面,。
128
+ 在 Claude、Cursor 等工具中,配置 MCP 的方式都是大同小异,通过 npm/bun 等方式安装的 EasyTouch,程序文件在 `$basedir/node_modules/easytouch-windows` 下面,。
129
129
 
130
130
 
131
131
 
package/et CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "easytouch-linux",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
4
4
  "description": "Linux system automation tool with MCP support",
5
5
  "author": "MaomiAgent Team",
6
6
  "license": "MIT",
@@ -34,7 +34,12 @@
34
34
  "files": [
35
35
  "et",
36
36
  "install.js",
37
- "SKILL.md"
37
+ "et-launcher.js",
38
+ ".playwright/",
39
+ "playwright.ps1",
40
+ "scripts/",
41
+ "SKILL.md",
42
+ "README.md"
38
43
  ],
39
44
  "repository": {
40
45
  "type": "git",
package/playwright.ps1 ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env pwsh
2
+
3
+ $Env:PLAYWRIGHT_DRIVER_SEARCH_PATH = $PSScriptRoot;
4
+ $playwrightLibrary = [System.IO.Path]::GetFullPath([System.IO.Path]::Combine($PSScriptRoot, "Microsoft.Playwright.dll"))
5
+ # We load the library via the memory to not keep the .dll file locked/opened.
6
+ [Reflection.Assembly]::Load([System.IO.File]::ReadAllBytes($playwrightLibrary)) | Out-Null
7
+ exit [Microsoft.Playwright.Program]::Main($args)
@@ -0,0 +1,560 @@
1
+ #!/usr/bin/env node
2
+
3
+ const net = require('net');
4
+ const fs = require('fs');
5
+ const os = require('os');
6
+ const path = require('path');
7
+ const { execSync, spawn } = require('child_process');
8
+ let chromium;
9
+ let firefox;
10
+ let webkit;
11
+
12
+ function loadPlaywright() {
13
+ try {
14
+ return require('playwright');
15
+ } catch {
16
+ try {
17
+ const globalRoot = execSync('npm root -g', {
18
+ encoding: 'utf8',
19
+ windowsHide: true
20
+ }).trim();
21
+ return require(path.join(globalRoot, 'playwright'));
22
+ } catch {
23
+ throw new Error(
24
+ 'Playwright package not found. Run: npm install -g playwright && npx playwright install chromium'
25
+ );
26
+ }
27
+ }
28
+ }
29
+
30
+ const playwright = loadPlaywright();
31
+ chromium = playwright.chromium;
32
+ firefox = playwright.firefox;
33
+ webkit = playwright.webkit;
34
+
35
+ const DAEMON_FILE = path.join(os.tmpdir(), 'easytouch-playwright-daemon.json');
36
+ const browserTypeMap = {
37
+ chromium,
38
+ chrome: chromium,
39
+ firefox,
40
+ webkit,
41
+ safari: webkit
42
+ };
43
+
44
+ const browsers = new Map();
45
+
46
+ function parseArg(args, key) {
47
+ const idx = args.indexOf(key);
48
+ if (idx >= 0 && idx + 1 < args.length) {
49
+ return args[idx + 1];
50
+ }
51
+ return null;
52
+ }
53
+
54
+ function safeJsonParse(text) {
55
+ try {
56
+ return JSON.parse(text);
57
+ } catch {
58
+ return null;
59
+ }
60
+ }
61
+
62
+ function writeJsonLine(socket, obj) {
63
+ socket.write(JSON.stringify(obj) + '\n');
64
+ }
65
+
66
+ async function ensureDaemon() {
67
+ if (fs.existsSync(DAEMON_FILE)) {
68
+ const existing = safeJsonParse(fs.readFileSync(DAEMON_FILE, 'utf8'));
69
+ if (existing && existing.port) {
70
+ try {
71
+ await sendRequest(existing.port, { command: 'ping', args: [] }, 800);
72
+ return existing;
73
+ } catch {}
74
+ }
75
+ }
76
+
77
+ const child = spawn(process.execPath, [__filename, 'daemon'], {
78
+ detached: true,
79
+ stdio: 'ignore',
80
+ windowsHide: true
81
+ });
82
+ child.unref();
83
+
84
+ const deadline = Date.now() + 5000;
85
+ while (Date.now() < deadline) {
86
+ if (fs.existsSync(DAEMON_FILE)) {
87
+ const created = safeJsonParse(fs.readFileSync(DAEMON_FILE, 'utf8'));
88
+ if (created && created.port) {
89
+ try {
90
+ await sendRequest(created.port, { command: 'ping', args: [] }, 800);
91
+ return created;
92
+ } catch {}
93
+ }
94
+ }
95
+ await new Promise((r) => setTimeout(r, 100));
96
+ }
97
+
98
+ throw new Error('Failed to start Playwright bridge daemon');
99
+ }
100
+
101
+ function sendRequest(port, payload, timeoutMs = 30000) {
102
+ return new Promise((resolve, reject) => {
103
+ const socket = net.createConnection({ host: '127.0.0.1', port }, () => {
104
+ writeJsonLine(socket, payload);
105
+ });
106
+
107
+ let buffer = '';
108
+ let done = false;
109
+
110
+ const timer = setTimeout(() => {
111
+ if (done) return;
112
+ done = true;
113
+ socket.destroy();
114
+ reject(new Error('Bridge request timeout'));
115
+ }, timeoutMs);
116
+
117
+ socket.on('data', (chunk) => {
118
+ buffer += chunk.toString();
119
+ const lineEnd = buffer.indexOf('\n');
120
+ if (lineEnd === -1) return;
121
+ const line = buffer.slice(0, lineEnd).trim();
122
+ if (!line || done) return;
123
+ done = true;
124
+ clearTimeout(timer);
125
+ socket.end();
126
+ const parsed = safeJsonParse(line);
127
+ if (!parsed) {
128
+ reject(new Error('Invalid bridge response'));
129
+ return;
130
+ }
131
+ resolve(parsed);
132
+ });
133
+
134
+ socket.on('error', (err) => {
135
+ if (done) return;
136
+ done = true;
137
+ clearTimeout(timer);
138
+ reject(err);
139
+ });
140
+ });
141
+ }
142
+
143
+ function getLauncher(type) {
144
+ const launcher = browserTypeMap[(type || 'chromium').toLowerCase()];
145
+ return launcher || chromium;
146
+ }
147
+
148
+ async function getPrimaryPage(browser) {
149
+ let context = browser.contexts()[0];
150
+ if (!context) {
151
+ context = await browser.newContext();
152
+ }
153
+ let page = context.pages()[0];
154
+ if (!page) {
155
+ page = await context.newPage();
156
+ }
157
+ return page;
158
+ }
159
+
160
+ async function runLaunch(args) {
161
+ const browserId = parseArg(args, '--browser-id');
162
+ if (!browserId) throw new Error('Missing --browser-id');
163
+
164
+ const browserType = (parseArg(args, '--browser') || 'chromium').toLowerCase();
165
+ const headless = args.includes('--headless');
166
+ const executablePath = parseArg(args, '--executable');
167
+ const url = parseArg(args, '--url');
168
+
169
+ const launcher = getLauncher(browserType);
170
+ const browser = await launcher.launch({
171
+ headless,
172
+ ...(executablePath ? { executablePath } : {})
173
+ });
174
+
175
+ const page = await getPrimaryPage(browser);
176
+ if (url) {
177
+ await page.goto(url, { waitUntil: 'load', timeout: 30000 });
178
+ }
179
+
180
+ browsers.set(browserId, {
181
+ id: browserId,
182
+ type: browserType,
183
+ browser,
184
+ createdAt: Date.now()
185
+ });
186
+
187
+ return {
188
+ BrowserId: browserId,
189
+ BrowserType: browserType,
190
+ Version: browser.version()
191
+ };
192
+ }
193
+
194
+ function getBrowserOrThrow(browserId) {
195
+ const instance = browsers.get(browserId);
196
+ if (!instance) throw new Error(`Browser not found: ${browserId}`);
197
+ return instance;
198
+ }
199
+
200
+ async function runNavigate(args) {
201
+ const browserId = parseArg(args, '--browser-id');
202
+ const url = parseArg(args, '--url');
203
+ if (!browserId || !url) throw new Error('Missing --browser-id or --url');
204
+
205
+ const waitUntil = parseArg(args, '--wait-until') || 'load';
206
+ const timeout = Number.parseInt(parseArg(args, '--timeout') || '30000', 10);
207
+
208
+ const instance = getBrowserOrThrow(browserId);
209
+ const page = await getPrimaryPage(instance.browser);
210
+ const response = await page.goto(url, { waitUntil, timeout });
211
+
212
+ return {
213
+ Url: page.url(),
214
+ Title: await page.title(),
215
+ StatusCode: response ? response.status() : 0
216
+ };
217
+ }
218
+
219
+ async function runClick(args) {
220
+ const browserId = parseArg(args, '--browser-id');
221
+ const selector = parseArg(args, '--selector');
222
+ if (!browserId || !selector) throw new Error('Missing --browser-id or --selector');
223
+
224
+ const selectorType = parseArg(args, '--selector-type') || 'css';
225
+ const button = Number.parseInt(parseArg(args, '--button') || '0', 10);
226
+ const clickCount = Number.parseInt(parseArg(args, '--click-count') || '1', 10);
227
+ const timeout = Number.parseInt(parseArg(args, '--timeout') || '30000', 10);
228
+
229
+ const buttonMap = ['left', 'middle', 'right'];
230
+ const instance = getBrowserOrThrow(browserId);
231
+ const page = await getPrimaryPage(instance.browser);
232
+ const locator = getLocator(page, selector, selectorType);
233
+
234
+ await locator.click({
235
+ button: buttonMap[button] || 'left',
236
+ clickCount,
237
+ timeout
238
+ });
239
+ return { Message: 'OK' };
240
+ }
241
+
242
+ async function runFill(args) {
243
+ const browserId = parseArg(args, '--browser-id');
244
+ const selector = parseArg(args, '--selector');
245
+ const value = parseArg(args, '--value') ?? '';
246
+ if (!browserId || !selector) throw new Error('Missing --browser-id or --selector');
247
+
248
+ const selectorType = parseArg(args, '--selector-type') || 'css';
249
+ const timeout = Number.parseInt(parseArg(args, '--timeout') || '30000', 10);
250
+ const noClear = args.includes('--no-clear');
251
+
252
+ const instance = getBrowserOrThrow(browserId);
253
+ const page = await getPrimaryPage(instance.browser);
254
+ const locator = getLocator(page, selector, selectorType);
255
+
256
+ if (!noClear) {
257
+ await locator.clear({ timeout });
258
+ }
259
+ await locator.fill(value, { timeout });
260
+ return { Message: 'OK' };
261
+ }
262
+
263
+ async function runFind(args) {
264
+ const browserId = parseArg(args, '--browser-id');
265
+ const selector = parseArg(args, '--selector');
266
+ if (!browserId || !selector) throw new Error('Missing --browser-id or --selector');
267
+
268
+ const selectorType = parseArg(args, '--selector-type') || 'css';
269
+ const timeout = Number.parseInt(parseArg(args, '--timeout') || '5000', 10);
270
+
271
+ const instance = getBrowserOrThrow(browserId);
272
+ const page = await getPrimaryPage(instance.browser);
273
+ const locator = getLocator(page, selector, selectorType);
274
+
275
+ await locator.first.waitFor({ timeout, state: 'attached' }).catch(() => {});
276
+ const count = await locator.count();
277
+ if (count === 0) return { Found: false };
278
+
279
+ const element = locator.first;
280
+ const tagName = await element.evaluate((el) => el.tagName.toLowerCase());
281
+ const text = await element.textContent();
282
+ const value = await element.inputValue().catch(() => null);
283
+ const bbox = await element.boundingBox();
284
+
285
+ return {
286
+ Found: true,
287
+ TagName: tagName,
288
+ Text: text,
289
+ Value: value,
290
+ BoundingBox: bbox
291
+ ? { X: bbox.x, Y: bbox.y, Width: bbox.width, Height: bbox.height }
292
+ : null
293
+ };
294
+ }
295
+
296
+ async function runGetText(args) {
297
+ const browserId = parseArg(args, '--browser-id');
298
+ if (!browserId) throw new Error('Missing --browser-id');
299
+
300
+ const selector = parseArg(args, '--selector');
301
+ const selectorType = parseArg(args, '--selector-type') || 'css';
302
+
303
+ const instance = getBrowserOrThrow(browserId);
304
+ const page = await getPrimaryPage(instance.browser);
305
+ if (!selector) {
306
+ return { Text: await page.content(), Selector: null };
307
+ }
308
+
309
+ const locator = getLocator(page, selector, selectorType);
310
+ return { Text: (await locator.textContent()) || '', Selector: selector };
311
+ }
312
+
313
+ async function runScreenshot(args) {
314
+ const browserId = parseArg(args, '--browser-id');
315
+ if (!browserId) throw new Error('Missing --browser-id');
316
+
317
+ const output = parseArg(args, '--output');
318
+ if (!output) throw new Error('Missing --output');
319
+
320
+ const selector = parseArg(args, '--selector');
321
+ const selectorType = parseArg(args, '--selector-type') || 'css';
322
+ const type = (parseArg(args, '--type') || 'png').toLowerCase();
323
+ const fullPage = args.includes('--full-page');
324
+ const quality = parseArg(args, '--quality');
325
+
326
+ const instance = getBrowserOrThrow(browserId);
327
+ const page = await getPrimaryPage(instance.browser);
328
+
329
+ const options = {
330
+ path: output,
331
+ type: type === 'jpeg' ? 'jpeg' : 'png'
332
+ };
333
+ if (quality && options.type === 'jpeg') {
334
+ options.quality = Number.parseInt(quality, 10);
335
+ }
336
+
337
+ if (selector) {
338
+ const locator = getLocator(page, selector, selectorType);
339
+ await locator.screenshot(options);
340
+ } else {
341
+ await page.screenshot({ ...options, fullPage });
342
+ }
343
+
344
+ return { ImagePath: output, Width: 0, Height: 0 };
345
+ }
346
+
347
+ async function runEvaluate(args) {
348
+ const browserId = parseArg(args, '--browser-id');
349
+ const scriptFile = parseArg(args, '--script-file');
350
+ if (!browserId || !scriptFile) throw new Error('Missing --browser-id or --script-file');
351
+
352
+ const script = fs.readFileSync(scriptFile, 'utf8');
353
+ const instance = getBrowserOrThrow(browserId);
354
+ const page = await getPrimaryPage(instance.browser);
355
+ const result = await page.evaluate(script);
356
+
357
+ return {
358
+ Result: result,
359
+ ResultType: typeof result
360
+ };
361
+ }
362
+
363
+ async function runWaitFor(args) {
364
+ const browserId = parseArg(args, '--browser-id');
365
+ const selector = parseArg(args, '--selector');
366
+ if (!browserId || !selector) throw new Error('Missing --browser-id or --selector');
367
+
368
+ const selectorType = parseArg(args, '--selector-type') || 'css';
369
+ const state = parseArg(args, '--state') || 'visible';
370
+ const timeout = Number.parseInt(parseArg(args, '--timeout') || '30000', 10);
371
+
372
+ const instance = getBrowserOrThrow(browserId);
373
+ const page = await getPrimaryPage(instance.browser);
374
+ const locator = getLocator(page, selector, selectorType);
375
+ await locator.waitFor({ state, timeout });
376
+
377
+ return { Message: 'OK' };
378
+ }
379
+
380
+ async function runList() {
381
+ const list = [];
382
+ for (const [id, instance] of browsers) {
383
+ let currentUrl = '';
384
+ let currentTitle = '';
385
+ let connected = false;
386
+ try {
387
+ connected = instance.browser.isConnected();
388
+ if (connected) {
389
+ const page = await getPrimaryPage(instance.browser);
390
+ currentUrl = page.url();
391
+ currentTitle = await page.title();
392
+ }
393
+ } catch {
394
+ connected = false;
395
+ }
396
+
397
+ list.push({
398
+ Id: id,
399
+ Type: instance.type,
400
+ Version: instance.browser.version(),
401
+ CurrentUrl: currentUrl,
402
+ CurrentTitle: currentTitle,
403
+ IsConnected: connected
404
+ });
405
+ }
406
+ return { Browsers: list };
407
+ }
408
+
409
+ async function runClose(args) {
410
+ const browserId = parseArg(args, '--browser-id');
411
+ if (!browserId) throw new Error('Missing --browser-id');
412
+
413
+ const instance = browsers.get(browserId);
414
+ if (!instance) {
415
+ return { Message: 'OK' };
416
+ }
417
+
418
+ try {
419
+ await instance.browser.close();
420
+ } catch {}
421
+ browsers.delete(browserId);
422
+ return { Message: 'OK' };
423
+ }
424
+
425
+ function getLocator(page, selector, selectorType) {
426
+ switch ((selectorType || 'css').toLowerCase()) {
427
+ case 'xpath':
428
+ return page.locator(`xpath=${selector}`);
429
+ case 'text':
430
+ return page.getByText(selector);
431
+ case 'id':
432
+ return page.locator(`#${selector}`);
433
+ default:
434
+ return page.locator(selector);
435
+ }
436
+ }
437
+
438
+ async function executeCommand(command, args) {
439
+ switch (command) {
440
+ case 'ping':
441
+ return { Message: 'pong' };
442
+ case 'launch':
443
+ return runLaunch(args);
444
+ case 'list':
445
+ return runList();
446
+ case 'navigate':
447
+ return runNavigate(args);
448
+ case 'click':
449
+ return runClick(args);
450
+ case 'fill':
451
+ return runFill(args);
452
+ case 'find':
453
+ return runFind(args);
454
+ case 'get-text':
455
+ return runGetText(args);
456
+ case 'screenshot':
457
+ return runScreenshot(args);
458
+ case 'evaluate':
459
+ return runEvaluate(args);
460
+ case 'wait-for':
461
+ return runWaitFor(args);
462
+ case 'close':
463
+ return runClose(args);
464
+ default:
465
+ throw new Error(`Unknown command: ${command}`);
466
+ }
467
+ }
468
+
469
+ async function runDaemon() {
470
+ const server = net.createServer((socket) => {
471
+ let buffer = '';
472
+ socket.on('data', async (chunk) => {
473
+ buffer += chunk.toString();
474
+ const lineEnd = buffer.indexOf('\n');
475
+ if (lineEnd === -1) return;
476
+
477
+ const line = buffer.slice(0, lineEnd).trim();
478
+ buffer = '';
479
+ const req = safeJsonParse(line);
480
+ if (!req || !req.command) {
481
+ writeJsonLine(socket, { ok: false, error: 'Invalid request' });
482
+ return;
483
+ }
484
+
485
+ try {
486
+ const data = await executeCommand(req.command, req.args || []);
487
+ writeJsonLine(socket, { ok: true, data });
488
+ } catch (err) {
489
+ writeJsonLine(socket, { ok: false, error: err.message || String(err) });
490
+ }
491
+ });
492
+ });
493
+
494
+ server.listen(0, '127.0.0.1', () => {
495
+ const port = server.address().port;
496
+ fs.writeFileSync(DAEMON_FILE, JSON.stringify({ pid: process.pid, port }));
497
+ });
498
+
499
+ const shutdown = async () => {
500
+ for (const instance of browsers.values()) {
501
+ try {
502
+ await instance.browser.close();
503
+ } catch {}
504
+ }
505
+ try {
506
+ fs.unlinkSync(DAEMON_FILE);
507
+ } catch {}
508
+ process.exit(0);
509
+ };
510
+
511
+ process.on('SIGINT', shutdown);
512
+ process.on('SIGTERM', shutdown);
513
+ }
514
+
515
+ async function runClient(command, args) {
516
+ const daemon = await ensureDaemon();
517
+ const result = await sendRequest(daemon.port, { command, args });
518
+ if (!result.ok) {
519
+ throw new Error(result.error || 'Bridge command failed');
520
+ }
521
+
522
+ const data = result.data;
523
+ if (data === undefined || data === null) {
524
+ return;
525
+ }
526
+ if (typeof data === 'string') {
527
+ console.log(data);
528
+ return;
529
+ }
530
+ console.log(JSON.stringify(data));
531
+ }
532
+
533
+ async function main() {
534
+ const args = process.argv.slice(2);
535
+ const command = args[0];
536
+
537
+ if (!command) {
538
+ console.error('ERROR: Missing command');
539
+ process.exit(1);
540
+ }
541
+
542
+ if (command === 'daemon') {
543
+ await runDaemon();
544
+ return;
545
+ }
546
+
547
+ if (command === '--version' || command === '-v') {
548
+ console.log('EasyTouch Playwright Bridge v2.0.0');
549
+ return;
550
+ }
551
+
552
+ try {
553
+ await runClient(command, args.slice(1));
554
+ } catch (err) {
555
+ console.error(`ERROR: ${err.message || String(err)}`);
556
+ process.exit(1);
557
+ }
558
+ }
559
+
560
+ main();