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.
- package/README.md +24 -25
- package/lib/actor.js +6 -3
- package/lib/ai.js +12 -3
- package/lib/cli.js +12 -2
- package/lib/codecept.js +4 -0
- package/lib/colorUtils.js +10 -0
- package/lib/command/definitions.js +2 -7
- package/lib/command/dryRun.js +2 -1
- package/lib/command/info.js +24 -0
- package/lib/command/init.js +51 -5
- package/lib/command/run-multiple/collection.js +17 -5
- package/lib/command/run-multiple.js +4 -2
- package/lib/command/run-workers.js +66 -4
- package/lib/command/run.js +7 -0
- package/lib/command/workers/runTests.js +39 -0
- package/lib/data/context.js +14 -6
- package/lib/event.js +4 -0
- package/lib/helper/ApiDataFactory.js +2 -1
- package/lib/helper/Appium.js +73 -24
- package/lib/helper/Expect.js +422 -0
- package/lib/helper/FileSystem.js +1 -1
- package/lib/helper/GraphQL.js +25 -0
- package/lib/helper/Nightmare.js +9 -4
- package/lib/helper/OpenAI.js +14 -10
- package/lib/helper/Playwright.js +1205 -288
- package/lib/helper/Protractor.js +11 -6
- package/lib/helper/Puppeteer.js +173 -61
- package/lib/helper/TestCafe.js +44 -9
- package/lib/helper/WebDriver.js +231 -82
- package/lib/helper/errors/ElementNotFound.js +2 -1
- package/lib/helper/extras/PlaywrightReactVueLocator.js +38 -0
- package/lib/helper/scripts/blurElement.js +17 -0
- package/lib/helper/scripts/focusElement.js +17 -0
- package/lib/helper/scripts/highlightElement.js +2 -2
- package/lib/html.js +3 -3
- package/lib/interfaces/bdd.js +1 -1
- package/lib/interfaces/gherkin.js +37 -3
- package/lib/interfaces/scenarioConfig.js +1 -0
- package/lib/locator.js +17 -4
- package/lib/mochaFactory.js +2 -1
- package/lib/output.js +1 -1
- package/lib/pause.js +12 -9
- package/lib/plugin/autoLogin.js +45 -10
- package/lib/plugin/heal.js +47 -17
- package/lib/plugin/retryFailedStep.js +10 -1
- package/lib/plugin/retryTo.js +2 -4
- package/lib/plugin/selenoid.js +6 -1
- package/lib/plugin/standardActingHelpers.js +0 -2
- package/lib/plugin/stepByStepReport.js +2 -2
- package/lib/plugin/tryTo.js +5 -7
- package/lib/plugin/wdio.js +0 -1
- package/lib/recorder.js +20 -9
- package/lib/session.js +1 -1
- package/lib/step.js +30 -11
- package/lib/ui.js +1 -0
- package/lib/utils.js +18 -1
- package/lib/workers.js +28 -3
- package/package.json +108 -98
- package/translations/de-DE.js +5 -0
- package/translations/fr-FR.js +14 -1
- package/translations/it-IT.js +1 -0
- package/translations/ja-JP.js +5 -0
- package/translations/pl-PL.js +5 -0
- package/translations/pt-BR.js +1 -0
- package/translations/ru-RU.js +1 -0
- package/translations/zh-CN.js +5 -0
- package/translations/zh-TW.js +5 -0
- package/typings/index.d.ts +8 -6
- package/typings/promiseBasedTypes.d.ts +784 -822
- package/typings/types.d.ts +1214 -727
- package/CHANGELOG.md +0 -2492
- package/docs/advanced.md +0 -351
- package/docs/ai.md +0 -246
- package/docs/api.md +0 -323
- package/docs/basics.md +0 -980
- package/docs/bdd.md +0 -535
- package/docs/best.md +0 -237
- package/docs/books.md +0 -37
- package/docs/bootstrap.md +0 -135
- package/docs/build/ApiDataFactory.js +0 -409
- package/docs/build/Appium.js +0 -1978
- package/docs/build/FileSystem.js +0 -228
- package/docs/build/GraphQL.js +0 -204
- package/docs/build/GraphQLDataFactory.js +0 -309
- package/docs/build/JSONResponse.js +0 -338
- package/docs/build/Mochawesome.js +0 -71
- package/docs/build/Nightmare.js +0 -2147
- package/docs/build/OpenAI.js +0 -122
- package/docs/build/Playwright.js +0 -4134
- package/docs/build/Polly.js +0 -42
- package/docs/build/Protractor.js +0 -2701
- package/docs/build/Puppeteer.js +0 -3743
- package/docs/build/REST.js +0 -344
- package/docs/build/SeleniumWebdriver.js +0 -76
- package/docs/build/TestCafe.js +0 -2059
- package/docs/build/WebDriver.js +0 -4042
- package/docs/changelog.md +0 -2501
- package/docs/commands.md +0 -254
- package/docs/community-helpers.md +0 -58
- package/docs/configuration.md +0 -157
- package/docs/continuous-integration.md +0 -22
- package/docs/custom-helpers.md +0 -306
- package/docs/data.md +0 -375
- package/docs/detox.md +0 -235
- package/docs/docker.md +0 -137
- package/docs/email.md +0 -183
- package/docs/examples.md +0 -149
- package/docs/helpers/ApiDataFactory.md +0 -266
- package/docs/helpers/Appium.md +0 -1317
- package/docs/helpers/Detox.md +0 -586
- package/docs/helpers/FileSystem.md +0 -152
- package/docs/helpers/GraphQL.md +0 -130
- package/docs/helpers/GraphQLDataFactory.md +0 -226
- package/docs/helpers/JSONResponse.md +0 -254
- package/docs/helpers/Mochawesome.md +0 -8
- package/docs/helpers/MockRequest.md +0 -377
- package/docs/helpers/Nightmare.md +0 -1258
- package/docs/helpers/OpenAI.md +0 -70
- package/docs/helpers/Playwright.md +0 -2250
- package/docs/helpers/Polly.md +0 -44
- package/docs/helpers/Puppeteer-firefox.md +0 -86
- package/docs/helpers/Puppeteer.md +0 -2147
- package/docs/helpers/REST.md +0 -218
- package/docs/helpers/TestCafe.md +0 -1224
- package/docs/helpers/WebDriver.md +0 -2325
- package/docs/hooks.md +0 -340
- package/docs/index.md +0 -111
- package/docs/installation.md +0 -75
- package/docs/internal-api.md +0 -265
- package/docs/locators.md +0 -331
- package/docs/mobile-react-native-locators.md +0 -67
- package/docs/mobile.md +0 -344
- package/docs/nightmare.md +0 -223
- package/docs/pageobjects.md +0 -291
- package/docs/parallel.md +0 -288
- package/docs/playwright.md +0 -609
- package/docs/plugins.md +0 -1225
- package/docs/puppeteer.md +0 -316
- package/docs/quickstart.md +0 -163
- package/docs/react.md +0 -69
- package/docs/reports.md +0 -392
- package/docs/secrets.md +0 -36
- package/docs/shadow.md +0 -68
- package/docs/shared/keys.mustache +0 -31
- package/docs/shared/react.mustache +0 -1
- package/docs/testcafe.md +0 -174
- package/docs/translation.md +0 -247
- package/docs/tutorial.md +0 -271
- package/docs/typescript.md +0 -180
- package/docs/ui.md +0 -59
- package/docs/videos.md +0 -28
- package/docs/visual.md +0 -202
- package/docs/vue.md +0 -121
- package/docs/webapi/amOnPage.mustache +0 -11
- package/docs/webapi/appendField.mustache +0 -11
- package/docs/webapi/attachFile.mustache +0 -12
- package/docs/webapi/checkOption.mustache +0 -13
- package/docs/webapi/clearCookie.mustache +0 -10
- package/docs/webapi/clearField.mustache +0 -9
- package/docs/webapi/click.mustache +0 -25
- package/docs/webapi/clickLink.mustache +0 -8
- package/docs/webapi/closeCurrentTab.mustache +0 -7
- package/docs/webapi/closeOtherTabs.mustache +0 -8
- package/docs/webapi/dontSee.mustache +0 -11
- package/docs/webapi/dontSeeCheckboxIsChecked.mustache +0 -10
- package/docs/webapi/dontSeeCookie.mustache +0 -8
- package/docs/webapi/dontSeeCurrentUrlEquals.mustache +0 -10
- package/docs/webapi/dontSeeElement.mustache +0 -8
- package/docs/webapi/dontSeeElementInDOM.mustache +0 -8
- package/docs/webapi/dontSeeInCurrentUrl.mustache +0 -4
- package/docs/webapi/dontSeeInField.mustache +0 -11
- package/docs/webapi/dontSeeInSource.mustache +0 -8
- package/docs/webapi/dontSeeInTitle.mustache +0 -8
- package/docs/webapi/doubleClick.mustache +0 -13
- package/docs/webapi/downloadFile.mustache +0 -12
- package/docs/webapi/dragAndDrop.mustache +0 -9
- package/docs/webapi/dragSlider.mustache +0 -11
- package/docs/webapi/executeAsyncScript.mustache +0 -24
- package/docs/webapi/executeScript.mustache +0 -26
- package/docs/webapi/fillField.mustache +0 -16
- package/docs/webapi/forceClick.mustache +0 -28
- package/docs/webapi/forceRightClick.mustache +0 -18
- package/docs/webapi/grabAllWindowHandles.mustache +0 -7
- package/docs/webapi/grabAttributeFrom.mustache +0 -10
- package/docs/webapi/grabAttributeFromAll.mustache +0 -9
- package/docs/webapi/grabBrowserLogs.mustache +0 -9
- package/docs/webapi/grabCookie.mustache +0 -11
- package/docs/webapi/grabCssPropertyFrom.mustache +0 -11
- package/docs/webapi/grabCssPropertyFromAll.mustache +0 -10
- package/docs/webapi/grabCurrentUrl.mustache +0 -9
- package/docs/webapi/grabCurrentWindowHandle.mustache +0 -6
- package/docs/webapi/grabDataFromPerformanceTiming.mustache +0 -20
- package/docs/webapi/grabElementBoundingRect.mustache +0 -20
- package/docs/webapi/grabGeoLocation.mustache +0 -8
- package/docs/webapi/grabHTMLFrom.mustache +0 -10
- package/docs/webapi/grabHTMLFromAll.mustache +0 -9
- package/docs/webapi/grabNumberOfOpenTabs.mustache +0 -8
- package/docs/webapi/grabNumberOfVisibleElements.mustache +0 -9
- package/docs/webapi/grabPageScrollPosition.mustache +0 -8
- package/docs/webapi/grabPopupText.mustache +0 -5
- package/docs/webapi/grabSource.mustache +0 -8
- package/docs/webapi/grabTextFrom.mustache +0 -10
- package/docs/webapi/grabTextFromAll.mustache +0 -9
- package/docs/webapi/grabTitle.mustache +0 -8
- package/docs/webapi/grabValueFrom.mustache +0 -9
- package/docs/webapi/grabValueFromAll.mustache +0 -8
- package/docs/webapi/moveCursorTo.mustache +0 -12
- package/docs/webapi/openNewTab.mustache +0 -7
- package/docs/webapi/pressKey.mustache +0 -12
- package/docs/webapi/pressKeyDown.mustache +0 -12
- package/docs/webapi/pressKeyUp.mustache +0 -12
- package/docs/webapi/pressKeyWithKeyNormalization.mustache +0 -60
- package/docs/webapi/refreshPage.mustache +0 -6
- package/docs/webapi/resizeWindow.mustache +0 -6
- package/docs/webapi/rightClick.mustache +0 -14
- package/docs/webapi/saveElementScreenshot.mustache +0 -10
- package/docs/webapi/saveScreenshot.mustache +0 -12
- package/docs/webapi/say.mustache +0 -10
- package/docs/webapi/scrollIntoView.mustache +0 -11
- package/docs/webapi/scrollPageToBottom.mustache +0 -6
- package/docs/webapi/scrollPageToTop.mustache +0 -6
- package/docs/webapi/scrollTo.mustache +0 -12
- package/docs/webapi/see.mustache +0 -11
- package/docs/webapi/seeAttributesOnElements.mustache +0 -9
- package/docs/webapi/seeCheckboxIsChecked.mustache +0 -10
- package/docs/webapi/seeCookie.mustache +0 -8
- package/docs/webapi/seeCssPropertiesOnElements.mustache +0 -9
- package/docs/webapi/seeCurrentUrlEquals.mustache +0 -11
- package/docs/webapi/seeElement.mustache +0 -8
- package/docs/webapi/seeElementInDOM.mustache +0 -8
- package/docs/webapi/seeInCurrentUrl.mustache +0 -8
- package/docs/webapi/seeInField.mustache +0 -12
- package/docs/webapi/seeInPopup.mustache +0 -8
- package/docs/webapi/seeInSource.mustache +0 -7
- package/docs/webapi/seeInTitle.mustache +0 -8
- package/docs/webapi/seeNumberOfElements.mustache +0 -11
- package/docs/webapi/seeNumberOfVisibleElements.mustache +0 -10
- package/docs/webapi/seeTextEquals.mustache +0 -9
- package/docs/webapi/seeTitleEquals.mustache +0 -8
- package/docs/webapi/selectOption.mustache +0 -21
- package/docs/webapi/setCookie.mustache +0 -16
- package/docs/webapi/setGeoLocation.mustache +0 -12
- package/docs/webapi/switchTo.mustache +0 -9
- package/docs/webapi/switchToNextTab.mustache +0 -10
- package/docs/webapi/switchToPreviousTab.mustache +0 -10
- package/docs/webapi/type.mustache +0 -21
- package/docs/webapi/uncheckOption.mustache +0 -13
- package/docs/webapi/wait.mustache +0 -8
- package/docs/webapi/waitForClickable.mustache +0 -11
- package/docs/webapi/waitForDetached.mustache +0 -10
- package/docs/webapi/waitForElement.mustache +0 -11
- package/docs/webapi/waitForEnabled.mustache +0 -6
- package/docs/webapi/waitForFunction.mustache +0 -17
- package/docs/webapi/waitForInvisible.mustache +0 -10
- package/docs/webapi/waitForText.mustache +0 -13
- package/docs/webapi/waitForValue.mustache +0 -10
- package/docs/webapi/waitForVisible.mustache +0 -10
- package/docs/webapi/waitInUrl.mustache +0 -9
- package/docs/webapi/waitNumberOfVisibleElements.mustache +0 -10
- package/docs/webapi/waitToHide.mustache +0 -10
- package/docs/webapi/waitUrlEquals.mustache +0 -10
- package/docs/webdriver.md +0 -657
- package/docs/wiki/Books-&-Posts.md +0 -27
- package/docs/wiki/Community-Helpers-&-Plugins.md +0 -49
- package/docs/wiki/Converting-Playwright-to-Istanbul-Coverage.md +0 -29
- package/docs/wiki/Examples.md +0 -139
- package/docs/wiki/Google-Summer-of-Code-(GSoC)-2020.md +0 -68
- package/docs/wiki/Home.md +0 -16
- package/docs/wiki/Release-Process.md +0 -24
- package/docs/wiki/Roadmap.md +0 -23
- package/docs/wiki/Tests.md +0 -1393
- package/docs/wiki/Upgrading-to-CodeceptJS-3.md +0 -153
- package/docs/wiki/Videos.md +0 -19
|
@@ -89,8 +89,8 @@ module.exports = function (config) {
|
|
|
89
89
|
const reportDir = config.output ? path.resolve(global.codecept_dir, config.output) : defaultConfig.output;
|
|
90
90
|
|
|
91
91
|
event.dispatcher.on(event.test.before, (test) => {
|
|
92
|
-
const
|
|
93
|
-
dir = path.join(reportDir, `record_${
|
|
92
|
+
const sha256hash = crypto.createHash('sha256').update(test.file + test.title).digest('hex');
|
|
93
|
+
dir = path.join(reportDir, `record_${sha256hash}`);
|
|
94
94
|
mkdirp.sync(dir);
|
|
95
95
|
stepNum = 0;
|
|
96
96
|
error = null;
|
package/lib/plugin/tryTo.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
const recorder = require('../recorder');
|
|
2
|
-
const store = require('../store');
|
|
3
2
|
const { debug } = require('../output');
|
|
4
3
|
|
|
5
4
|
const defaultConfig = {
|
|
@@ -9,7 +8,7 @@ const defaultConfig = {
|
|
|
9
8
|
/**
|
|
10
9
|
*
|
|
11
10
|
*
|
|
12
|
-
* Adds global `tryTo` function
|
|
11
|
+
* Adds global `tryTo` function in which all failed steps won't fail a test but will return true/false.
|
|
13
12
|
*
|
|
14
13
|
* Enable this plugin in `codecept.conf.js` (enabled by default for new setups):
|
|
15
14
|
*
|
|
@@ -47,7 +46,7 @@ const defaultConfig = {
|
|
|
47
46
|
* ```js
|
|
48
47
|
* const assert = require('assert');
|
|
49
48
|
* ```
|
|
50
|
-
* Then use the
|
|
49
|
+
* Then use the assertion:
|
|
51
50
|
* const result1 = await tryTo(() => I.see('Hello, user'));
|
|
52
51
|
* const result2 = await tryTo(() => I.seeElement('.welcome'));
|
|
53
52
|
* assert.ok(result1 && result2, 'Assertions were not succesful');
|
|
@@ -70,7 +69,7 @@ const defaultConfig = {
|
|
|
70
69
|
* const tryTo = codeceptjs.container.plugins('tryTo');
|
|
71
70
|
* ```
|
|
72
71
|
*
|
|
73
|
-
*/
|
|
72
|
+
*/
|
|
74
73
|
module.exports = function (config) {
|
|
75
74
|
config = Object.assign(defaultConfig, config);
|
|
76
75
|
|
|
@@ -81,11 +80,10 @@ module.exports = function (config) {
|
|
|
81
80
|
};
|
|
82
81
|
|
|
83
82
|
function tryTo(callback) {
|
|
84
|
-
const mode = store.debugMode;
|
|
85
83
|
let result = false;
|
|
86
84
|
return recorder.add('tryTo', () => {
|
|
87
|
-
store.debugMode = true;
|
|
88
85
|
recorder.session.start('tryTo');
|
|
86
|
+
process.env.TRY_TO = 'true';
|
|
89
87
|
callback();
|
|
90
88
|
recorder.add(() => {
|
|
91
89
|
result = true;
|
|
@@ -100,7 +98,7 @@ function tryTo(callback) {
|
|
|
100
98
|
return result;
|
|
101
99
|
});
|
|
102
100
|
return recorder.add('result', () => {
|
|
103
|
-
|
|
101
|
+
process.env.TRY_TO = undefined;
|
|
104
102
|
return result;
|
|
105
103
|
}, true, false);
|
|
106
104
|
}, false, false);
|
package/lib/plugin/wdio.js
CHANGED
package/lib/recorder.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const debug = require('debug')('codeceptjs:recorder');
|
|
2
2
|
const promiseRetry = require('promise-retry');
|
|
3
|
-
|
|
3
|
+
const { printObjectProperties } = require('./utils');
|
|
4
4
|
const { log } = require('./output');
|
|
5
5
|
|
|
6
6
|
const MAX_TASKS = 100;
|
|
@@ -11,6 +11,7 @@ let errFn;
|
|
|
11
11
|
let queueId = 0;
|
|
12
12
|
let sessionId = null;
|
|
13
13
|
let asyncErr = null;
|
|
14
|
+
let ignoredErrs = [];
|
|
14
15
|
|
|
15
16
|
let tasks = [];
|
|
16
17
|
let oldPromises = [];
|
|
@@ -41,6 +42,7 @@ module.exports = {
|
|
|
41
42
|
* @inner
|
|
42
43
|
*/
|
|
43
44
|
start() {
|
|
45
|
+
debug('Starting recording promises');
|
|
44
46
|
running = true;
|
|
45
47
|
asyncErr = null;
|
|
46
48
|
errFn = null;
|
|
@@ -92,8 +94,10 @@ module.exports = {
|
|
|
92
94
|
promise = Promise.resolve();
|
|
93
95
|
oldPromises = [];
|
|
94
96
|
tasks = [];
|
|
97
|
+
ignoredErrs = [];
|
|
95
98
|
this.session.running = false;
|
|
96
|
-
this
|
|
99
|
+
// reset this retries makes the retryFailedStep plugin won't work if there is Before/BeforeSuit block due to retries is undefined on Scenario
|
|
100
|
+
// this.retries = [];
|
|
97
101
|
},
|
|
98
102
|
|
|
99
103
|
/**
|
|
@@ -175,7 +179,7 @@ module.exports = {
|
|
|
175
179
|
return;
|
|
176
180
|
}
|
|
177
181
|
tasks.push(taskName);
|
|
178
|
-
|
|
182
|
+
debug(`${currentQueue()}Queued | ${taskName}`);
|
|
179
183
|
|
|
180
184
|
return promise = Promise.resolve(promise).then((res) => {
|
|
181
185
|
// prefer options for non-conditional retries
|
|
@@ -224,10 +228,12 @@ module.exports = {
|
|
|
224
228
|
* @inner
|
|
225
229
|
*/
|
|
226
230
|
catch(customErrFn) {
|
|
231
|
+
const fnDescription = customErrFn?.toString()?.replace(/\s{2,}/g, ' ').replace(/\n/g, ' ')?.slice(0, 50);
|
|
232
|
+
debug(`${currentQueue()}Queued | catch with error handler ${fnDescription || ''}`);
|
|
227
233
|
return promise = promise.catch((err) => {
|
|
228
|
-
log(`${currentQueue()}Error | ${err}
|
|
234
|
+
log(`${currentQueue()}Error | ${err} ${fnDescription}...`);
|
|
229
235
|
if (!(err instanceof Error)) { // strange things may happen
|
|
230
|
-
err = new Error(`[Wrapped Error] ${
|
|
236
|
+
err = new Error(`[Wrapped Error] ${printObjectProperties(err)}`); // we should be prepared for them
|
|
231
237
|
}
|
|
232
238
|
if (customErrFn) {
|
|
233
239
|
customErrFn(err);
|
|
@@ -244,15 +250,15 @@ module.exports = {
|
|
|
244
250
|
* @inner
|
|
245
251
|
*/
|
|
246
252
|
catchWithoutStop(customErrFn) {
|
|
253
|
+
const fnDescription = customErrFn?.toString()?.replace(/\s{2,}/g, ' ').replace(/\n/g, ' ')?.slice(0, 50);
|
|
247
254
|
return promise = promise.catch((err) => {
|
|
248
|
-
|
|
255
|
+
if (ignoredErrs.includes(err)) return; // already caught
|
|
256
|
+
log(`${currentQueue()}Error (Non-Terminated) | ${err} | ${fnDescription || ''}...`);
|
|
249
257
|
if (!(err instanceof Error)) { // strange things may happen
|
|
250
258
|
err = new Error(`[Wrapped Error] ${JSON.stringify(err)}`); // we should be prepared for them
|
|
251
259
|
}
|
|
252
260
|
if (customErrFn) {
|
|
253
261
|
return customErrFn(err);
|
|
254
|
-
} if (errFn) {
|
|
255
|
-
return errFn(err);
|
|
256
262
|
}
|
|
257
263
|
});
|
|
258
264
|
},
|
|
@@ -264,12 +270,17 @@ module.exports = {
|
|
|
264
270
|
* @param {*} err
|
|
265
271
|
* @inner
|
|
266
272
|
*/
|
|
273
|
+
|
|
267
274
|
throw(err) {
|
|
268
|
-
return this.add(`throw error ${err}`, () => {
|
|
275
|
+
return this.add(`throw error: ${err.message}`, () => {
|
|
269
276
|
throw err;
|
|
270
277
|
});
|
|
271
278
|
},
|
|
272
279
|
|
|
280
|
+
ignoreErr(err) {
|
|
281
|
+
ignoredErrs.push(err);
|
|
282
|
+
},
|
|
283
|
+
|
|
273
284
|
/**
|
|
274
285
|
* @param {*} err
|
|
275
286
|
* @inner
|
package/lib/session.js
CHANGED
|
@@ -19,7 +19,7 @@ const savedSessions = {};
|
|
|
19
19
|
* @param {CodeceptJS.LocatorOrString} sessionName
|
|
20
20
|
* @param {Function | Object<string, *>} config
|
|
21
21
|
* @param {Function} [fn]
|
|
22
|
-
* @return {
|
|
22
|
+
* @return {any}
|
|
23
23
|
*/
|
|
24
24
|
function session(sessionName, config, fn) {
|
|
25
25
|
if (typeof config === 'function') {
|
package/lib/step.js
CHANGED
|
@@ -119,7 +119,9 @@ class Step {
|
|
|
119
119
|
}
|
|
120
120
|
let result;
|
|
121
121
|
try {
|
|
122
|
-
|
|
122
|
+
if (this.helperMethod !== 'say') {
|
|
123
|
+
result = this.helper[this.helperMethod].apply(this.helper, this.args);
|
|
124
|
+
}
|
|
123
125
|
this.setStatus('success');
|
|
124
126
|
} catch (err) {
|
|
125
127
|
this.setStatus('failed');
|
|
@@ -138,13 +140,7 @@ class Step {
|
|
|
138
140
|
|
|
139
141
|
/** @return {string} */
|
|
140
142
|
humanize() {
|
|
141
|
-
return this.name
|
|
142
|
-
// insert a space before all caps
|
|
143
|
-
.replace(/([A-Z])/g, ' $1')
|
|
144
|
-
// _ chars to spaces
|
|
145
|
-
.replace('_', ' ')
|
|
146
|
-
// uppercase the first character
|
|
147
|
-
.replace(/^(.)|\s(.)/g, $1 => $1.toLowerCase());
|
|
143
|
+
return humanizeString(this.name);
|
|
148
144
|
}
|
|
149
145
|
|
|
150
146
|
/** @return {string} */
|
|
@@ -247,12 +243,21 @@ class MetaStep extends Step {
|
|
|
247
243
|
}
|
|
248
244
|
|
|
249
245
|
toString() {
|
|
250
|
-
const actorText =
|
|
251
|
-
|
|
246
|
+
const actorText = this.actor;
|
|
247
|
+
|
|
248
|
+
if (this.isBDD() || this.isWithin()) {
|
|
249
|
+
return `${this.prefix}${actorText} ${this.name} "${this.humanizeArgs()}${this.suffix}"`;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
if (actorText === 'I') {
|
|
253
|
+
return `${this.prefix}${actorText} ${this.humanize()} ${this.humanizeArgs()}${this.suffix}`;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
return `On ${this.prefix}${actorText}: ${this.humanize()} ${this.humanizeArgs()}${this.suffix}`;
|
|
252
257
|
}
|
|
253
258
|
|
|
254
259
|
humanize() {
|
|
255
|
-
return this.name;
|
|
260
|
+
return humanizeString(this.name);
|
|
256
261
|
}
|
|
257
262
|
|
|
258
263
|
setTrace() {
|
|
@@ -316,3 +321,17 @@ function dryRunResolver() {
|
|
|
316
321
|
},
|
|
317
322
|
};
|
|
318
323
|
}
|
|
324
|
+
|
|
325
|
+
function humanizeString(string) {
|
|
326
|
+
// split strings by words, then make them all lowercase
|
|
327
|
+
const _result = string.replace(/([a-z](?=[A-Z]))/g, '$1 ')
|
|
328
|
+
.split(' ')
|
|
329
|
+
.map(word => word.toLowerCase());
|
|
330
|
+
|
|
331
|
+
_result[0] = _result[0] === 'i' ? capitalizeFLetter(_result[0]) : _result[0];
|
|
332
|
+
return _result.join(' ').trim();
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
function capitalizeFLetter(string) {
|
|
336
|
+
return (string[0].toUpperCase() + string.slice(1));
|
|
337
|
+
}
|
package/lib/ui.js
CHANGED
|
@@ -168,6 +168,7 @@ module.exports = function (suite) {
|
|
|
168
168
|
context.Scenario.only = function (title, opts, fn) {
|
|
169
169
|
const reString = `^${escapeRe(`${suites[0].title}: ${title}`.replace(/( \| {.+})?$/g, ''))}`;
|
|
170
170
|
mocha.grep(new RegExp(reString));
|
|
171
|
+
process.env.SCENARIO_ONLY = true;
|
|
171
172
|
return addScenario(title, opts, fn);
|
|
172
173
|
};
|
|
173
174
|
|
package/lib/utils.js
CHANGED
|
@@ -11,7 +11,7 @@ function deepMerge(target, source) {
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
module.exports.genTestId = (test) => {
|
|
14
|
-
return require('crypto').createHash('
|
|
14
|
+
return require('crypto').createHash('sha256').update(test.fullTitle()).digest('base64')
|
|
15
15
|
.slice(0, -2);
|
|
16
16
|
};
|
|
17
17
|
|
|
@@ -459,3 +459,20 @@ module.exports.isNotSet = function (obj) {
|
|
|
459
459
|
module.exports.emptyFolder = async (directoryPath) => {
|
|
460
460
|
require('child_process').execSync(`rm -rf ${directoryPath}/*`);
|
|
461
461
|
};
|
|
462
|
+
|
|
463
|
+
module.exports.printObjectProperties = (obj) => {
|
|
464
|
+
if (typeof obj !== 'object' || obj === null) {
|
|
465
|
+
return obj;
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
let result = '';
|
|
469
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
470
|
+
result += `${key}: "${value}"; `;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
return `{${result}}`;
|
|
474
|
+
};
|
|
475
|
+
|
|
476
|
+
module.exports.normalizeSpacesInString = (string) => {
|
|
477
|
+
return string.replace(/\s+/g, ' ');
|
|
478
|
+
};
|
package/lib/workers.js
CHANGED
|
@@ -94,10 +94,31 @@ const createWorkerObjects = (testGroups, config, testRoot, options, selectedRuns
|
|
|
94
94
|
});
|
|
95
95
|
}
|
|
96
96
|
const workersToExecute = [];
|
|
97
|
+
|
|
98
|
+
const currentOutputFolder = config.output;
|
|
99
|
+
let currentMochawesomeReportDir;
|
|
100
|
+
let currentMochaJunitReporterFile;
|
|
101
|
+
|
|
102
|
+
if (config.mocha && config.mocha.reporterOptions) {
|
|
103
|
+
currentMochawesomeReportDir = config.mocha.reporterOptions?.mochawesome.options.reportDir;
|
|
104
|
+
currentMochaJunitReporterFile = config.mocha.reporterOptions['mocha-junit-reporter'].options.mochaFile;
|
|
105
|
+
}
|
|
106
|
+
|
|
97
107
|
collection.createRuns(selectedRuns, config).forEach((worker) => {
|
|
98
|
-
const
|
|
108
|
+
const separator = path.sep;
|
|
109
|
+
const _config = { ...config };
|
|
110
|
+
let workerName = worker.name.replace(':', '_');
|
|
111
|
+
_config.output = `${currentOutputFolder}${separator}${workerName}`;
|
|
112
|
+
if (config.mocha && config.mocha.reporterOptions) {
|
|
113
|
+
_config.mocha.reporterOptions.mochawesome.options.reportDir = `${currentMochawesomeReportDir}${separator}${workerName}`;
|
|
114
|
+
|
|
115
|
+
const _tempArray = currentMochaJunitReporterFile.split(separator);
|
|
116
|
+
_tempArray.splice(_tempArray.findIndex(item => item.includes('.xml')), 0, workerName);
|
|
117
|
+
_config.mocha.reporterOptions['mocha-junit-reporter'].options.mochaFile = _tempArray.join(separator);
|
|
118
|
+
}
|
|
119
|
+
workerName = worker.getOriginalName() || worker.getName();
|
|
99
120
|
const workerConfig = worker.getConfig();
|
|
100
|
-
workersToExecute.push(getOverridenConfig(workerName, workerConfig,
|
|
121
|
+
workersToExecute.push(getOverridenConfig(workerName, workerConfig, _config));
|
|
101
122
|
});
|
|
102
123
|
const workers = [];
|
|
103
124
|
let index = 0;
|
|
@@ -338,13 +359,16 @@ class Workers extends EventEmitter {
|
|
|
338
359
|
this.stats.start = new Date();
|
|
339
360
|
recorder.startUnlessRunning();
|
|
340
361
|
event.dispatcher.emit(event.workers.before);
|
|
362
|
+
process.env.RUNS_WITH_WORKERS = 'true';
|
|
341
363
|
recorder.add('starting workers', () => {
|
|
342
364
|
for (const worker of this.workers) {
|
|
343
365
|
const workerThread = createWorker(worker);
|
|
344
366
|
this._listenWorkerEvents(workerThread);
|
|
345
367
|
}
|
|
346
368
|
});
|
|
347
|
-
return new Promise(resolve =>
|
|
369
|
+
return new Promise(resolve => {
|
|
370
|
+
this.on('end', resolve);
|
|
371
|
+
});
|
|
348
372
|
}
|
|
349
373
|
|
|
350
374
|
/**
|
|
@@ -469,6 +493,7 @@ class Workers extends EventEmitter {
|
|
|
469
493
|
}
|
|
470
494
|
|
|
471
495
|
output.result(this.stats.passes, this.stats.failures, this.stats.pending, ms(this.stats.duration));
|
|
496
|
+
process.env.RUNS_WITH_WORKERS = 'false';
|
|
472
497
|
}
|
|
473
498
|
}
|
|
474
499
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeceptjs",
|
|
3
|
-
"version": "3.5.
|
|
3
|
+
"version": "3.5.12.beta.7",
|
|
4
4
|
"description": "Supercharged End 2 End Testing Framework for NodeJS",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"acceptance",
|
|
@@ -23,7 +23,6 @@
|
|
|
23
23
|
},
|
|
24
24
|
"files": [
|
|
25
25
|
"bin",
|
|
26
|
-
"docs",
|
|
27
26
|
"lib",
|
|
28
27
|
"translations",
|
|
29
28
|
"typings/**/*.d.ts"
|
|
@@ -40,118 +39,129 @@
|
|
|
40
39
|
"lint": "eslint bin/ examples/ lib/ test/ translations/ runok.js",
|
|
41
40
|
"lint-fix": "eslint bin/ examples/ lib/ test/ translations/ runok.js --fix",
|
|
42
41
|
"docs": "./runok.js docs",
|
|
43
|
-
"test:unit": "mocha test/unit --recursive",
|
|
44
|
-
"test:runner": "mocha test/runner --recursive --timeout
|
|
42
|
+
"test:unit": "mocha test/unit --recursive --timeout 10000",
|
|
43
|
+
"test:runner": "mocha test/runner --recursive --timeout 10000",
|
|
45
44
|
"test": "npm run test:unit && npm run test:runner",
|
|
46
|
-
"test:appium-quick": "mocha test/helper/
|
|
47
|
-
"test:appium-other": "mocha test/helper/
|
|
45
|
+
"test:appium-quick": "mocha test/helper/AppiumV2_test.js --grep 'quick'",
|
|
46
|
+
"test:appium-other": "mocha test/helper/AppiumV2_test.js --grep 'second'",
|
|
47
|
+
"test:ios:appium-quick": "mocha test/helper/AppiumV2_ios_test.js --grep 'quick'",
|
|
48
|
+
"test:ios:appium-other": "mocha test/helper/AppiumV2_ios_test.js --grep 'second'",
|
|
48
49
|
"test-app:start": "php -S 127.0.0.1:8000 -t test/data/app",
|
|
49
50
|
"test-app:stop": "kill -9 $(lsof -t -i:8000)",
|
|
50
51
|
"test:unit:webbapi:playwright": "mocha test/helper/Playwright_test.js",
|
|
51
52
|
"test:unit:webbapi:puppeteer": "mocha test/helper/Puppeteer_test.js",
|
|
52
53
|
"test:unit:webbapi:webDriver": "mocha test/helper/WebDriver_test.js",
|
|
54
|
+
"test:unit:webbapi:webDriver:noSeleniumServer": "mocha test/helper/WebDriver.noSeleniumServer_test.js",
|
|
55
|
+
"test:unit:webbapi:webDriver:devtools": "mocha test/helper/WebDriver_devtools_test.js --exit",
|
|
53
56
|
"test:unit:webbapi:testCafe": "mocha test/helper/TestCafe_test.js",
|
|
57
|
+
"test:unit:expect": "mocha test/helper/Expect_test.js",
|
|
58
|
+
"test:plugin": "mocha test/plugin/plugin_test.js",
|
|
54
59
|
"def": "./runok.js def",
|
|
55
60
|
"dev:graphql": "node test/data/graphql/index.js",
|
|
56
61
|
"publish:site": "./runok.js publish:site",
|
|
57
|
-
"update-contributor-faces": "contributor
|
|
62
|
+
"update-contributor-faces": "./runok.js contributor:faces",
|
|
58
63
|
"dtslint": "dtslint typings --localTs './node_modules/typescript/lib'",
|
|
59
|
-
"prepare": "husky install"
|
|
64
|
+
"prepare": "husky install",
|
|
65
|
+
"prepare-release": "./runok.js versioning && ./runok.js get:commit-log"
|
|
60
66
|
},
|
|
61
67
|
"dependencies": {
|
|
62
|
-
"@codeceptjs/configure": "
|
|
63
|
-
"@codeceptjs/helper": "
|
|
64
|
-
"@cucumber/cucumber-expressions": "
|
|
65
|
-
"@cucumber/gherkin": "
|
|
66
|
-
"@cucumber/messages": "
|
|
67
|
-
"@xmldom/xmldom": "
|
|
68
|
-
"acorn": "
|
|
69
|
-
"arrify": "
|
|
70
|
-
"axios": "
|
|
71
|
-
"chai": "
|
|
72
|
-
"chai-deep-match": "
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"
|
|
85
|
-
"
|
|
86
|
-
"
|
|
87
|
-
"
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
"
|
|
91
|
-
"
|
|
92
|
-
"
|
|
93
|
-
"
|
|
94
|
-
"
|
|
95
|
-
"
|
|
96
|
-
"
|
|
97
|
-
"
|
|
98
|
-
"
|
|
99
|
-
"
|
|
100
|
-
"
|
|
101
|
-
"
|
|
102
|
-
"
|
|
68
|
+
"@codeceptjs/configure": "0.10.0",
|
|
69
|
+
"@codeceptjs/helper": "2.0.1",
|
|
70
|
+
"@cucumber/cucumber-expressions": "17",
|
|
71
|
+
"@cucumber/gherkin": "26",
|
|
72
|
+
"@cucumber/messages": "24.0.1",
|
|
73
|
+
"@xmldom/xmldom": "0.8.10",
|
|
74
|
+
"acorn": "8.11.2",
|
|
75
|
+
"arrify": "2.0.1",
|
|
76
|
+
"axios": "1.6.3",
|
|
77
|
+
"chai": "4.3.8",
|
|
78
|
+
"chai-deep-match": "1.2.1",
|
|
79
|
+
"chai-exclude": "^2.1.0",
|
|
80
|
+
"chai-json-schema": "^1.5.1",
|
|
81
|
+
"chai-json-schema-ajv": "^5.2.4",
|
|
82
|
+
"chai-match-pattern": "^1.3.0",
|
|
83
|
+
"chai-string": "^1.5.0",
|
|
84
|
+
"chalk": "4.1.2",
|
|
85
|
+
"commander": "11.1.0",
|
|
86
|
+
"cross-spawn": "7.0.3",
|
|
87
|
+
"csstoxpath": "1.6.0",
|
|
88
|
+
"devtools": "8.27.2",
|
|
89
|
+
"envinfo": "7.11.0",
|
|
90
|
+
"escape-string-regexp": "4.0.0",
|
|
91
|
+
"figures": "3.2.0",
|
|
92
|
+
"fn-args": "4.0.0",
|
|
93
|
+
"fs-extra": "11.2.0",
|
|
94
|
+
"glob": "6.0.1",
|
|
95
|
+
"html-minifier-terser": "^7.2.0",
|
|
96
|
+
"inquirer": "6.5.2",
|
|
97
|
+
"joi": "17.11.0",
|
|
98
|
+
"js-beautify": "1.14.11",
|
|
99
|
+
"lodash.clonedeep": "4.5.0",
|
|
100
|
+
"lodash.merge": "4.6.2",
|
|
101
|
+
"mkdirp": "1.0.4",
|
|
102
|
+
"mocha": "10.2.0",
|
|
103
|
+
"ms": "2.1.3",
|
|
104
|
+
"openai": "3.2.1",
|
|
105
|
+
"ora-classic": "5.4.2",
|
|
106
|
+
"parse-function": "5.6.4",
|
|
107
|
+
"parse5": "7.1.2",
|
|
108
|
+
"promise-retry": "1.1.1",
|
|
109
|
+
"resq": "1.11.0",
|
|
110
|
+
"sprintf-js": "1.1.1",
|
|
111
|
+
"uuid": "9.0"
|
|
112
|
+
},
|
|
113
|
+
"optionalDependencies": {
|
|
114
|
+
"@codeceptjs/detox-helper": "1.0.2"
|
|
103
115
|
},
|
|
104
116
|
"devDependencies": {
|
|
105
|
-
"@codeceptjs/
|
|
106
|
-
"@
|
|
107
|
-
"@
|
|
108
|
-
"@pollyjs/
|
|
109
|
-
"@
|
|
110
|
-
"@types/inquirer": "
|
|
111
|
-
"@types/node": "
|
|
112
|
-
"@wdio/sauce-service": "
|
|
113
|
-
"@wdio/selenium-standalone-service": "
|
|
114
|
-
"@wdio/utils": "
|
|
117
|
+
"@codeceptjs/mock-request": "0.3.1",
|
|
118
|
+
"@faker-js/faker": "7.6.0",
|
|
119
|
+
"@pollyjs/adapter-puppeteer": "6.0.6",
|
|
120
|
+
"@pollyjs/core": "5.1.0",
|
|
121
|
+
"@types/chai": "^4.3.7",
|
|
122
|
+
"@types/inquirer": "9.0.3",
|
|
123
|
+
"@types/node": "20.10.7",
|
|
124
|
+
"@wdio/sauce-service": "8.27.0",
|
|
125
|
+
"@wdio/selenium-standalone-service": "8.3.2",
|
|
126
|
+
"@wdio/utils": "8.27.2",
|
|
127
|
+
"@xmldom/xmldom": "0.8.10",
|
|
115
128
|
"apollo-server-express": "2.25.3",
|
|
116
|
-
"chai-as-promised": "
|
|
117
|
-
"chai-subset": "
|
|
118
|
-
"contributor-faces": "
|
|
119
|
-
"documentation": "
|
|
120
|
-
"dtslint": "
|
|
121
|
-
"electron": "
|
|
122
|
-
"eslint": "
|
|
123
|
-
"eslint-config-airbnb-base": "
|
|
124
|
-
"eslint-plugin-import": "
|
|
125
|
-
"eslint-plugin-mocha": "
|
|
126
|
-
"expect": "
|
|
127
|
-
"express": "
|
|
128
|
-
"
|
|
129
|
-
"
|
|
130
|
-
"
|
|
131
|
-
"
|
|
132
|
-
"jsdoc": "
|
|
133
|
-
"
|
|
134
|
-
"
|
|
135
|
-
"
|
|
136
|
-
"
|
|
137
|
-
"
|
|
138
|
-
"
|
|
139
|
-
"
|
|
140
|
-
"
|
|
141
|
-
"
|
|
142
|
-
"
|
|
143
|
-
"
|
|
144
|
-
"
|
|
145
|
-
"
|
|
146
|
-
"
|
|
147
|
-
"
|
|
148
|
-
"
|
|
149
|
-
"
|
|
150
|
-
"
|
|
151
|
-
"
|
|
152
|
-
"xml2js": "^0.4.23",
|
|
153
|
-
"xmldom": "^0.5.0",
|
|
154
|
-
"xpath": "0.0.27"
|
|
129
|
+
"chai-as-promised": "7.1.1",
|
|
130
|
+
"chai-subset": "1.6.0",
|
|
131
|
+
"contributor-faces": "1.1.0",
|
|
132
|
+
"documentation": "12.3.0",
|
|
133
|
+
"dtslint": "4.2.1",
|
|
134
|
+
"electron": "28.0.0",
|
|
135
|
+
"eslint": "8.56.0",
|
|
136
|
+
"eslint-config-airbnb-base": "15.0.0",
|
|
137
|
+
"eslint-plugin-import": "2.29.1",
|
|
138
|
+
"eslint-plugin-mocha": "6.3.0",
|
|
139
|
+
"expect": "29.7.0",
|
|
140
|
+
"express": "4.18.2",
|
|
141
|
+
"graphql": "14.6.0",
|
|
142
|
+
"husky": "8.0.3",
|
|
143
|
+
"inquirer-test": "2.0.1",
|
|
144
|
+
"jsdoc": "3.6.11",
|
|
145
|
+
"jsdoc-typeof-plugin": "1.0.0",
|
|
146
|
+
"json-server": "0.10.1",
|
|
147
|
+
"playwright": "1.40.1",
|
|
148
|
+
"puppeteer": "21.1.1",
|
|
149
|
+
"qrcode-terminal": "0.12.0",
|
|
150
|
+
"rosie": "2.1.1",
|
|
151
|
+
"runok": "0.9.3",
|
|
152
|
+
"sinon": "17.0.1",
|
|
153
|
+
"sinon-chai": "3.7.0",
|
|
154
|
+
"testcafe": "3.3.0",
|
|
155
|
+
"ts-morph": "21.0.1",
|
|
156
|
+
"ts-node": "10.9.2",
|
|
157
|
+
"tsd-jsdoc": "2.5.0",
|
|
158
|
+
"typedoc": "0.25.7",
|
|
159
|
+
"typedoc-plugin-markdown": "3.17.1",
|
|
160
|
+
"typescript": "5.3.3",
|
|
161
|
+
"wdio-docker-service": "1.5.0",
|
|
162
|
+
"webdriverio": "8.27.2",
|
|
163
|
+
"xml2js": "0.6.2",
|
|
164
|
+
"xpath": "0.0.34"
|
|
155
165
|
},
|
|
156
166
|
"engines": {
|
|
157
167
|
"node": ">=16.0",
|
package/translations/de-DE.js
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
module.exports = {
|
|
2
2
|
I: 'Ich',
|
|
3
|
+
contexts: {
|
|
4
|
+
Feature: 'Funktionalität',
|
|
5
|
+
Scenario: 'Szenario',
|
|
6
|
+
ScenarioOutline: 'Szenariogrundriss',
|
|
7
|
+
},
|
|
3
8
|
actions: {
|
|
4
9
|
amOutsideAngularApp: 'befinde_mich_außerhalb_der_angular_app',
|
|
5
10
|
amInsideAngularApp: 'bedinde_mich_innerhalb_der_angular_app',
|
package/translations/fr-FR.js
CHANGED
|
@@ -3,6 +3,7 @@ module.exports = {
|
|
|
3
3
|
contexts: {
|
|
4
4
|
Feature: 'Fonctionnalité',
|
|
5
5
|
Scenario: 'Scénario',
|
|
6
|
+
ScenarioOutline: 'Plan du scénario',
|
|
6
7
|
Before: 'Avant',
|
|
7
8
|
After: 'Après',
|
|
8
9
|
BeforeSuite: 'AvantLaSuite',
|
|
@@ -12,11 +13,15 @@ module.exports = {
|
|
|
12
13
|
amOutsideAngularApp: 'suisALExtérieurDeLApplicationAngular',
|
|
13
14
|
amInsideAngularApp: 'suisALIntérieurDeLApplicationAngular',
|
|
14
15
|
waitForElement: 'attendsLElément',
|
|
15
|
-
waitForClickable: '
|
|
16
|
+
waitForClickable: 'attendsDeCliquer',
|
|
16
17
|
waitForVisible: 'attendsPourVoir',
|
|
18
|
+
waitForEnabled: 'attendsLActivationDe',
|
|
19
|
+
waitForInvisible: 'attendsLInvisibilitéDe',
|
|
20
|
+
waitInUrl: 'attendsDansLUrl',
|
|
17
21
|
waitForText: 'attendsLeTexte',
|
|
18
22
|
moveTo: 'vaisSur',
|
|
19
23
|
refresh: 'rafraîchis',
|
|
24
|
+
refreshPage: 'rafraîchisLaPage',
|
|
20
25
|
haveModule: 'ajouteLeModule',
|
|
21
26
|
resetModule: 'réinitialiseLeModule',
|
|
22
27
|
amOnPage: 'suisSurLaPage',
|
|
@@ -59,5 +64,13 @@ module.exports = {
|
|
|
59
64
|
grabCookie: 'prendsLeCookie',
|
|
60
65
|
resizeWindow: 'redimensionneLaFenêtre',
|
|
61
66
|
wait: 'attends',
|
|
67
|
+
clearField: 'effaceLeChamp',
|
|
68
|
+
dontSeeElementInDOM: 'neVoisPasDansLeDOM',
|
|
69
|
+
moveCursorTo: 'bougeLeCurseurSur',
|
|
70
|
+
scrollTo: 'défileVers',
|
|
71
|
+
sendGetRequest: 'envoieLaRequêteGet',
|
|
72
|
+
sendPutRequest: 'envoieLaRequêtePut',
|
|
73
|
+
sendDeleteRequest: 'envoieLaRequêteDelete',
|
|
74
|
+
sendPostRequest: 'envoieLaRequêtePost',
|
|
62
75
|
},
|
|
63
76
|
};
|