codeceptjs 3.5.0 → 3.5.1-2.beta.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 (273) hide show
  1. package/README.md +24 -25
  2. package/lib/actor.js +6 -3
  3. package/lib/ai.js +12 -3
  4. package/lib/cli.js +12 -2
  5. package/lib/codecept.js +4 -0
  6. package/lib/colorUtils.js +10 -0
  7. package/lib/command/definitions.js +2 -7
  8. package/lib/command/dryRun.js +2 -1
  9. package/lib/command/info.js +24 -0
  10. package/lib/command/init.js +51 -5
  11. package/lib/command/run-multiple/collection.js +17 -5
  12. package/lib/command/run-multiple.js +4 -2
  13. package/lib/command/run-workers.js +66 -4
  14. package/lib/command/run.js +7 -0
  15. package/lib/command/workers/runTests.js +39 -0
  16. package/lib/data/context.js +14 -6
  17. package/lib/event.js +4 -0
  18. package/lib/helper/ApiDataFactory.js +2 -1
  19. package/lib/helper/Appium.js +73 -24
  20. package/lib/helper/Expect.js +422 -0
  21. package/lib/helper/FileSystem.js +1 -1
  22. package/lib/helper/GraphQL.js +25 -0
  23. package/lib/helper/Nightmare.js +9 -4
  24. package/lib/helper/OpenAI.js +14 -10
  25. package/lib/helper/Playwright.js +1205 -288
  26. package/lib/helper/Protractor.js +11 -6
  27. package/lib/helper/Puppeteer.js +173 -61
  28. package/lib/helper/TestCafe.js +44 -9
  29. package/lib/helper/WebDriver.js +231 -82
  30. package/lib/helper/errors/ElementNotFound.js +2 -1
  31. package/lib/helper/extras/PlaywrightReactVueLocator.js +38 -0
  32. package/lib/helper/scripts/blurElement.js +17 -0
  33. package/lib/helper/scripts/focusElement.js +17 -0
  34. package/lib/helper/scripts/highlightElement.js +2 -2
  35. package/lib/html.js +3 -3
  36. package/lib/interfaces/bdd.js +1 -1
  37. package/lib/interfaces/gherkin.js +37 -3
  38. package/lib/interfaces/scenarioConfig.js +1 -0
  39. package/lib/locator.js +17 -4
  40. package/lib/mochaFactory.js +2 -1
  41. package/lib/output.js +1 -1
  42. package/lib/pause.js +12 -9
  43. package/lib/plugin/autoLogin.js +45 -10
  44. package/lib/plugin/heal.js +47 -17
  45. package/lib/plugin/retryFailedStep.js +10 -1
  46. package/lib/plugin/retryTo.js +2 -4
  47. package/lib/plugin/selenoid.js +6 -1
  48. package/lib/plugin/standardActingHelpers.js +0 -2
  49. package/lib/plugin/stepByStepReport.js +2 -2
  50. package/lib/plugin/tryTo.js +5 -7
  51. package/lib/plugin/wdio.js +0 -1
  52. package/lib/recorder.js +20 -9
  53. package/lib/session.js +1 -1
  54. package/lib/step.js +30 -11
  55. package/lib/ui.js +1 -0
  56. package/lib/utils.js +18 -1
  57. package/lib/workers.js +28 -3
  58. package/package.json +108 -98
  59. package/translations/de-DE.js +5 -0
  60. package/translations/fr-FR.js +14 -1
  61. package/translations/it-IT.js +1 -0
  62. package/translations/ja-JP.js +5 -0
  63. package/translations/pl-PL.js +5 -0
  64. package/translations/pt-BR.js +1 -0
  65. package/translations/ru-RU.js +1 -0
  66. package/translations/zh-CN.js +5 -0
  67. package/translations/zh-TW.js +5 -0
  68. package/typings/index.d.ts +8 -6
  69. package/typings/promiseBasedTypes.d.ts +784 -822
  70. package/typings/types.d.ts +1214 -727
  71. package/CHANGELOG.md +0 -2492
  72. package/docs/advanced.md +0 -351
  73. package/docs/ai.md +0 -246
  74. package/docs/api.md +0 -323
  75. package/docs/basics.md +0 -980
  76. package/docs/bdd.md +0 -535
  77. package/docs/best.md +0 -237
  78. package/docs/books.md +0 -37
  79. package/docs/bootstrap.md +0 -135
  80. package/docs/build/ApiDataFactory.js +0 -409
  81. package/docs/build/Appium.js +0 -1978
  82. package/docs/build/FileSystem.js +0 -228
  83. package/docs/build/GraphQL.js +0 -204
  84. package/docs/build/GraphQLDataFactory.js +0 -309
  85. package/docs/build/JSONResponse.js +0 -338
  86. package/docs/build/Mochawesome.js +0 -71
  87. package/docs/build/Nightmare.js +0 -2147
  88. package/docs/build/OpenAI.js +0 -122
  89. package/docs/build/Playwright.js +0 -4134
  90. package/docs/build/Polly.js +0 -42
  91. package/docs/build/Protractor.js +0 -2701
  92. package/docs/build/Puppeteer.js +0 -3743
  93. package/docs/build/REST.js +0 -344
  94. package/docs/build/SeleniumWebdriver.js +0 -76
  95. package/docs/build/TestCafe.js +0 -2059
  96. package/docs/build/WebDriver.js +0 -4042
  97. package/docs/changelog.md +0 -2501
  98. package/docs/commands.md +0 -254
  99. package/docs/community-helpers.md +0 -58
  100. package/docs/configuration.md +0 -157
  101. package/docs/continuous-integration.md +0 -22
  102. package/docs/custom-helpers.md +0 -306
  103. package/docs/data.md +0 -375
  104. package/docs/detox.md +0 -235
  105. package/docs/docker.md +0 -137
  106. package/docs/email.md +0 -183
  107. package/docs/examples.md +0 -149
  108. package/docs/helpers/ApiDataFactory.md +0 -266
  109. package/docs/helpers/Appium.md +0 -1317
  110. package/docs/helpers/Detox.md +0 -586
  111. package/docs/helpers/FileSystem.md +0 -152
  112. package/docs/helpers/GraphQL.md +0 -130
  113. package/docs/helpers/GraphQLDataFactory.md +0 -226
  114. package/docs/helpers/JSONResponse.md +0 -254
  115. package/docs/helpers/Mochawesome.md +0 -8
  116. package/docs/helpers/MockRequest.md +0 -377
  117. package/docs/helpers/Nightmare.md +0 -1258
  118. package/docs/helpers/OpenAI.md +0 -70
  119. package/docs/helpers/Playwright.md +0 -2250
  120. package/docs/helpers/Polly.md +0 -44
  121. package/docs/helpers/Puppeteer-firefox.md +0 -86
  122. package/docs/helpers/Puppeteer.md +0 -2147
  123. package/docs/helpers/REST.md +0 -218
  124. package/docs/helpers/TestCafe.md +0 -1224
  125. package/docs/helpers/WebDriver.md +0 -2325
  126. package/docs/hooks.md +0 -340
  127. package/docs/index.md +0 -111
  128. package/docs/installation.md +0 -75
  129. package/docs/internal-api.md +0 -265
  130. package/docs/locators.md +0 -331
  131. package/docs/mobile-react-native-locators.md +0 -67
  132. package/docs/mobile.md +0 -344
  133. package/docs/nightmare.md +0 -223
  134. package/docs/pageobjects.md +0 -291
  135. package/docs/parallel.md +0 -288
  136. package/docs/playwright.md +0 -609
  137. package/docs/plugins.md +0 -1225
  138. package/docs/puppeteer.md +0 -316
  139. package/docs/quickstart.md +0 -163
  140. package/docs/react.md +0 -69
  141. package/docs/reports.md +0 -392
  142. package/docs/secrets.md +0 -36
  143. package/docs/shadow.md +0 -68
  144. package/docs/shared/keys.mustache +0 -31
  145. package/docs/shared/react.mustache +0 -1
  146. package/docs/testcafe.md +0 -174
  147. package/docs/translation.md +0 -247
  148. package/docs/tutorial.md +0 -271
  149. package/docs/typescript.md +0 -180
  150. package/docs/ui.md +0 -59
  151. package/docs/videos.md +0 -28
  152. package/docs/visual.md +0 -202
  153. package/docs/vue.md +0 -121
  154. package/docs/webapi/amOnPage.mustache +0 -11
  155. package/docs/webapi/appendField.mustache +0 -11
  156. package/docs/webapi/attachFile.mustache +0 -12
  157. package/docs/webapi/checkOption.mustache +0 -13
  158. package/docs/webapi/clearCookie.mustache +0 -10
  159. package/docs/webapi/clearField.mustache +0 -9
  160. package/docs/webapi/click.mustache +0 -25
  161. package/docs/webapi/clickLink.mustache +0 -8
  162. package/docs/webapi/closeCurrentTab.mustache +0 -7
  163. package/docs/webapi/closeOtherTabs.mustache +0 -8
  164. package/docs/webapi/dontSee.mustache +0 -11
  165. package/docs/webapi/dontSeeCheckboxIsChecked.mustache +0 -10
  166. package/docs/webapi/dontSeeCookie.mustache +0 -8
  167. package/docs/webapi/dontSeeCurrentUrlEquals.mustache +0 -10
  168. package/docs/webapi/dontSeeElement.mustache +0 -8
  169. package/docs/webapi/dontSeeElementInDOM.mustache +0 -8
  170. package/docs/webapi/dontSeeInCurrentUrl.mustache +0 -4
  171. package/docs/webapi/dontSeeInField.mustache +0 -11
  172. package/docs/webapi/dontSeeInSource.mustache +0 -8
  173. package/docs/webapi/dontSeeInTitle.mustache +0 -8
  174. package/docs/webapi/doubleClick.mustache +0 -13
  175. package/docs/webapi/downloadFile.mustache +0 -12
  176. package/docs/webapi/dragAndDrop.mustache +0 -9
  177. package/docs/webapi/dragSlider.mustache +0 -11
  178. package/docs/webapi/executeAsyncScript.mustache +0 -24
  179. package/docs/webapi/executeScript.mustache +0 -26
  180. package/docs/webapi/fillField.mustache +0 -16
  181. package/docs/webapi/forceClick.mustache +0 -28
  182. package/docs/webapi/forceRightClick.mustache +0 -18
  183. package/docs/webapi/grabAllWindowHandles.mustache +0 -7
  184. package/docs/webapi/grabAttributeFrom.mustache +0 -10
  185. package/docs/webapi/grabAttributeFromAll.mustache +0 -9
  186. package/docs/webapi/grabBrowserLogs.mustache +0 -9
  187. package/docs/webapi/grabCookie.mustache +0 -11
  188. package/docs/webapi/grabCssPropertyFrom.mustache +0 -11
  189. package/docs/webapi/grabCssPropertyFromAll.mustache +0 -10
  190. package/docs/webapi/grabCurrentUrl.mustache +0 -9
  191. package/docs/webapi/grabCurrentWindowHandle.mustache +0 -6
  192. package/docs/webapi/grabDataFromPerformanceTiming.mustache +0 -20
  193. package/docs/webapi/grabElementBoundingRect.mustache +0 -20
  194. package/docs/webapi/grabGeoLocation.mustache +0 -8
  195. package/docs/webapi/grabHTMLFrom.mustache +0 -10
  196. package/docs/webapi/grabHTMLFromAll.mustache +0 -9
  197. package/docs/webapi/grabNumberOfOpenTabs.mustache +0 -8
  198. package/docs/webapi/grabNumberOfVisibleElements.mustache +0 -9
  199. package/docs/webapi/grabPageScrollPosition.mustache +0 -8
  200. package/docs/webapi/grabPopupText.mustache +0 -5
  201. package/docs/webapi/grabSource.mustache +0 -8
  202. package/docs/webapi/grabTextFrom.mustache +0 -10
  203. package/docs/webapi/grabTextFromAll.mustache +0 -9
  204. package/docs/webapi/grabTitle.mustache +0 -8
  205. package/docs/webapi/grabValueFrom.mustache +0 -9
  206. package/docs/webapi/grabValueFromAll.mustache +0 -8
  207. package/docs/webapi/moveCursorTo.mustache +0 -12
  208. package/docs/webapi/openNewTab.mustache +0 -7
  209. package/docs/webapi/pressKey.mustache +0 -12
  210. package/docs/webapi/pressKeyDown.mustache +0 -12
  211. package/docs/webapi/pressKeyUp.mustache +0 -12
  212. package/docs/webapi/pressKeyWithKeyNormalization.mustache +0 -60
  213. package/docs/webapi/refreshPage.mustache +0 -6
  214. package/docs/webapi/resizeWindow.mustache +0 -6
  215. package/docs/webapi/rightClick.mustache +0 -14
  216. package/docs/webapi/saveElementScreenshot.mustache +0 -10
  217. package/docs/webapi/saveScreenshot.mustache +0 -12
  218. package/docs/webapi/say.mustache +0 -10
  219. package/docs/webapi/scrollIntoView.mustache +0 -11
  220. package/docs/webapi/scrollPageToBottom.mustache +0 -6
  221. package/docs/webapi/scrollPageToTop.mustache +0 -6
  222. package/docs/webapi/scrollTo.mustache +0 -12
  223. package/docs/webapi/see.mustache +0 -11
  224. package/docs/webapi/seeAttributesOnElements.mustache +0 -9
  225. package/docs/webapi/seeCheckboxIsChecked.mustache +0 -10
  226. package/docs/webapi/seeCookie.mustache +0 -8
  227. package/docs/webapi/seeCssPropertiesOnElements.mustache +0 -9
  228. package/docs/webapi/seeCurrentUrlEquals.mustache +0 -11
  229. package/docs/webapi/seeElement.mustache +0 -8
  230. package/docs/webapi/seeElementInDOM.mustache +0 -8
  231. package/docs/webapi/seeInCurrentUrl.mustache +0 -8
  232. package/docs/webapi/seeInField.mustache +0 -12
  233. package/docs/webapi/seeInPopup.mustache +0 -8
  234. package/docs/webapi/seeInSource.mustache +0 -7
  235. package/docs/webapi/seeInTitle.mustache +0 -8
  236. package/docs/webapi/seeNumberOfElements.mustache +0 -11
  237. package/docs/webapi/seeNumberOfVisibleElements.mustache +0 -10
  238. package/docs/webapi/seeTextEquals.mustache +0 -9
  239. package/docs/webapi/seeTitleEquals.mustache +0 -8
  240. package/docs/webapi/selectOption.mustache +0 -21
  241. package/docs/webapi/setCookie.mustache +0 -16
  242. package/docs/webapi/setGeoLocation.mustache +0 -12
  243. package/docs/webapi/switchTo.mustache +0 -9
  244. package/docs/webapi/switchToNextTab.mustache +0 -10
  245. package/docs/webapi/switchToPreviousTab.mustache +0 -10
  246. package/docs/webapi/type.mustache +0 -21
  247. package/docs/webapi/uncheckOption.mustache +0 -13
  248. package/docs/webapi/wait.mustache +0 -8
  249. package/docs/webapi/waitForClickable.mustache +0 -11
  250. package/docs/webapi/waitForDetached.mustache +0 -10
  251. package/docs/webapi/waitForElement.mustache +0 -11
  252. package/docs/webapi/waitForEnabled.mustache +0 -6
  253. package/docs/webapi/waitForFunction.mustache +0 -17
  254. package/docs/webapi/waitForInvisible.mustache +0 -10
  255. package/docs/webapi/waitForText.mustache +0 -13
  256. package/docs/webapi/waitForValue.mustache +0 -10
  257. package/docs/webapi/waitForVisible.mustache +0 -10
  258. package/docs/webapi/waitInUrl.mustache +0 -9
  259. package/docs/webapi/waitNumberOfVisibleElements.mustache +0 -10
  260. package/docs/webapi/waitToHide.mustache +0 -10
  261. package/docs/webapi/waitUrlEquals.mustache +0 -10
  262. package/docs/webdriver.md +0 -657
  263. package/docs/wiki/Books-&-Posts.md +0 -27
  264. package/docs/wiki/Community-Helpers-&-Plugins.md +0 -49
  265. package/docs/wiki/Converting-Playwright-to-Istanbul-Coverage.md +0 -29
  266. package/docs/wiki/Examples.md +0 -139
  267. package/docs/wiki/Google-Summer-of-Code-(GSoC)-2020.md +0 -68
  268. package/docs/wiki/Home.md +0 -16
  269. package/docs/wiki/Release-Process.md +0 -24
  270. package/docs/wiki/Roadmap.md +0 -23
  271. package/docs/wiki/Tests.md +0 -1393
  272. package/docs/wiki/Upgrading-to-CodeceptJS-3.md +0 -153
  273. package/docs/wiki/Videos.md +0 -19
@@ -1,344 +0,0 @@
1
- const axios = require('axios').default;
2
- const Helper = require('@codeceptjs/helper');
3
- const Secret = require('../secret');
4
-
5
- const { beautify } = require('../utils');
6
-
7
- /**
8
- * ## Configuration
9
- *
10
- * @typedef RESTConfig
11
- * @type {object}
12
- * @prop {string} [endpoint] - API base URL
13
- * @prop {boolean} [prettyPrintJson=false] - pretty print json for response/request on console logs
14
- * @prop {number} [timeout=1000] - timeout for requests in milliseconds. 10000ms by default
15
- * @prop {object} [defaultHeaders] - a list of default headers
16
- * @prop {function} [onRequest] - a async function which can update request object.
17
- * @prop {function} [onResponse] - a async function which can update response object.
18
- * @prop {number} [maxUploadFileSize] - set the max content file size in MB when performing api calls.
19
- */
20
- const config = {};
21
-
22
- /**
23
- * REST helper allows to send additional requests to the REST API during acceptance tests.
24
- * [Axios](https://github.com/axios/axios) library is used to perform requests.
25
- *
26
- * <!-- configuration -->
27
- *
28
- * ## Example
29
- *
30
- * ```js
31
- *{
32
- * helpers: {
33
- * REST: {
34
- * endpoint: 'http://site.com/api',
35
- * prettyPrintJson: true,
36
- * onRequest: (request) => {
37
- * request.headers.auth = '123';
38
- * }
39
- * }
40
- * }
41
- *}
42
- * ```
43
- *
44
- * ## Access From Helpers
45
- *
46
- * Send REST requests by accessing `_executeRequest` method:
47
- *
48
- * ```js
49
- * this.helpers['REST']._executeRequest({
50
- * url,
51
- * data,
52
- * });
53
- * ```
54
- *
55
- * ## Methods
56
- */
57
- class REST extends Helper {
58
- constructor(config) {
59
- super(config);
60
- this.options = {
61
- timeout: 10000,
62
- defaultHeaders: {},
63
- endpoint: '',
64
- prettyPrintJson: false,
65
- onRequest: null,
66
- onResponse: null,
67
- };
68
-
69
- if (this.options.maxContentLength) {
70
- const maxContentLength = this.options.maxUploadFileSize * 1024 * 1024;
71
- this.options.maxContentLength = maxContentLength;
72
- this.options.maxBodyLength = maxContentLength;
73
- }
74
-
75
- this.options = { ...this.options, ...config };
76
- this.headers = { ...this.options.defaultHeaders };
77
- this.axios = axios.create();
78
- this.axios.defaults.headers = this.options.defaultHeaders;
79
- }
80
-
81
- static _config() {
82
- return [
83
- { name: 'endpoint', message: 'Endpoint of API you are going to test', default: 'http://localhost:3000/api' },
84
- ];
85
- }
86
-
87
- static _checkRequirements() {
88
- try {
89
- require('axios');
90
- } catch (e) {
91
- return ['axios'];
92
- }
93
- }
94
-
95
- _before() {
96
- this.headers = { ...this.options.defaultHeaders };
97
- }
98
-
99
- /**
100
- * Sets request headers for all requests of this test
101
- *
102
- * @param {object} headers headers list
103
- */
104
- haveRequestHeaders(headers) {
105
- this.headers = { ...this.headers, ...headers };
106
- }
107
-
108
- /**
109
- * Adds a header for Bearer authentication
110
- *
111
- * ```js
112
- * // we use secret function to hide token from logs
113
- * I.amBearerAuthenticated(secret('heregoestoken'))
114
- * ```
115
- *
116
- * @param {string | CodeceptJS.Secret} accessToken Bearer access token
117
- */
118
- amBearerAuthenticated(accessToken) {
119
- this.haveRequestHeaders({ Authorization: `Bearer ${accessToken}` });
120
- }
121
-
122
- /**
123
- * Executes axios request
124
- *
125
- * @param {*} request
126
- *
127
- * @returns {Promise<*>} response
128
- */
129
- async _executeRequest(request) {
130
- // Add custom headers. They can be set by amBearerAuthenticated() or haveRequestHeaders()
131
- request.headers = { ...this.headers, ...request.headers };
132
-
133
- const _debugRequest = { ...request };
134
- this.axios.defaults.timeout = request.timeout || this.options.timeout;
135
-
136
- if (this.headers && this.headers.auth) {
137
- request.auth = this.headers.auth;
138
- }
139
-
140
- if (typeof request.data === 'object') {
141
- const returnedValue = {};
142
- for (const [key, value] of Object.entries(request.data)) {
143
- returnedValue[key] = value;
144
- if (value instanceof Secret) returnedValue[key] = value.getMasked();
145
- }
146
- _debugRequest.data = returnedValue;
147
- }
148
-
149
- if (request.data instanceof Secret) {
150
- _debugRequest.data = '*****';
151
- request.data = (typeof request.data === 'object' && !(request.data instanceof Secret)) ? { ...request.data.toString() } : request.data.toString();
152
- }
153
-
154
- if ((typeof request.data) === 'string') {
155
- if (!request.headers || !request.headers['Content-Type']) {
156
- request.headers = { ...request.headers, ...{ 'Content-Type': 'application/x-www-form-urlencoded' } };
157
- }
158
- }
159
-
160
- if (this.config.onRequest) {
161
- await this.config.onRequest(request);
162
- }
163
-
164
- this.options.prettyPrintJson ? this.debugSection('Request', beautify(JSON.stringify(_debugRequest))) : this.debugSection('Request', JSON.stringify(_debugRequest));
165
-
166
- let response;
167
- try {
168
- response = await this.axios(request);
169
- } catch (err) {
170
- if (!err.response) throw err;
171
- this.debugSection('Response', `Response error. Status code: ${err.response.status}`);
172
- response = err.response;
173
- }
174
- if (this.config.onResponse) {
175
- await this.config.onResponse(response);
176
- }
177
- this.options.prettyPrintJson ? this.debugSection('Response', beautify(JSON.stringify(response.data))) : this.debugSection('Response', JSON.stringify(response.data));
178
- return response;
179
- }
180
-
181
- /**
182
- * Generates url based on format sent (takes endpoint + url if latter lacks 'http')
183
- *
184
- * @param {*} url
185
- */
186
- _url(url) {
187
- return /^\w+\:\/\//.test(url) ? url : this.options.endpoint + url;
188
- }
189
-
190
- /**
191
- * Set timeout for the request
192
- *
193
- * ```js
194
- * I.setRequestTimeout(10000); // In milliseconds
195
- * ```
196
- *
197
- * @param {number} newTimeout - timeout in milliseconds
198
- */
199
- setRequestTimeout(newTimeout) {
200
- this.options.timeout = newTimeout;
201
- }
202
-
203
- /**
204
- * Send GET request to REST API
205
- *
206
- * ```js
207
- * I.sendGetRequest('/api/users.json');
208
- * ```
209
- *
210
- * @param {*} url
211
- * @param {object} [headers={}] - the headers object to be sent. By default, it is sent as an empty object
212
- *
213
- * @returns {Promise<*>} response
214
- */
215
- async sendGetRequest(url, headers = {}) {
216
- const request = {
217
- baseURL: this._url(url),
218
- headers,
219
- };
220
- return this._executeRequest(request);
221
- }
222
-
223
- /**
224
- * Sends POST request to API.
225
- *
226
- * ```js
227
- * I.sendPostRequest('/api/users.json', { "email": "user@user.com" });
228
- *
229
- * // To mask the payload in logs
230
- * I.sendPostRequest('/api/users.json', secret({ "email": "user@user.com" }));
231
- *
232
- * ```
233
- *
234
- * @param {*} url
235
- * @param {*} [payload={}] - the payload to be sent. By default, it is sent as an empty object
236
- * @param {object} [headers={}] - the headers object to be sent. By default, it is sent as an empty object
237
- *
238
- * @returns {Promise<*>} response
239
- */
240
- async sendPostRequest(url, payload = {}, headers = {}) {
241
- const request = {
242
- baseURL: this._url(url),
243
- method: 'POST',
244
- data: payload,
245
- headers,
246
- };
247
-
248
- if (this.options.maxContentLength) {
249
- request.maxContentLength = this.options.maxContentLength;
250
- request.maxBodyLength = this.options.maxContentLength;
251
- }
252
-
253
- return this._executeRequest(request);
254
- }
255
-
256
- /**
257
- * Sends PATCH request to API.
258
- *
259
- * ```js
260
- * I.sendPatchRequest('/api/users.json', { "email": "user@user.com" });
261
- *
262
- * // To mask the payload in logs
263
- * I.sendPatchRequest('/api/users.json', secret({ "email": "user@user.com" }));
264
- *
265
- * ```
266
- *
267
- * @param {string} url
268
- * @param {*} [payload={}] - the payload to be sent. By default it is sent as an empty object
269
- * @param {object} [headers={}] - the headers object to be sent. By default it is sent as an empty object
270
- *
271
- * @returns {Promise<*>} response
272
- */
273
- async sendPatchRequest(url, payload = {}, headers = {}) {
274
- const request = {
275
- baseURL: this._url(url),
276
- method: 'PATCH',
277
- data: payload,
278
- headers,
279
- };
280
-
281
- if (this.options.maxContentLength) {
282
- request.maxContentLength = this.options.maxContentLength;
283
- request.maxBodyLength = this.options.maxBodyLength;
284
- }
285
-
286
- return this._executeRequest(request);
287
- }
288
-
289
- /**
290
- * Sends PUT request to API.
291
- *
292
- * ```js
293
- * I.sendPutRequest('/api/users.json', { "email": "user@user.com" });
294
- *
295
- * // To mask the payload in logs
296
- * I.sendPutRequest('/api/users.json', secret({ "email": "user@user.com" }));
297
- *
298
- * ```
299
- *
300
- * @param {string} url
301
- * @param {*} [payload={}] - the payload to be sent. By default it is sent as an empty object
302
- * @param {object} [headers={}] - the headers object to be sent. By default it is sent as an empty object
303
- *
304
- * @returns {Promise<*>} response
305
- */
306
- async sendPutRequest(url, payload = {}, headers = {}) {
307
- const request = {
308
- baseURL: this._url(url),
309
- method: 'PUT',
310
- data: payload,
311
- headers,
312
- };
313
-
314
- if (this.options.maxContentLength) {
315
- request.maxContentLength = this.options.maxContentLength;
316
- request.maxBodyLength = this.options.maxBodyLength;
317
- }
318
-
319
- return this._executeRequest(request);
320
- }
321
-
322
- /**
323
- * Sends DELETE request to API.
324
- *
325
- * ```js
326
- * I.sendDeleteRequest('/api/users/1');
327
- * ```
328
- *
329
- * @param {*} url
330
- * @param {object} [headers={}] - the headers object to be sent. By default, it is sent as an empty object
331
- *
332
- * @returns {Promise<*>} response
333
- */
334
- async sendDeleteRequest(url, headers = {}) {
335
- const request = {
336
- baseURL: this._url(url),
337
- method: 'DELETE',
338
- headers,
339
- };
340
-
341
- return this._executeRequest(request);
342
- }
343
- }
344
- module.exports = REST;
@@ -1,76 +0,0 @@
1
- const Helper = require('../helper');
2
-
3
- /**
4
- * SeleniumWebdriver helper is based on the official [Selenium Webdriver JS](https://www.npmjs.com/package/selenium-webdriver)
5
- * library. It implements common web api methods (amOnPage, click, see).
6
- *
7
- * ## Backends
8
- *
9
- * ### Selenium Installation
10
- *
11
- * 1. Download [Selenium Server](http://docs.seleniumhq.org/download/)
12
- * 2. For Chrome browser install [ChromeDriver](https://sites.google.com/a/chromium.org/chromedriver/getting-started), for Firefox browser install [GeckoDriver](https://github.com/mozilla/geckodriver).
13
- * 3. Launch the server: `java -jar selenium-server-standalone-3.xx.xxx.jar`. To locate Chromedriver binary use `-Dwebdriver.chrome.driver=./chromedriver` option. For Geckodriver use `-Dwebdriver.gecko.driver=`.
14
- *
15
- *
16
- * ### PhantomJS Installation
17
- *
18
- * PhantomJS is a headless alternative to Selenium Server that implements [the WebDriver protocol](https://code.google.com/p/selenium/wiki/JsonWireProtocol).
19
- * It allows you to run Selenium tests on a server without a GUI installed.
20
- *
21
- * 1. Download [PhantomJS](http://phantomjs.org/download.html)
22
- * 2. Run PhantomJS in WebDriver mode: `phantomjs --webdriver=4444`
23
- *
24
- * ## Configuration
25
- *
26
- * This helper should be configured in codecept.json or codecept.conf.js
27
- *
28
- * * `url` - base url of website to be tested
29
- * * `browser` - browser in which perform testing
30
- * * `driver` - which protractor driver to use (local, direct, session, hosted, sauce, browserstack). By default set to 'hosted' which requires selenium server to be started.
31
- * * `restart` - restart browser between tests (default: true).
32
- * * `smartWait`: (optional) **enables SmartWait**; wait for additional milliseconds for element to appear. Enable for 5 secs: "smartWait": 5000
33
- * * `disableScreenshots` (optional, default: false) - don't save screenshot on failure
34
- * * `uniqueScreenshotNames` (optional, default: false) - option to prevent screenshot override if you have scenarios with the same name in different suites
35
- * * `keepBrowserState` (optional, default: false) - keep browser state between tests when `restart` set to false.
36
- * * `keepCookies` (optional, default: false) - keep cookies between tests when `restart` set to false.*
37
- * * `seleniumAddress` - Selenium address to connect (default: http://localhost:4444/wd/hub)
38
- * * `waitForTimeout`: (optional) sets default wait time in _ms_ for all `wait*` functions. 1000 by default;
39
- * * `scriptTimeout`: (optional) sets default timeout for scripts in `executeAsync`. 1000 by default.
40
- * * `windowSize`: (optional) default window size. Set to `maximize` or a dimension in the format `640x480`.
41
- * * `manualStart` (optional, default: false) - do not start browser before a test, start it manually inside a helper with `this.helpers["WebDriverIO"]._startBrowser()`
42
- * * `capabilities`: {} - list of [Desired Capabilities](https://github.com/SeleniumHQ/selenium/wiki/DesiredCapabilities)
43
- *
44
- * Example:
45
- *
46
- * ```json
47
- * {
48
- * "helpers": {
49
- * "SeleniumWebdriver" : {
50
- * "url": "http://localhost",
51
- * "browser": "chrome",
52
- * "smartWait": 5000,
53
- * "restart": false
54
- * }
55
- * }
56
- * }
57
- * ```
58
- *
59
- * ## Access From Helpers
60
- *
61
- * Receive a WebDriverIO client from a custom helper by accessing `browser` property:
62
- *
63
- * ```js
64
- * this.helpers['SeleniumWebdriver'].browser
65
- * ```
66
- *
67
- */
68
- class SeleniumWebdriver extends Helper {
69
- constructor(config) {
70
- console.log('SeleniumWebdriver helper is now alias to Protractor');
71
- console.log('Please replace in your config: SeleniumWebdriver -> Protractor');
72
- super(config);
73
- }
74
- }
75
-
76
- module.exports = SeleniumWebdriver;