@serenity-js/webdriverio 3.0.0-rc.9 → 3.0.1

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 (139) hide show
  1. package/CHANGELOG.md +245 -122
  2. package/README.md +66 -45
  3. package/lib/adapter/TestRunnerLoader.d.ts +3 -4
  4. package/lib/adapter/TestRunnerLoader.d.ts.map +1 -0
  5. package/lib/adapter/TestRunnerLoader.js +1 -4
  6. package/lib/adapter/TestRunnerLoader.js.map +1 -1
  7. package/lib/adapter/WebdriverIOConfig.d.ts +115 -109
  8. package/lib/adapter/WebdriverIOConfig.d.ts.map +1 -0
  9. package/lib/adapter/WebdriverIOFrameworkAdapter.d.ts +1 -3
  10. package/lib/adapter/WebdriverIOFrameworkAdapter.d.ts.map +1 -0
  11. package/lib/adapter/WebdriverIOFrameworkAdapter.js +14 -8
  12. package/lib/adapter/WebdriverIOFrameworkAdapter.js.map +1 -1
  13. package/lib/adapter/WebdriverIOFrameworkAdapterFactory.d.ts +2 -1
  14. package/lib/adapter/WebdriverIOFrameworkAdapterFactory.d.ts.map +1 -0
  15. package/lib/adapter/WebdriverIOFrameworkAdapterFactory.js +1 -1
  16. package/lib/adapter/WebdriverIONotifier.d.ts +1 -0
  17. package/lib/adapter/WebdriverIONotifier.d.ts.map +1 -0
  18. package/lib/adapter/WebdriverIONotifier.js +5 -5
  19. package/lib/adapter/WebdriverIONotifier.js.map +1 -1
  20. package/lib/adapter/index.d.ts +1 -1
  21. package/lib/adapter/index.d.ts.map +1 -0
  22. package/lib/adapter/index.js +5 -2
  23. package/lib/adapter/index.js.map +1 -1
  24. package/lib/adapter/reporter/BrowserCapabilitiesReporter.d.ts +1 -0
  25. package/lib/adapter/reporter/BrowserCapabilitiesReporter.d.ts.map +1 -0
  26. package/lib/adapter/reporter/BrowserCapabilitiesReporter.js +4 -1
  27. package/lib/adapter/reporter/BrowserCapabilitiesReporter.js.map +1 -1
  28. package/lib/adapter/reporter/InitialisesReporters.d.ts +1 -0
  29. package/lib/adapter/reporter/InitialisesReporters.d.ts.map +1 -0
  30. package/lib/adapter/reporter/OutputStreamBuffer.d.ts +2 -1
  31. package/lib/adapter/reporter/OutputStreamBuffer.d.ts.map +1 -0
  32. package/lib/adapter/reporter/OutputStreamBufferPrinter.d.ts +2 -1
  33. package/lib/adapter/reporter/OutputStreamBufferPrinter.d.ts.map +1 -0
  34. package/lib/adapter/reporter/OutputStreamBufferPrinter.js.map +1 -1
  35. package/lib/adapter/reporter/ProvidesWriteStream.d.ts +2 -1
  36. package/lib/adapter/reporter/ProvidesWriteStream.d.ts.map +1 -0
  37. package/lib/adapter/reporter/TagPrinter.d.ts +1 -0
  38. package/lib/adapter/reporter/TagPrinter.d.ts.map +1 -0
  39. package/lib/adapter/reporter/index.d.ts +1 -0
  40. package/lib/adapter/reporter/index.d.ts.map +1 -0
  41. package/lib/adapter/reporter/index.js +5 -1
  42. package/lib/adapter/reporter/index.js.map +1 -1
  43. package/lib/index.d.ts +1 -0
  44. package/lib/index.d.ts.map +1 -0
  45. package/lib/index.js +5 -1
  46. package/lib/index.js.map +1 -1
  47. package/lib/screenplay/abilities/BrowseTheWebWithWebdriverIO.d.ts +28 -197
  48. package/lib/screenplay/abilities/BrowseTheWebWithWebdriverIO.d.ts.map +1 -0
  49. package/lib/screenplay/abilities/BrowseTheWebWithWebdriverIO.js +29 -296
  50. package/lib/screenplay/abilities/BrowseTheWebWithWebdriverIO.js.map +1 -1
  51. package/lib/screenplay/abilities/index.d.ts +1 -0
  52. package/lib/screenplay/abilities/index.d.ts.map +1 -0
  53. package/lib/screenplay/abilities/index.js +5 -1
  54. package/lib/screenplay/abilities/index.js.map +1 -1
  55. package/lib/screenplay/index.d.ts +1 -0
  56. package/lib/screenplay/index.d.ts.map +1 -0
  57. package/lib/screenplay/index.js +5 -1
  58. package/lib/screenplay/index.js.map +1 -1
  59. package/lib/screenplay/models/WebdriverIOBrowsingSession.d.ts +24 -0
  60. package/lib/screenplay/models/WebdriverIOBrowsingSession.d.ts.map +1 -0
  61. package/lib/screenplay/models/WebdriverIOBrowsingSession.js +125 -0
  62. package/lib/screenplay/models/WebdriverIOBrowsingSession.js.map +1 -0
  63. package/lib/screenplay/models/WebdriverIOCookie.d.ts +6 -0
  64. package/lib/screenplay/models/WebdriverIOCookie.d.ts.map +1 -0
  65. package/lib/screenplay/models/WebdriverIOCookie.js +7 -2
  66. package/lib/screenplay/models/WebdriverIOCookie.js.map +1 -1
  67. package/lib/screenplay/models/WebdriverIOErrorHandler.d.ts +9 -0
  68. package/lib/screenplay/models/WebdriverIOErrorHandler.d.ts.map +1 -0
  69. package/lib/screenplay/models/WebdriverIOErrorHandler.js +23 -0
  70. package/lib/screenplay/models/WebdriverIOErrorHandler.js.map +1 -0
  71. package/lib/screenplay/models/WebdriverIOModalDialogHandler.d.ts +29 -0
  72. package/lib/screenplay/models/WebdriverIOModalDialogHandler.d.ts.map +1 -0
  73. package/lib/screenplay/models/WebdriverIOModalDialogHandler.js +77 -0
  74. package/lib/screenplay/models/WebdriverIOModalDialogHandler.js.map +1 -0
  75. package/lib/screenplay/models/WebdriverIOPage.d.ts +29 -5
  76. package/lib/screenplay/models/WebdriverIOPage.d.ts.map +1 -0
  77. package/lib/screenplay/models/WebdriverIOPage.js +166 -54
  78. package/lib/screenplay/models/WebdriverIOPage.js.map +1 -1
  79. package/lib/screenplay/models/WebdriverIOPageElement.d.ts +10 -10
  80. package/lib/screenplay/models/WebdriverIOPageElement.d.ts.map +1 -0
  81. package/lib/screenplay/models/WebdriverIOPageElement.js +163 -117
  82. package/lib/screenplay/models/WebdriverIOPageElement.js.map +1 -1
  83. package/lib/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.d.ts +32 -0
  84. package/lib/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.d.ts.map +1 -0
  85. package/lib/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.js +82 -0
  86. package/lib/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.js.map +1 -0
  87. package/lib/screenplay/models/WebdriverProtocolErrorCode.d.ts +39 -0
  88. package/lib/screenplay/models/WebdriverProtocolErrorCode.d.ts.map +1 -0
  89. package/lib/screenplay/models/WebdriverProtocolErrorCode.js +43 -0
  90. package/lib/screenplay/models/WebdriverProtocolErrorCode.js.map +1 -0
  91. package/lib/screenplay/models/index.d.ts +2 -1
  92. package/lib/screenplay/models/index.d.ts.map +1 -0
  93. package/lib/screenplay/models/index.js +6 -2
  94. package/lib/screenplay/models/index.js.map +1 -1
  95. package/lib/screenplay/models/locators/WebdriverIOLocator.d.ts +18 -5
  96. package/lib/screenplay/models/locators/WebdriverIOLocator.d.ts.map +1 -0
  97. package/lib/screenplay/models/locators/WebdriverIOLocator.js +84 -5
  98. package/lib/screenplay/models/locators/WebdriverIOLocator.js.map +1 -1
  99. package/lib/screenplay/models/locators/WebdriverIORootLocator.d.ts +17 -0
  100. package/lib/screenplay/models/locators/WebdriverIORootLocator.d.ts.map +1 -0
  101. package/lib/screenplay/models/locators/WebdriverIORootLocator.js +32 -0
  102. package/lib/screenplay/models/locators/WebdriverIORootLocator.js.map +1 -0
  103. package/lib/screenplay/models/locators/index.d.ts +2 -1
  104. package/lib/screenplay/models/locators/index.d.ts.map +1 -0
  105. package/lib/screenplay/models/locators/index.js +6 -2
  106. package/lib/screenplay/models/locators/index.js.map +1 -1
  107. package/package.json +31 -32
  108. package/src/adapter/TestRunnerLoader.ts +3 -5
  109. package/src/adapter/WebdriverIOConfig.ts +114 -109
  110. package/src/adapter/WebdriverIOFrameworkAdapter.ts +20 -12
  111. package/src/adapter/WebdriverIOFrameworkAdapterFactory.ts +1 -1
  112. package/src/adapter/WebdriverIONotifier.ts +8 -6
  113. package/src/adapter/index.ts +0 -1
  114. package/src/adapter/reporter/OutputStreamBuffer.ts +1 -1
  115. package/src/adapter/reporter/OutputStreamBufferPrinter.ts +1 -1
  116. package/src/adapter/reporter/ProvidesWriteStream.ts +1 -1
  117. package/src/screenplay/abilities/BrowseTheWebWithWebdriverIO.ts +29 -339
  118. package/src/screenplay/models/WebdriverIOBrowsingSession.ts +171 -0
  119. package/src/screenplay/models/WebdriverIOCookie.ts +7 -2
  120. package/src/screenplay/models/WebdriverIOErrorHandler.ts +25 -0
  121. package/src/screenplay/models/WebdriverIOModalDialogHandler.ts +100 -0
  122. package/src/screenplay/models/WebdriverIOPage.ts +222 -63
  123. package/src/screenplay/models/WebdriverIOPageElement.ts +183 -148
  124. package/src/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.ts +97 -0
  125. package/src/screenplay/models/WebdriverProtocolErrorCode.ts +38 -0
  126. package/src/screenplay/models/index.ts +1 -1
  127. package/src/screenplay/models/locators/WebdriverIOLocator.ts +122 -24
  128. package/src/screenplay/models/locators/WebdriverIORootLocator.ts +33 -0
  129. package/src/screenplay/models/locators/index.ts +1 -1
  130. package/tsconfig.build.json +17 -0
  131. package/lib/screenplay/models/WebdriverIOModalDialog.d.ts +0 -11
  132. package/lib/screenplay/models/WebdriverIOModalDialog.js +0 -40
  133. package/lib/screenplay/models/WebdriverIOModalDialog.js.map +0 -1
  134. package/lib/screenplay/models/locators/WebdriverIONativeElementRoot.d.ts +0 -2
  135. package/lib/screenplay/models/locators/WebdriverIONativeElementRoot.js +0 -3
  136. package/lib/screenplay/models/locators/WebdriverIONativeElementRoot.js.map +0 -1
  137. package/src/screenplay/models/WebdriverIOModalDialog.ts +0 -45
  138. package/src/screenplay/models/locators/WebdriverIONativeElementRoot.ts +0 -3
  139. package/tsconfig.eslint.json +0 -10
@@ -2,121 +2,126 @@ import { SerenityConfig } from '@serenity-js/core';
2
2
  import type { Options } from '@wdio/types';
3
3
 
4
4
  /**
5
- * @desc
6
- * [WebdriverIO configuration object](https://webdriver.io/docs/configurationfile/)
7
- * with Serenity/JS-specific additions.
8
- *
9
- * @see {@link @serenity-js/cucumber/lib/cli~CucumberConfig}
10
- * @see {@link @serenity-js/jasmine/lib/adapter~JasmineConfig}
11
- * @see {@link @serenity-js/mocha/lib/adapter~MochaConfig}
12
- *
13
- * @see https://webdriver.io/docs/configurationfile/
14
- * @see {@link @wdio/types~Options.TestRunner}
15
- *
16
- * @public
17
- *
18
- * @extends {@wdio/types~Options.TestRunner}
19
- *
20
- * @example <caption>WebdriverIO with Serenity/JS and Cucumber</caption>
21
- *
22
- * import { ConsoleReporter } from '@serenity-js/console-reporter';
23
- * import { ArtifactArchiver } from '@serenity-js/core';
24
- * import { SerenityBDDReporter } from '@serenity-js/serenity-bdd';
25
- * import { WebdriverIOConfig } from '@serenity-js/webdriverio';
26
- *
27
- * export const config: WebdriverIOConfig = {
28
- *
29
- * framework: '@serenity-js/webdriverio',
30
- *
31
- * serenity: {
32
- * runner: 'cucumber',
33
- * crew: [
34
- * ConsoleReporter.forDarkTerminals(),
35
- * new SerenityBDDReporter(),
36
- * ArtifactArchiver.storingArtifactsAt('./target/site/serenity'),
37
- * ]
38
- * },
39
- *
40
- * cucumberOpts: {
41
- * // ...
42
- * },
43
- *
44
- * specs: [
45
- * './features/*.feature',
46
- * ],
47
- * };
48
- *
49
- * @example <caption>WebdriverIO with Serenity/JS and Mocha</caption>
50
- *
51
- * import { ConsoleReporter } from '@serenity-js/console-reporter';
52
- * import { ArtifactArchiver } from '@serenity-js/core';
53
- * import { SerenityBDDReporter } from '@serenity-js/serenity-bdd';
54
- * import { WebdriverIOConfig } from '@serenity-js/webdriverio';
55
- *
56
- * export const config: WebdriverIOConfig = {
57
- *
58
- * framework: '@serenity-js/webdriverio',
59
- *
60
- * serenity: {
61
- * runner: 'mocha',
62
- * crew: [
63
- * ConsoleReporter.forDarkTerminals(),
64
- * new SerenityBDDReporter(),
65
- * ArtifactArchiver.storingArtifactsAt('./target/site/serenity'),
66
- * ]
67
- * },
68
- *
69
- * mochaOpts: {
70
- * // ...
71
- * },
72
- *
73
- * specs: [
74
- * './spec/*.spec.*',
75
- * ],
76
- * };
77
- *
78
- * @example <caption>WebdriverIO with Serenity/JS and Jasmine</caption>
79
- *
80
- * import { ConsoleReporter } from '@serenity-js/console-reporter';
81
- * import { ArtifactArchiver } from '@serenity-js/core';
82
- * import { SerenityBDDReporter } from '@serenity-js/serenity-bdd';
83
- * import { WebdriverIOConfig } from '@serenity-js/webdriverio';
84
- *
85
- * export const config: WebdriverIOConfig = {
86
- *
87
- * framework: '@serenity-js/webdriverio',
88
- *
89
- * serenity: {
90
- * runner: 'jasmine',
91
- * crew: [
92
- * ConsoleReporter.forDarkTerminals(),
93
- * new SerenityBDDReporter(),
94
- * ArtifactArchiver.storingArtifactsAt('./target/site/serenity'),
95
- * ]
96
- * },
97
- *
98
- * jasmineOpts: {
99
- * // ...
100
- * },
101
- *
102
- * specs: [
103
- * './spec/*.spec.*',
104
- * ],
105
- * };
5
+ * [WebdriverIO configuration object](https://webdriver.io/docs/configurationfile/)
6
+ * with Serenity/JS-specific {@apilink SerenityConfig|additions}.
7
+ *
8
+ * ## Configuring WebdriverIO with Serenity/JS and Cucumber
9
+ *
10
+ * ```ts
11
+ * // wdio.conf.ts
12
+ * import { ConsoleReporter } from '@serenity-js/console-reporter'
13
+ * import { ArtifactArchiver } from '@serenity-js/core'
14
+ * import { SerenityBDDReporter } from '@serenity-js/serenity-bdd'
15
+ * import { WebdriverIOConfig } from '@serenity-js/webdriverio'
16
+ *
17
+ * export const config: WebdriverIOConfig = {
18
+ *
19
+ * framework: '@serenity-js/webdriverio',
20
+ *
21
+ * serenity: {
22
+ * runner: 'cucumber',
23
+ * crew: [
24
+ * ConsoleReporter.forDarkTerminals(),
25
+ * new SerenityBDDReporter(),
26
+ * ArtifactArchiver.storingArtifactsAt('./target/site/serenity'),
27
+ * ]
28
+ * },
29
+ *
30
+ * cucumberOpts: {
31
+ * // ...
32
+ * },
33
+ *
34
+ * specs: [
35
+ * './features/*.feature',
36
+ * ],
37
+ * }
38
+ * ```
39
+ *
40
+ * ## Configuring WebdriverIO with Serenity/JS and Mocha
41
+ *
42
+ * ```ts
43
+ * // wdio.conf.ts
44
+ * import { ConsoleReporter } from '@serenity-js/console-reporter'
45
+ * import { ArtifactArchiver } from '@serenity-js/core'
46
+ * import { SerenityBDDReporter } from '@serenity-js/serenity-bdd'
47
+ * import { WebdriverIOConfig } from '@serenity-js/webdriverio'
48
+ *
49
+ * export const config: WebdriverIOConfig = {
50
+ *
51
+ * framework: '@serenity-js/webdriverio',
52
+ *
53
+ * serenity: {
54
+ * runner: 'mocha',
55
+ * crew: [
56
+ * ConsoleReporter.forDarkTerminals(),
57
+ * new SerenityBDDReporter(),
58
+ * ArtifactArchiver.storingArtifactsAt('./target/site/serenity'),
59
+ * ]
60
+ * },
61
+ *
62
+ * mochaOpts: {
63
+ * // ...
64
+ * },
65
+ *
66
+ * specs: [
67
+ * './spec/*.spec.*',
68
+ * ],
69
+ * }
70
+ * ```
71
+ *
72
+ * ## Configuring WebdriverIO with Serenity/JS and Jasmine
73
+ *
74
+ * ```ts
75
+ * // wdio.conf.ts
76
+ * import { ConsoleReporter } from '@serenity-js/console-reporter'
77
+ * import { ArtifactArchiver } from '@serenity-js/core'
78
+ * import { SerenityBDDReporter } from '@serenity-js/serenity-bdd'
79
+ * import { WebdriverIOConfig } from '@serenity-js/webdriverio'
80
+ *
81
+ * export const config: WebdriverIOConfig = {
82
+ *
83
+ * framework: '@serenity-js/webdriverio',
84
+ *
85
+ * serenity: {
86
+ * runner: 'jasmine',
87
+ * crew: [
88
+ * ConsoleReporter.forDarkTerminals(),
89
+ * new SerenityBDDReporter(),
90
+ * ArtifactArchiver.storingArtifactsAt('./target/site/serenity'),
91
+ * ]
92
+ * },
93
+ *
94
+ * jasmineOpts: {
95
+ * // ...
96
+ * },
97
+ *
98
+ * specs: [
99
+ * './spec/*.spec.*',
100
+ * ],
101
+ * }
102
+ * ```
103
+ *
104
+ * ## Learn more
105
+ *
106
+ * - [WebdriverIO configuration file](https://webdriver.io/docs/configurationfile/)
107
+ * - {@apilink CucumberConfig}
108
+ * - {@apilink JasmineConfig}
109
+ * - {@apilink MochaConfig}
110
+ *
111
+ * @group Configuration
106
112
  */
107
113
  export interface WebdriverIOConfig extends Options.Testrunner {
108
114
 
109
115
  /**
110
- * @desc
111
- * Serenity/JS configuration with an additional `runner` entry
112
- * allowing to specify the test runner, such as `cucumber`, `mocha`, or `jasmine`.
116
+ * Serenity/JS configuration with an additional `runner` entry
117
+ * allowing to specify the test runner, such as `cucumber`, `mocha`, or `jasmine`.
113
118
  *
114
- * @see {@link @serenity-js/cucumber/lib/cli~CucumberConfig}
115
- * @see {@link @serenity-js/jasmine/lib/adapter~JasmineConfig}
116
- * @see {@link @serenity-js/mocha/lib/adapter~MochaConfig}
119
+ * #### Learn more
117
120
  *
118
- * @type {@serenity-js/core~SerenityConfig}
119
- * @public
121
+ * - [WebdriverIO configuration file](https://webdriver.io/docs/configurationfile/)
122
+ * - {@apilink CucumberConfig}
123
+ * - {@apilink JasmineConfig}
124
+ * - {@apilink MochaConfig}
120
125
  */
121
126
  serenity?: SerenityConfig & { runner?: string };
122
127
  }
@@ -1,9 +1,11 @@
1
- import { ArtifactArchiver, Serenity } from '@serenity-js/core';
2
- import { ModuleLoader, Path, TestRunnerAdapter } from '@serenity-js/core/lib/io';
1
+ import { AnsiDiffFormatter, ArtifactArchiver, Cast, Serenity, TakeNotes } from '@serenity-js/core';
2
+ import { TestRunnerAdapter } from '@serenity-js/core/lib/adapter';
3
+ import { ModuleLoader, Path } from '@serenity-js/core/lib/io';
3
4
  import type { Capabilities } from '@wdio/types';
4
5
  import type { EventEmitter } from 'events';
5
- import { isPlainObject } from 'is-plain-object';
6
+ import { isRecord } from 'tiny-types/lib/objects';
6
7
 
8
+ import { BrowseTheWebWithWebdriverIO } from '../screenplay';
7
9
  import { BrowserCapabilitiesReporter, InitialisesReporters, OutputStreamBuffer, ProvidesWriteStream } from './reporter';
8
10
  import { OutputStreamBufferPrinter } from './reporter/OutputStreamBufferPrinter';
9
11
  import { TestRunnerLoader } from './TestRunnerLoader';
@@ -11,9 +13,6 @@ import { WebdriverIOConfig } from './WebdriverIOConfig';
11
13
  import { WebdriverIONotifier } from './WebdriverIONotifier';
12
14
  import deepmerge = require('deepmerge');
13
15
 
14
- /**
15
- * @package
16
- */
17
16
  export class WebdriverIOFrameworkAdapter {
18
17
 
19
18
  private adapter: TestRunnerAdapter;
@@ -30,9 +29,15 @@ export class WebdriverIOFrameworkAdapter {
30
29
  reporter: EventEmitter & ProvidesWriteStream & InitialisesReporters
31
30
  ) {
32
31
  const config = deepmerge<WebdriverIOConfig>(this.defaultConfig(), webdriverIOConfig, {
33
- isMergeableObject: isPlainObject,
32
+ isMergeableObject: isRecord,
34
33
  });
35
34
 
35
+ // SauceLabs service serialises the config object for debugging.
36
+ // However, since Serenity/JS Stage is a pub/sub mechanism,
37
+ // it contains cyclic references which are not serialisable.
38
+ // We get rid of them from the config object to avoid confusing other services.
39
+ delete webdriverIOConfig.serenity;
40
+
36
41
  this.adapter = new TestRunnerLoader(this.loader, this.cwd, this.cid)
37
42
  .runnerAdapterFor(config);
38
43
 
@@ -64,7 +69,11 @@ export class WebdriverIOFrameworkAdapter {
64
69
  this.serenity.configure({
65
70
  outputStream: outputStreamBuffer,
66
71
  cueTimeout: config.serenity.cueTimeout,
67
- actors: config.serenity.actors,
72
+ actors: config.serenity.actors || Cast.where(actor => actor.whoCan(
73
+ BrowseTheWebWithWebdriverIO.using(browser),
74
+ TakeNotes.usingAnEmptyNotepad(),
75
+ )),
76
+ diffFormatter: config.serenity.diffFormatter ?? new AnsiDiffFormatter(),
68
77
  crew: [
69
78
  ...config.serenity.crew,
70
79
  this.notifier,
@@ -84,10 +93,9 @@ export class WebdriverIOFrameworkAdapter {
84
93
  return this.adapter.scenarioCount() > 0;
85
94
  }
86
95
 
87
- run(): Promise<number> {
88
- return this.adapter.run().then(() =>
89
- this.notifier.failureCount()
90
- );
96
+ async run(): Promise<number> {
97
+ await this.adapter.run();
98
+ return this.notifier.failureCount();
91
99
  }
92
100
 
93
101
  private defaultConfig(): Partial<WebdriverIOConfig> {
@@ -8,7 +8,7 @@ import { WebdriverIOConfig } from './WebdriverIOConfig';
8
8
  import { WebdriverIOFrameworkAdapter } from './WebdriverIOFrameworkAdapter';
9
9
 
10
10
  /**
11
- * @package
11
+ * @group Test Runner Adapter
12
12
  */
13
13
  export class WebdriverIOFrameworkAdapterFactory {
14
14
  constructor(
@@ -8,7 +8,7 @@ import {
8
8
  ExecutionFailedWithError,
9
9
  ExecutionIgnored,
10
10
  ExecutionSkipped,
11
- ImplementationPending,
11
+ ImplementationPending, Name,
12
12
  Outcome,
13
13
  ProblemIndication,
14
14
  TestSuiteDetails,
@@ -391,15 +391,17 @@ export class WebdriverIONotifier implements StageCrewMember {
391
391
  args: InnerArguments
392
392
  ): Promise<Array<Result | Error>> {
393
393
 
394
- const hooks = ! Array.isArray(hookFunctions)
395
- ? [ hookFunctions ]
396
- : hookFunctions;
394
+ const hooks = Array.isArray(hookFunctions)
395
+ ? hookFunctions
396
+ : [ hookFunctions ];
397
397
 
398
398
  const asyncOperationId = CorrelationId.create();
399
399
 
400
400
  this.stage.announce(new AsyncOperationAttempted(
401
- new Description(`[WebdriverIONotifier#invokeHooks] Invoking ${ hookName } hook`),
401
+ new Name(`WebdriverIONotifier#invokeHooks`),
402
+ new Description(`Invoking ${ hookName } hook`),
402
403
  asyncOperationId,
404
+ this.stage.currentTime(),
403
405
  ));
404
406
 
405
407
  return Promise.all(hooks.map((hook) => new Promise<Result | Error>((resolve) => {
@@ -426,8 +428,8 @@ export class WebdriverIONotifier implements StageCrewMember {
426
428
  then(results => {
427
429
 
428
430
  this.stage.announce(new AsyncOperationCompleted(
429
- new Description(`[WebdriverIONotifier#invokeHooks] Invoking ${ hookName } hook completed`),
430
431
  asyncOperationId,
432
+ this.stage.currentTime(),
431
433
  ));
432
434
 
433
435
  return results;
@@ -1,3 +1,2 @@
1
- export * from './TestRunnerLoader';
2
1
  export * from './WebdriverIOConfig';
3
2
  export * from './WebdriverIOFrameworkAdapterFactory';
@@ -1,4 +1,4 @@
1
- import { OutputStream } from '@serenity-js/core/lib/io';
1
+ import { OutputStream } from '@serenity-js/core/lib/adapter';
2
2
 
3
3
  /**
4
4
  * @package
@@ -1,6 +1,6 @@
1
1
  import { Stage, StageCrewMember } from '@serenity-js/core';
2
+ import { OutputStream } from '@serenity-js/core/lib/adapter';
2
3
  import { DomainEvent, SceneFinished } from '@serenity-js/core/lib/events';
3
- import { OutputStream } from '@serenity-js/core/lib/io';
4
4
 
5
5
  import { OutputStreamBuffer } from './OutputStreamBuffer';
6
6
 
@@ -1,4 +1,4 @@
1
- import { OutputStream } from '@serenity-js/core/lib/io';
1
+ import { OutputStream } from '@serenity-js/core/lib/adapter';
2
2
 
3
3
  /**
4
4
  * @package