@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.
- package/CHANGELOG.md +245 -122
- package/README.md +66 -45
- package/lib/adapter/TestRunnerLoader.d.ts +3 -4
- package/lib/adapter/TestRunnerLoader.d.ts.map +1 -0
- package/lib/adapter/TestRunnerLoader.js +1 -4
- package/lib/adapter/TestRunnerLoader.js.map +1 -1
- package/lib/adapter/WebdriverIOConfig.d.ts +115 -109
- package/lib/adapter/WebdriverIOConfig.d.ts.map +1 -0
- package/lib/adapter/WebdriverIOFrameworkAdapter.d.ts +1 -3
- package/lib/adapter/WebdriverIOFrameworkAdapter.d.ts.map +1 -0
- package/lib/adapter/WebdriverIOFrameworkAdapter.js +14 -8
- package/lib/adapter/WebdriverIOFrameworkAdapter.js.map +1 -1
- package/lib/adapter/WebdriverIOFrameworkAdapterFactory.d.ts +2 -1
- package/lib/adapter/WebdriverIOFrameworkAdapterFactory.d.ts.map +1 -0
- package/lib/adapter/WebdriverIOFrameworkAdapterFactory.js +1 -1
- package/lib/adapter/WebdriverIONotifier.d.ts +1 -0
- package/lib/adapter/WebdriverIONotifier.d.ts.map +1 -0
- package/lib/adapter/WebdriverIONotifier.js +5 -5
- package/lib/adapter/WebdriverIONotifier.js.map +1 -1
- package/lib/adapter/index.d.ts +1 -1
- package/lib/adapter/index.d.ts.map +1 -0
- package/lib/adapter/index.js +5 -2
- package/lib/adapter/index.js.map +1 -1
- package/lib/adapter/reporter/BrowserCapabilitiesReporter.d.ts +1 -0
- package/lib/adapter/reporter/BrowserCapabilitiesReporter.d.ts.map +1 -0
- package/lib/adapter/reporter/BrowserCapabilitiesReporter.js +4 -1
- package/lib/adapter/reporter/BrowserCapabilitiesReporter.js.map +1 -1
- package/lib/adapter/reporter/InitialisesReporters.d.ts +1 -0
- package/lib/adapter/reporter/InitialisesReporters.d.ts.map +1 -0
- package/lib/adapter/reporter/OutputStreamBuffer.d.ts +2 -1
- package/lib/adapter/reporter/OutputStreamBuffer.d.ts.map +1 -0
- package/lib/adapter/reporter/OutputStreamBufferPrinter.d.ts +2 -1
- package/lib/adapter/reporter/OutputStreamBufferPrinter.d.ts.map +1 -0
- package/lib/adapter/reporter/OutputStreamBufferPrinter.js.map +1 -1
- package/lib/adapter/reporter/ProvidesWriteStream.d.ts +2 -1
- package/lib/adapter/reporter/ProvidesWriteStream.d.ts.map +1 -0
- package/lib/adapter/reporter/TagPrinter.d.ts +1 -0
- package/lib/adapter/reporter/TagPrinter.d.ts.map +1 -0
- package/lib/adapter/reporter/index.d.ts +1 -0
- package/lib/adapter/reporter/index.d.ts.map +1 -0
- package/lib/adapter/reporter/index.js +5 -1
- package/lib/adapter/reporter/index.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +5 -1
- package/lib/index.js.map +1 -1
- package/lib/screenplay/abilities/BrowseTheWebWithWebdriverIO.d.ts +28 -197
- package/lib/screenplay/abilities/BrowseTheWebWithWebdriverIO.d.ts.map +1 -0
- package/lib/screenplay/abilities/BrowseTheWebWithWebdriverIO.js +29 -296
- package/lib/screenplay/abilities/BrowseTheWebWithWebdriverIO.js.map +1 -1
- package/lib/screenplay/abilities/index.d.ts +1 -0
- package/lib/screenplay/abilities/index.d.ts.map +1 -0
- package/lib/screenplay/abilities/index.js +5 -1
- package/lib/screenplay/abilities/index.js.map +1 -1
- package/lib/screenplay/index.d.ts +1 -0
- package/lib/screenplay/index.d.ts.map +1 -0
- package/lib/screenplay/index.js +5 -1
- package/lib/screenplay/index.js.map +1 -1
- package/lib/screenplay/models/WebdriverIOBrowsingSession.d.ts +24 -0
- package/lib/screenplay/models/WebdriverIOBrowsingSession.d.ts.map +1 -0
- package/lib/screenplay/models/WebdriverIOBrowsingSession.js +125 -0
- package/lib/screenplay/models/WebdriverIOBrowsingSession.js.map +1 -0
- package/lib/screenplay/models/WebdriverIOCookie.d.ts +6 -0
- package/lib/screenplay/models/WebdriverIOCookie.d.ts.map +1 -0
- package/lib/screenplay/models/WebdriverIOCookie.js +7 -2
- package/lib/screenplay/models/WebdriverIOCookie.js.map +1 -1
- package/lib/screenplay/models/WebdriverIOErrorHandler.d.ts +9 -0
- package/lib/screenplay/models/WebdriverIOErrorHandler.d.ts.map +1 -0
- package/lib/screenplay/models/WebdriverIOErrorHandler.js +23 -0
- package/lib/screenplay/models/WebdriverIOErrorHandler.js.map +1 -0
- package/lib/screenplay/models/WebdriverIOModalDialogHandler.d.ts +29 -0
- package/lib/screenplay/models/WebdriverIOModalDialogHandler.d.ts.map +1 -0
- package/lib/screenplay/models/WebdriverIOModalDialogHandler.js +77 -0
- package/lib/screenplay/models/WebdriverIOModalDialogHandler.js.map +1 -0
- package/lib/screenplay/models/WebdriverIOPage.d.ts +29 -5
- package/lib/screenplay/models/WebdriverIOPage.d.ts.map +1 -0
- package/lib/screenplay/models/WebdriverIOPage.js +166 -54
- package/lib/screenplay/models/WebdriverIOPage.js.map +1 -1
- package/lib/screenplay/models/WebdriverIOPageElement.d.ts +10 -10
- package/lib/screenplay/models/WebdriverIOPageElement.d.ts.map +1 -0
- package/lib/screenplay/models/WebdriverIOPageElement.js +163 -117
- package/lib/screenplay/models/WebdriverIOPageElement.js.map +1 -1
- package/lib/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.d.ts +32 -0
- package/lib/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.d.ts.map +1 -0
- package/lib/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.js +82 -0
- package/lib/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.js.map +1 -0
- package/lib/screenplay/models/WebdriverProtocolErrorCode.d.ts +39 -0
- package/lib/screenplay/models/WebdriverProtocolErrorCode.d.ts.map +1 -0
- package/lib/screenplay/models/WebdriverProtocolErrorCode.js +43 -0
- package/lib/screenplay/models/WebdriverProtocolErrorCode.js.map +1 -0
- package/lib/screenplay/models/index.d.ts +2 -1
- package/lib/screenplay/models/index.d.ts.map +1 -0
- package/lib/screenplay/models/index.js +6 -2
- package/lib/screenplay/models/index.js.map +1 -1
- package/lib/screenplay/models/locators/WebdriverIOLocator.d.ts +18 -5
- package/lib/screenplay/models/locators/WebdriverIOLocator.d.ts.map +1 -0
- package/lib/screenplay/models/locators/WebdriverIOLocator.js +84 -5
- package/lib/screenplay/models/locators/WebdriverIOLocator.js.map +1 -1
- package/lib/screenplay/models/locators/WebdriverIORootLocator.d.ts +17 -0
- package/lib/screenplay/models/locators/WebdriverIORootLocator.d.ts.map +1 -0
- package/lib/screenplay/models/locators/WebdriverIORootLocator.js +32 -0
- package/lib/screenplay/models/locators/WebdriverIORootLocator.js.map +1 -0
- package/lib/screenplay/models/locators/index.d.ts +2 -1
- package/lib/screenplay/models/locators/index.d.ts.map +1 -0
- package/lib/screenplay/models/locators/index.js +6 -2
- package/lib/screenplay/models/locators/index.js.map +1 -1
- package/package.json +31 -32
- package/src/adapter/TestRunnerLoader.ts +3 -5
- package/src/adapter/WebdriverIOConfig.ts +114 -109
- package/src/adapter/WebdriverIOFrameworkAdapter.ts +20 -12
- package/src/adapter/WebdriverIOFrameworkAdapterFactory.ts +1 -1
- package/src/adapter/WebdriverIONotifier.ts +8 -6
- package/src/adapter/index.ts +0 -1
- package/src/adapter/reporter/OutputStreamBuffer.ts +1 -1
- package/src/adapter/reporter/OutputStreamBufferPrinter.ts +1 -1
- package/src/adapter/reporter/ProvidesWriteStream.ts +1 -1
- package/src/screenplay/abilities/BrowseTheWebWithWebdriverIO.ts +29 -339
- package/src/screenplay/models/WebdriverIOBrowsingSession.ts +171 -0
- package/src/screenplay/models/WebdriverIOCookie.ts +7 -2
- package/src/screenplay/models/WebdriverIOErrorHandler.ts +25 -0
- package/src/screenplay/models/WebdriverIOModalDialogHandler.ts +100 -0
- package/src/screenplay/models/WebdriverIOPage.ts +222 -63
- package/src/screenplay/models/WebdriverIOPageElement.ts +183 -148
- package/src/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.ts +97 -0
- package/src/screenplay/models/WebdriverProtocolErrorCode.ts +38 -0
- package/src/screenplay/models/index.ts +1 -1
- package/src/screenplay/models/locators/WebdriverIOLocator.ts +122 -24
- package/src/screenplay/models/locators/WebdriverIORootLocator.ts +33 -0
- package/src/screenplay/models/locators/index.ts +1 -1
- package/tsconfig.build.json +17 -0
- package/lib/screenplay/models/WebdriverIOModalDialog.d.ts +0 -11
- package/lib/screenplay/models/WebdriverIOModalDialog.js +0 -40
- package/lib/screenplay/models/WebdriverIOModalDialog.js.map +0 -1
- package/lib/screenplay/models/locators/WebdriverIONativeElementRoot.d.ts +0 -2
- package/lib/screenplay/models/locators/WebdriverIONativeElementRoot.js +0 -3
- package/lib/screenplay/models/locators/WebdriverIONativeElementRoot.js.map +0 -1
- package/src/screenplay/models/WebdriverIOModalDialog.ts +0 -45
- package/src/screenplay/models/locators/WebdriverIONativeElementRoot.ts +0 -3
- 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
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* @
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
* }
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
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
|
-
*
|
|
103
|
-
*
|
|
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
|
-
*
|
|
111
|
-
*
|
|
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
|
-
*
|
|
115
|
-
* @see {@link @serenity-js/jasmine/lib/adapter~JasmineConfig}
|
|
116
|
-
* @see {@link @serenity-js/mocha/lib/adapter~MochaConfig}
|
|
119
|
+
* #### Learn more
|
|
117
120
|
*
|
|
118
|
-
*
|
|
119
|
-
* @
|
|
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 {
|
|
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 {
|
|
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:
|
|
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
|
-
|
|
89
|
-
|
|
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
|
-
* @
|
|
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 =
|
|
395
|
-
?
|
|
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
|
|
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;
|
package/src/adapter/index.ts
CHANGED
|
@@ -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
|
|