codeceptjs 3.7.0-beta.4 → 3.7.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.
Files changed (44) hide show
  1. package/README.md +9 -10
  2. package/bin/codecept.js +7 -0
  3. package/lib/actor.js +47 -92
  4. package/lib/command/check.js +173 -0
  5. package/lib/command/definitions.js +2 -0
  6. package/lib/command/run-workers.js +1 -1
  7. package/lib/command/workers/runTests.js +112 -109
  8. package/lib/container.js +9 -0
  9. package/lib/effects.js +123 -0
  10. package/lib/heal.js +10 -0
  11. package/lib/helper/Appium.js +27 -16
  12. package/lib/helper/Playwright.js +15 -0
  13. package/lib/helper/Puppeteer.js +5 -0
  14. package/lib/helper/WebDriver.js +9 -1
  15. package/lib/listener/emptyRun.js +2 -5
  16. package/lib/listener/globalTimeout.js +15 -3
  17. package/lib/listener/steps.js +3 -0
  18. package/lib/mocha/cli.js +22 -5
  19. package/lib/mocha/featureConfig.js +13 -0
  20. package/lib/mocha/scenarioConfig.js +11 -0
  21. package/lib/mocha/test.js +15 -0
  22. package/lib/mocha/types.d.ts +6 -0
  23. package/lib/output.js +74 -73
  24. package/lib/pause.js +3 -7
  25. package/lib/plugin/heal.js +30 -0
  26. package/lib/plugin/stepTimeout.js +1 -1
  27. package/lib/recorder.js +1 -1
  28. package/lib/step/base.js +180 -0
  29. package/lib/step/config.js +50 -0
  30. package/lib/step/helper.js +47 -0
  31. package/lib/step/meta.js +91 -0
  32. package/lib/step/record.js +74 -0
  33. package/lib/step/retry.js +11 -0
  34. package/lib/step/timeout.js +42 -0
  35. package/lib/step.js +15 -348
  36. package/lib/steps.js +23 -0
  37. package/lib/store.js +2 -0
  38. package/lib/utils.js +58 -0
  39. package/lib/within.js +2 -2
  40. package/lib/workers.js +2 -12
  41. package/package.json +7 -5
  42. package/typings/index.d.ts +5 -4
  43. package/typings/promiseBasedTypes.d.ts +12 -0
  44. package/typings/types.d.ts +12 -0
package/lib/within.js CHANGED
@@ -3,7 +3,7 @@ const store = require('./store')
3
3
  const recorder = require('./recorder')
4
4
  const container = require('./container')
5
5
  const event = require('./event')
6
- const Step = require('./step')
6
+ const MetaStep = require('./step/meta')
7
7
  const { isAsyncFunction } = require('./utils')
8
8
 
9
9
  /**
@@ -76,7 +76,7 @@ function within(context, fn) {
76
76
 
77
77
  module.exports = within
78
78
 
79
- class WithinStep extends Step.MetaStep {
79
+ class WithinStep extends MetaStep {
80
80
  constructor(locator, fn) {
81
81
  super('Within')
82
82
  this.args = [locator]
package/lib/workers.js CHANGED
@@ -1,11 +1,6 @@
1
1
  const path = require('path')
2
2
  const mkdirp = require('mkdirp')
3
3
  const { Worker } = require('worker_threads')
4
- const {
5
- Suite,
6
- Test,
7
- reporters: { Base },
8
- } = require('mocha')
9
4
  const { EventEmitter } = require('events')
10
5
  const ms = require('ms')
11
6
  const Codecept = require('./codecept')
@@ -17,6 +12,7 @@ const { replaceValueDeep, deepClone } = require('./utils')
17
12
  const mainConfig = require('./config')
18
13
  const output = require('./output')
19
14
  const event = require('./event')
15
+ const { repackTestForWorkersTransport: repackTest } = require('./mocha/test')
20
16
  const recorder = require('./recorder')
21
17
  const runHook = require('./hooks')
22
18
  const WorkerStorage = require('./workerStorage')
@@ -78,12 +74,6 @@ const simplifyObject = object => {
78
74
  }, {})
79
75
  }
80
76
 
81
- const repackTest = test => {
82
- test = Object.assign(new Test(test.title || '', () => {}), test)
83
- test.parent = Object.assign(new Suite(test.parent.title), test.parent)
84
- return test
85
- }
86
-
87
77
  const createWorkerObjects = (testGroups, config, testRoot, options, selectedRuns) => {
88
78
  selectedRuns = options && options.all && config.multiple ? Object.keys(config.multiple) : selectedRuns
89
79
  if (selectedRuns === undefined || !selectedRuns.length || config.multiple === undefined) {
@@ -459,7 +449,7 @@ class Workers extends EventEmitter {
459
449
  }
460
450
 
461
451
  _finishRun() {
462
- event.dispatcher.emit(event.workers.after)
452
+ event.dispatcher.emit(event.workers.after, { tests: this.workers.map(worker => worker.tests) })
463
453
  if (this.isFailed()) {
464
454
  process.exitCode = 1
465
455
  } else {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeceptjs",
3
- "version": "3.7.0-beta.4",
3
+ "version": "3.7.0-beta.5",
4
4
  "description": "Supercharged End 2 End Testing Framework for NodeJS",
5
5
  "keywords": [
6
6
  "acceptance",
@@ -31,7 +31,9 @@
31
31
  "main": "lib/index.js",
32
32
  "exports": {
33
33
  ".": "./lib/index.js",
34
- "./els": "./lib/els.js"
34
+ "./els": "./lib/els.js",
35
+ "./effects": "./lib/effects.js",
36
+ "./steps": "./lib/steps.js"
35
37
  },
36
38
  "types": "typings/index.d.ts",
37
39
  "bin": {
@@ -114,14 +116,14 @@
114
116
  "uuid": "11.0.4"
115
117
  },
116
118
  "optionalDependencies": {
117
- "@codeceptjs/detox-helper": "1.1.4"
119
+ "@codeceptjs/detox-helper": "1.1.5"
118
120
  },
119
121
  "devDependencies": {
120
122
  "@apollo/server": "^4",
121
123
  "@codeceptjs/expect-helper": "^0.2.2",
122
124
  "@codeceptjs/mock-request": "0.3.1",
123
125
  "@eslint/eslintrc": "3.2.0",
124
- "@eslint/js": "9.17.0",
126
+ "@eslint/js": "9.18.0",
125
127
  "@faker-js/faker": "9.3.0",
126
128
  "@pollyjs/adapter-puppeteer": "6.0.6",
127
129
  "@pollyjs/core": "5.1.0",
@@ -166,7 +168,7 @@
166
168
  "tsd-jsdoc": "2.5.0",
167
169
  "typedoc": "0.27.6",
168
170
  "typedoc-plugin-markdown": "4.4.1",
169
- "typescript": "5.7.2",
171
+ "typescript": "5.7.3",
170
172
  "wdio-docker-service": "1.5.0",
171
173
  "webdriverio": "^9.5.1",
172
174
  "xml2js": "0.6.2",
@@ -451,9 +451,6 @@ declare namespace CodeceptJS {
451
451
  }
452
452
 
453
453
  // Extending JSDoc generated typings
454
- interface Step {
455
- isMetaStep(): this is MetaStep
456
- }
457
454
 
458
455
  // Types who are not be defined by JSDoc
459
456
  type actor = <T extends { [action: string]: (...args: any[]) => void }>(customSteps?: T & ThisType<WithTranslation<Methods & T>>) => WithTranslation<Methods & T>
@@ -502,7 +499,7 @@ declare namespace CodeceptJS {
502
499
  (title: string, opts: { [key: string]: any }, callback: HookCallback): ScenarioConfig
503
500
  }
504
501
  interface IHook {
505
- (callback: HookCallback): void
502
+ (callback: HookCallback): HookConfig
506
503
  }
507
504
 
508
505
  interface Globals {
@@ -516,6 +513,10 @@ declare namespace CodeceptJS {
516
513
  useForSnippets?: boolean
517
514
  preferForRegexpMatch?: boolean
518
515
  }
516
+
517
+ interface HookConfig {
518
+ retry(retries?: number): HookConfig
519
+ }
519
520
  }
520
521
 
521
522
  // Globals
@@ -1767,6 +1767,8 @@ declare namespace CodeceptJS {
1767
1767
  // @ts-ignore
1768
1768
  // @ts-ignore
1769
1769
  // @ts-ignore
1770
+ // @ts-ignore
1771
+ // @ts-ignore
1770
1772
  type MockServerConfig = {
1771
1773
  port?: number;
1772
1774
  host?: string;
@@ -1899,6 +1901,8 @@ declare namespace CodeceptJS {
1899
1901
  // @ts-ignore
1900
1902
  // @ts-ignore
1901
1903
  // @ts-ignore
1904
+ // @ts-ignore
1905
+ // @ts-ignore
1902
1906
  class MockServer {
1903
1907
  /**
1904
1908
  * Start the mock server
@@ -2940,6 +2944,8 @@ declare namespace CodeceptJS {
2940
2944
  // @ts-ignore
2941
2945
  // @ts-ignore
2942
2946
  // @ts-ignore
2947
+ // @ts-ignore
2948
+ // @ts-ignore
2943
2949
  type PlaywrightConfig = {
2944
2950
  url?: string;
2945
2951
  browser?: 'chromium' | 'firefox' | 'webkit' | 'electron';
@@ -6324,6 +6330,8 @@ declare namespace CodeceptJS {
6324
6330
  // @ts-ignore
6325
6331
  // @ts-ignore
6326
6332
  // @ts-ignore
6333
+ // @ts-ignore
6334
+ // @ts-ignore
6327
6335
  type PuppeteerConfig = {
6328
6336
  url: string;
6329
6337
  basicAuth?: any;
@@ -8138,6 +8146,8 @@ declare namespace CodeceptJS {
8138
8146
  // @ts-ignore
8139
8147
  // @ts-ignore
8140
8148
  // @ts-ignore
8149
+ // @ts-ignore
8150
+ // @ts-ignore
8141
8151
  type RESTConfig = {
8142
8152
  endpoint?: string;
8143
8153
  prettyPrintJson?: boolean;
@@ -9290,6 +9300,8 @@ declare namespace CodeceptJS {
9290
9300
  // @ts-ignore
9291
9301
  // @ts-ignore
9292
9302
  // @ts-ignore
9303
+ // @ts-ignore
9304
+ // @ts-ignore
9293
9305
  type WebDriverConfig = {
9294
9306
  url: string;
9295
9307
  browser: string;
@@ -1794,6 +1794,8 @@ declare namespace CodeceptJS {
1794
1794
  // @ts-ignore
1795
1795
  // @ts-ignore
1796
1796
  // @ts-ignore
1797
+ // @ts-ignore
1798
+ // @ts-ignore
1797
1799
  type MockServerConfig = {
1798
1800
  port?: number;
1799
1801
  host?: string;
@@ -1926,6 +1928,8 @@ declare namespace CodeceptJS {
1926
1928
  // @ts-ignore
1927
1929
  // @ts-ignore
1928
1930
  // @ts-ignore
1931
+ // @ts-ignore
1932
+ // @ts-ignore
1929
1933
  class MockServer {
1930
1934
  /**
1931
1935
  * Start the mock server
@@ -3033,6 +3037,8 @@ declare namespace CodeceptJS {
3033
3037
  // @ts-ignore
3034
3038
  // @ts-ignore
3035
3039
  // @ts-ignore
3040
+ // @ts-ignore
3041
+ // @ts-ignore
3036
3042
  type PlaywrightConfig = {
3037
3043
  url?: string;
3038
3044
  browser?: 'chromium' | 'firefox' | 'webkit' | 'electron';
@@ -6568,6 +6574,8 @@ declare namespace CodeceptJS {
6568
6574
  // @ts-ignore
6569
6575
  // @ts-ignore
6570
6576
  // @ts-ignore
6577
+ // @ts-ignore
6578
+ // @ts-ignore
6571
6579
  type PuppeteerConfig = {
6572
6580
  url: string;
6573
6581
  basicAuth?: any;
@@ -8518,6 +8526,8 @@ declare namespace CodeceptJS {
8518
8526
  // @ts-ignore
8519
8527
  // @ts-ignore
8520
8528
  // @ts-ignore
8529
+ // @ts-ignore
8530
+ // @ts-ignore
8521
8531
  type RESTConfig = {
8522
8532
  endpoint?: string;
8523
8533
  prettyPrintJson?: boolean;
@@ -9730,6 +9740,8 @@ declare namespace CodeceptJS {
9730
9740
  // @ts-ignore
9731
9741
  // @ts-ignore
9732
9742
  // @ts-ignore
9743
+ // @ts-ignore
9744
+ // @ts-ignore
9733
9745
  type WebDriverConfig = {
9734
9746
  url: string;
9735
9747
  browser: string;