UNPKG

5.88 kBJavaScriptView Raw
1import { fileURLToPath } from 'node:url';
2import { dirname, resolve } from 'node:path';
3import { createRequire } from 'node:module';
4import { UNICODE_CHARACTERS, HOOK_DEFINITION } from '@wdio/utils';
5export var SupportedAutomationProtocols;
6(function (SupportedAutomationProtocols) {
7 SupportedAutomationProtocols["webdriver"] = "webdriver";
8 SupportedAutomationProtocols["devtools"] = "devtools";
9 SupportedAutomationProtocols["stub"] = "./protocol-stub.js";
10})(SupportedAutomationProtocols || (SupportedAutomationProtocols = {}));
11export const WDIO_DEFAULTS = {
12 /**
13 * allows to specify automation protocol
14 */
15 automationProtocol: {
16 type: 'string',
17 default: SupportedAutomationProtocols.webdriver,
18 validate: (param) => {
19 /**
20 * path when proxy is used for browser testing
21 */
22 if (param.endsWith('driver.js')) {
23 return;
24 }
25 if (!Object.values(SupportedAutomationProtocols).includes(param.toLowerCase())) {
26 throw new Error(`Currently only "webdriver" and "devtools" is supported as automationProtocol, you set "${param}"`);
27 }
28 try {
29 const __dirname = dirname(fileURLToPath(import.meta.url));
30 const require = createRequire(import.meta.url);
31 const id = param === SupportedAutomationProtocols.stub
32 ? resolve(__dirname, '..', 'build', param)
33 : param;
34 require.resolve(id);
35 }
36 catch (err) {
37 /* istanbul ignore next */
38 throw new Error('Automation protocol package is not installed!\n' +
39 `Please install it via \`npm install ${param}\``);
40 }
41 }
42 },
43 /**
44 * capabilities of WebDriver sessions
45 */
46 capabilities: {
47 type: 'object',
48 validate: (param) => {
49 /**
50 * should be an object
51 */
52 if (typeof param === 'object') {
53 return true;
54 }
55 throw new Error('the "capabilities" options needs to be an object or a list of objects');
56 },
57 required: true
58 },
59 /**
60 * Shorten navigateTo command calls by setting a base url
61 */
62 baseUrl: {
63 type: 'string'
64 },
65 /**
66 * Default interval for all waitFor* commands
67 */
68 waitforInterval: {
69 type: 'number',
70 default: 500
71 },
72 /**
73 * Default timeout for all waitFor* commands
74 */
75 waitforTimeout: {
76 type: 'number',
77 default: 5000
78 },
79 /**
80 * Hooks
81 */
82 onReload: HOOK_DEFINITION,
83 beforeCommand: HOOK_DEFINITION,
84 afterCommand: HOOK_DEFINITION
85};
86export const W3C_SELECTOR_STRATEGIES = ['css selector', 'link text', 'partial link text', 'tag name', 'xpath'];
87export const DRIVER_DEFAULT_ENDPOINT = {
88 method: 'GET',
89 host: 'localhost',
90 port: 4444,
91 path: '/status'
92};
93export const FF_REMOTE_DEBUG_ARG = '-remote-debugging-port';
94export const DEEP_SELECTOR = '>>>';
95export const ARIA_SELECTOR = 'aria/';
96export const ERROR_REASON = [
97 'Failed', 'Aborted', 'TimedOut', 'AccessDenied', 'ConnectionClosed',
98 'ConnectionReset', 'ConnectionRefused', 'ConnectionAborted',
99 'ConnectionFailed', 'NameNotResolved', 'InternetDisconnected',
100 'AddressUnreachable', 'BlockedByClient', 'BlockedByResponse'
101];
102/**
103 * Special Characters
104 */
105export const Key = {
106 /**
107 * Special control key that works cross browser for Mac, where it's the command key, and for
108 * Windows or Linux, where it is the control key.
109 */
110 Ctrl: 'WDIO_CONTROL',
111 NULL: UNICODE_CHARACTERS.NULL,
112 Cancel: UNICODE_CHARACTERS.Cancel,
113 Help: UNICODE_CHARACTERS.Help,
114 Backspace: UNICODE_CHARACTERS.Backspace,
115 Tab: UNICODE_CHARACTERS.Tab,
116 Clear: UNICODE_CHARACTERS.Clear,
117 Return: UNICODE_CHARACTERS.Return,
118 Enter: UNICODE_CHARACTERS.Enter,
119 Shift: UNICODE_CHARACTERS.Shift,
120 Control: UNICODE_CHARACTERS.Control,
121 Alt: UNICODE_CHARACTERS.Alt,
122 Pause: UNICODE_CHARACTERS.Pause,
123 Escape: UNICODE_CHARACTERS.Escape,
124 Space: UNICODE_CHARACTERS.Space,
125 PageUp: UNICODE_CHARACTERS.PageUp,
126 PageDown: UNICODE_CHARACTERS.PageDown,
127 End: UNICODE_CHARACTERS.End,
128 Home: UNICODE_CHARACTERS.Home,
129 ArrowLeft: UNICODE_CHARACTERS.ArrowLeft,
130 ArrowUp: UNICODE_CHARACTERS.ArrowUp,
131 ArrowRight: UNICODE_CHARACTERS.ArrowRight,
132 ArrowDown: UNICODE_CHARACTERS.ArrowDown,
133 Insert: UNICODE_CHARACTERS.Insert,
134 Delete: UNICODE_CHARACTERS.Delete,
135 Semicolon: UNICODE_CHARACTERS.Semicolon,
136 Equals: UNICODE_CHARACTERS.Equals,
137 Numpad0: UNICODE_CHARACTERS['Numpad 0'],
138 Numpad1: UNICODE_CHARACTERS['Numpad 1'],
139 Numpad2: UNICODE_CHARACTERS['Numpad 2'],
140 Numpad3: UNICODE_CHARACTERS['Numpad 3'],
141 Numpad4: UNICODE_CHARACTERS['Numpad 4'],
142 Numpad5: UNICODE_CHARACTERS['Numpad 5'],
143 Numpad6: UNICODE_CHARACTERS['Numpad 6'],
144 Numpad7: UNICODE_CHARACTERS['Numpad 7'],
145 Numpad8: UNICODE_CHARACTERS['Numpad 8'],
146 Numpad9: UNICODE_CHARACTERS['Numpad 9'],
147 Multiply: UNICODE_CHARACTERS.Multiply,
148 Add: UNICODE_CHARACTERS.Add,
149 Separator: UNICODE_CHARACTERS.Separator,
150 Subtract: UNICODE_CHARACTERS.Subtract,
151 Decimal: UNICODE_CHARACTERS.Decimal,
152 Divide: UNICODE_CHARACTERS.Divide,
153 F1: UNICODE_CHARACTERS.F1,
154 F2: UNICODE_CHARACTERS.F2,
155 F3: UNICODE_CHARACTERS.F3,
156 F4: UNICODE_CHARACTERS.F4,
157 F5: UNICODE_CHARACTERS.F5,
158 F6: UNICODE_CHARACTERS.F6,
159 F7: UNICODE_CHARACTERS.F7,
160 F8: UNICODE_CHARACTERS.F8,
161 F9: UNICODE_CHARACTERS.F9,
162 F10: UNICODE_CHARACTERS.F10,
163 F11: UNICODE_CHARACTERS.F11,
164 F12: UNICODE_CHARACTERS.F12,
165 Command: UNICODE_CHARACTERS.Command,
166 ZenkakuHankaku: UNICODE_CHARACTERS.ZenkakuHankaku
167};