codeceptjs 3.6.0-beta.1.ai-healers → 3.6.0

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 (129) hide show
  1. package/README.md +2 -2
  2. package/bin/codecept.js +2 -1
  3. package/docs/webapi/dontSeeTraffic.mustache +13 -0
  4. package/docs/webapi/flushNetworkTraffics.mustache +5 -0
  5. package/docs/webapi/grabRecordedNetworkTraffics.mustache +10 -0
  6. package/docs/webapi/seeTraffic.mustache +36 -0
  7. package/docs/webapi/startRecordingTraffic.mustache +8 -0
  8. package/docs/webapi/startRecordingWebSocketMessages.mustache +8 -0
  9. package/docs/webapi/stopRecordingTraffic.mustache +5 -0
  10. package/docs/webapi/stopRecordingWebSocketMessages.mustache +7 -0
  11. package/docs/webapi/waitForCookie.mustache +9 -0
  12. package/lib/actor.js +6 -3
  13. package/lib/command/dryRun.js +44 -13
  14. package/lib/helper/Appium.js +36 -12
  15. package/lib/helper/Expect.js +11 -8
  16. package/lib/helper/JSONResponse.js +8 -8
  17. package/lib/helper/MockServer.js +221 -0
  18. package/lib/helper/Playwright.js +107 -371
  19. package/lib/helper/Puppeteer.js +404 -71
  20. package/lib/helper/REST.js +4 -1
  21. package/lib/helper/WebDriver.js +189 -13
  22. package/lib/helper/errors/ElementAssertion.js +38 -0
  23. package/lib/helper/extras/PlaywrightReactVueLocator.js +6 -1
  24. package/lib/helper/network/actions.js +123 -0
  25. package/lib/helper/network/utils.js +187 -0
  26. package/lib/locator.js +36 -5
  27. package/lib/plugin/coverage.js +112 -99
  28. package/lib/step.js +3 -1
  29. package/package.json +48 -37
  30. package/typings/index.d.ts +19 -2
  31. package/typings/promiseBasedTypes.d.ts +505 -41
  32. package/typings/types.d.ts +609 -56
  33. package/docs/advanced.md +0 -351
  34. package/docs/ai.md +0 -365
  35. package/docs/api.md +0 -323
  36. package/docs/basics.md +0 -979
  37. package/docs/bdd.md +0 -539
  38. package/docs/best.md +0 -237
  39. package/docs/books.md +0 -37
  40. package/docs/bootstrap.md +0 -135
  41. package/docs/build/AI.js +0 -124
  42. package/docs/build/ApiDataFactory.js +0 -410
  43. package/docs/build/Appium.js +0 -2027
  44. package/docs/build/Expect.js +0 -422
  45. package/docs/build/FileSystem.js +0 -228
  46. package/docs/build/GraphQL.js +0 -229
  47. package/docs/build/GraphQLDataFactory.js +0 -309
  48. package/docs/build/JSONResponse.js +0 -338
  49. package/docs/build/Mochawesome.js +0 -71
  50. package/docs/build/Nightmare.js +0 -2152
  51. package/docs/build/OpenAI.js +0 -126
  52. package/docs/build/Playwright.js +0 -5110
  53. package/docs/build/Protractor.js +0 -2706
  54. package/docs/build/Puppeteer.js +0 -3905
  55. package/docs/build/REST.js +0 -344
  56. package/docs/build/TestCafe.js +0 -2125
  57. package/docs/build/WebDriver.js +0 -4240
  58. package/docs/changelog.md +0 -2572
  59. package/docs/commands.md +0 -266
  60. package/docs/community-helpers.md +0 -58
  61. package/docs/configuration.md +0 -157
  62. package/docs/continuous-integration.md +0 -22
  63. package/docs/custom-helpers.md +0 -306
  64. package/docs/data.md +0 -379
  65. package/docs/detox.md +0 -235
  66. package/docs/docker.md +0 -136
  67. package/docs/email.md +0 -183
  68. package/docs/examples.md +0 -149
  69. package/docs/heal.md +0 -186
  70. package/docs/helpers/ApiDataFactory.md +0 -266
  71. package/docs/helpers/Appium.md +0 -1374
  72. package/docs/helpers/Detox.md +0 -586
  73. package/docs/helpers/Expect.md +0 -275
  74. package/docs/helpers/FileSystem.md +0 -152
  75. package/docs/helpers/GraphQL.md +0 -151
  76. package/docs/helpers/GraphQLDataFactory.md +0 -226
  77. package/docs/helpers/JSONResponse.md +0 -254
  78. package/docs/helpers/Mochawesome.md +0 -8
  79. package/docs/helpers/MockRequest.md +0 -377
  80. package/docs/helpers/Nightmare.md +0 -1305
  81. package/docs/helpers/OpenAI.md +0 -70
  82. package/docs/helpers/Playwright.md +0 -2759
  83. package/docs/helpers/Polly.md +0 -44
  84. package/docs/helpers/Protractor.md +0 -1769
  85. package/docs/helpers/Puppeteer-firefox.md +0 -86
  86. package/docs/helpers/Puppeteer.md +0 -2317
  87. package/docs/helpers/REST.md +0 -218
  88. package/docs/helpers/TestCafe.md +0 -1321
  89. package/docs/helpers/WebDriver.md +0 -2547
  90. package/docs/hooks.md +0 -340
  91. package/docs/index.md +0 -111
  92. package/docs/installation.md +0 -75
  93. package/docs/internal-api.md +0 -266
  94. package/docs/locators.md +0 -339
  95. package/docs/mobile-react-native-locators.md +0 -67
  96. package/docs/mobile.md +0 -338
  97. package/docs/pageobjects.md +0 -291
  98. package/docs/parallel.md +0 -400
  99. package/docs/playwright.md +0 -632
  100. package/docs/plugins.md +0 -1247
  101. package/docs/puppeteer.md +0 -316
  102. package/docs/quickstart.md +0 -162
  103. package/docs/react.md +0 -70
  104. package/docs/reports.md +0 -392
  105. package/docs/secrets.md +0 -36
  106. package/docs/shadow.md +0 -68
  107. package/docs/shared/keys.mustache +0 -31
  108. package/docs/shared/react.mustache +0 -1
  109. package/docs/testcafe.md +0 -174
  110. package/docs/translation.md +0 -247
  111. package/docs/tutorial.md +0 -271
  112. package/docs/typescript.md +0 -180
  113. package/docs/ui.md +0 -59
  114. package/docs/videos.md +0 -28
  115. package/docs/visual.md +0 -202
  116. package/docs/vue.md +0 -143
  117. package/docs/webdriver.md +0 -701
  118. package/docs/wiki/Books-&-Posts.md +0 -27
  119. package/docs/wiki/Community-Helpers-&-Plugins.md +0 -53
  120. package/docs/wiki/Converting-Playwright-to-Istanbul-Coverage.md +0 -61
  121. package/docs/wiki/Examples.md +0 -145
  122. package/docs/wiki/Google-Summer-of-Code-(GSoC)-2020.md +0 -68
  123. package/docs/wiki/Home.md +0 -16
  124. package/docs/wiki/Migration-to-Appium-v2---CodeceptJS.md +0 -83
  125. package/docs/wiki/Release-Process.md +0 -24
  126. package/docs/wiki/Roadmap.md +0 -23
  127. package/docs/wiki/Tests.md +0 -1393
  128. package/docs/wiki/Upgrading-to-CodeceptJS-3.md +0 -153
  129. package/docs/wiki/Videos.md +0 -19
@@ -1,126 +0,0 @@
1
- const Helper = require('@codeceptjs/helper');
2
- const AiAssistant = require('../ai');
3
- const standardActingHelpers = require('../plugin/standardActingHelpers');
4
- const Container = require('../container');
5
- const { splitByChunks, minifyHtml } = require('../html');
6
-
7
- /**
8
- * OpenAI Helper for CodeceptJS.
9
- *
10
- * This helper class provides integration with the OpenAI GPT-3.5 or 4 language model for generating responses to questions or prompts within the context of web pages. It allows you to interact with the GPT-3.5 model to obtain intelligent responses based on HTML fragments or general prompts.
11
- * This helper should be enabled with any web helpers like Playwright or Puppeteer or WebDrvier to ensure the HTML context is available.
12
- *
13
- * ## Configuration
14
- *
15
- * This helper should be configured in codecept.json or codecept.conf.js
16
- *
17
- * * `chunkSize`: (optional, default: 80000) - The maximum number of characters to send to the OpenAI API at once. We split HTML fragments by 8000 chars to not exceed token limit. Increase this value if you use GPT-4.
18
- */
19
- class OpenAI extends Helper {
20
- constructor(config) {
21
- super(config);
22
- this.aiAssistant = new AiAssistant();
23
-
24
- this.options = {
25
- chunkSize: 80000,
26
- };
27
- this.options = { ...this.options, ...config };
28
- }
29
-
30
- _beforeSuite() {
31
- const helpers = Container.helpers();
32
-
33
- for (const helperName of standardActingHelpers) {
34
- if (Object.keys(helpers).indexOf(helperName) > -1) {
35
- this.helper = helpers[helperName];
36
- break;
37
- }
38
- }
39
- }
40
-
41
- /**
42
- * Asks the OpenAI GPT language model a question based on the provided prompt within the context of the current page's HTML.
43
- *
44
- * ```js
45
- * I.askGptOnPage('what does this page do?');
46
- * ```
47
- *
48
- * @async
49
- * @param {string} prompt - The question or prompt to ask the GPT model.
50
- * @returns {Promise<string>} - A Promise that resolves to the generated responses from the GPT model, joined by newlines.
51
- */
52
- async askGptOnPage(prompt) {
53
- const html = await this.helper.grabSource();
54
-
55
- const htmlChunks = splitByChunks(html, this.options.chunkSize);
56
-
57
- if (htmlChunks.length > 1) this.debug(`Splitting HTML into ${htmlChunks.length} chunks`);
58
-
59
- const responses = [];
60
-
61
- for (const chunk of htmlChunks) {
62
- const messages = [
63
- { role: 'user', content: prompt },
64
- { role: 'user', content: `Within this HTML: ${minifyHtml(chunk)}` },
65
- ];
66
-
67
- if (htmlChunks.length > 1) messages.push({ role: 'user', content: 'If action is not possible on this page, do not propose anything, I will send another HTML fragment' });
68
-
69
- const response = await this.aiAssistant.createCompletion(messages);
70
-
71
- console.log(response);
72
-
73
- responses.push(response);
74
- }
75
-
76
- return responses.join('\n\n');
77
- }
78
-
79
- /**
80
- * Asks the OpenAI GPT-3.5 language model a question based on the provided prompt within the context of a specific HTML fragment on the current page.
81
- *
82
- * ```js
83
- * I.askGptOnPageFragment('describe features of this screen', '.screen');
84
- * ```
85
- *
86
- * @async
87
- * @param {string} prompt - The question or prompt to ask the GPT-3.5 model.
88
- * @param {string} locator - The locator or selector used to identify the HTML fragment on the page.
89
- * @returns {Promise<string>} - A Promise that resolves to the generated response from the GPT model.
90
- */
91
- async askGptOnPageFragment(prompt, locator) {
92
- const html = await this.helper.grabHTMLFrom(locator);
93
-
94
- const messages = [
95
- { role: 'user', content: prompt },
96
- { role: 'user', content: `Within this HTML: ${minifyHtml(html)}` },
97
- ];
98
-
99
- const response = await this.aiAssistant.createCompletion(messages);
100
-
101
- console.log(response);
102
-
103
- return response;
104
- }
105
-
106
- /**
107
- * Send a general request to ChatGPT and return response.
108
- * @param {string} prompt
109
- * @returns {Promise<string>} - A Promise that resolves to the generated response from the GPT model.
110
- */
111
- async askGptGeneralPrompt(prompt) {
112
- const messages = [
113
- { role: 'user', content: prompt },
114
- ];
115
-
116
- const completion = await this.aiAssistant.createCompletion(messages);
117
-
118
- const response = completion?.data?.choices[0]?.message?.content;
119
-
120
- console.log(response);
121
-
122
- return response;
123
- }
124
- }
125
-
126
- module.exports = OpenAI;