@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
@@ -1,27 +1,101 @@
1
- import { Locator, PageElement, Selector } from '@serenity-js/web';
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 { WebdriverIONativeElementRoot } from './WebdriverIONativeElementRoot';
7
+ import { WebdriverIORootLocator } from './WebdriverIORootLocator';
6
8
 
7
- export class WebdriverIOLocator<Selector_Type extends Selector> extends Locator<wdio.Element<'async'>, WebdriverIONativeElementRoot, Selector_Type> {
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
- static createRootLocator<ST extends Selector>(browser: WebdriverIONativeElementRoot, selector: ST, webdriverioSelector: string): WebdriverIOLocator<ST> {
10
- return new WebdriverIOLocator(
11
- () => browser,
12
- selector,
13
- (root: WebdriverIONativeElementRoot) => root.$(webdriverioSelector) as unknown as wdio.Element<'async'>,
14
- (root: WebdriverIONativeElementRoot) => root.$$(webdriverioSelector)
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
- of(parent: WebdriverIOLocator<unknown>): Locator<wdio.Element<'async'>, WebdriverIONativeElementRoot, Selector_Type> {
19
- return new WebdriverIOLocator(
20
- () => parent.nativeElement(),
21
- this.selector,
22
- (parentRoot: WebdriverIONativeElementRoot) => this.locateElement(parentRoot),
23
- (parentRoot: WebdriverIONativeElementRoot) => this.locateAllElements(parentRoot),
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.locateAllElements(await this.parentRoot());
106
+ const elements = await this.allNativeElements();
33
107
 
34
108
  return elements.map(childElement =>
35
- new WebdriverIOPageElement(new WebdriverIOLocator(
36
- () => this.parentRoot(),
37
- this.selector,
38
- () => childElement,
39
- () => [ childElement ],
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 './WebdriverIONativeElementRoot';
2
+ export * from './WebdriverIORootLocator';
@@ -0,0 +1,17 @@
1
+ {
2
+ "extends": "../../tsconfig.build.json",
3
+ "compilerOptions": {
4
+ "outDir": "lib",
5
+ "rootDir": "src",
6
+ "lib": [
7
+ "es2019",
8
+ "dom"
9
+ ],
10
+ "types": [
11
+ "webdriverio/async"
12
+ ]
13
+ },
14
+ "include": [
15
+ "src/**/*.ts"
16
+ ]
17
+ }
@@ -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,2 +0,0 @@
1
- import * as wdio from 'webdriverio';
2
- export declare type WebdriverIONativeElementRoot = Pick<wdio.Browser<'async'>, '$' | '$$'>;
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=WebdriverIONativeElementRoot.js.map
@@ -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
- }
@@ -1,3 +0,0 @@
1
- import * as wdio from 'webdriverio';
2
-
3
- export type WebdriverIONativeElementRoot = Pick<wdio.Browser<'async'>, '$' | '$$'>;
@@ -1,10 +0,0 @@
1
- {
2
- "extends": "./tsconfig",
3
- "include": [
4
- "src/**/*.ts",
5
- "spec/**/*.ts"
6
- ],
7
- "exclude": [
8
- "node_modules"
9
- ]
10
- }