codeceptjs 3.4.1 → 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 (281) hide show
  1. package/README.md +31 -30
  2. package/bin/codecept.js +1 -1
  3. package/lib/actor.js +6 -3
  4. package/lib/ai.js +180 -0
  5. package/lib/cli.js +13 -3
  6. package/lib/codecept.js +8 -0
  7. package/lib/colorUtils.js +10 -0
  8. package/lib/command/definitions.js +2 -7
  9. package/lib/command/dryRun.js +11 -2
  10. package/lib/command/generate.js +46 -3
  11. package/lib/command/info.js +24 -0
  12. package/lib/command/init.js +64 -6
  13. package/lib/command/interactive.js +15 -1
  14. package/lib/command/run-multiple/collection.js +17 -5
  15. package/lib/command/run-multiple.js +4 -2
  16. package/lib/command/run-workers.js +68 -5
  17. package/lib/command/run.js +7 -0
  18. package/lib/command/workers/runTests.js +39 -0
  19. package/lib/container.js +13 -3
  20. package/lib/data/context.js +14 -6
  21. package/lib/event.js +4 -0
  22. package/lib/helper/ApiDataFactory.js +2 -1
  23. package/lib/helper/Appium.js +116 -29
  24. package/lib/helper/Expect.js +422 -0
  25. package/lib/helper/FileSystem.js +1 -1
  26. package/lib/helper/GraphQL.js +25 -0
  27. package/lib/helper/JSONResponse.js +4 -4
  28. package/lib/helper/Nightmare.js +10 -5
  29. package/lib/helper/OpenAI.js +126 -0
  30. package/lib/helper/Playwright.js +1298 -229
  31. package/lib/helper/Protractor.js +12 -7
  32. package/lib/helper/Puppeteer.js +204 -64
  33. package/lib/helper/REST.js +15 -5
  34. package/lib/helper/TestCafe.js +45 -10
  35. package/lib/helper/WebDriver.js +252 -83
  36. package/lib/helper/errors/ElementNotFound.js +2 -1
  37. package/lib/helper/extras/PlaywrightReactVueLocator.js +38 -0
  38. package/lib/helper/scripts/blurElement.js +17 -0
  39. package/lib/helper/scripts/focusElement.js +17 -0
  40. package/lib/helper/scripts/highlightElement.js +20 -0
  41. package/lib/html.js +258 -0
  42. package/lib/interfaces/bdd.js +1 -1
  43. package/lib/interfaces/gherkin.js +37 -3
  44. package/lib/interfaces/scenarioConfig.js +1 -0
  45. package/lib/listener/retry.js +2 -1
  46. package/lib/locator.js +17 -4
  47. package/lib/mochaFactory.js +2 -1
  48. package/lib/output.js +1 -1
  49. package/lib/pause.js +78 -19
  50. package/lib/plugin/autoLogin.js +45 -10
  51. package/lib/plugin/debugErrors.js +67 -0
  52. package/lib/plugin/fakerTransform.js +4 -6
  53. package/lib/plugin/heal.js +209 -0
  54. package/lib/plugin/retryFailedStep.js +10 -1
  55. package/lib/plugin/retryTo.js +2 -4
  56. package/lib/plugin/screenshotOnFail.js +11 -2
  57. package/lib/plugin/selenoid.js +6 -1
  58. package/lib/plugin/standardActingHelpers.js +0 -2
  59. package/lib/plugin/stepByStepReport.js +2 -2
  60. package/lib/plugin/tryTo.js +5 -7
  61. package/lib/plugin/wdio.js +0 -1
  62. package/lib/recorder.js +22 -11
  63. package/lib/secret.js +5 -4
  64. package/lib/session.js +1 -1
  65. package/lib/step.js +36 -12
  66. package/lib/ui.js +5 -3
  67. package/lib/utils.js +22 -1
  68. package/lib/workers.js +83 -10
  69. package/package.json +117 -95
  70. package/translations/de-DE.js +5 -0
  71. package/translations/fr-FR.js +14 -1
  72. package/translations/it-IT.js +1 -0
  73. package/translations/ja-JP.js +14 -9
  74. package/translations/pl-PL.js +5 -0
  75. package/translations/pt-BR.js +1 -0
  76. package/translations/ru-RU.js +1 -0
  77. package/translations/zh-CN.js +5 -0
  78. package/translations/zh-TW.js +5 -0
  79. package/typings/index.d.ts +51 -15
  80. package/typings/promiseBasedTypes.d.ts +864 -802
  81. package/typings/types.d.ts +1339 -744
  82. package/CHANGELOG.md +0 -2427
  83. package/docs/advanced.md +0 -351
  84. package/docs/api.md +0 -323
  85. package/docs/basics.md +0 -980
  86. package/docs/bdd.md +0 -535
  87. package/docs/best.md +0 -237
  88. package/docs/books.md +0 -37
  89. package/docs/bootstrap.md +0 -135
  90. package/docs/build/ApiDataFactory.js +0 -409
  91. package/docs/build/Appium.js +0 -1938
  92. package/docs/build/FileSystem.js +0 -228
  93. package/docs/build/GraphQL.js +0 -204
  94. package/docs/build/GraphQLDataFactory.js +0 -309
  95. package/docs/build/JSONResponse.js +0 -338
  96. package/docs/build/Mochawesome.js +0 -71
  97. package/docs/build/Nightmare.js +0 -2145
  98. package/docs/build/Playwright.js +0 -3986
  99. package/docs/build/Polly.js +0 -42
  100. package/docs/build/Protractor.js +0 -2699
  101. package/docs/build/Puppeteer.js +0 -3710
  102. package/docs/build/REST.js +0 -334
  103. package/docs/build/SeleniumWebdriver.js +0 -76
  104. package/docs/build/TestCafe.js +0 -2057
  105. package/docs/build/WebDriver.js +0 -4017
  106. package/docs/changelog.md +0 -2436
  107. package/docs/commands.md +0 -254
  108. package/docs/community-helpers.md +0 -58
  109. package/docs/configuration.md +0 -157
  110. package/docs/continuous-integration.md +0 -22
  111. package/docs/custom-helpers.md +0 -306
  112. package/docs/data.md +0 -375
  113. package/docs/detox.md +0 -235
  114. package/docs/docker.md +0 -137
  115. package/docs/email.md +0 -183
  116. package/docs/examples.md +0 -149
  117. package/docs/helpers/ApiDataFactory.md +0 -266
  118. package/docs/helpers/Appium.md +0 -1312
  119. package/docs/helpers/Detox.md +0 -586
  120. package/docs/helpers/FileSystem.md +0 -152
  121. package/docs/helpers/GraphQL.md +0 -130
  122. package/docs/helpers/GraphQLDataFactory.md +0 -226
  123. package/docs/helpers/JSONResponse.md +0 -254
  124. package/docs/helpers/Mochawesome.md +0 -8
  125. package/docs/helpers/MockRequest.md +0 -377
  126. package/docs/helpers/Nightmare.md +0 -1256
  127. package/docs/helpers/Playwright.md +0 -2208
  128. package/docs/helpers/Polly.md +0 -44
  129. package/docs/helpers/Puppeteer-firefox.md +0 -86
  130. package/docs/helpers/Puppeteer.md +0 -2141
  131. package/docs/helpers/REST.md +0 -217
  132. package/docs/helpers/TestCafe.md +0 -1222
  133. package/docs/helpers/WebDriver.md +0 -2319
  134. package/docs/hooks.md +0 -340
  135. package/docs/index.md +0 -111
  136. package/docs/installation.md +0 -75
  137. package/docs/internal-api.md +0 -265
  138. package/docs/locators.md +0 -331
  139. package/docs/mobile-react-native-locators.md +0 -67
  140. package/docs/mobile.md +0 -297
  141. package/docs/nightmare.md +0 -223
  142. package/docs/pageobjects.md +0 -291
  143. package/docs/parallel.md +0 -232
  144. package/docs/playwright.md +0 -609
  145. package/docs/plugins.md +0 -1171
  146. package/docs/puppeteer.md +0 -316
  147. package/docs/quickstart.md +0 -163
  148. package/docs/react.md +0 -69
  149. package/docs/reports.md +0 -392
  150. package/docs/secrets.md +0 -30
  151. package/docs/shadow.md +0 -68
  152. package/docs/shared/keys.mustache +0 -31
  153. package/docs/shared/react.mustache +0 -1
  154. package/docs/testcafe.md +0 -174
  155. package/docs/translation.md +0 -247
  156. package/docs/tutorial.md +0 -271
  157. package/docs/typescript.md +0 -180
  158. package/docs/ui.md +0 -59
  159. package/docs/videos.md +0 -28
  160. package/docs/visual.md +0 -202
  161. package/docs/vue.md +0 -121
  162. package/docs/webapi/amOnPage.mustache +0 -11
  163. package/docs/webapi/appendField.mustache +0 -9
  164. package/docs/webapi/attachFile.mustache +0 -12
  165. package/docs/webapi/checkOption.mustache +0 -13
  166. package/docs/webapi/clearCookie.mustache +0 -10
  167. package/docs/webapi/clearField.mustache +0 -9
  168. package/docs/webapi/click.mustache +0 -25
  169. package/docs/webapi/clickLink.mustache +0 -8
  170. package/docs/webapi/closeCurrentTab.mustache +0 -7
  171. package/docs/webapi/closeOtherTabs.mustache +0 -8
  172. package/docs/webapi/dontSee.mustache +0 -11
  173. package/docs/webapi/dontSeeCheckboxIsChecked.mustache +0 -10
  174. package/docs/webapi/dontSeeCookie.mustache +0 -8
  175. package/docs/webapi/dontSeeCurrentUrlEquals.mustache +0 -10
  176. package/docs/webapi/dontSeeElement.mustache +0 -8
  177. package/docs/webapi/dontSeeElementInDOM.mustache +0 -8
  178. package/docs/webapi/dontSeeInCurrentUrl.mustache +0 -4
  179. package/docs/webapi/dontSeeInField.mustache +0 -11
  180. package/docs/webapi/dontSeeInSource.mustache +0 -8
  181. package/docs/webapi/dontSeeInTitle.mustache +0 -8
  182. package/docs/webapi/doubleClick.mustache +0 -13
  183. package/docs/webapi/downloadFile.mustache +0 -12
  184. package/docs/webapi/dragAndDrop.mustache +0 -9
  185. package/docs/webapi/dragSlider.mustache +0 -11
  186. package/docs/webapi/executeAsyncScript.mustache +0 -24
  187. package/docs/webapi/executeScript.mustache +0 -26
  188. package/docs/webapi/fillField.mustache +0 -16
  189. package/docs/webapi/forceClick.mustache +0 -28
  190. package/docs/webapi/forceRightClick.mustache +0 -18
  191. package/docs/webapi/grabAllWindowHandles.mustache +0 -7
  192. package/docs/webapi/grabAttributeFrom.mustache +0 -10
  193. package/docs/webapi/grabAttributeFromAll.mustache +0 -9
  194. package/docs/webapi/grabBrowserLogs.mustache +0 -9
  195. package/docs/webapi/grabCookie.mustache +0 -11
  196. package/docs/webapi/grabCssPropertyFrom.mustache +0 -11
  197. package/docs/webapi/grabCssPropertyFromAll.mustache +0 -10
  198. package/docs/webapi/grabCurrentUrl.mustache +0 -9
  199. package/docs/webapi/grabCurrentWindowHandle.mustache +0 -6
  200. package/docs/webapi/grabDataFromPerformanceTiming.mustache +0 -20
  201. package/docs/webapi/grabElementBoundingRect.mustache +0 -20
  202. package/docs/webapi/grabGeoLocation.mustache +0 -8
  203. package/docs/webapi/grabHTMLFrom.mustache +0 -10
  204. package/docs/webapi/grabHTMLFromAll.mustache +0 -9
  205. package/docs/webapi/grabNumberOfOpenTabs.mustache +0 -8
  206. package/docs/webapi/grabNumberOfVisibleElements.mustache +0 -9
  207. package/docs/webapi/grabPageScrollPosition.mustache +0 -8
  208. package/docs/webapi/grabPopupText.mustache +0 -5
  209. package/docs/webapi/grabSource.mustache +0 -8
  210. package/docs/webapi/grabTextFrom.mustache +0 -10
  211. package/docs/webapi/grabTextFromAll.mustache +0 -9
  212. package/docs/webapi/grabTitle.mustache +0 -8
  213. package/docs/webapi/grabValueFrom.mustache +0 -9
  214. package/docs/webapi/grabValueFromAll.mustache +0 -8
  215. package/docs/webapi/moveCursorTo.mustache +0 -12
  216. package/docs/webapi/openNewTab.mustache +0 -7
  217. package/docs/webapi/pressKey.mustache +0 -12
  218. package/docs/webapi/pressKeyDown.mustache +0 -12
  219. package/docs/webapi/pressKeyUp.mustache +0 -12
  220. package/docs/webapi/pressKeyWithKeyNormalization.mustache +0 -60
  221. package/docs/webapi/refreshPage.mustache +0 -6
  222. package/docs/webapi/resizeWindow.mustache +0 -6
  223. package/docs/webapi/rightClick.mustache +0 -14
  224. package/docs/webapi/saveElementScreenshot.mustache +0 -10
  225. package/docs/webapi/saveScreenshot.mustache +0 -12
  226. package/docs/webapi/say.mustache +0 -10
  227. package/docs/webapi/scrollIntoView.mustache +0 -11
  228. package/docs/webapi/scrollPageToBottom.mustache +0 -6
  229. package/docs/webapi/scrollPageToTop.mustache +0 -6
  230. package/docs/webapi/scrollTo.mustache +0 -12
  231. package/docs/webapi/see.mustache +0 -11
  232. package/docs/webapi/seeAttributesOnElements.mustache +0 -9
  233. package/docs/webapi/seeCheckboxIsChecked.mustache +0 -10
  234. package/docs/webapi/seeCookie.mustache +0 -8
  235. package/docs/webapi/seeCssPropertiesOnElements.mustache +0 -9
  236. package/docs/webapi/seeCurrentUrlEquals.mustache +0 -11
  237. package/docs/webapi/seeElement.mustache +0 -8
  238. package/docs/webapi/seeElementInDOM.mustache +0 -8
  239. package/docs/webapi/seeInCurrentUrl.mustache +0 -8
  240. package/docs/webapi/seeInField.mustache +0 -12
  241. package/docs/webapi/seeInPopup.mustache +0 -8
  242. package/docs/webapi/seeInSource.mustache +0 -7
  243. package/docs/webapi/seeInTitle.mustache +0 -8
  244. package/docs/webapi/seeNumberOfElements.mustache +0 -11
  245. package/docs/webapi/seeNumberOfVisibleElements.mustache +0 -10
  246. package/docs/webapi/seeTextEquals.mustache +0 -9
  247. package/docs/webapi/seeTitleEquals.mustache +0 -8
  248. package/docs/webapi/selectOption.mustache +0 -21
  249. package/docs/webapi/setCookie.mustache +0 -16
  250. package/docs/webapi/setGeoLocation.mustache +0 -12
  251. package/docs/webapi/switchTo.mustache +0 -9
  252. package/docs/webapi/switchToNextTab.mustache +0 -10
  253. package/docs/webapi/switchToPreviousTab.mustache +0 -10
  254. package/docs/webapi/type.mustache +0 -18
  255. package/docs/webapi/uncheckOption.mustache +0 -13
  256. package/docs/webapi/wait.mustache +0 -8
  257. package/docs/webapi/waitForClickable.mustache +0 -11
  258. package/docs/webapi/waitForDetached.mustache +0 -10
  259. package/docs/webapi/waitForElement.mustache +0 -11
  260. package/docs/webapi/waitForEnabled.mustache +0 -6
  261. package/docs/webapi/waitForFunction.mustache +0 -17
  262. package/docs/webapi/waitForInvisible.mustache +0 -10
  263. package/docs/webapi/waitForText.mustache +0 -13
  264. package/docs/webapi/waitForValue.mustache +0 -10
  265. package/docs/webapi/waitForVisible.mustache +0 -10
  266. package/docs/webapi/waitInUrl.mustache +0 -9
  267. package/docs/webapi/waitNumberOfVisibleElements.mustache +0 -10
  268. package/docs/webapi/waitToHide.mustache +0 -10
  269. package/docs/webapi/waitUrlEquals.mustache +0 -10
  270. package/docs/webdriver.md +0 -657
  271. package/docs/wiki/Books-&-Posts.md +0 -27
  272. package/docs/wiki/Community-Helpers-&-Plugins.md +0 -49
  273. package/docs/wiki/Converting-Playwright-to-Istanbul-Coverage.md +0 -29
  274. package/docs/wiki/Examples.md +0 -139
  275. package/docs/wiki/Google-Summer-of-Code-(GSoC)-2020.md +0 -68
  276. package/docs/wiki/Home.md +0 -16
  277. package/docs/wiki/Release-Process.md +0 -24
  278. package/docs/wiki/Roadmap.md +0 -23
  279. package/docs/wiki/Tests.md +0 -1393
  280. package/docs/wiki/Upgrading-to-CodeceptJS-3.md +0 -153
  281. package/docs/wiki/Videos.md +0 -19
@@ -1,334 +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
- * ## Access From Helpers
44
- *
45
- * Send REST requests by accessing `_executeRequest` method:
46
- *
47
- * ```js
48
- * this.helpers['REST']._executeRequest({
49
- * url,
50
- * data,
51
- * });
52
- * ```
53
- *
54
- * ## Methods
55
- */
56
- class REST extends Helper {
57
- constructor(config) {
58
- super(config);
59
- this.options = {
60
- timeout: 10000,
61
- defaultHeaders: {},
62
- endpoint: '',
63
- prettyPrintJson: false,
64
- onRequest: null,
65
- onResponse: null,
66
- };
67
-
68
- if (this.options.maxContentLength) {
69
- const maxContentLength = this.options.maxUploadFileSize * 1024 * 1024;
70
- this.options.maxContentLength = maxContentLength;
71
- this.options.maxBodyLength = maxContentLength;
72
- }
73
-
74
- this.options = { ...this.options, ...config };
75
- this.headers = { ...this.options.defaultHeaders };
76
- this.axios = axios.create();
77
- this.axios.defaults.headers = this.options.defaultHeaders;
78
- }
79
-
80
- static _config() {
81
- return [
82
- { name: 'endpoint', message: 'Endpoint of API you are going to test', default: 'http://localhost:3000/api' },
83
- ];
84
- }
85
-
86
- static _checkRequirements() {
87
- try {
88
- require('axios');
89
- } catch (e) {
90
- return ['axios'];
91
- }
92
- }
93
-
94
- _before() {
95
- this.headers = { ...this.options.defaultHeaders };
96
- }
97
-
98
- /**
99
- * Sets request headers for all requests of this test
100
- *
101
- * @param {object} headers headers list
102
- */
103
- haveRequestHeaders(headers) {
104
- this.headers = { ...this.headers, ...headers };
105
- }
106
-
107
- /**
108
- * Adds a header for Bearer authentication
109
- *
110
- * ```js
111
- * // we use secret function to hide token from logs
112
- * I.amBearerAuthenticated(secret('heregoestoken'))
113
- * ```
114
- *
115
- * @param {string | CodeceptJS.Secret} accessToken Bearer access token
116
- */
117
- amBearerAuthenticated(accessToken) {
118
- this.haveRequestHeaders({ Authorization: `Bearer ${accessToken}` });
119
- }
120
-
121
- /**
122
- * Executes axios request
123
- *
124
- * @param {*} request
125
- *
126
- * @returns {Promise<*>} response
127
- */
128
- async _executeRequest(request) {
129
- // Add custom headers. They can be set by amBearerAuthenticated() or haveRequestHeaders()
130
- request.headers = { ...this.headers, ...request.headers };
131
-
132
- const _debugRequest = { ...request };
133
- this.axios.defaults.timeout = request.timeout || this.options.timeout;
134
-
135
- if (this.headers && this.headers.auth) {
136
- request.auth = this.headers.auth;
137
- }
138
-
139
- if (request.data instanceof Secret) {
140
- _debugRequest.data = '*****';
141
- request.data = (typeof request.data === 'object' && !(request.data instanceof Secret)) ? { ...request.data.toString() } : request.data.toString();
142
- }
143
-
144
- if ((typeof request.data) === 'string') {
145
- if (!request.headers || !request.headers['Content-Type']) {
146
- request.headers = { ...request.headers, ...{ 'Content-Type': 'application/x-www-form-urlencoded' } };
147
- }
148
- }
149
-
150
- if (this.config.onRequest) {
151
- await this.config.onRequest(request);
152
- }
153
-
154
- this.options.prettyPrintJson ? this.debugSection('Request', beautify(JSON.stringify(_debugRequest))) : this.debugSection('Request', JSON.stringify(_debugRequest));
155
-
156
- let response;
157
- try {
158
- response = await this.axios(request);
159
- } catch (err) {
160
- if (!err.response) throw err;
161
- this.debugSection('Response', `Response error. Status code: ${err.response.status}`);
162
- response = err.response;
163
- }
164
- if (this.config.onResponse) {
165
- await this.config.onResponse(response);
166
- }
167
- this.options.prettyPrintJson ? this.debugSection('Response', beautify(JSON.stringify(response.data))) : this.debugSection('Response', JSON.stringify(response.data));
168
- return response;
169
- }
170
-
171
- /**
172
- * Generates url based on format sent (takes endpoint + url if latter lacks 'http')
173
- *
174
- * @param {*} url
175
- */
176
- _url(url) {
177
- return /^\w+\:\/\//.test(url) ? url : this.options.endpoint + url;
178
- }
179
-
180
- /**
181
- * Set timeout for the request
182
- *
183
- * ```js
184
- * I.setRequestTimeout(10000); // In milliseconds
185
- * ```
186
- *
187
- * @param {number} newTimeout - timeout in milliseconds
188
- */
189
- setRequestTimeout(newTimeout) {
190
- this.options.timeout = newTimeout;
191
- }
192
-
193
- /**
194
- * Send GET request to REST API
195
- *
196
- * ```js
197
- * I.sendGetRequest('/api/users.json');
198
- * ```
199
- *
200
- * @param {*} url
201
- * @param {object} [headers={}] - the headers object to be sent. By default it is sent as an empty object
202
- *
203
- * @returns {Promise<*>} response
204
- */
205
- async sendGetRequest(url, headers = {}) {
206
- const request = {
207
- baseURL: this._url(url),
208
- headers,
209
- };
210
- return this._executeRequest(request);
211
- }
212
-
213
- /**
214
- * Sends POST request to API.
215
- *
216
- * ```js
217
- * I.sendPostRequest('/api/users.json', { "email": "user@user.com" });
218
- *
219
- * // To mask the payload in logs
220
- * I.sendPostRequest('/api/users.json', secret({ "email": "user@user.com" }));
221
- *
222
- * ```
223
- *
224
- * @param {*} url
225
- * @param {*} [payload={}] - the payload to be sent. By default it is sent as an empty object
226
- * @param {object} [headers={}] - the headers object to be sent. By default it is sent as an empty object
227
- *
228
- * @returns {Promise<*>} response
229
- */
230
- async sendPostRequest(url, payload = {}, headers = {}) {
231
- const request = {
232
- baseURL: this._url(url),
233
- method: 'POST',
234
- data: payload,
235
- headers,
236
- };
237
-
238
- if (this.options.maxContentLength) {
239
- request.maxContentLength = this.options.maxContentLength;
240
- request.maxBodyLength = this.options.maxContentLength;
241
- }
242
-
243
- return this._executeRequest(request);
244
- }
245
-
246
- /**
247
- * Sends PATCH request to API.
248
- *
249
- * ```js
250
- * I.sendPatchRequest('/api/users.json', { "email": "user@user.com" });
251
- *
252
- * // To mask the payload in logs
253
- * I.sendPatchRequest('/api/users.json', secret({ "email": "user@user.com" }));
254
- *
255
- * ```
256
- *
257
- * @param {string} url
258
- * @param {*} [payload={}] - the payload to be sent. By default it is sent as an empty object
259
- * @param {object} [headers={}] - the headers object to be sent. By default it is sent as an empty object
260
- *
261
- * @returns {Promise<*>} response
262
- */
263
- async sendPatchRequest(url, payload = {}, headers = {}) {
264
- const request = {
265
- baseURL: this._url(url),
266
- method: 'PATCH',
267
- data: payload,
268
- headers,
269
- };
270
-
271
- if (this.options.maxContentLength) {
272
- request.maxContentLength = this.options.maxContentLength;
273
- request.maxBodyLength = this.options.maxBodyLength;
274
- }
275
-
276
- return this._executeRequest(request);
277
- }
278
-
279
- /**
280
- * Sends PUT request to API.
281
- *
282
- * ```js
283
- * I.sendPutRequest('/api/users.json', { "email": "user@user.com" });
284
- *
285
- * // To mask the payload in logs
286
- * I.sendPutRequest('/api/users.json', secret({ "email": "user@user.com" }));
287
- *
288
- * ```
289
- *
290
- * @param {string} url
291
- * @param {*} [payload={}] - the payload to be sent. By default it is sent as an empty object
292
- * @param {object} [headers={}] - the headers object to be sent. By default it is sent as an empty object
293
- *
294
- * @returns {Promise<*>} response
295
- */
296
- async sendPutRequest(url, payload = {}, headers = {}) {
297
- const request = {
298
- baseURL: this._url(url),
299
- method: 'PUT',
300
- data: payload,
301
- headers,
302
- };
303
-
304
- if (this.options.maxContentLength) {
305
- request.maxContentLength = this.options.maxContentLength;
306
- request.maxBodyLength = this.options.maxBodyLength;
307
- }
308
-
309
- return this._executeRequest(request);
310
- }
311
-
312
- /**
313
- * Sends DELETE request to API.
314
- *
315
- * ```js
316
- * I.sendDeleteRequest('/api/users/1');
317
- * ```
318
- *
319
- * @param {*} url
320
- * @param {object} [headers={}] - the headers object to be sent. By default it is sent as an empty object
321
- *
322
- * @returns {Promise<*>} response
323
- */
324
- async sendDeleteRequest(url, headers = {}) {
325
- const request = {
326
- baseURL: this._url(url),
327
- method: 'DELETE',
328
- headers,
329
- };
330
-
331
- return this._executeRequest(request);
332
- }
333
- }
334
- 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;