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,266 +0,0 @@
1
- ---
2
- permalink: /helpers/ApiDataFactory
3
- editLink: false
4
- sidebar: auto
5
- title: ApiDataFactory
6
- ---
7
-
8
- <!-- Generated by documentation.js. Update this documentation by updating the source code. -->
9
-
10
- ## ApiDataFactory
11
-
12
- **Extends Helper**
13
-
14
- Helper for managing remote data using REST API.
15
- Uses data generators like [rosie][1] or factory girl to create new record.
16
-
17
- By defining a factory you set the rules of how data is generated.
18
- This data will be saved on server via REST API and deleted in the end of a test.
19
-
20
- ## Use Case
21
-
22
- Acceptance tests interact with a websites using UI and real browser.
23
- There is no way to create data for a specific test other than from user interface.
24
- That makes tests slow and fragile. Instead of testing a single feature you need to follow all creation/removal process.
25
-
26
- This helper solves this problem.
27
- Most of web application have API, and it can be used to create and delete test records.
28
- By combining REST API with Factories you can easily create records for tests:
29
-
30
- ```js
31
- I.have('user', { login: 'davert', email: 'davert@mail.com' });
32
- let id = await I.have('post', { title: 'My first post'});
33
- I.haveMultiple('comment', 3, {post_id: id});
34
- ```
35
-
36
- To make this work you need
37
-
38
- 1. REST API endpoint which allows to perform create / delete requests and
39
- 2. define data generation rules
40
-
41
- ### Setup
42
-
43
- Install [Rosie][1] and [Faker][2] libraries.
44
-
45
- ```sh
46
- npm i rosie @faker-js/faker --save-dev
47
- ```
48
-
49
- Create a factory file for a resource.
50
-
51
- See the example for Posts factories:
52
-
53
- ```js
54
- // tests/factories/posts.js
55
-
56
- const { Factory } = require('rosie');
57
- const { faker } = require('@faker-js/faker');
58
-
59
- module.exports = new Factory()
60
- // no need to set id, it will be set by REST API
61
- .attr('author', () => faker.name.findName())
62
- .attr('title', () => faker.lorem.sentence())
63
- .attr('body', () => faker.lorem.paragraph());
64
- ```
65
-
66
- For more options see [rosie documentation][1].
67
-
68
- Then configure ApiDataHelper to match factories and REST API:
69
-
70
- ### Configuration
71
-
72
- ApiDataFactory has following config options:
73
-
74
- - `endpoint`: base URL for the API to send requests to.
75
- - `cleanup` (default: true): should inserted records be deleted up after tests
76
- - `factories`: list of defined factories
77
- - `returnId` (default: false): return id instead of a complete response when creating items.
78
- - `headers`: list of headers
79
- - `REST`: configuration for REST requests
80
-
81
- See the example:
82
-
83
- ```js
84
- ApiDataFactory: {
85
- endpoint: "http://user.com/api",
86
- cleanup: true,
87
- headers: {
88
- 'Content-Type': 'application/json',
89
- 'Accept': 'application/json',
90
- },
91
- factories: {
92
- post: {
93
- uri: "/posts",
94
- factory: "./factories/post",
95
- },
96
- comment: {
97
- factory: "./factories/comment",
98
- create: { post: "/comments/create" },
99
- delete: { post: "/comments/delete/{id}" },
100
- fetchId: (data) => data.result.id
101
- }
102
- }
103
- }
104
- ```
105
-
106
- It is required to set REST API `endpoint` which is the baseURL for all API requests.
107
- Factory file is expected to be passed via `factory` option.
108
-
109
- This Helper uses [REST][3] helper and accepts its configuration in "REST" section.
110
- For instance, to set timeout you should add:
111
-
112
- ```js
113
- "ApiDataFactory": {
114
- "REST": {
115
- "timeout": "100000",
116
- }
117
- }
118
- ```
119
-
120
- ### Requests
121
-
122
- By default to create a record ApiDataFactory will use endpoint and plural factory name:
123
-
124
- - create: `POST {endpoint}/{resource} data`
125
- - delete: `DELETE {endpoint}/{resource}/id`
126
-
127
- Example (`endpoint`: `http://app.com/api`):
128
-
129
- - create: POST request to `http://app.com/api/users`
130
- - delete: DELETE request to `http://app.com/api/users/1`
131
-
132
- This behavior can be configured with following options:
133
-
134
- - `uri`: set different resource uri. Example: `uri: account` => `http://app.com/api/account`.
135
- - `create`: override create options. Expected format: `{ method: uri }`. Example: `{ "post": "/users/create" }`
136
- - `delete`: override delete options. Expected format: `{ method: uri }`. Example: `{ "post": "/users/delete/{id}" }`
137
-
138
- Requests can also be overridden with a function which returns [axois request config][4].
139
-
140
- ```js
141
- create: (data) => ({ method: 'post', url: '/posts', data }),
142
- delete: (id) => ({ method: 'delete', url: '/posts', data: { id } })
143
- ```
144
-
145
- Requests can be updated on the fly by using `onRequest` function. For instance, you can pass in current session from a cookie.
146
-
147
- ```js
148
- onRequest: async (request) => {
149
- // using global codeceptjs instance
150
- let cookie = await codeceptjs.container.helpers('WebDriver').grabCookie('session');
151
- request.headers = { Cookie: `session=${cookie.value}` };
152
- }
153
- ```
154
-
155
- ### Responses
156
-
157
- By default `I.have()` returns a promise with a created data:
158
-
159
- ```js
160
- let client = await I.have('client');
161
- ```
162
-
163
- Ids of created records are collected and used in the end of a test for the cleanup.
164
- If you need to receive `id` instead of full response enable `returnId` in a helper config:
165
-
166
- ```js
167
- // returnId: false
168
- let clientId = await I.have('client');
169
- // clientId == 1
170
-
171
- // returnId: true
172
- let clientId = await I.have('client');
173
- // client == { name: 'John', email: 'john@snow.com' }
174
- ```
175
-
176
- By default `id` property of response is taken. This behavior can be changed by setting `fetchId` function in a factory config.
177
-
178
- ```js
179
- factories: {
180
- post: {
181
- uri: "/posts",
182
- factory: "./factories/post",
183
- fetchId: (data) => data.result.posts[0].id
184
- }
185
- }
186
- ```
187
-
188
- ## Methods
189
-
190
- ### Parameters
191
-
192
- - `config`
193
-
194
- ### _requestCreate
195
-
196
- Executes request to create a record in API.
197
- Can be replaced from a in custom helper.
198
-
199
- #### Parameters
200
-
201
- - `factory` **any**
202
- - `data` **any**
203
-
204
- ### _requestDelete
205
-
206
- Executes request to delete a record in API
207
- Can be replaced from a custom helper.
208
-
209
- #### Parameters
210
-
211
- - `factory` **any**
212
- - `id` **any**
213
-
214
- ### have
215
-
216
- Generates a new record using factory and saves API request to store it.
217
-
218
- ```js
219
- // create a user
220
- I.have('user');
221
- // create user with defined email
222
- // and receive it when inside async function
223
- const user = await I.have('user', { email: 'user@user.com'});
224
- // create a user with options that will not be included in the final request
225
- I.have('user', { }, { age: 33, height: 55 })
226
- ```
227
-
228
- #### Parameters
229
-
230
- - `factory` **any** factory to use
231
- - `params` **any?** predefined parameters
232
- - `options` **any?** options for programmatically generate the attributes
233
-
234
- Returns **[Promise][5]&lt;any>**
235
-
236
- ### haveMultiple
237
-
238
- Generates bunch of records and saves multiple API requests to store them.
239
-
240
- ```js
241
- // create 3 posts
242
- I.haveMultiple('post', 3);
243
-
244
- // create 3 posts by one author
245
- I.haveMultiple('post', 3, { author: 'davert' });
246
-
247
- // create 3 posts by one author with options
248
- I.haveMultiple('post', 3, { author: 'davert' }, { publish_date: '01.01.1997' });
249
- ```
250
-
251
- #### Parameters
252
-
253
- - `factory` **any**
254
- - `times` **any**
255
- - `params` **any?**
256
- - `options` **any?**
257
-
258
- [1]: https://github.com/rosiejs/rosie
259
-
260
- [2]: https://www.npmjs.com/package/faker
261
-
262
- [3]: http://codecept.io/helpers/REST/
263
-
264
- [4]: https://github.com/axios/axios#request-config
265
-
266
- [5]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise