codeceptjs 3.5.6 → 3.5.7-beta.1

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 (140) hide show
  1. package/CHANGELOG.md +2950 -0
  2. package/docs/bdd.md +11 -7
  3. package/docs/build/ApiDataFactory.js +2 -1
  4. package/docs/build/Appium.js +25 -23
  5. package/docs/build/Expect.js +422 -0
  6. package/docs/build/Nightmare.js +53 -56
  7. package/docs/build/Playwright.js +166 -103
  8. package/docs/build/Protractor.js +66 -69
  9. package/docs/build/Puppeteer.js +79 -79
  10. package/docs/build/TestCafe.js +56 -55
  11. package/docs/build/WebDriver.js +81 -82
  12. package/docs/changelog.md +388 -1
  13. package/docs/commands.md +12 -0
  14. package/docs/community-helpers.md +8 -4
  15. package/docs/examples.md +8 -2
  16. package/docs/helpers/Appium.md +50 -32
  17. package/docs/helpers/Expect.md +275 -0
  18. package/docs/helpers/Nightmare.md +141 -94
  19. package/docs/helpers/Playwright.md +280 -211
  20. package/docs/helpers/Protractor.md +229 -169
  21. package/docs/helpers/Puppeteer.md +256 -185
  22. package/docs/helpers/TestCafe.md +201 -149
  23. package/docs/helpers/WebDriver.md +252 -178
  24. package/docs/mobile.md +17 -21
  25. package/docs/plugins.md +35 -1
  26. package/docs/webapi/amOnPage.mustache +1 -1
  27. package/docs/webapi/appendField.mustache +1 -1
  28. package/docs/webapi/attachFile.mustache +1 -1
  29. package/docs/webapi/blur.mustache +1 -0
  30. package/docs/webapi/checkOption.mustache +1 -1
  31. package/docs/webapi/clearCookie.mustache +1 -1
  32. package/docs/webapi/clearField.mustache +1 -1
  33. package/docs/webapi/click.mustache +1 -1
  34. package/docs/webapi/clickLink.mustache +1 -1
  35. package/docs/webapi/closeCurrentTab.mustache +1 -1
  36. package/docs/webapi/closeOtherTabs.mustache +1 -1
  37. package/docs/webapi/dontSee.mustache +1 -1
  38. package/docs/webapi/dontSeeCheckboxIsChecked.mustache +1 -1
  39. package/docs/webapi/dontSeeCookie.mustache +1 -1
  40. package/docs/webapi/dontSeeCurrentUrlEquals.mustache +1 -1
  41. package/docs/webapi/dontSeeElement.mustache +1 -1
  42. package/docs/webapi/dontSeeElementInDOM.mustache +1 -1
  43. package/docs/webapi/dontSeeInCurrentUrl.mustache +1 -1
  44. package/docs/webapi/dontSeeInField.mustache +1 -1
  45. package/docs/webapi/dontSeeInSource.mustache +1 -1
  46. package/docs/webapi/dontSeeInTitle.mustache +1 -1
  47. package/docs/webapi/doubleClick.mustache +1 -1
  48. package/docs/webapi/downloadFile.mustache +1 -1
  49. package/docs/webapi/dragAndDrop.mustache +1 -1
  50. package/docs/webapi/dragSlider.mustache +1 -1
  51. package/docs/webapi/executeAsyncScript.mustache +0 -2
  52. package/docs/webapi/executeScript.mustache +0 -2
  53. package/docs/webapi/fillField.mustache +1 -1
  54. package/docs/webapi/focus.mustache +1 -0
  55. package/docs/webapi/forceClick.mustache +1 -1
  56. package/docs/webapi/forceRightClick.mustache +1 -1
  57. package/docs/webapi/grabCookie.mustache +1 -1
  58. package/docs/webapi/grabDataFromPerformanceTiming.mustache +1 -1
  59. package/docs/webapi/moveCursorTo.mustache +1 -1
  60. package/docs/webapi/openNewTab.mustache +1 -1
  61. package/docs/webapi/pressKey.mustache +1 -1
  62. package/docs/webapi/pressKeyDown.mustache +1 -1
  63. package/docs/webapi/pressKeyUp.mustache +1 -1
  64. package/docs/webapi/pressKeyWithKeyNormalization.mustache +1 -1
  65. package/docs/webapi/refreshPage.mustache +1 -1
  66. package/docs/webapi/resizeWindow.mustache +1 -1
  67. package/docs/webapi/rightClick.mustache +1 -1
  68. package/docs/webapi/saveElementScreenshot.mustache +1 -1
  69. package/docs/webapi/saveScreenshot.mustache +1 -1
  70. package/docs/webapi/say.mustache +1 -1
  71. package/docs/webapi/scrollIntoView.mustache +1 -1
  72. package/docs/webapi/scrollPageToBottom.mustache +1 -1
  73. package/docs/webapi/scrollPageToTop.mustache +1 -1
  74. package/docs/webapi/scrollTo.mustache +1 -1
  75. package/docs/webapi/see.mustache +1 -1
  76. package/docs/webapi/seeAttributesOnElements.mustache +1 -1
  77. package/docs/webapi/seeCheckboxIsChecked.mustache +1 -1
  78. package/docs/webapi/seeCookie.mustache +1 -1
  79. package/docs/webapi/seeCssPropertiesOnElements.mustache +1 -1
  80. package/docs/webapi/seeCurrentUrlEquals.mustache +1 -1
  81. package/docs/webapi/seeElement.mustache +1 -1
  82. package/docs/webapi/seeElementInDOM.mustache +1 -1
  83. package/docs/webapi/seeInCurrentUrl.mustache +1 -1
  84. package/docs/webapi/seeInField.mustache +1 -1
  85. package/docs/webapi/seeInPopup.mustache +1 -1
  86. package/docs/webapi/seeInSource.mustache +1 -1
  87. package/docs/webapi/seeInTitle.mustache +1 -1
  88. package/docs/webapi/seeNumberOfElements.mustache +1 -1
  89. package/docs/webapi/seeNumberOfVisibleElements.mustache +1 -1
  90. package/docs/webapi/seeTextEquals.mustache +1 -1
  91. package/docs/webapi/seeTitleEquals.mustache +1 -1
  92. package/docs/webapi/selectOption.mustache +1 -1
  93. package/docs/webapi/setCookie.mustache +1 -1
  94. package/docs/webapi/setGeoLocation.mustache +1 -1
  95. package/docs/webapi/switchTo.mustache +1 -1
  96. package/docs/webapi/switchToNextTab.mustache +1 -1
  97. package/docs/webapi/switchToPreviousTab.mustache +1 -1
  98. package/docs/webapi/type.mustache +1 -1
  99. package/docs/webapi/uncheckOption.mustache +1 -1
  100. package/docs/webapi/wait.mustache +1 -1
  101. package/docs/webapi/waitForClickable.mustache +1 -1
  102. package/docs/webapi/waitForDetached.mustache +1 -1
  103. package/docs/webapi/waitForElement.mustache +1 -1
  104. package/docs/webapi/waitForEnabled.mustache +1 -1
  105. package/docs/webapi/waitForFunction.mustache +1 -1
  106. package/docs/webapi/waitForInvisible.mustache +1 -1
  107. package/docs/webapi/waitForText.mustache +1 -1
  108. package/docs/webapi/waitForValue.mustache +1 -1
  109. package/docs/webapi/waitForVisible.mustache +1 -1
  110. package/docs/webapi/waitInUrl.mustache +1 -1
  111. package/docs/webapi/waitNumberOfVisibleElements.mustache +1 -1
  112. package/docs/webapi/waitToHide.mustache +1 -1
  113. package/docs/webapi/waitUrlEquals.mustache +1 -1
  114. package/lib/ai.js +12 -3
  115. package/lib/cli.js +3 -1
  116. package/lib/command/dryRun.js +2 -1
  117. package/lib/helper/ApiDataFactory.js +2 -1
  118. package/lib/helper/Appium.js +7 -5
  119. package/lib/helper/Expect.js +422 -0
  120. package/lib/helper/Playwright.js +91 -32
  121. package/lib/helper/Puppeteer.js +2 -2
  122. package/lib/html.js +3 -3
  123. package/lib/interfaces/gherkin.js +21 -2
  124. package/lib/output.js +1 -1
  125. package/lib/pause.js +6 -3
  126. package/lib/plugin/autoLogin.js +35 -3
  127. package/lib/plugin/heal.js +40 -7
  128. package/lib/recorder.js +12 -5
  129. package/package.json +15 -8
  130. package/translations/de-DE.js +5 -0
  131. package/translations/fr-FR.js +1 -0
  132. package/translations/it-IT.js +1 -0
  133. package/translations/ja-JP.js +5 -0
  134. package/translations/pl-PL.js +5 -0
  135. package/translations/pt-BR.js +1 -0
  136. package/translations/ru-RU.js +1 -0
  137. package/translations/zh-CN.js +5 -0
  138. package/translations/zh-TW.js +5 -0
  139. package/typings/promiseBasedTypes.d.ts +904 -862
  140. package/typings/types.d.ts +904 -845
package/docs/changelog.md CHANGED
@@ -7,11 +7,398 @@ layout: Section
7
7
 
8
8
  # Releases
9
9
 
10
+ ## 3.5.6
11
+
12
+ Thanks all to those who contributed to make this release!
13
+
14
+ 🐛 *Bug Fixes*
15
+ * fix: switchTo/within block doesn't switch to expected iframe ([#3892](https://github.com/codeceptjs/CodeceptJS/issues/3892)) - by **[KobeNguyenT](https://github.com/KobeNguyenT)**
16
+ * fix: highlight element doesn't work as expected ([#3896](https://github.com/codeceptjs/CodeceptJS/issues/3896)) - by **[KobeNguyenT](https://github.com/KobeNguyenT)**
17
+ ```
18
+ verbose/ highlight TRUE TRUE -> highlight element
19
+ verbose/ highlight TRUE FALSE -> no highlight element
20
+ verbose/ highlight FALSE TRUE -> no highlight element
21
+ verbose/ highlight FALSE FALSE -> no highlight element
22
+ ```
23
+ * fix: masked value issue in data table ([#3885](https://github.com/codeceptjs/CodeceptJS/issues/3885)) - by **[KobeNguyenT](https://github.com/KobeNguyenT)**
24
+ ```
25
+ const accounts = new DataTable(['role', 'username', 'password']);
26
+ accounts.add([
27
+ 'ROLE_A',
28
+ process.env['FIRST_USERNAME'],
29
+ secret(process.env['FIRST_PASSWORD']),
30
+ ]);
31
+ accounts.add([
32
+ 'ROLE_B',
33
+ process.env['SECOND_USERNAME'],
34
+ secret(process.env['SECOND_PASSWORD']),
35
+ ]);
36
+
37
+ Data(accounts)
38
+ .Scenario(
39
+ 'ScenarioTitle',
40
+ ({ I, pageObject, current }) => {
41
+ I.say("Given I'am logged in");
42
+ I.amOnPage('/');
43
+ loginPage.**sendForm**(current.username, current.password);
44
+ )
45
+
46
+
47
+ // output
48
+ The test feature --
49
+ The scenario | {"username":"Username","password": ***}
50
+ 'The real password: theLoggedPasswordInCleartext'
51
+ I.fillField('somePasswordLocator', '****')
52
+ ✔ OK in 7ms
53
+
54
+ The scenario | {"username":"theSecondUsername","password": ***}
55
+ 'The real password: theLoggedPasswordInCleartext'
56
+ I.fillField('somePasswordLocator', '****')
57
+ ✔ OK in 1ms
58
+ ```
59
+
60
+ * fix: debug info causes error ([#3882](https://github.com/codeceptjs/CodeceptJS/issues/3882)) - by **[KobeNguyenT](https://github.com/KobeNguyenT)**
61
+
62
+ 📖 *Documentation*
63
+ * fix: get rid of complaining when using session without await and returning nothing. ([#3899](https://github.com/codeceptjs/CodeceptJS/issues/3899)) - by **[KobeNguyenT](https://github.com/KobeNguyenT)**
64
+ * fix(FileSystem): a typo in writeToFile() ([#3897](https://github.com/codeceptjs/CodeceptJS/issues/3897)) - by **[mirao](https://github.com/mirao)**
65
+
66
+ đŸ›Šī¸ *Features*
67
+ * feat(translation): add more french keywords and fix deprecated waitForClickable ([#3906](https://github.com/codeceptjs/CodeceptJS/issues/3906)) - by **[andonary](https://github.com/andonary)**
68
+ ```
69
+ - Add some french keywords for translation
70
+ - I.waitForClickable has the same "attends" than I.wait. Using "attends" leads to use the deprecated waitForClickable. Fix it by using different words.
71
+ ```
72
+
73
+ ## 3.5.5
74
+
75
+ 🐛 Bug Fixes
76
+ * fix(browserstack): issue with vendor prefix ([#3845](https://github.com/codeceptjs/CodeceptJS/issues/3845)) - by **[KobeNguyenT](https://github.com/KobeNguyenT)**
77
+ ```
78
+ export const caps = {
79
+ androidCaps: {
80
+ appiumV2: true,
81
+ host: "hub-cloud.browserstack.com",
82
+ port: 4444,
83
+ user: process.env.BROWSERSTACK_USER,
84
+ key: process.env.BROWSERSTACK_KEY,
85
+ 'app': `bs://c700ce60cf13ae8ed97705a55b8e022f1hjhkjh3c5827c`,
86
+ browser: '',
87
+ desiredCapabilities: {
88
+ 'appPackage': data.packageName,
89
+ 'deviceName': process.env.DEVICE || 'Google Pixel 3',
90
+ 'platformName': process.env.PLATFORM || 'android',
91
+ 'platformVersion': process.env.OS_VERSION || '10.0',
92
+ 'automationName': process.env.ENGINE || 'UIAutomator2',
93
+ 'newCommandTimeout': 300000,
94
+ 'androidDeviceReadyTimeout': 300000,
95
+ 'androidInstallTimeout': 90000,
96
+ 'appWaitDuration': 300000,
97
+ 'autoGrantPermissions': true,
98
+ 'gpsEnabled': true,
99
+ 'isHeadless': false,
100
+ 'noReset': false,
101
+ 'noSign': true,
102
+ 'bstack:options' : {
103
+ "appiumVersion" : "2.0.1",
104
+ },
105
+ }
106
+ },
107
+ }
108
+ ```
109
+
110
+ * switchTo/within now supports strict locator ([#3847](https://github.com/codeceptjs/CodeceptJS/issues/3847)) - by **[KobeNguyenT](https://github.com/KobeNguyenT)**
111
+
112
+ ```
113
+ I.switchTo({ css: 'iframe[id^=number-frame]' }) // support the strict locator
114
+
115
+ I.amOnPage('/iframe');
116
+ within({
117
+ frame: { css: '#number-frame-1234' }, // support the strict locator
118
+ }, () => {
119
+ I.fillField('user[login]', 'User');
120
+ I.fillField('user[email]', 'user@user.com');
121
+ I.fillField('user[password]', 'user@user.com');
122
+ I.click('button');
123
+ });
124
+ ```
125
+
126
+ * Improve the IntelliSense when using other languages ([#3848](https://github.com/codeceptjs/CodeceptJS/issues/3848)) - by **[andonary](https://github.com/andonary)**
127
+ ```
128
+ include: {
129
+ Je: './steps_file.js'
130
+ }
131
+ ```
132
+
133
+ * bypassCSP support for Playwright helper ([#3865](https://github.com/codeceptjs/CodeceptJS/issues/3865)) - by **[sammeel](https://github.com/sammeel)**
134
+ ```
135
+ helpers: {
136
+ Playwright: {
137
+ bypassCSP: true
138
+ }
139
+ ```
140
+ * fix: missing requests when recording network ([#3834](https://github.com/codeceptjs/CodeceptJS/issues/3834)) - by **[KobeNguyenT](https://github.com/KobeNguyenT)**
141
+
142
+ đŸ›Šī¸ Features and Improvements
143
+ * Show environment info in verbose mode ([#3858](https://github.com/codeceptjs/CodeceptJS/issues/3858)) - by **[KobeNguyenT](https://github.com/KobeNguyenT)**
144
+
145
+ ```
146
+ Environment information:-
147
+
148
+ codeceptVersion: "3.5.4"
149
+ nodeInfo: 18.16.0
150
+ osInfo: macOS 13.5
151
+ cpuInfo: (8) arm64 Apple M1 Pro
152
+ chromeInfo: 116.0.5845.179
153
+ edgeInfo: 116.0.1938.69
154
+ firefoxInfo: Not Found
155
+ safariInfo: 16.6
156
+ helpers: {
157
+ "Playwright": {
158
+ "url": "https://github.com",
159
+ "show": false,
160
+ "browser": "chromium",
161
+ "waitForNavigation": "load",
162
+ "waitForTimeout": 30000,
163
+ "trace": false,
164
+ "keepTraceForPassedTests": true
165
+ },
166
+ "CDPHelper": {
167
+ "require": "./helpers/CDPHelper.ts"
168
+ },
169
+ "OpenAI": {
170
+ "chunkSize": 8000
171
+ },
172
+ "ExpectHelper": {
173
+ "require": "codeceptjs-expect"
174
+ },
175
+ "REST": {
176
+ "endpoint": "https://reqres.in",
177
+ "timeout": 20000
178
+ },
179
+ "AllureHelper": {
180
+ "require": "./helpers/AllureHelper.ts"
181
+ }
182
+ }
183
+ plugins: {
184
+ "screenshotOnFail": {
185
+ "enabled": true
186
+ },
187
+ "tryTo": {
188
+ "enabled": true
189
+ },
190
+ "retryFailedStep": {
191
+ "enabled": true
192
+ },
193
+ "retryTo": {
194
+ "enabled": true
195
+ },
196
+ "eachElement": {
197
+ "enabled": true
198
+ },
199
+ "pauseOnFail": {}
200
+ }
201
+ ***************************************
202
+ If you have questions ask them in our Slack: http://bit.ly/chat-codeceptjs
203
+ Or ask them on our discussion board: https://codecept.discourse.group/
204
+ Please copy environment info when you report issues on GitHub: https://github.com/Codeception/CodeceptJS/issues
205
+ ***************************************
206
+ CodeceptJS v3.5.4 #StandWithUkraine
207
+ ```
208
+
209
+ * some typings improvements ([#3855](https://github.com/codeceptjs/CodeceptJS/issues/3855)) - by **[nikzupancic](https://github.com/nikzupancic)**
210
+ * support the puppeteer 21.1.1 ([#3856](https://github.com/codeceptjs/CodeceptJS/issues/3856)) - by **[KobeNguyenT](https://github.com/KobeNguyenT)**
211
+ * fix: support secret value for some methods ([#3837](https://github.com/codeceptjs/CodeceptJS/issues/3837)) - by **[KobeNguyenT](https://github.com/KobeNguyenT)**
212
+
213
+ ```
214
+ await I.amOnPage('/form/field_values');
215
+ await I.dontSeeInField('checkbox[]', secret('not seen one'));
216
+ await I.seeInField('checkbox[]', secret('see test one'));
217
+ await I.dontSeeInField('checkbox[]', secret('not seen two'));
218
+ await I.seeInField('checkbox[]', secret('see test two'));
219
+ await I.dontSeeInField('checkbox[]', secret('not seen three'));
220
+ await I.seeInField('checkbox[]', secret('see test three'));
221
+ ```
222
+
223
+ đŸ›Šī¸ **Several bugfixes and improvements for Codecept-UI**
224
+ * Mask the secret value in UI
225
+ * Improve UX/UI
226
+ * PageObjects are now showing in UI
227
+
228
+ ## 3.5.4
229
+
230
+ 🐛 Bug Fixes:
231
+ * **[Playwright]** When passing `userDataDir`, it throws error after test execution ([#3814](https://github.com/codeceptjs/CodeceptJS/issues/3814)) - by **[KobeNguyenT](https://github.com/KobeNguyenT)**
232
+ * [CodeceptJS-CLI] Improve command to generate types ([#3788](https://github.com/codeceptjs/CodeceptJS/issues/3788)) - by **[KobeNguyenT](https://github.com/KobeNguyenT)**
233
+ * Heal plugin fix ([#3820](https://github.com/codeceptjs/CodeceptJS/issues/3820)) - by **[davert](https://github.com/davert)**
234
+ * Fix for error in using `all` with `run-workers` ([#3805](https://github.com/codeceptjs/CodeceptJS/issues/3805)) - by **[KobeNguyenT](https://github.com/KobeNguyenT)**
235
+ ```js
236
+ helpers: {
237
+ Playwright: {
238
+ url: 'https://github.com',
239
+ show: false,
240
+ browser: 'chromium',
241
+ waitForNavigation: 'load',
242
+ waitForTimeout: 30_000,
243
+ trace: true,
244
+ keepTraceForPassedTests: true
245
+ },
246
+ },
247
+ multiple: {
248
+ profile1: {
249
+ browsers: [
250
+ {
251
+ browser: "chromium",
252
+ }
253
+ ]
254
+ },
255
+ },
256
+ ```
257
+ * Highlight elements issues ([#3779](https://github.com/codeceptjs/CodeceptJS/issues/3779)) ([#3778](https://github.com/codeceptjs/CodeceptJS/issues/3778)) - by **[philkas](https://github.com/philkas)**
258
+ * Support `&nbsp` symbol in `I.see` method ([#3815](https://github.com/codeceptjs/CodeceptJS/issues/3815)) - by **[KobeNguyenT](https://github.com/KobeNguyenT)**
259
+
260
+ ```js
261
+ // HTML code uses   instead of space
262
+ <div class="dJHe_" style="color: rgb(255, 255, 255);">My&nbsp;Text!</div>
263
+
264
+ I.see("My Text!") // this test would work with both &nbsp; and space
265
+ ```
266
+
267
+ 📖 Documentation
268
+ * Improve the configuration of electron testing when the app is build with electron-forge ([#3802](https://github.com/codeceptjs/CodeceptJS/issues/3802)) - by **[KobeNguyenT](https://github.com/KobeNguyenT)**
269
+
270
+ ```js
271
+ const path = require("path");
272
+
273
+ exports.config = {
274
+ helpers: {
275
+ Playwright: {
276
+ browser: "electron",
277
+ electron: {
278
+ executablePath: require("electron"),
279
+ args: [path.join(__dirname, ".webpack/main/index.js")],
280
+ },
281
+ },
282
+ },
283
+ // rest of config
284
+ }
285
+ ```
286
+
287
+ đŸ›Šī¸ Features
288
+
289
+ #### **[Playwright]** new features and improvements
290
+ * Parse the response in recording network steps ([#3771](https://github.com/codeceptjs/CodeceptJS/issues/3771)) - by **[KobeNguyenT](https://github.com/KobeNguyenT)**
291
+
292
+ ```js
293
+ const traffics = await I.grabRecordedNetworkTraffics();
294
+ expect(traffics[0].url).to.equal('https://reqres.in/api/comments/1');
295
+ expect(traffics[0].response.status).to.equal(200);
296
+ expect(traffics[0].response.body).to.contain({ name: 'this was mocked' });
297
+
298
+ expect(traffics[1].url).to.equal('https://reqres.in/api/comments/1');
299
+ expect(traffics[1].response.status).to.equal(200);
300
+ expect(traffics[1].response.body).to.contain({ name: 'this was another mocked' });
301
+ ```
302
+ * Grab metrics ([#3809](https://github.com/codeceptjs/CodeceptJS/issues/3809)) - by **[KobeNguyenT](https://github.com/KobeNguyenT)**
303
+
304
+ ```js
305
+ const metrics = await I.grabMetrics();
306
+
307
+ // returned metrics
308
+
309
+ [
310
+ { name: 'Timestamp', value: 1584904.203473 },
311
+ { name: 'AudioHandlers', value: 0 },
312
+ { name: 'AudioWorkletProcessors', value: 0 },
313
+ { name: 'Documents', value: 22 },
314
+ { name: 'Frames', value: 10 },
315
+ { name: 'JSEventListeners', value: 366 },
316
+ { name: 'LayoutObjects', value: 1240 },
317
+ { name: 'MediaKeySessions', value: 0 },
318
+ { name: 'MediaKeys', value: 0 },
319
+ { name: 'Nodes', value: 4505 },
320
+ { name: 'Resources', value: 141 },
321
+ { name: 'ContextLifecycleStateObservers', value: 34 },
322
+ { name: 'V8PerContextDatas', value: 4 },
323
+ { name: 'WorkerGlobalScopes', value: 0 },
324
+ { name: 'UACSSResources', value: 0 },
325
+ { name: 'RTCPeerConnections', value: 0 },
326
+ { name: 'ResourceFetchers', value: 22 },
327
+ { name: 'AdSubframes', value: 0 },
328
+ { name: 'DetachedScriptStates', value: 2 },
329
+ { name: 'ArrayBufferContents', value: 1 },
330
+ { name: 'LayoutCount', value: 0 },
331
+ { name: 'RecalcStyleCount', value: 0 },
332
+ { name: 'LayoutDuration', value: 0 },
333
+ { name: 'RecalcStyleDuration', value: 0 },
334
+ { name: 'DevToolsCommandDuration', value: 0.000013 },
335
+ { name: 'ScriptDuration', value: 0 },
336
+ { name: 'V8CompileDuration', value: 0 },
337
+ { name: 'TaskDuration', value: 0.000014 },
338
+ { name: 'TaskOtherDuration', value: 0.000001 },
339
+ { name: 'ThreadTime', value: 0.000046 },
340
+ { name: 'ProcessTime', value: 0.616852 },
341
+ { name: 'JSHeapUsedSize', value: 19004908 },
342
+ { name: 'JSHeapTotalSize', value: 26820608 },
343
+ { name: 'FirstMeaningfulPaint', value: 0 },
344
+ { name: 'DomContentLoaded', value: 1584903.690491 },
345
+ { name: 'NavigationStart', value: 1584902.841845 }
346
+ ]
347
+ ```
348
+
349
+ * Grab WebSocket (WS) messages ([#3789](https://github.com/codeceptjs/CodeceptJS/issues/3789)) - by **[KobeNguyenT](https://github.com/KobeNguyenT)**
350
+ * `flushWebSocketMessages`
351
+ * `grabWebSocketMessages`
352
+ * `startRecordingWebSocketMessages`
353
+ * `stopRecordingWebSocketMessages`
354
+
355
+ ```js
356
+ await I.startRecordingWebSocketMessages();
357
+ I.amOnPage('https://websocketstest.com/');
358
+ I.waitForText('Work for You!');
359
+ I.flushNetworkTraffics();
360
+ const wsMessages = I.grabWebSocketMessages();
361
+ expect(wsMessages.length).to.equal(0);
362
+ ```
363
+
364
+ ```js
365
+ await I.startRecordingWebSocketMessages();
366
+ await I.amOnPage('https://websocketstest.com/');
367
+ I.waitForText('Work for You!');
368
+ const wsMessages = I.grabWebSocketMessages();
369
+ expect(wsMessages.length).to.greaterThan(0);
370
+ ```
371
+
372
+ ```js
373
+ await I.startRecordingWebSocketMessages();
374
+ await I.amOnPage('https://websocketstest.com/');
375
+ I.waitForText('Work for You!');
376
+ const wsMessages = I.grabWebSocketMessages();
377
+ await I.stopRecordingWebSocketMessages();
378
+ await I.amOnPage('https://websocketstest.com/');
379
+ I.waitForText('Work for You!');
380
+ const afterWsMessages = I.grabWebSocketMessages();
381
+ expect(wsMessages.length).to.equal(afterWsMessages.length);
382
+ ```
383
+
384
+ * Move from `ElementHandle` to `Locator`. This change is quite major, but it happened under hood, so should not affect your code. ([#3738](https://github.com/codeceptjs/CodeceptJS/issues/3738)) - by **[KobeNguyenT](https://github.com/KobeNguyenT)**
385
+
10
386
  ## 3.5.3
11
387
 
12
388
  đŸ›Šī¸ Features
13
389
 
14
- * **[Playwright]** Provide new steps to check network traffic [#3748](https://github.com/codeceptjs/CodeceptJS/issues/3748) - by **[ngraf](https://github.com/ngraf)** **[KobeNguyenT](https://github.com/KobeNguyenT)**
390
+ * **[Playwright]** Added commands to check network traffic [#3748](https://github.com/codeceptjs/CodeceptJS/issues/3748) - by **[ngraf](https://github.com/ngraf)** **[KobeNguyenT](https://github.com/KobeNguyenT)**
391
+ * `startRecordingTraffic`
392
+ * `grabRecordedNetworkTraffics`
393
+ * `blockTraffic`
394
+ * `mockTraffic`
395
+ * `flushNetworkTraffics`
396
+ * `stopRecordingTraffic`
397
+ * `seeTraffic`
398
+ * `grabTrafficUrl`
399
+ * `dontSeeTraffic`
400
+
401
+ Examples:
15
402
 
16
403
  ```js
17
404
  // recording traffics and verify the traffic
package/docs/commands.md CHANGED
@@ -152,6 +152,18 @@ If a plugin needs to be enabled in `dry-run` mode, pass its name in `-p` option:
152
152
  npx codeceptjs dry-run --steps -p allure
153
153
  ```
154
154
 
155
+ If some plugins need to be enabled in `dry-run` mode, pass its name in `-p` option:
156
+
157
+ ```
158
+ npx codeceptjs dry-run --steps -p allure,customLocator
159
+ ```
160
+
161
+ If all plugins need to be enabled in `dry-run` mode, pass its name in `-p` option:
162
+
163
+ ```
164
+ npx codeceptjs dry-run --steps -p all
165
+ ```
166
+
155
167
  To enable bootstrap script in dry-run mode, pass in `--bootstrap` option when running with `--steps` or `--debug`
156
168
 
157
169
  ```
@@ -31,9 +31,6 @@ Please **add your own** by editing this page.
31
31
  * [codeceptjs-bshelper](https://github.com/PeterNgTr/codeceptjs-bshelper) - a helper which updates `Test Names` & `Test Results` on Browserstack
32
32
  * [codeceptjs-tbhelper](https://github.com/testingbot/codeceptjs-tbhelper) - a helper which updates `Test Names` & `Test Results` on TestingBot
33
33
 
34
- ## Integrations
35
- * [codeceptjs-testrail](https://github.com/PeterNgTr/codeceptjs-testrail) - a plugin to integrate with [Testrail](https://www.gurock.com/testrail)
36
-
37
34
  ## Visual-Testing
38
35
  * [codeceptjs-resemblehelper](https://github.com/puneet0191/codeceptjs-resemblehelper) - a helper which helps with visual testing using resemble.js.
39
36
  * [codeceptjs-applitoolshelper](https://www.npmjs.com/package/codeceptjs-applitoolshelper) - a helper which helps interaction with [Applitools](https://applitools.com)
@@ -42,8 +39,10 @@ Please **add your own** by editing this page.
42
39
  ## Reporters
43
40
  * [codeceptjs-rphelper](https://github.com/reportportal/agent-js-codecept) is a CodeceptJS helper which can publish tests results on ReportPortal after execution.
44
41
  * [codeceptjs-xray-helper](https://www.npmjs.com/package/codeceptjs-xray-helper) is a CodeceptJS helper which can publish tests results on [XRAY](https://confluence.xpand-it.com/display/XRAYCLOUD/Import+Execution+Results+-+REST).
42
+ * [codeceptjs-xray-cloud-helper](https://www.npmjs.com/package/codeceptjs-xray-cloud-helper) is a helper that automatically retrieves the result of CodeceptJS tests and sends them to XRAY/JIRA(cloud version) via [XRAY Cloud API](https://docs.getxray.app/display/XRAYCLOUD/Import+Execution+Results+-+REST+v2#ImportExecutionResultsRESTv2-XrayJSONresults).
45
43
  * [codeceptjs-slack-reporter](https://www.npmjs.com/package/codeceptjs-slack-reporter) Get a Slack notification when one or more scenarios fail.
46
44
  * [codeceptjs-browserlogs-plugin](https://github.com/pavkam/codeceptjs-browserlogs-plugin) Record the browser logs for failed tests.
45
+ * [codeceptjs-testrail](https://github.com/PeterNgTr/codeceptjs-testrail) - a plugin to integrate with [Testrail](https://www.gurock.com/testrail)
47
46
 
48
47
  ## Browser request control
49
48
  * [codeceptjs-resources-check](https://github.com/luarmr/codeceptjs-resources-check) Load a URL with Puppeteer and listen to the requests while the page is loading. Enabling count the number or check the sizes of the requests.
@@ -55,4 +54,9 @@ Please **add your own** by editing this page.
55
54
  ## Other
56
55
 
57
56
  * [codeceptjs-cmdhelper](https://github.com/thiagodp/codeceptjs-cmdhelper) allows you to run commands in the terminal/console
58
- * [eslint-plugin-codeceptjs](https://www.npmjs.com/package/eslint-plugin-codeceptjs) Eslint rules for CodeceptJS.
57
+ * [eslint-plugin-codeceptjs](https://www.npmjs.com/package/eslint-plugin-codeceptjs) Eslint rules for CodeceptJS.
58
+ * [codeceptjs-datalayer-helper](https://github.com/kobenguyent/codeceptjs-datalayer-helper) CodeceptJS DataLayer helper helps you to get the datalayer JavaScript array that is used to store information and send this data to the tag manager.
59
+ * [codeceptjs-a11y-helper](https://github.com/kobenguyent/codeceptjs-a11y-helper) accessibility tests integrated with CodeceptJS - Playwright-axe
60
+ * [codeceptjs-lighthouse-helper](https://github.com/kobenguyent/codeceptjs-lighthouse-helper) lighthouse audit integrated with CodeceptJS - Playwright
61
+ * [Snowplow Data analytics](https://www.npmjs.com/package/@viasat/codeceptjs-snowplow-helper) - Test your Snowplow events implementations with CodeceptJS and Snowplow Micro.
62
+ * [codeceptjs-failure-logger](https://github.com/kobenguyent/codeceptjs-failure-logger) - Log failed CodeceptJS tests to file
package/docs/examples.md CHANGED
@@ -16,6 +16,7 @@ Playground repository where you can run tests in different helpers on a basic si
16
16
 
17
17
  Tests repository demonstrate usage of
18
18
 
19
+ * Playwright helper
19
20
  * Puppeteer helper
20
21
  * WebDriver helper
21
22
  * TestCafe plugin
@@ -28,7 +29,6 @@ Tests repository demonstrate usage of
28
29
  CodeceptJS repo contains basic tests (both failing and passing) just to show how it works.
29
30
  Our team uses it to test new features and run simple scenarios.
30
31
 
31
-
32
32
  ## [CodeceptJS Cucumber E2E Framework](https://github.com/gkushang/codeceptjs-e2e)
33
33
 
34
34
  This repository contains complete E2E framework for CodeceptJS with Cucumber and SauceLabs Integration
@@ -146,4 +146,10 @@ This is necessary if all integrations with TMS and CI/CD are already configured,
146
146
  * HTTP request client with session support and unit tests
147
147
  * Exemplary code control
148
148
  * Ready to launch in a CI/CD system as is
149
- * OOP, Test data models and builders, endpoint decorators
149
+ * OOP, Test data models and builders, endpoint decorators
150
+
151
+ ## [Playwright fun with CodeceptJS](https://github.com/PeterNgTr/codeceptjs-playwright-fun)
152
+ * Tests are written in TS
153
+ * CI/CD with Github Actions
154
+ * Page Object Model is applied
155
+ * ReportPortal Integration