codeceptjs 4.0.0-beta.3 → 4.0.0-beta.5
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 +134 -119
- package/bin/codecept.js +12 -2
- package/bin/test-server.js +53 -0
- package/docs/webapi/clearCookie.mustache +1 -1
- package/lib/actor.js +66 -102
- package/lib/ai.js +130 -121
- package/lib/assert/empty.js +3 -5
- package/lib/assert/equal.js +4 -7
- package/lib/assert/include.js +4 -6
- package/lib/assert/throws.js +2 -4
- package/lib/assert/truth.js +2 -2
- package/lib/codecept.js +141 -86
- package/lib/command/check.js +201 -0
- package/lib/command/configMigrate.js +2 -4
- package/lib/command/definitions.js +8 -26
- package/lib/command/dryRun.js +30 -35
- package/lib/command/generate.js +10 -14
- package/lib/command/gherkin/snippets.js +75 -73
- package/lib/command/gherkin/steps.js +1 -1
- package/lib/command/info.js +42 -8
- package/lib/command/init.js +13 -12
- package/lib/command/interactive.js +10 -2
- package/lib/command/list.js +1 -1
- package/lib/command/run-multiple/chunk.js +48 -45
- package/lib/command/run-multiple.js +12 -35
- package/lib/command/run-workers.js +21 -58
- package/lib/command/utils.js +5 -6
- package/lib/command/workers/runTests.js +263 -222
- package/lib/container.js +386 -238
- package/lib/data/context.js +10 -13
- package/lib/data/dataScenarioConfig.js +8 -8
- package/lib/data/dataTableArgument.js +6 -6
- package/lib/data/table.js +5 -11
- package/lib/effects.js +223 -0
- package/lib/element/WebElement.js +327 -0
- package/lib/els.js +158 -0
- package/lib/event.js +21 -17
- package/lib/heal.js +88 -80
- package/lib/helper/AI.js +2 -1
- package/lib/helper/ApiDataFactory.js +4 -7
- package/lib/helper/Appium.js +50 -57
- package/lib/helper/FileSystem.js +3 -3
- package/lib/helper/GraphQLDataFactory.js +4 -4
- package/lib/helper/JSONResponse.js +75 -37
- package/lib/helper/Mochawesome.js +31 -9
- package/lib/helper/Nightmare.js +37 -58
- package/lib/helper/Playwright.js +267 -272
- package/lib/helper/Protractor.js +56 -87
- package/lib/helper/Puppeteer.js +247 -264
- package/lib/helper/REST.js +29 -17
- package/lib/helper/TestCafe.js +22 -47
- package/lib/helper/WebDriver.js +157 -368
- package/lib/helper/extras/PlaywrightPropEngine.js +2 -2
- package/lib/helper/extras/Popup.js +22 -22
- package/lib/helper/network/utils.js +1 -1
- package/lib/helper/testcafe/testcafe-utils.js +27 -28
- package/lib/listener/emptyRun.js +55 -0
- package/lib/listener/exit.js +7 -10
- package/lib/listener/{retry.js → globalRetry.js} +5 -5
- package/lib/listener/globalTimeout.js +165 -0
- package/lib/listener/helpers.js +15 -15
- package/lib/listener/mocha.js +1 -1
- package/lib/listener/result.js +12 -0
- package/lib/listener/retryEnhancer.js +85 -0
- package/lib/listener/steps.js +32 -18
- package/lib/listener/store.js +20 -0
- package/lib/locator.js +1 -1
- package/lib/mocha/asyncWrapper.js +231 -0
- package/lib/{interfaces → mocha}/bdd.js +3 -3
- package/lib/mocha/cli.js +308 -0
- package/lib/mocha/factory.js +104 -0
- package/lib/{interfaces → mocha}/featureConfig.js +32 -12
- package/lib/{interfaces → mocha}/gherkin.js +26 -28
- package/lib/mocha/hooks.js +112 -0
- package/lib/mocha/index.js +12 -0
- package/lib/mocha/inject.js +29 -0
- package/lib/{interfaces → mocha}/scenarioConfig.js +31 -7
- package/lib/mocha/suite.js +82 -0
- package/lib/mocha/test.js +181 -0
- package/lib/mocha/types.d.ts +42 -0
- package/lib/mocha/ui.js +232 -0
- package/lib/output.js +93 -65
- package/lib/pause.js +160 -138
- package/lib/plugin/analyze.js +396 -0
- package/lib/plugin/auth.js +435 -0
- package/lib/plugin/autoDelay.js +8 -8
- package/lib/plugin/autoLogin.js +3 -338
- package/lib/plugin/commentStep.js +6 -1
- package/lib/plugin/coverage.js +10 -22
- package/lib/plugin/customLocator.js +3 -3
- package/lib/plugin/customReporter.js +52 -0
- package/lib/plugin/eachElement.js +1 -1
- package/lib/plugin/fakerTransform.js +1 -1
- package/lib/plugin/heal.js +36 -9
- package/lib/plugin/htmlReporter.js +1947 -0
- package/lib/plugin/pageInfo.js +140 -0
- package/lib/plugin/retryFailedStep.js +17 -18
- package/lib/plugin/retryTo.js +2 -113
- package/lib/plugin/screenshotOnFail.js +17 -58
- package/lib/plugin/selenoid.js +15 -35
- package/lib/plugin/standardActingHelpers.js +4 -1
- package/lib/plugin/stepByStepReport.js +56 -17
- package/lib/plugin/stepTimeout.js +5 -12
- package/lib/plugin/subtitles.js +4 -4
- package/lib/plugin/tryTo.js +3 -102
- package/lib/plugin/wdio.js +8 -10
- package/lib/recorder.js +155 -124
- package/lib/rerun.js +43 -42
- package/lib/result.js +161 -0
- package/lib/secret.js +1 -2
- package/lib/step/base.js +239 -0
- package/lib/step/comment.js +10 -0
- package/lib/step/config.js +50 -0
- package/lib/step/func.js +46 -0
- package/lib/step/helper.js +50 -0
- package/lib/step/meta.js +99 -0
- package/lib/step/record.js +74 -0
- package/lib/step/retry.js +11 -0
- package/lib/step/section.js +55 -0
- package/lib/step.js +21 -332
- package/lib/steps.js +50 -0
- package/lib/store.js +37 -5
- package/lib/template/heal.js +2 -11
- package/lib/test-server.js +323 -0
- package/lib/timeout.js +66 -0
- package/lib/utils.js +351 -218
- package/lib/within.js +75 -55
- package/lib/workerStorage.js +2 -1
- package/lib/workers.js +386 -277
- package/package.json +81 -75
- package/translations/de-DE.js +5 -3
- package/translations/fr-FR.js +5 -4
- package/translations/index.js +1 -0
- package/translations/it-IT.js +4 -3
- package/translations/ja-JP.js +4 -3
- package/translations/nl-NL.js +76 -0
- package/translations/pl-PL.js +4 -3
- package/translations/pt-BR.js +4 -3
- package/translations/ru-RU.js +4 -3
- package/translations/utils.js +9 -0
- package/translations/zh-CN.js +4 -3
- package/translations/zh-TW.js +4 -3
- package/typings/index.d.ts +197 -187
- package/typings/promiseBasedTypes.d.ts +53 -903
- package/typings/types.d.ts +372 -1042
- package/lib/cli.js +0 -257
- package/lib/helper/ExpectHelper.js +0 -391
- package/lib/helper/MockServer.js +0 -221
- package/lib/helper/SoftExpectHelper.js +0 -381
- package/lib/listener/artifacts.js +0 -19
- package/lib/listener/timeout.js +0 -109
- package/lib/mochaFactory.js +0 -113
- package/lib/plugin/debugErrors.js +0 -67
- package/lib/scenario.js +0 -224
- package/lib/ui.js +0 -236
package/lib/within.js
CHANGED
|
@@ -1,70 +1,90 @@
|
|
|
1
|
-
const output = require('./output')
|
|
2
|
-
const store = require('./store')
|
|
3
|
-
const recorder = require('./recorder')
|
|
4
|
-
const container = require('./container')
|
|
5
|
-
const event = require('./event')
|
|
6
|
-
const
|
|
7
|
-
const { isAsyncFunction } = require('./utils')
|
|
1
|
+
const output = require('./output')
|
|
2
|
+
const store = require('./store')
|
|
3
|
+
const recorder = require('./recorder')
|
|
4
|
+
const container = require('./container')
|
|
5
|
+
const event = require('./event')
|
|
6
|
+
const MetaStep = require('./step/meta')
|
|
7
|
+
const { isAsyncFunction } = require('./utils')
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
+
* TODO: move to effects
|
|
11
|
+
*
|
|
10
12
|
* @param {CodeceptJS.LocatorOrString} context
|
|
11
13
|
* @param {Function} fn
|
|
12
14
|
* @return {Promise<*> | undefined}
|
|
13
15
|
*/
|
|
14
16
|
function within(context, fn) {
|
|
15
|
-
const helpers = store.dryRun ? {} : container.helpers()
|
|
16
|
-
const locator = typeof context === 'object' ? JSON.stringify(context) : context
|
|
17
|
+
const helpers = store.dryRun ? {} : container.helpers()
|
|
18
|
+
const locator = typeof context === 'object' ? JSON.stringify(context) : context
|
|
17
19
|
|
|
18
|
-
return recorder.add(
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
return recorder.add(
|
|
21
|
+
'register within wrapper',
|
|
22
|
+
() => {
|
|
23
|
+
const metaStep = new WithinStep(locator, fn)
|
|
24
|
+
const defineMetaStep = step => (step.metaStep = metaStep)
|
|
25
|
+
recorder.session.start('within')
|
|
22
26
|
|
|
23
|
-
|
|
27
|
+
event.dispatcher.prependListener(event.step.before, defineMetaStep)
|
|
24
28
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
29
|
+
Object.keys(helpers).forEach(helper => {
|
|
30
|
+
if (helpers[helper]._withinBegin) recorder.add(`[${helper}] start within`, () => helpers[helper]._withinBegin(context))
|
|
31
|
+
})
|
|
28
32
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
33
|
+
const finalize = () => {
|
|
34
|
+
event.dispatcher.removeListener(event.step.before, defineMetaStep)
|
|
35
|
+
recorder.add('Finalize session within session', () => {
|
|
36
|
+
output.stepShift = 1
|
|
37
|
+
recorder.session.restore('within')
|
|
38
|
+
})
|
|
39
|
+
}
|
|
40
|
+
const finishHelpers = () => {
|
|
41
|
+
Object.keys(helpers).forEach(helper => {
|
|
42
|
+
if (helpers[helper]._withinEnd) recorder.add(`[${helper}] finish within`, () => helpers[helper]._withinEnd())
|
|
43
|
+
})
|
|
44
|
+
}
|
|
41
45
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
46
|
+
if (isAsyncFunction(fn)) {
|
|
47
|
+
return fn()
|
|
48
|
+
.then(res => {
|
|
49
|
+
finishHelpers()
|
|
50
|
+
finalize()
|
|
51
|
+
return recorder.promise().then(() => res)
|
|
52
|
+
})
|
|
53
|
+
.catch(e => {
|
|
54
|
+
finalize()
|
|
55
|
+
recorder.throw(e)
|
|
56
|
+
})
|
|
57
|
+
}
|
|
52
58
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
59
|
+
let res
|
|
60
|
+
try {
|
|
61
|
+
res = fn()
|
|
62
|
+
} catch (err) {
|
|
63
|
+
recorder.throw(err)
|
|
64
|
+
} finally {
|
|
65
|
+
finishHelpers()
|
|
66
|
+
recorder.catch(err => {
|
|
67
|
+
output.stepShift = 1
|
|
68
|
+
throw err
|
|
69
|
+
})
|
|
70
|
+
}
|
|
71
|
+
finalize()
|
|
72
|
+
return recorder.promise().then(() => res)
|
|
73
|
+
},
|
|
74
|
+
false,
|
|
75
|
+
false,
|
|
76
|
+
)
|
|
68
77
|
}
|
|
69
78
|
|
|
70
|
-
module.exports = within
|
|
79
|
+
module.exports = within
|
|
80
|
+
|
|
81
|
+
class WithinStep extends MetaStep {
|
|
82
|
+
constructor(locator, fn) {
|
|
83
|
+
super('Within')
|
|
84
|
+
this.args = [locator]
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
toString() {
|
|
88
|
+
return `${this.prefix}Within ${this.humanizeArgs()}${this.suffix}`
|
|
89
|
+
}
|
|
90
|
+
}
|
package/lib/workerStorage.js
CHANGED
|
@@ -7,7 +7,8 @@ const invokeWorkerListeners = (workerObj) => {
|
|
|
7
7
|
const { threadId } = workerObj;
|
|
8
8
|
workerObj.on('message', (messageData) => {
|
|
9
9
|
if (messageData.event === shareEvent) {
|
|
10
|
-
|
|
10
|
+
const Container = require('./container');
|
|
11
|
+
Container.share(messageData.data);
|
|
11
12
|
}
|
|
12
13
|
});
|
|
13
14
|
workerObj.on('exit', () => {
|