@browserless.io/browserless 2.25.0-beta-2 → 2.25.1

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 (224) hide show
  1. package/CHANGELOG.md +43 -3
  2. package/README.md +4 -5
  3. package/build/browserless.js +3 -1
  4. package/build/browsers/browsers.cdp.d.ts +3 -0
  5. package/build/browsers/browsers.cdp.js +4 -1
  6. package/build/browsers/browsers.playwright.d.ts +4 -0
  7. package/build/browsers/browsers.playwright.js +11 -2
  8. package/build/browsers/index.js +4 -3
  9. package/build/http.d.ts +9 -0
  10. package/build/http.js +9 -0
  11. package/build/routes/chrome/http/content.post.body.json +8 -8
  12. package/build/routes/chrome/http/pdf.post.body.json +8 -8
  13. package/build/routes/chrome/http/scrape.post.body.json +8 -8
  14. package/build/routes/chrome/http/screenshot.post.body.json +8 -8
  15. package/build/routes/chrome/tests/kill-sessions.spec.js +1 -1
  16. package/build/routes/chromium/http/content.post.body.json +8 -8
  17. package/build/routes/chromium/http/pdf.post.body.json +8 -8
  18. package/build/routes/chromium/http/scrape.post.body.json +8 -8
  19. package/build/routes/chromium/http/screenshot.post.body.json +8 -8
  20. package/build/routes/chromium/tests/kill-sessions.spec.js +1 -1
  21. package/build/routes/edge/http/content.post.body.json +579 -0
  22. package/build/routes/edge/http/content.post.d.ts +8 -0
  23. package/build/routes/edge/http/content.post.js +7 -0
  24. package/build/routes/edge/http/content.post.query.json +183 -0
  25. package/build/routes/edge/http/content.post.response.json +5 -0
  26. package/build/routes/edge/http/download.post.body.json +32 -0
  27. package/build/routes/edge/http/download.post.d.ts +8 -0
  28. package/build/routes/edge/http/download.post.js +7 -0
  29. package/build/routes/edge/http/download.post.query.json +120 -0
  30. package/build/routes/edge/http/download.post.response.json +4 -0
  31. package/build/routes/edge/http/function.post.body.json +32 -0
  32. package/build/routes/edge/http/function.post.d.ts +8 -0
  33. package/build/routes/edge/http/function.post.js +7 -0
  34. package/build/routes/edge/http/function.post.query.json +120 -0
  35. package/build/routes/edge/http/function.post.response.json +4 -0
  36. package/build/routes/edge/http/json-list.get.d.ts +5 -0
  37. package/build/routes/edge/http/json-list.get.js +5 -0
  38. package/build/routes/edge/http/json-list.get.response.json +52 -0
  39. package/build/routes/edge/http/json-new.put.d.ts +5 -0
  40. package/build/routes/edge/http/json-new.put.js +5 -0
  41. package/build/routes/edge/http/json-new.put.response.json +44 -0
  42. package/build/routes/edge/http/json-protocol.get.d.ts +5 -0
  43. package/build/routes/edge/http/json-protocol.get.js +5 -0
  44. package/build/routes/edge/http/json-protocol.get.response.json +6 -0
  45. package/build/routes/edge/http/json-version.get.d.ts +5 -0
  46. package/build/routes/edge/http/json-version.get.js +5 -0
  47. package/build/routes/edge/http/json-version.get.response.json +44 -0
  48. package/build/routes/edge/http/pdf.post.body.json +724 -0
  49. package/build/routes/edge/http/pdf.post.d.ts +8 -0
  50. package/build/routes/edge/http/pdf.post.js +7 -0
  51. package/build/routes/edge/http/pdf.post.query.json +120 -0
  52. package/build/routes/edge/http/pdf.post.response.json +5 -0
  53. package/build/routes/edge/http/performance.post.body.json +26 -0
  54. package/build/routes/edge/http/performance.post.d.ts +8 -0
  55. package/build/routes/edge/http/performance.post.js +7 -0
  56. package/build/routes/edge/http/performance.post.query.json +120 -0
  57. package/build/routes/edge/http/performance.post.response.json +7 -0
  58. package/build/routes/edge/http/scrape.post.body.json +626 -0
  59. package/build/routes/edge/http/scrape.post.d.ts +8 -0
  60. package/build/routes/edge/http/scrape.post.js +7 -0
  61. package/build/routes/edge/http/scrape.post.query.json +183 -0
  62. package/build/routes/edge/http/scrape.post.response.json +334 -0
  63. package/build/routes/edge/http/screenshot.post.body.json +669 -0
  64. package/build/routes/edge/http/screenshot.post.d.ts +8 -0
  65. package/build/routes/edge/http/screenshot.post.js +7 -0
  66. package/build/routes/edge/http/screenshot.post.query.json +120 -0
  67. package/build/routes/edge/http/screenshot.post.response.json +5 -0
  68. package/build/routes/edge/tests/content.spec.d.ts +1 -0
  69. package/build/routes/edge/tests/content.spec.js +312 -0
  70. package/build/routes/edge/tests/download.spec.d.ts +1 -0
  71. package/build/routes/edge/tests/download.spec.js +67 -0
  72. package/build/routes/edge/tests/function.spec.d.ts +1 -0
  73. package/build/routes/edge/tests/function.spec.js +277 -0
  74. package/build/routes/edge/tests/json-version.spec.d.ts +1 -0
  75. package/build/routes/edge/tests/json-version.spec.js +37 -0
  76. package/build/routes/edge/tests/kill-sessions.spec.d.ts +1 -0
  77. package/build/routes/edge/tests/kill-sessions.spec.js +80 -0
  78. package/build/routes/edge/tests/page-websocket.spec.d.ts +1 -0
  79. package/build/routes/edge/tests/page-websocket.spec.js +97 -0
  80. package/build/routes/edge/tests/pdf.spec.d.ts +1 -0
  81. package/build/routes/edge/tests/pdf.spec.js +345 -0
  82. package/build/routes/edge/tests/performance.spec.d.ts +1 -0
  83. package/build/routes/edge/tests/performance.spec.js +124 -0
  84. package/build/routes/edge/tests/scrape.spec.d.ts +1 -0
  85. package/build/routes/edge/tests/scrape.spec.js +354 -0
  86. package/build/routes/edge/tests/screenshot.spec.d.ts +1 -0
  87. package/build/routes/edge/tests/screenshot.spec.js +339 -0
  88. package/build/routes/edge/tests/websocket.spec.d.ts +1 -0
  89. package/build/routes/edge/tests/websocket.spec.js +384 -0
  90. package/build/routes/edge/ws/browser.d.ts +7 -0
  91. package/build/routes/edge/ws/browser.js +6 -0
  92. package/build/routes/edge/ws/browser.query.json +120 -0
  93. package/build/routes/edge/ws/cdp.d.ts +8 -0
  94. package/build/routes/edge/ws/cdp.js +7 -0
  95. package/build/routes/edge/ws/cdp.query.json +120 -0
  96. package/build/routes/edge/ws/page.d.ts +8 -0
  97. package/build/routes/edge/ws/page.js +7 -0
  98. package/build/routes/edge/ws/page.query.json +120 -0
  99. package/build/routes/edge/ws/playwright.d.ts +8 -0
  100. package/build/routes/edge/ws/playwright.js +7 -0
  101. package/build/routes/edge/ws/playwright.query.json +100 -0
  102. package/build/routes/firefox/tests/kill-sessions.spec.js +1 -1
  103. package/build/routes/management/http/meta.get.js +3 -1
  104. package/build/routes/webkit/tests/kill-sessions.spec.js +1 -1
  105. package/build/sdk-utils.js +1 -1
  106. package/build/shared/scrape.http.js +2 -2
  107. package/build/types.d.ts +32 -0
  108. package/build/types.js +18 -0
  109. package/build/utils.d.ts +1 -0
  110. package/build/utils.js +16 -2
  111. package/docker/chrome/Dockerfile +14 -14
  112. package/docker/chromium/Dockerfile +14 -14
  113. package/docker/edge/.dockerignore +16 -0
  114. package/docker/edge/Dockerfile +43 -0
  115. package/docker/firefox/Dockerfile +14 -14
  116. package/docker/multi/Dockerfile +18 -18
  117. package/docker/sdk/Dockerfile +10 -0
  118. package/extensions/ublock/_locales/ar/messages.json +3 -3
  119. package/extensions/ublock/_locales/bg/messages.json +1 -1
  120. package/extensions/ublock/_locales/br_FR/messages.json +2 -2
  121. package/extensions/ublock/_locales/cy/messages.json +11 -11
  122. package/extensions/ublock/_locales/el/messages.json +2 -2
  123. package/extensions/ublock/_locales/hu/messages.json +1 -1
  124. package/extensions/ublock/_locales/id/messages.json +1 -1
  125. package/extensions/ublock/_locales/lv/messages.json +4 -4
  126. package/extensions/ublock/_locales/mk/messages.json +130 -130
  127. package/extensions/ublock/_locales/oc/messages.json +1 -1
  128. package/extensions/ublock/_locales/pt_BR/messages.json +1 -1
  129. package/extensions/ublock/_locales/pt_PT/messages.json +2 -2
  130. package/extensions/ublock/_locales/si/messages.json +100 -100
  131. package/extensions/ublock/_locales/sr/messages.json +4 -4
  132. package/extensions/ublock/_locales/vi/messages.json +19 -19
  133. package/extensions/ublock/_locales/zh_TW/messages.json +28 -28
  134. package/extensions/ublock/assets/assets.json +33 -29
  135. package/extensions/ublock/assets/thirdparties/easylist/easylist.txt +2984 -3287
  136. package/extensions/ublock/assets/thirdparties/easylist/easyprivacy.txt +150 -171
  137. package/extensions/ublock/assets/thirdparties/pgl.yoyo.org/as/serverlist +37 -27
  138. package/extensions/ublock/assets/thirdparties/publicsuffix.org/list/effective_tld_names.dat +802 -888
  139. package/extensions/ublock/assets/thirdparties/urlhaus-filter/urlhaus-filter-online.txt +2355 -2071
  140. package/extensions/ublock/assets/ublock/badlists.txt +9 -1
  141. package/extensions/ublock/assets/ublock/badware.min.txt +354 -243
  142. package/extensions/ublock/assets/ublock/filters.min.txt +5837 -5737
  143. package/extensions/ublock/assets/ublock/privacy.min.txt +151 -38
  144. package/extensions/ublock/assets/ublock/quick-fixes.min.txt +83 -127
  145. package/extensions/ublock/assets/ublock/unbreak.min.txt +66 -50
  146. package/extensions/ublock/css/codemirror.css +4 -0
  147. package/extensions/ublock/document-blocked.html +3 -1
  148. package/extensions/ublock/js/arglist-parser.js +116 -0
  149. package/extensions/ublock/js/background.js +1 -1
  150. package/extensions/ublock/js/logger-ui.js +1 -1
  151. package/extensions/ublock/js/messaging.js +9 -2
  152. package/extensions/ublock/js/pagestore.js +3 -1
  153. package/extensions/ublock/js/redirect-engine.js +3 -1
  154. package/extensions/ublock/{assets/resources/set-attr.js → js/resources/attribute.js} +115 -11
  155. package/extensions/ublock/js/resources/base.js +38 -0
  156. package/extensions/ublock/js/resources/cookie.js +419 -0
  157. package/extensions/ublock/js/resources/href-sanitizer.js +188 -0
  158. package/extensions/ublock/js/resources/localstorage.js +235 -0
  159. package/extensions/ublock/js/resources/parse-replace.js +54 -0
  160. package/extensions/ublock/js/resources/prevent-settimeout.js +236 -0
  161. package/extensions/ublock/js/resources/proxy-apply.js +109 -0
  162. package/extensions/ublock/js/resources/replace-argument.js +120 -0
  163. package/extensions/ublock/{assets → js}/resources/run-at.js +20 -4
  164. package/extensions/ublock/{assets → js}/resources/safe-self.js +5 -4
  165. package/extensions/ublock/{assets → js}/resources/scriptlets.js +90 -1589
  166. package/extensions/ublock/js/resources/set-constant.js +287 -0
  167. package/extensions/ublock/js/resources/shared.js +44 -0
  168. package/extensions/ublock/js/resources/spoof-css.js +163 -0
  169. package/extensions/ublock/js/s14e-serializer.js +2 -1
  170. package/extensions/ublock/js/scriptlet-filtering-core.js +1 -1
  171. package/extensions/ublock/js/scriptlet-filtering.js +1 -31
  172. package/extensions/ublock/js/static-dnr-filtering.js +143 -129
  173. package/extensions/ublock/js/static-filtering-parser.js +27 -117
  174. package/extensions/ublock/js/static-net-filtering.js +53 -141
  175. package/extensions/ublock/js/traffic.js +1 -1
  176. package/extensions/ublock/js/urlskip.js +166 -0
  177. package/extensions/ublock/js/vapi-background-ext.js +38 -14
  178. package/extensions/ublock/manifest.json +1 -1
  179. package/package.json +22 -22
  180. package/src/browserless.ts +4 -0
  181. package/src/browsers/browsers.cdp.ts +5 -0
  182. package/src/browsers/browsers.playwright.ts +14 -1
  183. package/src/browsers/index.ts +5 -2
  184. package/src/http.ts +9 -0
  185. package/src/routes/chrome/tests/kill-sessions.spec.ts +1 -1
  186. package/src/routes/chromium/tests/kill-sessions.spec.ts +1 -1
  187. package/src/routes/edge/http/content.post.ts +20 -0
  188. package/src/routes/edge/http/download.post.ts +20 -0
  189. package/src/routes/edge/http/function.post.ts +20 -0
  190. package/src/routes/edge/http/json-list.get.ts +7 -0
  191. package/src/routes/edge/http/json-new.put.ts +7 -0
  192. package/src/routes/edge/http/json-protocol.get.ts +7 -0
  193. package/src/routes/edge/http/json-version.get.ts +7 -0
  194. package/src/routes/edge/http/pdf.post.ts +20 -0
  195. package/src/routes/edge/http/performance.post.ts +20 -0
  196. package/src/routes/edge/http/scrape.post.ts +20 -0
  197. package/src/routes/edge/http/screenshot.post.ts +20 -0
  198. package/src/routes/edge/tests/content.spec.ts +376 -0
  199. package/src/routes/edge/tests/download.spec.ts +77 -0
  200. package/src/routes/edge/tests/function.spec.ts +317 -0
  201. package/src/routes/edge/tests/json-version.spec.ts +52 -0
  202. package/src/routes/edge/tests/kill-sessions.spec.ts +99 -0
  203. package/src/routes/edge/tests/page-websocket.spec.ts +129 -0
  204. package/src/routes/edge/tests/pdf.spec.ts +389 -0
  205. package/src/routes/edge/tests/performance.spec.ts +155 -0
  206. package/src/routes/edge/tests/scrape.spec.ts +417 -0
  207. package/src/routes/edge/tests/screenshot.spec.ts +387 -0
  208. package/src/routes/edge/tests/websocket.spec.ts +510 -0
  209. package/src/routes/edge/ws/browser.ts +10 -0
  210. package/src/routes/edge/ws/cdp.ts +17 -0
  211. package/src/routes/edge/ws/page.ts +10 -0
  212. package/src/routes/edge/ws/playwright.ts +17 -0
  213. package/src/routes/firefox/tests/kill-sessions.spec.ts +1 -1
  214. package/src/routes/management/http/meta.get.ts +6 -1
  215. package/src/routes/management/http/static.get.ts +1 -1
  216. package/src/routes/webkit/tests/kill-sessions.spec.ts +1 -1
  217. package/src/sdk-utils.ts +1 -1
  218. package/src/shared/scrape.http.ts +2 -2
  219. package/src/types.ts +19 -0
  220. package/src/utils.ts +38 -16
  221. package/static/docs/swagger.json +2097 -10
  222. package/static/docs/swagger.min.json +2096 -9
  223. package/static/function/client.js +141 -253
  224. package/static/function/index.html +141 -253
package/CHANGELOG.md CHANGED
@@ -1,8 +1,48 @@
1
- # [Latest](https://github.com/browserless/chrome/compare/v2.24.0...main)
1
+ # [Latest](https://github.com/browserless/chrome/compare/v2.25.1...main)
2
2
 
3
3
  - Dependency updates.
4
4
 
5
- # [v2.24.0](https://github.com/browserless/chrome/compare/v2.24.0...v2.23.0)
5
+ # [Latest](https://github.com/browserless/chrome/compare/v2.25.0...v2.25.1)
6
+
7
+ - Removes edge from `arm64` builds due to lack of support.
8
+
9
+ # [v2.25.0](https://github.com/browserless/chrome/compare/v2.24.3...v2.25.0)
10
+
11
+ - Dependency updates.
12
+ - Supports:
13
+ - puppeteer-core: 24.2.1
14
+ - playwright-core: 1.50.1, 1.49.1, 1.48.2, 1.47.2, and 1.46.1.
15
+ - Chromium: 133.0.6943.16
16
+ - Chrome: 133.0.6943.127
17
+ - Firefox: 134.0
18
+ - Webkit: 18.2
19
+ - Pins playwright and puppeteer deps in package.json for browser-version consistency in SDK projects
20
+ - Added support for Edge browser! [Check out available packages here.](https://github.com/orgs/browserless/packages)
21
+ - Fixes headers object in the /scrape API
22
+ - Code formatting fixes
23
+ - Link fixes in certain READMEs
24
+
25
+ # [v2.24.3](https://github.com/browserless/chrome/compare/v2.24.2...v2.24.3)
26
+
27
+ - Dependency updates.
28
+ - Pins Ubuntu@22.04 in Github Actions.
29
+ - Fixes `headless` types to use `--headless=new` when prior libraries attempt to do `--headless=old` (older playwright).
30
+ - Typing fixes.
31
+
32
+ # [v2.24.2](https://github.com/browserless/chrome/compare/v2.24.1...v2.24.2)
33
+
34
+ - Dependency updates.
35
+ - Fix issues with Firefox when using a proxy.
36
+ - Fixes for the `/meta` API in SDK projects.
37
+ - Lint fixes.
38
+ - Link fixes in this CHANGELOG.md file.
39
+
40
+ # [v2.24.1](https://github.com/browserless/chrome/compare/v2.24.0...v2.24.1)
41
+
42
+ - Dependency updates.
43
+ - Fixes for /performance API in SDK projects.
44
+
45
+ # [v2.24.0](https://github.com/browserless/chrome/compare/v2.23.0...v2.24.0)
6
46
 
7
47
  - Dependency updates.
8
48
  - Supports:
@@ -18,7 +58,7 @@
18
58
  - Add support for `trackingId` and `/kill/{id}` and `/kill/all`.
19
59
  - Prettier, internal fixes and improvements.
20
60
 
21
- # [v2.23.0](https://github.com/browserless/chrome/compare/v2.23.0...v2.22.0)
61
+ # [v2.23.0](https://github.com/browserless/chrome/compare/v2.22.0...v2.23.0)
22
62
 
23
63
  - Dependency updates.
24
64
  - Fixes `--proxy-bypass-list` CLI arguments not being passed through with function API.
package/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
  ![Multi CI](https://github.com/browserless/chrome/actions/workflows/docker-multi.yml/badge.svg)
11
11
 
12
12
  > [!NOTE]
13
- > [Looking for v1.x.x of browserless? You can find it here](https://github.com/browserless/chrome/tree/v1), although we recommend [migrating](/MIGRATION-2.0.md) to v2.
13
+ > Looking to bypass bot detectors and solve captchas? [We would recommend using BrowserQL as our stealthiest option](https://www.browserless.io/feature/browserql).
14
14
 
15
15
  Browserless allows remote clients to connect and execute headless work, all inside of docker. It supports the standard, unforked Puppeteer and Playwright libraries, as well offering REST-based APIs for common actions like data collection, PDF generation and more.
16
16
 
@@ -57,12 +57,11 @@ If you've been struggling to deploy headless browsers without running into issue
57
57
 
58
58
  Our [cloud accounts](https://www.browserless.io/pricing/) include all the general features plus extras, such as:
59
59
 
60
- - Inbuilt [residential proxy](https://www.browserless.io/blog/residential-proxying/)
61
- - [/unblock API](https://www.browserless.io/blog/unblock-api) for avoiding detectors
62
- - [Automated captcha solving](https://www.browserless.io/blog/captcha-solving) for getting past mandatory checks
60
+ - [BrowserQL](https://www.browserless.io/feature/browserql) for avoiding detectors and solving captchas
63
61
  - [Hybrid automations](https://www.browserless.io/blog/hybrid-automations-for-puppeteer/) for streaming login windows during scripts
64
62
  - [/reconnect API](https://www.browserless.io/blog/reconnect-api) for keeping browsers alive for reuse
65
63
  - [REST APIs](https://www.browserless.io/feature/rest-apis) for tasks such as retrieving HTML, PDFs or Lighthouse metrics
64
+ - Inbuilt [residential proxy](https://www.browserless.io/blog/residential-proxying/)
66
65
  - SSO, tokens and user roles
67
66
 
68
67
  ## How it works
@@ -74,7 +73,7 @@ You still execute the script itself which gives you total control over what libr
74
73
  ### Docker
75
74
 
76
75
  > [!TIP]
77
- > See more options on our [full documentation site](https://docs.browserless.io/docker/quickstart).
76
+ > See more options on our [full documentation site](https://docs.browserless.io/baas/docker/quickstart).
78
77
 
79
78
  1. `docker run -p 3000:3000 ghcr.io/browserless/chromium`
80
79
  2. Visit `http://localhost:3000/docs` to see the documentation site.
@@ -1,6 +1,6 @@
1
1
  import * as fs from 'fs/promises';
2
2
  import * as path from 'path';
3
- import { Logger as BlessLogger, BrowserManager, ChromeCDP, ChromiumCDP, ChromiumPlaywright, Config, FileSystem, FirefoxPlaywright, HTTPServer, Hooks, Limiter, Metrics, Monitoring, Router, Token, WebHooks, WebKitPlaywright, availableBrowsers, dedent, getRouteFiles, makeExternalURL, normalizeFileProtocol, printLogo, safeParse, } from '@browserless.io/browserless';
3
+ import { Logger as BlessLogger, BrowserManager, ChromeCDP, ChromiumCDP, ChromiumPlaywright, Config, EdgeCDP, EdgePlaywright, FileSystem, FirefoxPlaywright, HTTPServer, Hooks, Limiter, Metrics, Monitoring, Router, Token, WebHooks, WebKitPlaywright, availableBrowsers, dedent, getRouteFiles, makeExternalURL, normalizeFileProtocol, printLogo, safeParse, } from '@browserless.io/browserless';
4
4
  import { EventEmitter } from 'events';
5
5
  import { readFile } from 'fs/promises';
6
6
  import { userInfo } from 'os';
@@ -129,7 +129,9 @@ export class Browserless extends EventEmitter {
129
129
  const internalBrowsers = [
130
130
  ChromiumCDP,
131
131
  ChromeCDP,
132
+ EdgeCDP,
132
133
  FirefoxPlaywright,
134
+ EdgePlaywright,
133
135
  ChromiumPlaywright,
134
136
  WebKitPlaywright,
135
137
  ];
@@ -38,3 +38,6 @@ export declare class ChromiumCDP extends EventEmitter {
38
38
  export declare class ChromeCDP extends ChromiumCDP {
39
39
  protected executablePath: string;
40
40
  }
41
+ export declare class EdgeCDP extends ChromiumCDP {
42
+ protected executablePath: string;
43
+ }
@@ -1,4 +1,4 @@
1
- import { BLESS_PAGE_IDENTIFIER, ServerError, chromeExecutablePath, noop, once, ublockPath, } from '@browserless.io/browserless';
1
+ import { BLESS_PAGE_IDENTIFIER, ServerError, chromeExecutablePath, edgeExecutablePath, noop, once, ublockPath, } from '@browserless.io/browserless';
2
2
  import puppeteer from 'puppeteer-core';
3
3
  import { EventEmitter } from 'events';
4
4
  import StealthPlugin from 'puppeteer-extra-plugin-stealth';
@@ -236,3 +236,6 @@ export class ChromiumCDP extends EventEmitter {
236
236
  export class ChromeCDP extends ChromiumCDP {
237
237
  executablePath = chromeExecutablePath();
238
238
  }
239
+ export class EdgeCDP extends ChromiumCDP {
240
+ executablePath = edgeExecutablePath();
241
+ }
@@ -62,6 +62,10 @@ export declare class ChromePlaywright extends ChromiumPlaywright {
62
62
  protected executablePath: () => string;
63
63
  protected playwrightBrowserType: PlaywrightBrowserTypes;
64
64
  }
65
+ export declare class EdgePlaywright extends ChromiumPlaywright {
66
+ protected executablePath: () => string;
67
+ protected playwrightBrowserType: PlaywrightBrowserTypes;
68
+ }
65
69
  export declare class FirefoxPlaywright extends BasePlaywright {
66
70
  protected playwrightBrowserType: PlaywrightBrowserTypes;
67
71
  protected makeLaunchOptions(opts: BrowserServerOptions): {
@@ -1,4 +1,4 @@
1
- import { ServerError, chromeExecutablePath, } from '@browserless.io/browserless';
1
+ import { ServerError, chromeExecutablePath, edgeExecutablePath, } from '@browserless.io/browserless';
2
2
  import playwright from 'playwright-core';
3
3
  import { EventEmitter } from 'events';
4
4
  import httpProxy from 'http-proxy';
@@ -31,10 +31,15 @@ class BasePlaywright extends EventEmitter {
31
31
  this.removeAllListeners();
32
32
  }
33
33
  makeLaunchOptions(opts) {
34
+ // Strip headless=old as it'll cause issues with newer Chromium
35
+ const args = (opts.args ?? []).filter((a) => !a.includes('--headless=old'));
36
+ if (!args.some((a) => a.startsWith('--headless'))) {
37
+ args.push('--headless=new');
38
+ }
34
39
  return {
35
40
  ...opts,
36
41
  args: [
37
- ...(opts.args || []),
42
+ ...args,
38
43
  this.userDataDir ? `--user-data-dir=${this.userDataDir}` : '',
39
44
  ],
40
45
  executablePath: this.executablePath(),
@@ -134,6 +139,10 @@ export class ChromePlaywright extends ChromiumPlaywright {
134
139
  executablePath = () => chromeExecutablePath();
135
140
  playwrightBrowserType = PlaywrightBrowserTypes.chromium;
136
141
  }
142
+ export class EdgePlaywright extends ChromiumPlaywright {
143
+ executablePath = () => edgeExecutablePath();
144
+ playwrightBrowserType = PlaywrightBrowserTypes.chromium;
145
+ }
137
146
  export class FirefoxPlaywright extends BasePlaywright {
138
147
  playwrightBrowserType = PlaywrightBrowserTypes.firefox;
139
148
  makeLaunchOptions(opts) {
@@ -1,4 +1,4 @@
1
- import { BLESS_PAGE_IDENTIFIER, BadRequest, ChromeCDP, ChromePlaywright, ChromiumCDP, ChromiumPlaywright, FirefoxPlaywright, Logger, NotFound, ServerError, WebKitPlaywright, availableBrowsers, convertIfBase64, exists, generateDataDir, makeExternalURL, noop, parseBooleanParam, parseStringParam, pwVersionRegex, } from '@browserless.io/browserless';
1
+ import { BLESS_PAGE_IDENTIFIER, BadRequest, ChromeCDP, ChromePlaywright, ChromiumCDP, ChromiumPlaywright, EdgeCDP, EdgePlaywright, FirefoxPlaywright, Logger, NotFound, ServerError, WebKitPlaywright, availableBrowsers, convertIfBase64, exists, generateDataDir, makeExternalURL, noop, parseBooleanParam, parseStringParam, pwVersionRegex, } from '@browserless.io/browserless';
2
2
  import { deleteAsync } from 'del';
3
3
  import micromatch from 'micromatch';
4
4
  import path from 'path';
@@ -9,10 +9,11 @@ export class BrowserManager {
9
9
  browsers = new Map();
10
10
  timers = new Map();
11
11
  log = new Logger('browser-manager');
12
- chromeBrowsers = [ChromiumCDP, ChromeCDP];
12
+ chromeBrowsers = [ChromiumCDP, ChromeCDP, EdgeCDP];
13
13
  playwrightBrowserNames = [
14
14
  ChromiumPlaywright.name,
15
15
  ChromePlaywright.name,
16
+ EdgePlaywright.name,
16
17
  FirefoxPlaywright.name,
17
18
  WebKitPlaywright.name,
18
19
  ];
@@ -360,7 +361,7 @@ export class BrowserManager {
360
361
  */
361
362
  if (launchOptions.args &&
362
363
  proxyServerArg &&
363
- req.parsed.pathname.startsWith('/playwright')) {
364
+ req.parsed.pathname.includes('/playwright')) {
364
365
  launchOptions.proxy = {
365
366
  server: proxyServerArg.split('=')[1],
366
367
  };
package/build/http.d.ts CHANGED
@@ -110,7 +110,9 @@ export declare enum WebsocketRoutes {
110
110
  '/' = "?(/)",
111
111
  browser = "/devtools/browser/*",
112
112
  chrome = "/chrome?(/)",
113
+ edge = "/edge?(/)",
113
114
  chromePlaywright = "/chrome/playwright?(/)",
115
+ edgePlaywright = "/edge/playwright?(/)",
114
116
  chromium = "/chromium?(/)",
115
117
  chromiumPlaywright = "/chromium/playwright?(/)",
116
118
  firefoxPlaywright = "/firefox/playwright?(/)",
@@ -129,6 +131,13 @@ export declare enum HTTPRoutes {
129
131
  chromePerformance = "/chrome/performance?(/)",
130
132
  chromeScrape = "/chrome/scrape?(/)",
131
133
  chromeScreenshot = "/chrome/screenshot?(/)",
134
+ edgeContent = "/edge/content?(/)",
135
+ edgeDownload = "/edge/download?(/)",
136
+ edgeFunction = "/edge/function?(/)",
137
+ edgePdf = "/edge/pdf?(/)",
138
+ edgePerformance = "/edge/performance?(/)",
139
+ edgeScrape = "/edge/scrape?(/)",
140
+ edgeScreenshot = "/edge/screenshot?(/)",
132
141
  chromiumContent = "/chromium/content?(/)",
133
142
  chromiumDownload = "/chromium/download?(/)",
134
143
  chromiumFunction = "/chromium/function?(/)",
package/build/http.js CHANGED
@@ -74,7 +74,9 @@ export var WebsocketRoutes;
74
74
  WebsocketRoutes["/"] = "?(/)";
75
75
  WebsocketRoutes["browser"] = "/devtools/browser/*";
76
76
  WebsocketRoutes["chrome"] = "/chrome?(/)";
77
+ WebsocketRoutes["edge"] = "/edge?(/)";
77
78
  WebsocketRoutes["chromePlaywright"] = "/chrome/playwright?(/)";
79
+ WebsocketRoutes["edgePlaywright"] = "/edge/playwright?(/)";
78
80
  WebsocketRoutes["chromium"] = "/chromium?(/)";
79
81
  WebsocketRoutes["chromiumPlaywright"] = "/chromium/playwright?(/)";
80
82
  WebsocketRoutes["firefoxPlaywright"] = "/firefox/playwright?(/)";
@@ -94,6 +96,13 @@ export var HTTPRoutes;
94
96
  HTTPRoutes["chromePerformance"] = "/chrome/performance?(/)";
95
97
  HTTPRoutes["chromeScrape"] = "/chrome/scrape?(/)";
96
98
  HTTPRoutes["chromeScreenshot"] = "/chrome/screenshot?(/)";
99
+ HTTPRoutes["edgeContent"] = "/edge/content?(/)";
100
+ HTTPRoutes["edgeDownload"] = "/edge/download?(/)";
101
+ HTTPRoutes["edgeFunction"] = "/edge/function?(/)";
102
+ HTTPRoutes["edgePdf"] = "/edge/pdf?(/)";
103
+ HTTPRoutes["edgePerformance"] = "/edge/performance?(/)";
104
+ HTTPRoutes["edgeScrape"] = "/edge/scrape?(/)";
105
+ HTTPRoutes["edgeScreenshot"] = "/edge/screenshot?(/)";
97
106
  HTTPRoutes["chromiumContent"] = "/chromium/content?(/)";
98
107
  HTTPRoutes["chromiumDownload"] = "/chromium/download?(/)";
99
108
  HTTPRoutes["chromiumFunction"] = "/chromium/function?(/)";
@@ -463,14 +463,14 @@
463
463
  "length": {
464
464
  "type": "number"
465
465
  },
466
- "__@toStringTag@72431": {
466
+ "__@toStringTag@12613": {
467
467
  "type": "string",
468
468
  "const": "Uint8Array"
469
469
  }
470
470
  },
471
471
  "required": [
472
472
  "BYTES_PER_ELEMENT",
473
- "__@toStringTag@72431",
473
+ "__@toStringTag@12613",
474
474
  "buffer",
475
475
  "byteLength",
476
476
  "byteOffset",
@@ -505,13 +505,13 @@
505
505
  "byteLength": {
506
506
  "type": "number"
507
507
  },
508
- "__@toStringTag@72431": {
508
+ "__@toStringTag@12613": {
509
509
  "type": "string"
510
510
  }
511
511
  },
512
512
  "additionalProperties": false,
513
513
  "required": [
514
- "__@toStringTag@72431",
514
+ "__@toStringTag@12613",
515
515
  "byteLength"
516
516
  ]
517
517
  },
@@ -521,18 +521,18 @@
521
521
  "byteLength": {
522
522
  "type": "number"
523
523
  },
524
- "__@species@72469": {
524
+ "__@species@12651": {
525
525
  "$ref": "#/definitions/SharedArrayBuffer"
526
526
  },
527
- "__@toStringTag@72431": {
527
+ "__@toStringTag@12613": {
528
528
  "type": "string",
529
529
  "const": "SharedArrayBuffer"
530
530
  }
531
531
  },
532
532
  "additionalProperties": false,
533
533
  "required": [
534
- "__@species@72469",
535
- "__@toStringTag@72431",
534
+ "__@species@12651",
535
+ "__@toStringTag@12613",
536
536
  "byteLength"
537
537
  ]
538
538
  },
@@ -608,14 +608,14 @@
608
608
  "length": {
609
609
  "type": "number"
610
610
  },
611
- "__@toStringTag@116375": {
611
+ "__@toStringTag@87807": {
612
612
  "type": "string",
613
613
  "const": "Uint8Array"
614
614
  }
615
615
  },
616
616
  "required": [
617
617
  "BYTES_PER_ELEMENT",
618
- "__@toStringTag@116375",
618
+ "__@toStringTag@87807",
619
619
  "buffer",
620
620
  "byteLength",
621
621
  "byteOffset",
@@ -650,13 +650,13 @@
650
650
  "byteLength": {
651
651
  "type": "number"
652
652
  },
653
- "__@toStringTag@116375": {
653
+ "__@toStringTag@87807": {
654
654
  "type": "string"
655
655
  }
656
656
  },
657
657
  "additionalProperties": false,
658
658
  "required": [
659
- "__@toStringTag@116375",
659
+ "__@toStringTag@87807",
660
660
  "byteLength"
661
661
  ]
662
662
  },
@@ -666,18 +666,18 @@
666
666
  "byteLength": {
667
667
  "type": "number"
668
668
  },
669
- "__@species@116413": {
669
+ "__@species@87845": {
670
670
  "$ref": "#/definitions/SharedArrayBuffer"
671
671
  },
672
- "__@toStringTag@116375": {
672
+ "__@toStringTag@87807": {
673
673
  "type": "string",
674
674
  "const": "SharedArrayBuffer"
675
675
  }
676
676
  },
677
677
  "additionalProperties": false,
678
678
  "required": [
679
- "__@species@116413",
680
- "__@toStringTag@116375",
679
+ "__@species@87845",
680
+ "__@toStringTag@87807",
681
681
  "byteLength"
682
682
  ]
683
683
  },
@@ -510,14 +510,14 @@
510
510
  "length": {
511
511
  "type": "number"
512
512
  },
513
- "__@toStringTag@101613": {
513
+ "__@toStringTag@113015": {
514
514
  "type": "string",
515
515
  "const": "Uint8Array"
516
516
  }
517
517
  },
518
518
  "required": [
519
519
  "BYTES_PER_ELEMENT",
520
- "__@toStringTag@101613",
520
+ "__@toStringTag@113015",
521
521
  "buffer",
522
522
  "byteLength",
523
523
  "byteOffset",
@@ -552,13 +552,13 @@
552
552
  "byteLength": {
553
553
  "type": "number"
554
554
  },
555
- "__@toStringTag@101613": {
555
+ "__@toStringTag@113015": {
556
556
  "type": "string"
557
557
  }
558
558
  },
559
559
  "additionalProperties": false,
560
560
  "required": [
561
- "__@toStringTag@101613",
561
+ "__@toStringTag@113015",
562
562
  "byteLength"
563
563
  ]
564
564
  },
@@ -568,18 +568,18 @@
568
568
  "byteLength": {
569
569
  "type": "number"
570
570
  },
571
- "__@species@101651": {
571
+ "__@species@113053": {
572
572
  "$ref": "#/definitions/SharedArrayBuffer"
573
573
  },
574
- "__@toStringTag@101613": {
574
+ "__@toStringTag@113015": {
575
575
  "type": "string",
576
576
  "const": "SharedArrayBuffer"
577
577
  }
578
578
  },
579
579
  "additionalProperties": false,
580
580
  "required": [
581
- "__@species@101651",
582
- "__@toStringTag@101613",
581
+ "__@species@113053",
582
+ "__@toStringTag@113015",
583
583
  "byteLength"
584
584
  ]
585
585
  },
@@ -553,14 +553,14 @@
553
553
  "length": {
554
554
  "type": "number"
555
555
  },
556
- "__@toStringTag@160057": {
556
+ "__@toStringTag@125797": {
557
557
  "type": "string",
558
558
  "const": "Uint8Array"
559
559
  }
560
560
  },
561
561
  "required": [
562
562
  "BYTES_PER_ELEMENT",
563
- "__@toStringTag@160057",
563
+ "__@toStringTag@125797",
564
564
  "buffer",
565
565
  "byteLength",
566
566
  "byteOffset",
@@ -595,13 +595,13 @@
595
595
  "byteLength": {
596
596
  "type": "number"
597
597
  },
598
- "__@toStringTag@160057": {
598
+ "__@toStringTag@125797": {
599
599
  "type": "string"
600
600
  }
601
601
  },
602
602
  "additionalProperties": false,
603
603
  "required": [
604
- "__@toStringTag@160057",
604
+ "__@toStringTag@125797",
605
605
  "byteLength"
606
606
  ]
607
607
  },
@@ -611,18 +611,18 @@
611
611
  "byteLength": {
612
612
  "type": "number"
613
613
  },
614
- "__@species@160095": {
614
+ "__@species@125835": {
615
615
  "$ref": "#/definitions/SharedArrayBuffer"
616
616
  },
617
- "__@toStringTag@160057": {
617
+ "__@toStringTag@125797": {
618
618
  "type": "string",
619
619
  "const": "SharedArrayBuffer"
620
620
  }
621
621
  },
622
622
  "additionalProperties": false,
623
623
  "required": [
624
- "__@species@160095",
625
- "__@toStringTag@160057",
624
+ "__@species@125835",
625
+ "__@toStringTag@125797",
626
626
  "byteLength"
627
627
  ]
628
628
  },
@@ -38,7 +38,7 @@ describe('/kill API', function () {
38
38
  }
39
39
  expect(errorThrown1.message).contains('closed');
40
40
  expect(errorThrown2.message).contains('closed');
41
- });
41
+ }).timeout(45000);
42
42
  it('Kill session by browserId', async () => {
43
43
  await start();
44
44
  const browser = await puppeteer.connect({
@@ -463,14 +463,14 @@
463
463
  "length": {
464
464
  "type": "number"
465
465
  },
466
- "__@toStringTag@218142": {
466
+ "__@toStringTag@138489": {
467
467
  "type": "string",
468
468
  "const": "Uint8Array"
469
469
  }
470
470
  },
471
471
  "required": [
472
472
  "BYTES_PER_ELEMENT",
473
- "__@toStringTag@218142",
473
+ "__@toStringTag@138489",
474
474
  "buffer",
475
475
  "byteLength",
476
476
  "byteOffset",
@@ -505,13 +505,13 @@
505
505
  "byteLength": {
506
506
  "type": "number"
507
507
  },
508
- "__@toStringTag@218142": {
508
+ "__@toStringTag@138489": {
509
509
  "type": "string"
510
510
  }
511
511
  },
512
512
  "additionalProperties": false,
513
513
  "required": [
514
- "__@toStringTag@218142",
514
+ "__@toStringTag@138489",
515
515
  "byteLength"
516
516
  ]
517
517
  },
@@ -521,18 +521,18 @@
521
521
  "byteLength": {
522
522
  "type": "number"
523
523
  },
524
- "__@species@218180": {
524
+ "__@species@138527": {
525
525
  "$ref": "#/definitions/SharedArrayBuffer"
526
526
  },
527
- "__@toStringTag@218142": {
527
+ "__@toStringTag@138489": {
528
528
  "type": "string",
529
529
  "const": "SharedArrayBuffer"
530
530
  }
531
531
  },
532
532
  "additionalProperties": false,
533
533
  "required": [
534
- "__@species@218180",
535
- "__@toStringTag@218142",
534
+ "__@species@138527",
535
+ "__@toStringTag@138489",
536
536
  "byteLength"
537
537
  ]
538
538
  },
@@ -608,14 +608,14 @@
608
608
  "length": {
609
609
  "type": "number"
610
610
  },
611
- "__@toStringTag@305476": {
611
+ "__@toStringTag@226194": {
612
612
  "type": "string",
613
613
  "const": "Uint8Array"
614
614
  }
615
615
  },
616
616
  "required": [
617
617
  "BYTES_PER_ELEMENT",
618
- "__@toStringTag@305476",
618
+ "__@toStringTag@226194",
619
619
  "buffer",
620
620
  "byteLength",
621
621
  "byteOffset",
@@ -650,13 +650,13 @@
650
650
  "byteLength": {
651
651
  "type": "number"
652
652
  },
653
- "__@toStringTag@305476": {
653
+ "__@toStringTag@226194": {
654
654
  "type": "string"
655
655
  }
656
656
  },
657
657
  "additionalProperties": false,
658
658
  "required": [
659
- "__@toStringTag@305476",
659
+ "__@toStringTag@226194",
660
660
  "byteLength"
661
661
  ]
662
662
  },
@@ -666,18 +666,18 @@
666
666
  "byteLength": {
667
667
  "type": "number"
668
668
  },
669
- "__@species@305514": {
669
+ "__@species@226232": {
670
670
  "$ref": "#/definitions/SharedArrayBuffer"
671
671
  },
672
- "__@toStringTag@305476": {
672
+ "__@toStringTag@226194": {
673
673
  "type": "string",
674
674
  "const": "SharedArrayBuffer"
675
675
  }
676
676
  },
677
677
  "additionalProperties": false,
678
678
  "required": [
679
- "__@species@305514",
680
- "__@toStringTag@305476",
679
+ "__@species@226232",
680
+ "__@toStringTag@226194",
681
681
  "byteLength"
682
682
  ]
683
683
  },
@@ -510,14 +510,14 @@
510
510
  "length": {
511
511
  "type": "number"
512
512
  },
513
- "__@toStringTag@290717": {
513
+ "__@toStringTag@263872": {
514
514
  "type": "string",
515
515
  "const": "Uint8Array"
516
516
  }
517
517
  },
518
518
  "required": [
519
519
  "BYTES_PER_ELEMENT",
520
- "__@toStringTag@290717",
520
+ "__@toStringTag@263872",
521
521
  "buffer",
522
522
  "byteLength",
523
523
  "byteOffset",
@@ -552,13 +552,13 @@
552
552
  "byteLength": {
553
553
  "type": "number"
554
554
  },
555
- "__@toStringTag@290717": {
555
+ "__@toStringTag@263872": {
556
556
  "type": "string"
557
557
  }
558
558
  },
559
559
  "additionalProperties": false,
560
560
  "required": [
561
- "__@toStringTag@290717",
561
+ "__@toStringTag@263872",
562
562
  "byteLength"
563
563
  ]
564
564
  },
@@ -568,18 +568,18 @@
568
568
  "byteLength": {
569
569
  "type": "number"
570
570
  },
571
- "__@species@290755": {
571
+ "__@species@263910": {
572
572
  "$ref": "#/definitions/SharedArrayBuffer"
573
573
  },
574
- "__@toStringTag@290717": {
574
+ "__@toStringTag@263872": {
575
575
  "type": "string",
576
576
  "const": "SharedArrayBuffer"
577
577
  }
578
578
  },
579
579
  "additionalProperties": false,
580
580
  "required": [
581
- "__@species@290755",
582
- "__@toStringTag@290717",
581
+ "__@species@263910",
582
+ "__@toStringTag@263872",
583
583
  "byteLength"
584
584
  ]
585
585
  },