@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
|
@@ -1,27 +1,101 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { f, LogicError } from '@serenity-js/core';
|
|
2
|
+
import { ByCss, ByCssContainingText, ByDeepCss, ById, ByTagName, ByXPath, Locator, PageElement, RootLocator, Selector } from '@serenity-js/web';
|
|
2
3
|
import * as wdio from 'webdriverio';
|
|
3
4
|
|
|
5
|
+
import { WebdriverIOErrorHandler } from '../WebdriverIOErrorHandler';
|
|
4
6
|
import { WebdriverIOPageElement } from '../WebdriverIOPageElement';
|
|
5
|
-
import {
|
|
7
|
+
import { WebdriverIORootLocator } from './WebdriverIORootLocator';
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
/**
|
|
10
|
+
* WebdriverIO-specific implementation of {@apilink Locator}.
|
|
11
|
+
*
|
|
12
|
+
* @group Models
|
|
13
|
+
*/
|
|
14
|
+
export class WebdriverIOLocator extends Locator<wdio.Element<'async'>, string> {
|
|
8
15
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
);
|
|
16
|
+
constructor(
|
|
17
|
+
parent: RootLocator<wdio.Element<'async'>>,
|
|
18
|
+
selector: Selector,
|
|
19
|
+
private readonly errorHandler: WebdriverIOErrorHandler,
|
|
20
|
+
) {
|
|
21
|
+
super(parent, selector);
|
|
16
22
|
}
|
|
17
23
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
this.selector
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
)
|
|
24
|
+
// todo: refactor; replace with a map and some more generic lookup mechanism
|
|
25
|
+
protected nativeSelector(): string {
|
|
26
|
+
if (this.selector instanceof ByCss) {
|
|
27
|
+
return this.selector.value;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (this.selector instanceof ByDeepCss) {
|
|
31
|
+
return `>>> ${ this.selector.value }`;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (this.selector instanceof ByCssContainingText) {
|
|
35
|
+
return `${ this.selector.value }*=${ this.selector.text }`;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (this.selector instanceof ById) {
|
|
39
|
+
return `#${ this.selector.value }`;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (this.selector instanceof ByTagName) {
|
|
43
|
+
return `<${ this.selector.value } />`;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (this.selector instanceof ByXPath) {
|
|
47
|
+
return this.selector.value;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
throw new LogicError(f `${ this.selector } is not supported by ${ this.constructor.name }`);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
async isPresent(): Promise<boolean> {
|
|
54
|
+
try {
|
|
55
|
+
const element = await this.resolveNativeElement();
|
|
56
|
+
return Boolean(element);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
async nativeElement(): Promise<wdio.Element<'async'>> {
|
|
64
|
+
try {
|
|
65
|
+
return await this.resolveNativeElement();
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
return await this.errorHandler.executeIfHandled(error, () => this.resolveNativeElement());
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
private async resolveNativeElement(): Promise<wdio.Element<'async'>> {
|
|
73
|
+
const parent = await this.parent.nativeElement();
|
|
74
|
+
|
|
75
|
+
if (parent.error) {
|
|
76
|
+
throw parent.error;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const element = await parent.$(this.nativeSelector());
|
|
80
|
+
|
|
81
|
+
if (element.error) {
|
|
82
|
+
throw element.error;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return element;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
async allNativeElements(): Promise<Array<wdio.Element<'async'>>> {
|
|
89
|
+
const parent = await this.parent.nativeElement();
|
|
90
|
+
return parent.$$(this.nativeSelector());
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
of(parent: WebdriverIOLocator): Locator<wdio.Element<'async'>, string> {
|
|
94
|
+
return new WebdriverIOLocator(parent, this.selector, this.errorHandler);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
locate(child: WebdriverIOLocator): Locator<wdio.Element<'async'>, string> {
|
|
98
|
+
return new WebdriverIOLocator(this, child.selector, this.errorHandler);
|
|
25
99
|
}
|
|
26
100
|
|
|
27
101
|
element(): PageElement<wdio.Element<'async'>> {
|
|
@@ -29,15 +103,39 @@ export class WebdriverIOLocator<Selector_Type extends Selector> extends Locator<
|
|
|
29
103
|
}
|
|
30
104
|
|
|
31
105
|
async allElements(): Promise<Array<PageElement<wdio.Element<'async'>>>> {
|
|
32
|
-
const elements = await this.
|
|
106
|
+
const elements = await this.allNativeElements();
|
|
33
107
|
|
|
34
108
|
return elements.map(childElement =>
|
|
35
|
-
new WebdriverIOPageElement(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
109
|
+
new WebdriverIOPageElement(
|
|
110
|
+
new ExistingElementLocator(
|
|
111
|
+
this.parent as WebdriverIORootLocator,
|
|
112
|
+
this.selector,
|
|
113
|
+
this.errorHandler,
|
|
114
|
+
childElement
|
|
115
|
+
)
|
|
116
|
+
)
|
|
41
117
|
);
|
|
42
118
|
}
|
|
43
119
|
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* @private
|
|
123
|
+
*/
|
|
124
|
+
class ExistingElementLocator extends WebdriverIOLocator {
|
|
125
|
+
constructor(
|
|
126
|
+
parentRoot: RootLocator<wdio.Element<'async'>>,
|
|
127
|
+
selector: Selector,
|
|
128
|
+
errorHandler: WebdriverIOErrorHandler,
|
|
129
|
+
private readonly existingNativeElement: wdio.Element<'async'>,
|
|
130
|
+
) {
|
|
131
|
+
super(parentRoot, selector, errorHandler);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
async nativeElement(): Promise<wdio.Element<'async'>> {
|
|
135
|
+
return this.existingNativeElement;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
async allNativeElements(): Promise<Array<wdio.Element<'async'>>> {
|
|
139
|
+
return [ this.existingNativeElement ];
|
|
140
|
+
}
|
|
141
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { RootLocator } from '@serenity-js/web';
|
|
2
|
+
import * as wdio from 'webdriverio';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* WebdriverIO-specific implementation of {@apilink RootLocator}.
|
|
6
|
+
*
|
|
7
|
+
* @group Models
|
|
8
|
+
*/
|
|
9
|
+
export class WebdriverIORootLocator extends RootLocator<wdio.Browser<'async'>> {
|
|
10
|
+
constructor(private readonly browser: wdio.Browser<'async'>) {
|
|
11
|
+
super();
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
async isPresent(): Promise<boolean> {
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
async nativeElement(): Promise<Pick<wdio.Browser<'async'>, '$' | '$$'>> {
|
|
19
|
+
return this.browser;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
async switchToFrame(frame: wdio.Element<'async'>): Promise<void> {
|
|
23
|
+
await this.browser.switchToFrame(frame);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
async switchToParentFrame(): Promise<void> {
|
|
27
|
+
await this.browser.switchToParentFrame();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
async switchToMainFrame(): Promise<void> {
|
|
31
|
+
await this.browser.switchToFrame(null); // eslint-disable-line unicorn/no-null
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from './WebdriverIOLocator';
|
|
2
|
-
export * from './
|
|
2
|
+
export * from './WebdriverIORootLocator';
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { ModalDialog } from '@serenity-js/web';
|
|
2
|
-
import { Browser } from 'webdriverio';
|
|
3
|
-
export declare class WebdriverIOModalDialog extends ModalDialog {
|
|
4
|
-
private readonly browser;
|
|
5
|
-
constructor(browser: Browser<'async'>);
|
|
6
|
-
accept(): Promise<void>;
|
|
7
|
-
dismiss(): Promise<void>;
|
|
8
|
-
text(): Promise<string>;
|
|
9
|
-
enterValue(value: string | number | (string | number)[]): Promise<void>;
|
|
10
|
-
isPresent(): Promise<boolean>;
|
|
11
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WebdriverIOModalDialog = void 0;
|
|
4
|
-
const web_1 = require("@serenity-js/web");
|
|
5
|
-
class WebdriverIOModalDialog extends web_1.ModalDialog {
|
|
6
|
-
constructor(browser) {
|
|
7
|
-
super();
|
|
8
|
-
this.browser = browser;
|
|
9
|
-
}
|
|
10
|
-
accept() {
|
|
11
|
-
return this.browser.acceptAlert();
|
|
12
|
-
}
|
|
13
|
-
dismiss() {
|
|
14
|
-
return this.browser.dismissAlert();
|
|
15
|
-
}
|
|
16
|
-
text() {
|
|
17
|
-
return this.browser.getAlertText();
|
|
18
|
-
}
|
|
19
|
-
async enterValue(value) {
|
|
20
|
-
const text = [].concat(value).join('');
|
|
21
|
-
await this.browser.sendAlertText(text);
|
|
22
|
-
// Puppeteer auto-accepts the dialog upon sendAlertText
|
|
23
|
-
// other implementations require the dialog to be closed
|
|
24
|
-
if (!this.browser.isDevTools) {
|
|
25
|
-
await this.browser.acceptAlert();
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
isPresent() {
|
|
29
|
-
return this.browser.getAlertText()
|
|
30
|
-
.then(() => true, error => {
|
|
31
|
-
if (error && (error.name === 'no such alert'
|
|
32
|
-
|| error.message.startsWith('no such alert'))) {
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
throw error;
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
exports.WebdriverIOModalDialog = WebdriverIOModalDialog;
|
|
40
|
-
//# sourceMappingURL=WebdriverIOModalDialog.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WebdriverIOModalDialog.js","sourceRoot":"","sources":["../../../src/screenplay/models/WebdriverIOModalDialog.ts"],"names":[],"mappings":";;;AAAA,0CAA+C;AAG/C,MAAa,sBAAuB,SAAQ,iBAAW;IACnD,YAA6B,OAAyB;QAClD,KAAK,EAAE,CAAC;QADiB,YAAO,GAAP,OAAO,CAAkB;IAEtD,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;IACvC,CAAC;IACD,IAAI;QACA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAA4C;QACzD,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEvC,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAEvC,uDAAuD;QACvD,wDAAwD;QACxD,IAAI,CAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;SACpC;IACL,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;aAC7B,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;YACtB,IAAI,KAAK,IAAI,CACT,KAAK,CAAC,IAAI,KAAK,eAAe;mBAC3B,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAC/C,EAAE;gBACC,OAAO,KAAK,CAAC;aAChB;YAED,MAAM,KAAK,CAAC;QAChB,CAAC,CAAC,CAAC;IACX,CAAC;CACJ;AAzCD,wDAyCC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WebdriverIONativeElementRoot.js","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/WebdriverIONativeElementRoot.ts"],"names":[],"mappings":""}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { ModalDialog } from '@serenity-js/web';
|
|
2
|
-
import { Browser } from 'webdriverio';
|
|
3
|
-
|
|
4
|
-
export class WebdriverIOModalDialog extends ModalDialog {
|
|
5
|
-
constructor(private readonly browser: Browser<'async'>) {
|
|
6
|
-
super();
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
accept(): Promise<void> {
|
|
10
|
-
return this.browser.acceptAlert();
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
dismiss(): Promise<void> {
|
|
14
|
-
return this.browser.dismissAlert();
|
|
15
|
-
}
|
|
16
|
-
text(): Promise<string> {
|
|
17
|
-
return this.browser.getAlertText();
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
async enterValue(value: string | number | (string | number)[]): Promise<void> {
|
|
21
|
-
const text = [].concat(value).join('');
|
|
22
|
-
|
|
23
|
-
await this.browser.sendAlertText(text);
|
|
24
|
-
|
|
25
|
-
// Puppeteer auto-accepts the dialog upon sendAlertText
|
|
26
|
-
// other implementations require the dialog to be closed
|
|
27
|
-
if (! this.browser.isDevTools) {
|
|
28
|
-
await this.browser.acceptAlert();
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
isPresent(): Promise<boolean> {
|
|
33
|
-
return this.browser.getAlertText()
|
|
34
|
-
.then(() => true, error => {
|
|
35
|
-
if (error && (
|
|
36
|
-
error.name === 'no such alert'
|
|
37
|
-
|| error.message.startsWith('no such alert')
|
|
38
|
-
)) {
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
throw error;
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
}
|