selenium-webdriver 4.49.0 → 4.50.0

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 (49) hide show
  1. package/CHANGES.md +16 -0
  2. package/bidi/generated/bluetooth.d.ts +199 -37
  3. package/bidi/generated/bluetooth.js +212 -106
  4. package/bidi/generated/browser.d.ts +81 -28
  5. package/bidi/generated/browser.js +97 -69
  6. package/bidi/generated/browsing_context.d.ts +269 -87
  7. package/bidi/generated/browsing_context.js +328 -241
  8. package/bidi/generated/common.d.ts +105 -21
  9. package/bidi/generated/common.js +64 -15
  10. package/bidi/generated/digital_credentials.d.ts +41 -0
  11. package/bidi/generated/digital_credentials.js +54 -0
  12. package/bidi/generated/emulation.d.ts +347 -77
  13. package/bidi/generated/emulation.js +262 -101
  14. package/bidi/generated/input.d.ts +63 -35
  15. package/bidi/generated/input.js +77 -51
  16. package/bidi/generated/log.d.ts +39 -18
  17. package/bidi/generated/log.js +23 -43
  18. package/bidi/generated/network.d.ts +248 -76
  19. package/bidi/generated/network.js +247 -181
  20. package/bidi/generated/permissions.d.ts +22 -4
  21. package/bidi/generated/permissions.js +31 -17
  22. package/bidi/generated/script.d.ts +166 -70
  23. package/bidi/generated/script.js +203 -116
  24. package/bidi/generated/session.d.ts +76 -36
  25. package/bidi/generated/session.js +81 -48
  26. package/bidi/generated/speculation.d.ts +15 -5
  27. package/bidi/generated/speculation.js +20 -16
  28. package/bidi/generated/storage.d.ts +41 -17
  29. package/bidi/generated/storage.js +58 -40
  30. package/bidi/generated/user_agent_client_hints.d.ts +25 -13
  31. package/bidi/generated/user_agent_client_hints.js +29 -18
  32. package/bidi/generated/webextension.d.ts +24 -10
  33. package/bidi/generated/webextension.js +39 -25
  34. package/bidi/serialization/enum.js +6 -3
  35. package/bidi/serialization/record.js +34 -29
  36. package/bin/linux-arm64/selenium-manager +0 -0
  37. package/bin/linux-x86_64/selenium-manager +0 -0
  38. package/bin/macos/selenium-manager +0 -0
  39. package/bin/selenium-manager-THIRD-PARTY-NOTICES.txt +74 -43
  40. package/bin/selenium-manager.cdx.json +421 -421
  41. package/bin/windows/selenium-manager.exe +0 -0
  42. package/eslint.config.js +2 -1
  43. package/firefox.js +7 -104
  44. package/index.js +8 -0
  45. package/lib/atoms/find-elements.js +14 -2
  46. package/package.json +9 -9
  47. package/remote/index.js +12 -3
  48. package/remote/util.js +5 -5
  49. package/testing/index.js +84 -1
@@ -17,91 +17,119 @@
17
17
  // under the License.
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
19
  exports.Browser = void 0;
20
- exports.getBrowserInstance = getBrowserInstance;
21
- // --- Additional Types ---
22
- /** @deprecated Use {@link Browser.create} instead — will be removed in a future major version. */
23
- async function getBrowserInstance(driver) {
24
- return Browser.create(driver);
25
- }
20
+ require("./common.js");
21
+ require("./session.js");
22
+ const record_js_1 = require("../serialization/record.js");
23
+ const enum_js_1 = require("../serialization/enum.js");
24
+ const union_js_1 = require("../serialization/union.js");
25
+ const domain_js_1 = require("../domain.js");
26
+ (0, record_js_1.defineAlias)('browser.ClientWindow', { "primitive": "string" });
27
+ const BrowserClientWindowInfo = (0, record_js_1.defineRecord)('browser.ClientWindowInfo', [{ "name": "active", "wire": "active", "required": true, "type": { "primitive": "boolean" } }, { "name": "clientWindow", "wire": "clientWindow", "required": true, "type": { "ref": "browser.ClientWindow" } }, { "name": "height", "wire": "height", "required": true, "type": { "ref": "js-uint" } }, { "name": "state", "wire": "state", "required": true, "type": { "ref": "browser.ClientWindowInfoState" } }, { "name": "width", "wire": "width", "required": true, "type": { "ref": "js-uint" } }, { "name": "x", "wire": "x", "required": true, "type": { "ref": "js-int" } }, { "name": "y", "wire": "y", "required": true, "type": { "ref": "js-int" } }]);
28
+ (0, record_js_1.defineAlias)('browser.UserContext', { "primitive": "string" });
29
+ const BrowserUserContextInfo = (0, record_js_1.defineRecord)('browser.UserContextInfo', [{ "name": "userContext", "wire": "userContext", "required": true, "type": { "ref": "browser.UserContext" } }]);
30
+ const BrowserClose = (0, record_js_1.defineRecord)('browser.Close', [{ "name": "method", "wire": "method", "required": true, "type": { "const": "browser.close" } }, { "name": "params", "wire": "params", "required": true, "type": { "ref": "EmptyParams" } }]);
31
+ (0, record_js_1.defineAlias)('browser.CloseResult', { "ref": "EmptyResult" });
32
+ const BrowserCreateUserContext = (0, record_js_1.defineRecord)('browser.CreateUserContext', [{ "name": "method", "wire": "method", "required": true, "type": { "const": "browser.createUserContext" } }, { "name": "params", "wire": "params", "required": true, "type": { "ref": "browser.CreateUserContextParameters" } }]);
33
+ const BrowserCreateUserContextParameters = (0, record_js_1.defineRecord)('browser.CreateUserContextParameters', [{ "name": "acceptInsecureCerts", "wire": "acceptInsecureCerts", "required": false, "type": { "primitive": "boolean" } }, { "name": "proxy", "wire": "proxy", "required": false, "type": { "ref": "session.ProxyConfiguration" } }, { "name": "unhandledPromptBehavior", "wire": "unhandledPromptBehavior", "required": false, "type": { "ref": "session.UserPromptHandler" } }]);
34
+ (0, record_js_1.defineAlias)('browser.CreateUserContextResult', { "ref": "browser.UserContextInfo" });
35
+ const BrowserGetClientWindows = (0, record_js_1.defineRecord)('browser.GetClientWindows', [{ "name": "method", "wire": "method", "required": true, "type": { "const": "browser.getClientWindows" } }, { "name": "params", "wire": "params", "required": true, "type": { "ref": "EmptyParams" } }]);
36
+ const BrowserGetClientWindowsResult = (0, record_js_1.defineRecord)('browser.GetClientWindowsResult', [{ "name": "clientWindows", "wire": "clientWindows", "required": true, "type": { "list": { "ref": "browser.ClientWindowInfo" } } }]);
37
+ const BrowserGetUserContexts = (0, record_js_1.defineRecord)('browser.GetUserContexts', [{ "name": "method", "wire": "method", "required": true, "type": { "const": "browser.getUserContexts" } }, { "name": "params", "wire": "params", "required": true, "type": { "ref": "EmptyParams" } }]);
38
+ const BrowserGetUserContextsResult = (0, record_js_1.defineRecord)('browser.GetUserContextsResult', [{ "name": "userContexts", "wire": "userContexts", "required": true, "type": { "list": { "ref": "browser.UserContextInfo" } } }]);
39
+ const BrowserRemoveUserContext = (0, record_js_1.defineRecord)('browser.RemoveUserContext', [{ "name": "method", "wire": "method", "required": true, "type": { "const": "browser.removeUserContext" } }, { "name": "params", "wire": "params", "required": true, "type": { "ref": "browser.RemoveUserContextParameters" } }]);
40
+ const BrowserRemoveUserContextParameters = (0, record_js_1.defineRecord)('browser.RemoveUserContextParameters', [{ "name": "userContext", "wire": "userContext", "required": true, "type": { "ref": "browser.UserContext" } }]);
41
+ (0, record_js_1.defineAlias)('browser.RemoveUserContextResult', { "ref": "EmptyResult" });
42
+ const BrowserSetClientWindowState = (0, record_js_1.defineRecord)('browser.SetClientWindowState', [{ "name": "method", "wire": "method", "required": true, "type": { "const": "browser.setClientWindowState" } }, { "name": "params", "wire": "params", "required": true, "type": { "ref": "browser.SetClientWindowStateParameters" } }]);
43
+ const BrowserSetClientWindowStateParametersUnion = (0, union_js_1.defineUnion)('browser.SetClientWindowStateParameters', { "by": "state", "variants": [{ "value": "normal", "ref": "browser.SetClientWindowStateParameters_ClientWindowRectState" }], "default": "browser.SetClientWindowStateParameters_ClientWindowNamedState" }, { "objectOnly": true });
44
+ (0, record_js_1.defineAlias)('browser.SetClientWindowStateResult', { "ref": "browser.ClientWindowInfo" });
45
+ const BrowserSetDownloadBehavior = (0, record_js_1.defineRecord)('browser.SetDownloadBehavior', [{ "name": "method", "wire": "method", "required": true, "type": { "const": "browser.setDownloadBehavior" } }, { "name": "params", "wire": "params", "required": true, "type": { "ref": "browser.SetDownloadBehaviorParameters" } }]);
46
+ const BrowserSetDownloadBehaviorParameters = (0, record_js_1.defineRecord)('browser.SetDownloadBehaviorParameters', [{ "name": "downloadBehavior", "wire": "downloadBehavior", "required": true, "type": { "ref": "browser.DownloadBehavior", "nullable": true } }, { "name": "userContexts", "wire": "userContexts", "required": false, "type": { "list": { "ref": "browser.UserContext" } } }]);
47
+ const BrowserDownloadBehaviorUnion = (0, union_js_1.defineUnion)('browser.DownloadBehavior', { "by": "type", "variants": [{ "value": "allowed", "ref": "browser.DownloadBehavior_Allowed" }, { "value": "denied", "ref": "browser.DownloadBehavior_Denied" }] }, { "objectOnly": true });
48
+ (0, record_js_1.defineAlias)('browser.SetDownloadBehaviorResult', { "ref": "EmptyResult" });
49
+ const BrowserClientWindowInfoStateEnum = (0, enum_js_1.defineEnum)('browser.ClientWindowInfoState', ["fullscreen", "maximized", "minimized", "normal"]);
50
+ const BrowserClientWindowNamedStateStateEnum = (0, enum_js_1.defineEnum)('browser.ClientWindowNamedStateState', ["fullscreen", "maximized", "minimized"]);
51
+ const BrowserSetClientWindowStateParameters_ClientWindowNamedState = (0, record_js_1.defineRecord)('browser.SetClientWindowStateParameters_ClientWindowNamedState', [{ "name": "clientWindow", "wire": "clientWindow", "required": true, "type": { "ref": "browser.ClientWindow" } }, { "name": "state", "wire": "state", "required": true, "type": { "ref": "browser.ClientWindowNamedStateState" } }]);
52
+ const BrowserSetClientWindowStateParameters_ClientWindowRectState = (0, record_js_1.defineRecord)('browser.SetClientWindowStateParameters_ClientWindowRectState', [{ "name": "clientWindow", "wire": "clientWindow", "required": true, "type": { "ref": "browser.ClientWindow" } }, { "name": "state", "wire": "state", "required": true, "type": { "const": "normal" } }, { "name": "width", "wire": "width", "required": false, "type": { "ref": "js-uint" } }, { "name": "height", "wire": "height", "required": false, "type": { "ref": "js-uint" } }, { "name": "x", "wire": "x", "required": false, "type": { "ref": "js-int" } }, { "name": "y", "wire": "y", "required": false, "type": { "ref": "js-int" } }]);
53
+ const BrowserDownloadBehavior_Allowed = (0, record_js_1.defineRecord)('browser.DownloadBehavior_Allowed', [{ "name": "type", "wire": "type", "required": true, "type": { "const": "allowed" } }, { "name": "destinationFolder", "wire": "destinationFolder", "required": true, "type": { "primitive": "string" } }]);
54
+ const BrowserDownloadBehavior_Denied = (0, record_js_1.defineRecord)('browser.DownloadBehavior_Denied', [{ "name": "type", "wire": "type", "required": true, "type": { "const": "denied" } }]);
26
55
  // --- Implementation ---
27
- class Browser {
28
- constructor(bidi) {
29
- this.bidi = bidi;
30
- }
56
+ /**
57
+ * This is an unsupported API. No compatibility guarantees are provided.
58
+ * It tracks the W3C WebDriver BiDi specification directly. As the specification
59
+ * evolves, this API will change or be removed without prior notice.
60
+ */
61
+ class Browser extends domain_js_1.Domain {
31
62
  static async create(driver) {
32
- const caps = await driver.getCapabilities();
33
- if (!caps.get('webSocketUrl')) {
34
- throw new Error('WebDriver instance must support BiDi protocol');
35
- }
36
- const bidi = await driver.getBidi();
37
- return new Browser(bidi);
63
+ return new Browser(await domain_js_1.Domain.connect(driver), domain_js_1.DOMAIN_TOKEN);
38
64
  }
65
+ /**
66
+ * @returns {Promise<void>}
67
+ * @see https://w3c.github.io/webdriver-bidi/#command-browser-close
68
+ */
39
69
  async close() {
40
- const response = await this.bidi.send({
41
- method: 'browser.close',
42
- params: {},
43
- });
44
- if (response['type'] === 'error') {
45
- throw new Error(`${response['error']}: ${response['message']}`);
46
- }
70
+ await this.send('browser.close', {});
47
71
  }
72
+ /**
73
+ * @param {BrowserCreateUserContextParameters} params
74
+ * @param {boolean} [params.acceptInsecureCerts]
75
+ * @param {SessionProxyConfiguration} [params.proxy]
76
+ * @param {SessionUserPromptHandler} [params.unhandledPromptBehavior]
77
+ * @returns {Promise<BrowserCreateUserContextResult>}
78
+ * @see https://w3c.github.io/webdriver-bidi/#command-browser-createUserContext
79
+ */
48
80
  async createUserContext(params) {
49
- const response = await this.bidi.send({
50
- method: 'browser.createUserContext',
51
- params: params,
52
- });
53
- if (response['type'] === 'error') {
54
- throw new Error(`${response['error']}: ${response['message']}`);
55
- }
56
- return response.result;
81
+ const validatedParams = new BrowserCreateUserContextParameters(params);
82
+ const result = await this.send('browser.createUserContext', validatedParams);
83
+ return BrowserUserContextInfo.fromWire(result);
57
84
  }
85
+ /**
86
+ * @returns {Promise<BrowserGetClientWindowsResult>}
87
+ * @see https://w3c.github.io/webdriver-bidi/#command-browser-getClientWindows
88
+ */
58
89
  async getClientWindows() {
59
- const response = await this.bidi.send({
60
- method: 'browser.getClientWindows',
61
- params: {},
62
- });
63
- if (response['type'] === 'error') {
64
- throw new Error(`${response['error']}: ${response['message']}`);
65
- }
66
- return response.result;
90
+ const result = await this.send('browser.getClientWindows', {});
91
+ return BrowserGetClientWindowsResult.fromWire(result);
67
92
  }
93
+ /**
94
+ * @returns {Promise<BrowserGetUserContextsResult>}
95
+ * @see https://w3c.github.io/webdriver-bidi/#command-browser-getUserContexts
96
+ */
68
97
  async getUserContexts() {
69
- const response = await this.bidi.send({
70
- method: 'browser.getUserContexts',
71
- params: {},
72
- });
73
- if (response['type'] === 'error') {
74
- throw new Error(`${response['error']}: ${response['message']}`);
75
- }
76
- return response.result;
98
+ const result = await this.send('browser.getUserContexts', {});
99
+ return BrowserGetUserContextsResult.fromWire(result);
77
100
  }
101
+ /**
102
+ * @param {BrowserRemoveUserContextParameters} params
103
+ * @param {BrowserUserContext} params.userContext
104
+ * @returns {Promise<void>}
105
+ * @see https://w3c.github.io/webdriver-bidi/#command-browser-removeUserContext
106
+ */
78
107
  async removeUserContext(params) {
79
- const response = await this.bidi.send({
80
- method: 'browser.removeUserContext',
81
- params: params,
82
- });
83
- if (response['type'] === 'error') {
84
- throw new Error(`${response['error']}: ${response['message']}`);
85
- }
108
+ const validatedParams = new BrowserRemoveUserContextParameters(params);
109
+ await this.send('browser.removeUserContext', validatedParams);
86
110
  }
111
+ /**
112
+ * @param {BrowserSetClientWindowStateParameters} params
113
+ * @returns {Promise<BrowserSetClientWindowStateResult>}
114
+ * @see https://w3c.github.io/webdriver-bidi/#command-browser-setClientWindowState
115
+ */
87
116
  async setClientWindowState(params) {
88
- const response = await this.bidi.send({
89
- method: 'browser.setClientWindowState',
90
- params: params,
91
- });
92
- if (response['type'] === 'error') {
93
- throw new Error(`${response['error']}: ${response['message']}`);
94
- }
95
- return response.result;
117
+ const validatedParams = BrowserSetClientWindowStateParametersUnion.build(params);
118
+ const result = await this.send('browser.setClientWindowState', validatedParams);
119
+ return BrowserClientWindowInfo.fromWire(result);
96
120
  }
121
+ /**
122
+ * @param {BrowserSetDownloadBehaviorParameters} params
123
+ * @param {BrowserDownloadBehavior | null} params.downloadBehavior
124
+ * @param {Array<BrowserUserContext>} [params.userContexts]
125
+ * @returns {Promise<void>}
126
+ * @see https://w3c.github.io/webdriver-bidi/#command-browser-setDownloadBehavior
127
+ */
97
128
  async setDownloadBehavior(params) {
98
- const response = await this.bidi.send({
99
- method: 'browser.setDownloadBehavior',
100
- params: params,
101
- });
102
- if (response['type'] === 'error') {
103
- throw new Error(`${response['error']}: ${response['message']}`);
104
- }
129
+ const validatedParams = new BrowserSetDownloadBehaviorParameters(params);
130
+ await this.send('browser.setDownloadBehavior', validatedParams);
105
131
  }
106
132
  }
107
133
  exports.Browser = Browser;
134
+ Browser.ClientWindowInfoState = Object.freeze({ FULLSCREEN: "fullscreen", MAXIMIZED: "maximized", MINIMIZED: "minimized", NORMAL: "normal" });
135
+ Browser.ClientWindowNamedStateState = Object.freeze({ FULLSCREEN: "fullscreen", MAXIMIZED: "maximized", MINIMIZED: "minimized" });