codeceptjs 4.0.0-beta.1 → 4.0.0-beta.10.esm-aria
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 +133 -120
- package/bin/codecept.js +107 -96
- package/bin/test-server.js +64 -0
- package/docs/webapi/clearCookie.mustache +1 -1
- package/docs/webapi/click.mustache +5 -1
- package/lib/actor.js +71 -103
- package/lib/ai.js +159 -188
- package/lib/assert/empty.js +22 -24
- package/lib/assert/equal.js +30 -37
- package/lib/assert/error.js +14 -14
- package/lib/assert/include.js +43 -48
- package/lib/assert/throws.js +11 -11
- package/lib/assert/truth.js +22 -22
- package/lib/assert.js +20 -18
- package/lib/codecept.js +238 -162
- package/lib/colorUtils.js +50 -52
- package/lib/command/check.js +206 -0
- package/lib/command/configMigrate.js +56 -51
- package/lib/command/definitions.js +96 -109
- package/lib/command/dryRun.js +77 -79
- package/lib/command/generate.js +234 -194
- package/lib/command/gherkin/init.js +42 -33
- package/lib/command/gherkin/snippets.js +76 -74
- package/lib/command/gherkin/steps.js +20 -17
- package/lib/command/info.js +74 -38
- package/lib/command/init.js +300 -290
- package/lib/command/interactive.js +41 -32
- package/lib/command/list.js +28 -27
- package/lib/command/run-multiple/chunk.js +51 -48
- package/lib/command/run-multiple/collection.js +5 -5
- package/lib/command/run-multiple/run.js +5 -1
- package/lib/command/run-multiple.js +97 -97
- package/lib/command/run-rerun.js +19 -25
- package/lib/command/run-workers.js +68 -92
- package/lib/command/run.js +39 -27
- package/lib/command/utils.js +80 -64
- package/lib/command/workers/runTests.js +388 -226
- package/lib/config.js +124 -50
- package/lib/container.js +751 -260
- package/lib/data/context.js +60 -61
- package/lib/data/dataScenarioConfig.js +47 -47
- package/lib/data/dataTableArgument.js +32 -32
- package/lib/data/table.js +22 -22
- package/lib/effects.js +307 -0
- package/lib/element/WebElement.js +327 -0
- package/lib/els.js +160 -0
- package/lib/event.js +173 -163
- package/lib/globals.js +141 -0
- package/lib/heal.js +89 -85
- package/lib/helper/AI.js +131 -41
- package/lib/helper/ApiDataFactory.js +107 -75
- package/lib/helper/Appium.js +542 -404
- package/lib/helper/FileSystem.js +100 -79
- package/lib/helper/GraphQL.js +44 -43
- package/lib/helper/GraphQLDataFactory.js +52 -52
- package/lib/helper/JSONResponse.js +126 -88
- package/lib/helper/Mochawesome.js +54 -29
- package/lib/helper/Playwright.js +2547 -1316
- package/lib/helper/Puppeteer.js +1578 -1181
- package/lib/helper/REST.js +209 -68
- package/lib/helper/WebDriver.js +1482 -1342
- package/lib/helper/errors/ConnectionRefused.js +6 -6
- package/lib/helper/errors/ElementAssertion.js +11 -16
- package/lib/helper/errors/ElementNotFound.js +5 -9
- package/lib/helper/errors/RemoteBrowserConnectionRefused.js +5 -5
- package/lib/helper/extras/Console.js +11 -11
- package/lib/helper/extras/PlaywrightLocator.js +110 -0
- package/lib/helper/extras/PlaywrightPropEngine.js +18 -18
- package/lib/helper/extras/PlaywrightReactVueLocator.js +17 -8
- package/lib/helper/extras/PlaywrightRestartOpts.js +25 -11
- package/lib/helper/extras/Popup.js +22 -22
- package/lib/helper/extras/React.js +27 -28
- package/lib/helper/network/actions.js +36 -42
- package/lib/helper/network/utils.js +78 -84
- package/lib/helper/scripts/blurElement.js +5 -5
- package/lib/helper/scripts/focusElement.js +5 -5
- package/lib/helper/scripts/highlightElement.js +8 -8
- package/lib/helper/scripts/isElementClickable.js +34 -34
- package/lib/helper.js +2 -3
- package/lib/history.js +23 -19
- package/lib/hooks.js +8 -8
- package/lib/html.js +94 -104
- package/lib/index.js +38 -27
- package/lib/listener/config.js +30 -23
- package/lib/listener/emptyRun.js +54 -0
- package/lib/listener/enhancedGlobalRetry.js +110 -0
- package/lib/listener/exit.js +16 -18
- package/lib/listener/globalRetry.js +70 -0
- package/lib/listener/globalTimeout.js +181 -0
- package/lib/listener/helpers.js +76 -51
- package/lib/listener/mocha.js +10 -11
- package/lib/listener/result.js +11 -0
- package/lib/listener/retryEnhancer.js +85 -0
- package/lib/listener/steps.js +71 -59
- package/lib/listener/store.js +20 -0
- package/lib/locator.js +214 -197
- package/lib/mocha/asyncWrapper.js +274 -0
- package/lib/mocha/bdd.js +167 -0
- package/lib/mocha/cli.js +341 -0
- package/lib/mocha/factory.js +163 -0
- package/lib/mocha/featureConfig.js +89 -0
- package/lib/mocha/gherkin.js +231 -0
- package/lib/mocha/hooks.js +121 -0
- package/lib/mocha/index.js +21 -0
- package/lib/mocha/inject.js +46 -0
- package/lib/{interfaces → mocha}/scenarioConfig.js +58 -34
- package/lib/mocha/suite.js +89 -0
- package/lib/mocha/test.js +184 -0
- package/lib/mocha/types.d.ts +42 -0
- package/lib/mocha/ui.js +242 -0
- package/lib/output.js +141 -71
- package/lib/parser.js +47 -44
- package/lib/pause.js +173 -145
- package/lib/plugin/analyze.js +403 -0
- package/lib/plugin/{autoLogin.js → auth.js} +178 -79
- package/lib/plugin/autoDelay.js +36 -40
- package/lib/plugin/coverage.js +131 -78
- package/lib/plugin/customLocator.js +22 -21
- package/lib/plugin/customReporter.js +53 -0
- package/lib/plugin/enhancedRetryFailedStep.js +99 -0
- package/lib/plugin/heal.js +101 -110
- package/lib/plugin/htmlReporter.js +3648 -0
- package/lib/plugin/pageInfo.js +140 -0
- package/lib/plugin/pauseOnFail.js +12 -11
- package/lib/plugin/retryFailedStep.js +82 -47
- package/lib/plugin/screenshotOnFail.js +111 -92
- package/lib/plugin/stepByStepReport.js +159 -101
- package/lib/plugin/stepTimeout.js +20 -25
- package/lib/plugin/subtitles.js +38 -38
- package/lib/recorder.js +193 -130
- package/lib/rerun.js +94 -49
- package/lib/result.js +238 -0
- package/lib/retryCoordinator.js +207 -0
- package/lib/secret.js +20 -18
- package/lib/session.js +95 -89
- 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 +18 -329
- package/lib/steps.js +54 -0
- package/lib/store.js +38 -7
- package/lib/template/heal.js +3 -12
- package/lib/template/prompts/generatePageObject.js +31 -0
- package/lib/template/prompts/healStep.js +13 -0
- package/lib/template/prompts/writeStep.js +9 -0
- package/lib/test-server.js +334 -0
- package/lib/timeout.js +60 -0
- package/lib/transform.js +8 -8
- package/lib/translation.js +34 -21
- package/lib/utils/mask_data.js +47 -0
- package/lib/utils.js +411 -228
- package/lib/workerStorage.js +37 -34
- package/lib/workers.js +532 -296
- package/package.json +115 -95
- package/translations/de-DE.js +5 -3
- package/translations/fr-FR.js +5 -4
- package/translations/index.js +22 -12
- 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 +10 -0
- package/translations/zh-CN.js +4 -3
- package/translations/zh-TW.js +4 -3
- package/typings/index.d.ts +546 -185
- package/typings/promiseBasedTypes.d.ts +150 -879
- package/typings/types.d.ts +547 -996
- package/lib/cli.js +0 -249
- package/lib/dirname.js +0 -5
- package/lib/helper/Expect.js +0 -425
- package/lib/helper/ExpectHelper.js +0 -399
- package/lib/helper/MockServer.js +0 -223
- package/lib/helper/Nightmare.js +0 -1411
- package/lib/helper/Protractor.js +0 -1835
- package/lib/helper/SoftExpectHelper.js +0 -381
- package/lib/helper/TestCafe.js +0 -1410
- package/lib/helper/clientscripts/nightmare.js +0 -213
- package/lib/helper/testcafe/testControllerHolder.js +0 -42
- package/lib/helper/testcafe/testcafe-utils.js +0 -63
- package/lib/interfaces/bdd.js +0 -98
- package/lib/interfaces/featureConfig.js +0 -69
- package/lib/interfaces/gherkin.js +0 -195
- package/lib/listener/artifacts.js +0 -19
- package/lib/listener/retry.js +0 -68
- package/lib/listener/timeout.js +0 -109
- package/lib/mochaFactory.js +0 -110
- package/lib/plugin/allure.js +0 -15
- package/lib/plugin/commentStep.js +0 -136
- package/lib/plugin/debugErrors.js +0 -67
- package/lib/plugin/eachElement.js +0 -127
- package/lib/plugin/fakerTransform.js +0 -49
- package/lib/plugin/retryTo.js +0 -121
- package/lib/plugin/selenoid.js +0 -371
- package/lib/plugin/standardActingHelpers.js +0 -9
- package/lib/plugin/tryTo.js +0 -105
- package/lib/plugin/wdio.js +0 -246
- package/lib/scenario.js +0 -222
- package/lib/ui.js +0 -238
- package/lib/within.js +0 -70
package/lib/command/dryRun.js
CHANGED
|
@@ -1,119 +1,117 @@
|
|
|
1
|
-
import { getConfig, getTestRoot } from './utils.js'
|
|
2
|
-
import Config from '../config.js'
|
|
3
|
-
import Codecept from '../codecept.js'
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import colors from "chalk";
|
|
9
|
-
import figures from "figures";
|
|
1
|
+
import { getConfig, getTestRoot } from './utils.js'
|
|
2
|
+
import Config from '../config.js'
|
|
3
|
+
import Codecept from '../codecept.js'
|
|
4
|
+
import output from '../output.js'
|
|
5
|
+
import event from '../event.js'
|
|
6
|
+
import store from '../store.js'
|
|
7
|
+
import Container from '../container.js'
|
|
10
8
|
|
|
11
9
|
export default async function (test, options) {
|
|
12
|
-
if (options.grep) process.env.grep = options.grep
|
|
13
|
-
const configFile = options.config
|
|
14
|
-
let codecept
|
|
10
|
+
if (options.grep) process.env.grep = options.grep
|
|
11
|
+
const configFile = options.config
|
|
12
|
+
let codecept
|
|
15
13
|
|
|
16
|
-
const testRoot = getTestRoot(configFile)
|
|
17
|
-
let config = getConfig(configFile)
|
|
14
|
+
const testRoot = getTestRoot(configFile)
|
|
15
|
+
let config = await getConfig(configFile)
|
|
18
16
|
if (options.override) {
|
|
19
|
-
config = Config.append(JSON.parse(options.override))
|
|
17
|
+
config = Config.append(JSON.parse(options.override))
|
|
20
18
|
}
|
|
21
19
|
|
|
22
20
|
if (config.plugins) {
|
|
23
21
|
// disable all plugins by default, they can be enabled with -p option
|
|
24
22
|
for (const plugin in config.plugins) {
|
|
25
23
|
// if `-p all` is passed, then enabling all plugins, otherwise plugins could be enabled by `-p customLocator,commentStep,tryTo`
|
|
26
|
-
config.plugins[plugin].enabled = options.plugins === 'all'
|
|
24
|
+
config.plugins[plugin].enabled = options.plugins === 'all'
|
|
27
25
|
}
|
|
28
26
|
}
|
|
29
27
|
|
|
30
28
|
try {
|
|
31
|
-
codecept = new Codecept(config, options)
|
|
32
|
-
codecept.init(testRoot)
|
|
29
|
+
codecept = new Codecept(config, options)
|
|
30
|
+
await codecept.init(testRoot)
|
|
33
31
|
|
|
34
|
-
if (options.bootstrap) await codecept.bootstrap()
|
|
32
|
+
if (options.bootstrap) await codecept.bootstrap()
|
|
35
33
|
|
|
36
|
-
codecept.loadTests()
|
|
37
|
-
store.dryRun = true
|
|
34
|
+
codecept.loadTests()
|
|
35
|
+
store.dryRun = true
|
|
38
36
|
|
|
39
37
|
if (!options.steps && !options.verbose && !options.debug) {
|
|
40
|
-
printTests(codecept.testFiles)
|
|
41
|
-
return
|
|
38
|
+
await printTests(codecept.testFiles)
|
|
39
|
+
return
|
|
42
40
|
}
|
|
43
|
-
event.dispatcher.on(event.all.result, printFooter)
|
|
44
|
-
codecept.run(test)
|
|
41
|
+
event.dispatcher.on(event.all.result, printFooter)
|
|
42
|
+
await codecept.run(test)
|
|
45
43
|
} catch (err) {
|
|
46
|
-
console.error(err)
|
|
47
|
-
process.exit(1)
|
|
44
|
+
console.error(err)
|
|
45
|
+
process.exit(1)
|
|
48
46
|
}
|
|
49
47
|
}
|
|
50
48
|
|
|
51
|
-
function printTests(files) {
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
async function printTests(files) {
|
|
50
|
+
const { default: figures } = await import('figures')
|
|
51
|
+
const { default: colors } = await import('chalk')
|
|
54
52
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
mocha.loadFiles();
|
|
53
|
+
output.print(output.styles.debug(`Tests from ${global.codecept_dir}:`))
|
|
54
|
+
output.print()
|
|
58
55
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
const filterBy = process.env.grep ? process.env.grep.toLowerCase() : undefined;
|
|
56
|
+
const mocha = Container.mocha()
|
|
57
|
+
mocha.files = files
|
|
58
|
+
mocha.loadFiles()
|
|
63
59
|
|
|
60
|
+
let numOfTests = 0
|
|
61
|
+
let numOfSuites = 0
|
|
62
|
+
let outputString = ''
|
|
63
|
+
const filterBy = process.env.grep
|
|
64
|
+
|
|
65
|
+
let filterRegex
|
|
64
66
|
if (filterBy) {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
try {
|
|
68
|
+
filterRegex = new RegExp(filterBy, 'i') // Case-insensitive matching
|
|
69
|
+
} catch (err) {
|
|
70
|
+
console.error(`Invalid grep pattern: ${filterBy}`)
|
|
71
|
+
process.exit(1)
|
|
72
|
+
}
|
|
73
|
+
}
|
|
71
74
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
75
|
+
for (const suite of mocha.suite.suites) {
|
|
76
|
+
const suiteMatches = filterRegex ? filterRegex.test(suite.title) : true
|
|
77
|
+
let suiteHasMatchingTests = false
|
|
78
|
+
|
|
79
|
+
if (suiteMatches) {
|
|
80
|
+
outputString += `${colors.white.bold(suite.title)} -- ${output.styles.log(suite.file || '')}\n`
|
|
81
|
+
suiteHasMatchingTests = true
|
|
82
|
+
numOfSuites++
|
|
79
83
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
84
|
+
|
|
85
|
+
for (const test of suite.tests) {
|
|
86
|
+
const testMatches = filterRegex ? filterRegex.test(test.title) : true
|
|
87
|
+
|
|
88
|
+
if (testMatches) {
|
|
89
|
+
if (!suiteMatches && !suiteHasMatchingTests) {
|
|
90
|
+
outputString += `${colors.white.bold(suite.title)} -- ${output.styles.log(suite.file || '')}\n`
|
|
91
|
+
suiteHasMatchingTests = true
|
|
92
|
+
numOfSuites++
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
numOfTests++
|
|
96
|
+
outputString += ` ${output.styles.scenario(figures.checkboxOff)} ${test.title}\n`
|
|
89
97
|
}
|
|
90
98
|
}
|
|
91
99
|
}
|
|
92
100
|
|
|
93
|
-
output.print(removeDuplicates(outputString))
|
|
94
|
-
output.print('')
|
|
95
|
-
output.success(` Total: ${numOfSuites} suites | ${numOfTests} tests `)
|
|
96
|
-
printFooter()
|
|
97
|
-
process.exit(0)
|
|
101
|
+
output.print(removeDuplicates(outputString))
|
|
102
|
+
output.print('')
|
|
103
|
+
output.success(` Total: ${numOfSuites} suites | ${numOfTests} tests `)
|
|
104
|
+
printFooter()
|
|
105
|
+
process.exit(0)
|
|
98
106
|
}
|
|
99
107
|
|
|
100
108
|
function printFooter() {
|
|
101
|
-
output.print()
|
|
102
|
-
output.print('--- DRY MODE: No tests were executed ---')
|
|
109
|
+
output.print()
|
|
110
|
+
output.print('--- DRY MODE: No tests were executed ---')
|
|
103
111
|
}
|
|
104
112
|
|
|
105
113
|
function removeDuplicates(inputString) {
|
|
106
|
-
const array = inputString.split('\n')
|
|
107
|
-
const uniqueLines = [...new Set(array)]
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
return resultString;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
function countSuites(inputString) {
|
|
114
|
-
const array = inputString.split('\n');
|
|
115
|
-
|
|
116
|
-
const uniqueLines = [...new Set(array)];
|
|
117
|
-
const res = uniqueLines.filter(item => item.includes('-- '));
|
|
118
|
-
return res.length;
|
|
114
|
+
const array = inputString.split('\n')
|
|
115
|
+
const uniqueLines = [...new Set(array)]
|
|
116
|
+
return uniqueLines.join('\n')
|
|
119
117
|
}
|