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
package/docs/ui.md DELETED
@@ -1,59 +0,0 @@
1
- ---
2
- title: CodeceptUI
3
- permalink: /ui
4
- ---
5
-
6
-
7
- <img src="/img/codeceptui.png" alt="CodeceptUI" style="width: 100%; border-radius: 5px; box-shadow: 0px 5px 10px rgba(0,0,0,0.1)" />
8
-
9
-
10
- ## CodeceptUI
11
-
12
- CodeceptJS has an interactive, graphical test runner. We call it CodeceptUI. It works in your browser and helps you to manage your tests.
13
-
14
- CodeceptUI can be used for
15
-
16
- * running tests by groups or single
17
- * get test reports
18
- * review tests
19
- * edit tests and page objects
20
- * write new tests
21
- * reuse one browser session accross multiple test runs
22
- * easily switch to headless/headful mode
23
-
24
-
25
- ![](https://user-images.githubusercontent.com/220264/93860826-4d5fbc80-fcc8-11ea-99dc-af816f3db466.png)
26
-
27
- ## Installation
28
-
29
- CodeceptUI is already installed with `create-codeceptjs` command but you can install it manually via:
30
-
31
- ```
32
- npm i @codeceptjs/ui --save
33
- ```
34
-
35
- ## Usage
36
-
37
- To start using CodeceptUI you need to have CodeceptJS project with a few tests written.
38
- If CodeceptUI was installed by `create-codecept` command it can be started with:
39
-
40
- ```
41
- npm run codeceptjs:ui
42
- ```
43
-
44
- CodeceptUI can be started in two modes:
45
-
46
- * **Application** mode - starts Electron application in a window. Designed for desktop systems.
47
- * **Server** mode - starts a webserver. Deigned for CI systems.
48
-
49
- To start CodeceptUI in application mode:
50
-
51
- ```
52
- npx codecept-ui --app
53
- ```
54
-
55
- To start CodeceptUI in server mode:
56
-
57
- ```
58
- npx codecept-ui
59
- ```
package/docs/videos.md DELETED
@@ -1,28 +0,0 @@
1
- ---
2
- permalink: /videos
3
- layout: Section
4
- sidebar: false
5
- title: Videos
6
- editLink: false
7
- ---
8
-
9
- > Add your own videos to our [Wiki Page](https://github.com/codeceptjs/CodeceptJS/wiki/Videos)
10
- [![](http://i3.ytimg.com/vi/BRMWstiOTks/maxresdefault.jpg)](https://www.youtube.com/watch?v=BRMWstiOTks)
11
-
12
- ## [An Introduction, Getting started and working with CodeceptJS & Puppeteer (EAWeekend)](https://www.youtube.com/watch?v=BRMWstiOTks)
13
-
14
- ## [CodeceptJS Official YouTube Channel](https://www.youtube.com/channel/UCEs4030bmtonyDhTHEXa_2g)
15
-
16
- ## [Introductory Videos](https://www.youtube.com/watch?v=FPFG1rBNJ64&list=PLcFXthgti9Lt4SjSvL1ALDg6dOeTC0TvT)
17
-
18
- Free educational videos provided by our community member **[@ontytoom](http://github.com/ontytoom)**.
19
-
20
- 1. [Installation](https://www.youtube.com/watch?v=FPFG1rBNJ64)
21
- 1. [Creating a Test](https://www.youtube.com/watch?v=mdQZjL3h9d0)
22
- 1. [Using Page Objects](https://www.youtube.com/watch?v=s677_6VctjQ)
23
-
24
- ## [Practical E2E Testing with CodeceptJS](https://www.udemy.com/practical-e2e-testing-with-codeceptjs/)
25
-
26
- Udemy course by Luke Beilharz
27
-
28
-
package/docs/visual.md DELETED
@@ -1,202 +0,0 @@
1
- ---
2
- permalink: /visual
3
- title: Visual Testing
4
- ---
5
-
6
- # Visual Testing
7
-
8
- How does one test if the UI being rendered appears correctly to the users or how to test if each UI element appears in the right position and size? The traditional way to test the UI of the application has always been manually, which is time consuming.
9
-
10
- Visual testing with help of CodeceptJS will help in improving such use cases for the QA folks.
11
-
12
- By default CodeceptJS uses [WebDriver](/helpers/WebDriver/) helper and **Selenium** to automate browser. It is also capable of taking screenshots of the application and this could be used for visual testing.
13
-
14
- Currently there are two helpers available for Visual testing with CodeceptJS
15
-
16
- ## Using Resemble helper
17
-
18
- [Resemble.js](https://github.com/rsmbl/Resemble.js) is a great tool for image comparison and analysis, which can be used with CodeceptJS
19
-
20
- ### Setup
21
-
22
- To install the package, just run
23
-
24
- ```
25
- npm install codeceptjs-resemblehelper --save
26
- ```
27
-
28
- ### Configuring
29
-
30
- This helper should be added to `codecept.conf.js` config file.
31
-
32
- Example:
33
-
34
- ```json
35
- {
36
- "helpers": {
37
- "ResembleHelper" : {
38
- "require": "codeceptjs-resemblehelper",
39
- "screenshotFolder" : "./tests/output/",
40
- "baseFolder": "./tests/screenshots/base/",
41
- "diffFolder": "./tests/screenshots/diff/"
42
- }
43
- }
44
- }
45
- ```
46
-
47
- To use the Helper, users must provide the three parameters:
48
-
49
- * `screenshotFolder` : This will always have the same value as `output` in Codecept configuration, this is the folder where WebDriver saves a screenshot when using `I.saveScreenshot` method
50
- * `baseFolder`: This is the folder for base images, which will be used with screenshot for comparison
51
- * `diffFolder`: This will the folder where resemble would try to store the difference image, which can be viewed later.
52
-
53
- ### Usage
54
-
55
- Details about the helper can be found on the [Github Repo](https://github.com/puneet0191/codeceptjs-resemblehelper)
56
-
57
- Base Image is compared with the screenshot image and test results are derived based on the `mismatch tolerance` level provided by the user for the comparison
58
-
59
- ### Example
60
-
61
- Lets consider visual testing for [CodeceptJS Home](https://codecept.io)
62
-
63
- ```js
64
- Feature('To test screen comparison with resemble Js Example test');
65
-
66
- Scenario('Compare CodeceptIO Home Page @visual-test', async ({ I }) => {
67
- I.amOnPage("/");
68
- I.saveScreenshot("Codecept_IO_Screenshot_Image.png");
69
- I.seeVisualDiff("Codecept_IO_Screenshot_Image.png", {tolerance: 2, prepareBaseImage: false});
70
- });
71
- ```
72
-
73
- In this example, we are setting the expected mismatch tolerance level as `2`
74
-
75
- `Base Image` (Generated by User)
76
- ![Base Image](/img/Codecept_IO_Base_Image.png)
77
-
78
- `Screenshot Image` (Generated by Test)
79
- ![Screenshot Image](/img/Codecept_IO_Screenshot_Image.png)
80
-
81
- Clearly the difference in both the images visible to human eye is the section about `Scenario Driven`
82
-
83
- ![Difference Image](/img/difference_Image_Codecept_Home.png)
84
-
85
- `Diff Image` generated by the helper clearly highlights the section which don't match
86
-
87
- ![Highlight](/img/Difference%20Image%20Focus.png)
88
-
89
- `Failed Test output`
90
- ```
91
- To test screen comparison with resemble Js Example test --
92
- Compare CodeceptIO Home Page @visual-test
93
- I see Visual Diff "Codecept_IO_Screenshot_Image.png", {tolerance: 2, prepareBaseImage: false}
94
- MisMatch Percentage Calculated is 2.85
95
- ✖ FAILED in 418ms
96
-
97
-
98
- -- FAILURES:
99
-
100
- 1) To test screen comparison with resemble Js Example test
101
- Compare CodeceptIO Home Page @visual-test:
102
-
103
- MissMatch Percentage 2.85
104
- + expected - actual
105
-
106
- -false
107
- +true
108
- ```
109
-
110
- `Codeceptjs-resemblehelper` basically comes with two major functions
111
-
112
- 1) `seeVisualDiff` which can be used to compare two images and calculate the misMatch percentage.
113
- 2) `seeVisualDiffForElement` which can be used to compare elements on the two images and calculate misMatch percentage.
114
-
115
- ## Using Applitools
116
-
117
- Applitools helps Test Automation engineers, DevOps, and FrontEnd Developers continuously test and validate visually perfect mobile, web, and native apps. Now it can be used with CodeceptJS.
118
-
119
- ### Setup
120
-
121
- Create an account at [Applitools](https://applitools.com/users/register) and install the npm packages
122
-
123
- ```
124
- npm i codeceptjs-applitoolshelper --save
125
- npm i webdriverio@5 --save
126
- ```
127
-
128
- ### Configuring
129
-
130
- ```js
131
- ...
132
- helpers: {
133
- WebDriver: {
134
- url: 'https://applitools.com/helloworld',
135
- browser: 'chrome',
136
- desiredCapabilities: {
137
- chromeOptions: {
138
- args: [ '--headless', '--disable-extensions', '--disable-gpu', '--no-sandbox', '--disable-dev-shm-usage']
139
- }
140
- },
141
- windowSize: '1920x600',
142
- smartWait: 5000,
143
- timeouts: {
144
- 'script': 60000,
145
- 'page load': 10000
146
- },
147
- },
148
- ApplitoolsHelper: {
149
- require: 'codeceptjs-applitoolshelper',
150
- applitoolsKey: 'YOUR_API_KEY'
151
- }
152
- },
153
- ...
154
- ```
155
-
156
- #### To use this helper you need to provide the following info:
157
-
158
- - applitoolsKey (Required): You can find your API key under the user menu located at the right hand side of the test manager toolbar
159
- - windowSize (Optional): the windows size as for instance 1440x700, if not provided, the default 1920x600 will be used. The windowSize will follow this precedence: ApplitoolsHelper, Webdriver.
160
- - appName (Optional): you can either provide your desired application name, if not provided, the default 'Application Under Test' will be used.
161
-
162
- ### Usage
163
-
164
- ```javascript
165
- /**
166
- * @param pageToCheck {string} Name of page you want to check
167
- */
168
- I.eyeCheck(pageToCheck);
169
-
170
- ```
171
-
172
- The first time you run this test a new baseline will be created, and subsequent test runs will be compared to this baseline. If any screenshot mismatch its baseline image in a perceptible way, there will be a `DiffsFoundException` which includes a URL that points to a detailed report where you can see the detected differences and take appropriate actions such as reporting bugs, updating the baseline and more.
173
-
174
- ```js
175
- -- FAILURES:
176
-
177
- 1) Applitools functionality
178
- Check home page @test:
179
- Test 'Applitools functionality' of 'Application Under Test' detected differences!. See details at: https://eyes.applitools.com/app/batches/00000251831777088983/00000251831777088717?accountId=KO-Oh9tXI0e8VF8Ha_GLVA~~
180
- ```
181
-
182
- > You can find the latest documentation here [Applitools Docs](https://applitools.com/tutorials/webdriverio5.html#run-your-first-test)
183
-
184
- ### Example
185
-
186
- Lets consider visual testing for [CodeceptJS Home](https://codecept.io).
187
- You can also find example repo here: https://github.com/PeterNgTr/codeceptjs-applitoolshelper
188
-
189
- ```js
190
- const { I } = inject();
191
-
192
- Feature('Applitools functionality');
193
-
194
- Before(() => {
195
- I.amOnPage('https://applitools.com/helloworld');
196
- });
197
-
198
- Scenario('Check home page @test', async ({ }) => {
199
- await I.eyeCheck('Homepage');
200
- });
201
- ```
202
-
package/docs/vue.md DELETED
@@ -1,121 +0,0 @@
1
- ---
2
- permalink: /vue
3
- layout: Section
4
- sidebar: false
5
- title: Testing Vue Apps
6
- ---
7
-
8
-
9
- # vue-cli-plugin-e2e-codeceptjs
10
-
11
- *Hey, how about some end 2 end testing for your Vue apps?* 🤔
12
-
13
- *Let's do it together! Vue, me, [CodeceptJS](https://codecept.io) & [Puppeteer](https://pptr.dev).* 🤗
14
-
15
- *Browser testing was never that simple. Just see it!* 😍
16
-
17
- ```js
18
- I.amOnPage('/');
19
- I.click('My Component Button');
20
- I.see('My Component');
21
- I.say('I am happy!');
22
- // that's right, this is a valid test!
23
- ```
24
-
25
- ## How to try it?
26
-
27
- **Requirements:**
28
-
29
- * NodeJS >= 8.9
30
- * NPM / Yarn
31
- * Vue CLI installed globally
32
-
33
- ```
34
- npm i vue-cli-plugin-codeceptjs-puppeteer --save-dev
35
- ```
36
-
37
- This will install CodeceptJS, CodeceptUI & Puppeteer with Chrome browser.
38
-
39
- To add CodeceptJS to your project invoke installer:
40
-
41
- ```
42
- vue invoke vue-cli-plugin-codeceptjs-puppeteer
43
- ```
44
-
45
- > You will be asked about installing a demo component. If you start a fresh project **it is recommended to agree and install a demo component**, so you could see tests passing.
46
-
47
-
48
- ## Running Tests
49
-
50
- We added npm scripts:
51
-
52
- * `test:e2e` - will execute tests with browser opened. If you installed test component, and started a test server, running this command will show you a brower window passed test.
53
- * Use `--headless` option to run browser headlessly
54
- * Use `--serve` option to start a dev server before tests
55
-
56
-
57
- Examples:
58
-
59
- ```
60
- npm run test:e2e
61
- npm run test:e2e -- --headless
62
- npm run test:e2e -- --serve
63
- ```
64
-
65
- > This command is a wrapper for `codecept run --steps`. You can use the [Run arguments and options](/commands#run) here.
66
-
67
- * `test:e2e:parallel` - will execute tests headlessly in parallel processes (workers). By default runs tests in 2 workers.
68
- * Use an argument to set number of workers
69
- * Use `--serve` option to start dev server before running
70
-
71
- Examples:
72
-
73
- ```
74
- npm run test:e2e:parallel
75
- npm run test:e2e:parallel -- 3
76
- npm run test:e2e:parallel -- 3 --serve
77
- ```
78
-
79
- > This command is a wrapper for `codecept run-workers 2`. You can use the [Run arguments and options](/commands#run-workers) here.
80
-
81
- * `test:e2e:open` - this opens interactive web test runner. So you could see, review & run your tests from a browser.
82
-
83
- ![](https://user-images.githubusercontent.com/220264/70399222-b7a1bc00-1a2a-11ea-8f0b-2878b0328161.gif)
84
-
85
- ```
86
- npm run test:e2e:open
87
- ```
88
-
89
- ## Directory Structure
90
-
91
- Generator has created these files:
92
-
93
- ```js
94
- codecept.conf.js 👈 codeceptjs config
95
- jsconfig.json 👈 enabling type definitons
96
- tests
97
- ├── e2e
98
- │   ├── app_test.js 👈 demo test, edit it!
99
- │   ├── output 👈 temp directory for screenshots, reports, etc
100
- │   └── support
101
- │   └── steps_file.js 👈 common steps
102
- └── steps.d.ts 👈 type definitions
103
- ```
104
-
105
- If you agreed to create a demo component, you will also see `TestMe` component in `src/components` folder.
106
-
107
- ## How to write tests?
108
-
109
- * Open `tests/e2e/app_js` and see the demo test
110
- * Execute a test & use interactive pause to see how CodeceptJS works
111
- * [Learn CodeceptJS basics](/basics)
112
- * [Learn how to write CodeceptJS tests with Puppeteer](/puppeteer)
113
- * [See full reference for CodeceptJS Puppeteer Helper](/helpers/Puppeteer)
114
- * Ask your questions in [Slack](https://bit.ly/chat-codeceptjs) & [Forum](https://codecept.discourse.group/)
115
-
116
- ## Enjoy testing!
117
-
118
- Testing is simple & fun, enjoy it!
119
-
120
- With ❤ [CodeceptJS Team](https://codecept.io)
121
-
@@ -1,11 +0,0 @@
1
- Opens a web page in a browser. Requires relative or absolute url.
2
- If url starts with `/`, opens a web page of a site defined in `url` config parameter.
3
-
4
- ```js
5
- I.amOnPage('/'); // opens main page of website
6
- I.amOnPage('https://github.com'); // opens github
7
- I.amOnPage('/login'); // opens a login page
8
- ```
9
-
10
- @param {string} url url path or global url.
11
- @return {void} automatically synchronized promise with recorder #!
@@ -1,9 +0,0 @@
1
- Appends text to a input field or textarea.
2
- Field is located by name, label, CSS or XPath
3
-
4
- ```js
5
- I.appendField('#myTextField', 'appended');
6
- ```
7
- @param {CodeceptJS.LocatorOrString} field located by label|name|CSS|XPath|strict locator
8
- @param {string} value text value to append.
9
- ⚠️ returns a _promise_ which is synchronized internally by recorder
@@ -1,12 +0,0 @@
1
- Attaches a file to element located by label, name, CSS or XPath
2
- Path to file is relative current codecept directory (where codecept.conf.ts or codecept.conf.js is located).
3
- File will be uploaded to remote system (if tests are running remotely).
4
-
5
- ```js
6
- I.attachFile('Avatar', 'data/avatar.jpg');
7
- I.attachFile('form input[name=avatar]', 'data/avatar.jpg');
8
- ```
9
-
10
- @param {CodeceptJS.LocatorOrString} locator field located by label|name|CSS|XPath|strict locator.
11
- @param {string} pathToFile local file path relative to codecept.conf.ts or codecept.conf.js config file.
12
- ⚠️ returns a _promise_ which is synchronized internally by recorder
@@ -1,13 +0,0 @@
1
- Selects a checkbox or radio button.
2
- Element is located by label or name or CSS or XPath.
3
-
4
- The second parameter is a context (CSS or XPath locator) to narrow the search.
5
-
6
- ```js
7
- I.checkOption('#agree');
8
- I.checkOption('I Agree to Terms and Conditions');
9
- I.checkOption('agree', '//form');
10
- ```
11
- @param {CodeceptJS.LocatorOrString} field checkbox located by label | name | CSS | XPath | strict locator.
12
- @param {?CodeceptJS.LocatorOrString} [context=null] (optional, `null` by default) element located by CSS | XPath | strict locator.
13
- ⚠️ returns a _promise_ which is synchronized internally by recorder
@@ -1,10 +0,0 @@
1
- Clears a cookie by name,
2
- if none provided clears all cookies.
3
-
4
- ```js
5
- I.clearCookie();
6
- I.clearCookie('test');
7
- ```
8
-
9
- @param {?string} [cookie=null] (optional, `null` by default) cookie name
10
- ⚠️ returns a _promise_ which is synchronized internally by recorder
@@ -1,9 +0,0 @@
1
- Clears a `<textarea>` or text `<input>` element's value.
2
-
3
- ```js
4
- I.clearField('Email');
5
- I.clearField('user[email]');
6
- I.clearField('#email');
7
- ```
8
- @param {LocatorOrString} editable field located by label|name|CSS|XPath|strict locator.
9
- ⚠️ returns a _promise_ which is synchronized internally by recorder.
@@ -1,25 +0,0 @@
1
- Perform a click on a link or a button, given by a locator.
2
- If a fuzzy locator is given, the page will be searched for a button, link, or image matching the locator string.
3
- For buttons, the "value" attribute, "name" attribute, and inner text are searched. For links, the link text is searched.
4
- For images, the "alt" attribute and inner text of any parent links are searched.
5
-
6
- The second parameter is a context (CSS or XPath locator) to narrow the search.
7
-
8
- ```js
9
- // simple link
10
- I.click('Logout');
11
- // button of form
12
- I.click('Submit');
13
- // CSS button
14
- I.click('#form input[type=submit]');
15
- // XPath
16
- I.click('//form/*[@type=submit]');
17
- // link in context
18
- I.click('Logout', '#nav');
19
- // using strict locator
20
- I.click({css: 'nav a.login'});
21
- ```
22
-
23
- @param {CodeceptJS.LocatorOrString} locator clickable link or button located by text, or any element located by CSS|XPath|strict locator.
24
- @param {?CodeceptJS.LocatorOrString | null} [context=null] (optional, `null` by default) element to search in CSS|XPath|Strict locator.
25
- ⚠️ returns a _promise_ which is synchronized internally by recorder
@@ -1,8 +0,0 @@
1
- Performs a click on a link and waits for navigation before moving on.
2
-
3
- ```js
4
- I.clickLink('Logout', '#nav');
5
- ```
6
- @param {CodeceptJS.LocatorOrString} locator clickable link or button located by text, or any element located by CSS|XPath|strict locator
7
- @param {?CodeceptJS.LocatorOrString} [context=null] (optional, `null` by default) element to search in CSS|XPath|Strict locator
8
- ⚠️ returns a _promise_ which is synchronized internally by recorder
@@ -1,7 +0,0 @@
1
- Close current tab.
2
-
3
- ```js
4
- I.closeCurrentTab();
5
- ```
6
-
7
- ⚠️ returns a _promise_ which is synchronized internally by recorder
@@ -1,8 +0,0 @@
1
- Close all tabs except for the current one.
2
-
3
-
4
- ```js
5
- I.closeOtherTabs();
6
- ```
7
-
8
- ⚠️ returns a _promise_ which is synchronized internally by recorder
@@ -1,11 +0,0 @@
1
- Opposite to `see`. Checks that a text is not present on a page.
2
- Use context parameter to narrow down the search.
3
-
4
- ```js
5
- I.dontSee('Login'); // assume we are already logged in.
6
- I.dontSee('Login', '.nav'); // no login inside .nav element
7
- ```
8
-
9
- @param {string} text which is not present.
10
- @param {CodeceptJS.LocatorOrString} [context] (optional) element located by CSS|XPath|strict locator in which to perfrom search.
11
- ⚠️ returns a _promise_ which is synchronized internally by recorder
@@ -1,10 +0,0 @@
1
- Verifies that the specified checkbox is not checked.
2
-
3
- ```js
4
- I.dontSeeCheckboxIsChecked('#agree'); // located by ID
5
- I.dontSeeCheckboxIsChecked('I agree to terms'); // located by label
6
- I.dontSeeCheckboxIsChecked('agree'); // located by name
7
- ```
8
-
9
- @param {CodeceptJS.LocatorOrString} field located by label|name|CSS|XPath|strict locator.
10
- ⚠️ returns a _promise_ which is synchronized internally by recorder
@@ -1,8 +0,0 @@
1
- Checks that cookie with given name does not exist.
2
-
3
- ```js
4
- I.dontSeeCookie('auth'); // no auth cookie
5
- ```
6
-
7
- @param {string} name cookie name.
8
- ⚠️ returns a _promise_ which is synchronized internally by recorder
@@ -1,10 +0,0 @@
1
- Checks that current url is not equal to provided one.
2
- If a relative url provided, a configured url will be prepended to it.
3
-
4
- ```js
5
- I.dontSeeCurrentUrlEquals('/login'); // relative url are ok
6
- I.dontSeeCurrentUrlEquals('http://mysite.com/login'); // absolute urls are also ok
7
- ```
8
-
9
- @param {string} url value to check.
10
- ⚠️ returns a _promise_ which is synchronized internally by recorder
@@ -1,8 +0,0 @@
1
- Opposite to `seeElement`. Checks that element is not visible (or in DOM)
2
-
3
- ```js
4
- I.dontSeeElement('.modal'); // modal is not shown
5
- ```
6
-
7
- @param {CodeceptJS.LocatorOrString} locator located by CSS|XPath|Strict locator.
8
- ⚠️ returns a _promise_ which is synchronized internally by recorder
@@ -1,8 +0,0 @@
1
- Opposite to `seeElementInDOM`. Checks that element is not on page.
2
-
3
- ```js
4
- I.dontSeeElementInDOM('.nav'); // checks that element is not on page visible or not
5
- ```
6
-
7
- @param {CodeceptJS.LocatorOrString} locator located by CSS|XPath|Strict locator.
8
- ⚠️ returns a _promise_ which is synchronized internally by recorder
@@ -1,4 +0,0 @@
1
- Checks that current url does not contain a provided fragment.
2
-
3
- @param {string} url value to check.
4
- ⚠️ returns a _promise_ which is synchronized internally by recorder
@@ -1,11 +0,0 @@
1
- Checks that value of input field or textarea doesn't equal to given value
2
- Opposite to `seeInField`.
3
-
4
- ```js
5
- I.dontSeeInField('email', 'user@user.com'); // field by name
6
- I.dontSeeInField({ css: 'form input.email' }, 'user@user.com'); // field by CSS
7
- ```
8
-
9
- @param {CodeceptJS.LocatorOrString} field located by label|name|CSS|XPath|strict locator.
10
- @param {string} value value to check.
11
- ⚠️ returns a _promise_ which is synchronized internally by recorder
@@ -1,8 +0,0 @@
1
- Checks that the current page does not contains the given string in its raw source code.
2
-
3
- ```js
4
- I.dontSeeInSource('<!--'); // no comments in source
5
- ```
6
-
7
- @param {string} value to check.
8
- ⚠️ returns a _promise_ which is synchronized internally by recorder
@@ -1,8 +0,0 @@
1
- Checks that title does not contain text.
2
-
3
- ```js
4
- I.dontSeeInTitle('Error');
5
- ```
6
-
7
- @param {string} text value to check.
8
- ⚠️ returns a _promise_ which is synchronized internally by recorder
@@ -1,13 +0,0 @@
1
- Performs a double-click on an element matched by link|button|label|CSS or XPath.
2
- Context can be specified as second parameter to narrow search.
3
-
4
- ```js
5
- I.doubleClick('Edit');
6
- I.doubleClick('Edit', '.actions');
7
- I.doubleClick({css: 'button.accept'});
8
- I.doubleClick('.btn.edit');
9
- ```
10
-
11
- @param {CodeceptJS.LocatorOrString} locator clickable link or button located by text, or any element located by CSS|XPath|strict locator.
12
- @param {?CodeceptJS.LocatorOrString} [context=null] (optional, `null` by default) element to search in CSS|XPath|Strict locator.
13
- ⚠️ returns a _promise_ which is synchronized internally by recorder
@@ -1,12 +0,0 @@
1
- Performs a download file on an element matched by link|button|CSS or XPath.
2
- File is downloaded by default to output folder.
3
- If no custom file name is provided, the default name will be used
4
-
5
-
6
- ```js
7
- I.downloadFile('td[class="text-right file-link"] a', 'thisIsCustomName');
8
- ```
9
-
10
- @param {CodeceptJS.LocatorOrString} locator clickable link or button located by CSS|XPath locator.
11
- @param {string} file custom file name.
12
- ⚠️ returns a _promise_ which is synchronized internally by recorder