@serenity-js/webdriverio 3.4.2 → 3.6.0

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 (142) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/esm/adapter/TestRunnerLoader.d.ts +4 -3
  3. package/esm/adapter/TestRunnerLoader.d.ts.map +1 -1
  4. package/esm/adapter/TestRunnerLoader.js.map +1 -1
  5. package/esm/adapter/WebdriverIOFrameworkAdapter.d.ts +5 -4
  6. package/esm/adapter/WebdriverIOFrameworkAdapter.d.ts.map +1 -1
  7. package/esm/adapter/WebdriverIOFrameworkAdapter.js.map +1 -1
  8. package/esm/adapter/WebdriverIOFrameworkAdapterFactory.d.ts +4 -4
  9. package/esm/adapter/WebdriverIOFrameworkAdapterFactory.d.ts.map +1 -1
  10. package/esm/adapter/WebdriverIONotifier.d.ts +4 -4
  11. package/esm/adapter/WebdriverIONotifier.d.ts.map +1 -1
  12. package/esm/adapter/WebdriverIONotifier.js +2 -3
  13. package/esm/adapter/WebdriverIONotifier.js.map +1 -1
  14. package/esm/adapter/reporter/BrowserCapabilitiesReporter.d.ts +1 -1
  15. package/esm/adapter/reporter/BrowserCapabilitiesReporter.d.ts.map +1 -1
  16. package/esm/adapter/reporter/OutputStreamBuffer.d.ts +1 -1
  17. package/esm/adapter/reporter/OutputStreamBuffer.d.ts.map +1 -1
  18. package/esm/adapter/reporter/OutputStreamBufferPrinter.d.ts +4 -4
  19. package/esm/adapter/reporter/OutputStreamBufferPrinter.d.ts.map +1 -1
  20. package/esm/adapter/reporter/OutputStreamBufferPrinter.js.map +1 -1
  21. package/esm/adapter/reporter/ProvidesWriteStream.d.ts +1 -1
  22. package/esm/adapter/reporter/ProvidesWriteStream.d.ts.map +1 -1
  23. package/esm/adapter/reporter/TagPrinter.d.ts +1 -1
  24. package/esm/adapter/reporter/TagPrinter.d.ts.map +1 -1
  25. package/esm/adapter/reporter/TagPrinter.js.map +1 -1
  26. package/esm/config/WebdriverIOConfig.d.ts +1 -1
  27. package/esm/config/WebdriverIOConfig.d.ts.map +1 -1
  28. package/esm/index.d.ts +4 -4
  29. package/esm/index.d.ts.map +1 -1
  30. package/esm/screenplay/abilities/BrowseTheWebWithWebdriverIO.d.ts +1 -4
  31. package/esm/screenplay/abilities/BrowseTheWebWithWebdriverIO.d.ts.map +1 -1
  32. package/esm/screenplay/abilities/BrowseTheWebWithWebdriverIO.js +1 -8
  33. package/esm/screenplay/abilities/BrowseTheWebWithWebdriverIO.js.map +1 -1
  34. package/esm/screenplay/models/WebdriverIOBrowsingSession.d.ts +2 -1
  35. package/esm/screenplay/models/WebdriverIOBrowsingSession.d.ts.map +1 -1
  36. package/esm/screenplay/models/WebdriverIOBrowsingSession.js +3 -1
  37. package/esm/screenplay/models/WebdriverIOBrowsingSession.js.map +1 -1
  38. package/esm/screenplay/models/WebdriverIOCookie.d.ts +2 -1
  39. package/esm/screenplay/models/WebdriverIOCookie.d.ts.map +1 -1
  40. package/esm/screenplay/models/WebdriverIOCookie.js.map +1 -1
  41. package/esm/screenplay/models/WebdriverIOErrorHandler.d.ts +1 -1
  42. package/esm/screenplay/models/WebdriverIOErrorHandler.d.ts.map +1 -1
  43. package/esm/screenplay/models/WebdriverIOModalDialogHandler.d.ts +3 -2
  44. package/esm/screenplay/models/WebdriverIOModalDialogHandler.d.ts.map +1 -1
  45. package/esm/screenplay/models/WebdriverIOModalDialogHandler.js.map +1 -1
  46. package/esm/screenplay/models/WebdriverIOPage.d.ts +6 -4
  47. package/esm/screenplay/models/WebdriverIOPage.d.ts.map +1 -1
  48. package/esm/screenplay/models/WebdriverIOPage.js +5 -2
  49. package/esm/screenplay/models/WebdriverIOPage.js.map +1 -1
  50. package/esm/screenplay/models/WebdriverIOPageElement.d.ts +2 -1
  51. package/esm/screenplay/models/WebdriverIOPageElement.d.ts.map +1 -1
  52. package/esm/screenplay/models/WebdriverIOPageElement.js.map +1 -1
  53. package/esm/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.d.ts +2 -1
  54. package/esm/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.d.ts.map +1 -1
  55. package/esm/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.js.map +1 -1
  56. package/esm/screenplay/models/WebdriverProtocolErrorCode.js +1 -1
  57. package/esm/screenplay/models/WebdriverProtocolErrorCode.js.map +1 -1
  58. package/esm/screenplay/models/locators/WebdriverIOLocator.d.ts +12 -2
  59. package/esm/screenplay/models/locators/WebdriverIOLocator.d.ts.map +1 -1
  60. package/esm/screenplay/models/locators/WebdriverIOLocator.js +3 -3
  61. package/esm/screenplay/models/locators/WebdriverIOLocator.js.map +1 -1
  62. package/lib/adapter/TestRunnerLoader.d.ts +4 -3
  63. package/lib/adapter/TestRunnerLoader.d.ts.map +1 -1
  64. package/lib/adapter/TestRunnerLoader.js.map +1 -1
  65. package/lib/adapter/WebdriverIOFrameworkAdapter.d.ts +5 -4
  66. package/lib/adapter/WebdriverIOFrameworkAdapter.d.ts.map +1 -1
  67. package/lib/adapter/WebdriverIOFrameworkAdapter.js.map +1 -1
  68. package/lib/adapter/WebdriverIOFrameworkAdapterFactory.d.ts +4 -4
  69. package/lib/adapter/WebdriverIOFrameworkAdapterFactory.d.ts.map +1 -1
  70. package/lib/adapter/WebdriverIONotifier.d.ts +4 -4
  71. package/lib/adapter/WebdriverIONotifier.d.ts.map +1 -1
  72. package/lib/adapter/WebdriverIONotifier.js +1 -1
  73. package/lib/adapter/WebdriverIONotifier.js.map +1 -1
  74. package/lib/adapter/reporter/BrowserCapabilitiesReporter.d.ts +1 -1
  75. package/lib/adapter/reporter/BrowserCapabilitiesReporter.d.ts.map +1 -1
  76. package/lib/adapter/reporter/OutputStreamBuffer.d.ts +1 -1
  77. package/lib/adapter/reporter/OutputStreamBuffer.d.ts.map +1 -1
  78. package/lib/adapter/reporter/OutputStreamBufferPrinter.d.ts +4 -4
  79. package/lib/adapter/reporter/OutputStreamBufferPrinter.d.ts.map +1 -1
  80. package/lib/adapter/reporter/OutputStreamBufferPrinter.js.map +1 -1
  81. package/lib/adapter/reporter/ProvidesWriteStream.d.ts +1 -1
  82. package/lib/adapter/reporter/ProvidesWriteStream.d.ts.map +1 -1
  83. package/lib/adapter/reporter/TagPrinter.d.ts +1 -1
  84. package/lib/adapter/reporter/TagPrinter.d.ts.map +1 -1
  85. package/lib/adapter/reporter/TagPrinter.js.map +1 -1
  86. package/lib/config/WebdriverIOConfig.d.ts +1 -1
  87. package/lib/config/WebdriverIOConfig.d.ts.map +1 -1
  88. package/lib/index.d.ts +4 -4
  89. package/lib/index.d.ts.map +1 -1
  90. package/lib/screenplay/abilities/BrowseTheWebWithWebdriverIO.d.ts +1 -4
  91. package/lib/screenplay/abilities/BrowseTheWebWithWebdriverIO.d.ts.map +1 -1
  92. package/lib/screenplay/abilities/BrowseTheWebWithWebdriverIO.js +1 -8
  93. package/lib/screenplay/abilities/BrowseTheWebWithWebdriverIO.js.map +1 -1
  94. package/lib/screenplay/models/WebdriverIOBrowsingSession.d.ts +2 -1
  95. package/lib/screenplay/models/WebdriverIOBrowsingSession.d.ts.map +1 -1
  96. package/lib/screenplay/models/WebdriverIOBrowsingSession.js +3 -1
  97. package/lib/screenplay/models/WebdriverIOBrowsingSession.js.map +1 -1
  98. package/lib/screenplay/models/WebdriverIOCookie.d.ts +2 -1
  99. package/lib/screenplay/models/WebdriverIOCookie.d.ts.map +1 -1
  100. package/lib/screenplay/models/WebdriverIOCookie.js.map +1 -1
  101. package/lib/screenplay/models/WebdriverIOErrorHandler.d.ts +1 -1
  102. package/lib/screenplay/models/WebdriverIOErrorHandler.d.ts.map +1 -1
  103. package/lib/screenplay/models/WebdriverIOModalDialogHandler.d.ts +3 -2
  104. package/lib/screenplay/models/WebdriverIOModalDialogHandler.d.ts.map +1 -1
  105. package/lib/screenplay/models/WebdriverIOModalDialogHandler.js.map +1 -1
  106. package/lib/screenplay/models/WebdriverIOPage.d.ts +6 -4
  107. package/lib/screenplay/models/WebdriverIOPage.d.ts.map +1 -1
  108. package/lib/screenplay/models/WebdriverIOPage.js +3 -0
  109. package/lib/screenplay/models/WebdriverIOPage.js.map +1 -1
  110. package/lib/screenplay/models/WebdriverIOPageElement.d.ts +2 -1
  111. package/lib/screenplay/models/WebdriverIOPageElement.d.ts.map +1 -1
  112. package/lib/screenplay/models/WebdriverIOPageElement.js.map +1 -1
  113. package/lib/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.d.ts +2 -1
  114. package/lib/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.d.ts.map +1 -1
  115. package/lib/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.js.map +1 -1
  116. package/lib/screenplay/models/WebdriverProtocolErrorCode.js +1 -1
  117. package/lib/screenplay/models/WebdriverProtocolErrorCode.js.map +1 -1
  118. package/lib/screenplay/models/locators/WebdriverIOLocator.d.ts +12 -2
  119. package/lib/screenplay/models/locators/WebdriverIOLocator.d.ts.map +1 -1
  120. package/lib/screenplay/models/locators/WebdriverIOLocator.js +5 -4
  121. package/lib/screenplay/models/locators/WebdriverIOLocator.js.map +1 -1
  122. package/package.json +5 -5
  123. package/src/adapter/TestRunnerLoader.ts +4 -3
  124. package/src/adapter/WebdriverIOFrameworkAdapter.ts +11 -7
  125. package/src/adapter/WebdriverIOFrameworkAdapterFactory.ts +4 -4
  126. package/src/adapter/WebdriverIONotifier.ts +9 -6
  127. package/src/adapter/reporter/BrowserCapabilitiesReporter.ts +2 -2
  128. package/src/adapter/reporter/OutputStreamBuffer.ts +1 -1
  129. package/src/adapter/reporter/OutputStreamBufferPrinter.ts +5 -4
  130. package/src/adapter/reporter/ProvidesWriteStream.ts +1 -1
  131. package/src/adapter/reporter/TagPrinter.ts +2 -1
  132. package/src/config/WebdriverIOConfig.ts +1 -1
  133. package/src/index.ts +4 -4
  134. package/src/screenplay/abilities/BrowseTheWebWithWebdriverIO.ts +2 -10
  135. package/src/screenplay/models/WebdriverIOBrowsingSession.ts +9 -5
  136. package/src/screenplay/models/WebdriverIOCookie.ts +2 -1
  137. package/src/screenplay/models/WebdriverIOErrorHandler.ts +1 -1
  138. package/src/screenplay/models/WebdriverIOModalDialogHandler.ts +3 -2
  139. package/src/screenplay/models/WebdriverIOPage.ts +17 -5
  140. package/src/screenplay/models/WebdriverIOPageElement.ts +3 -2
  141. package/src/screenplay/models/WebdriverIOPuppeteerModalDialogHandler.ts +2 -1
  142. package/src/screenplay/models/locators/WebdriverIOLocator.ts +7 -6
@@ -1,5 +1,10 @@
1
- import { LogicError, Stage, StageCrewMember } from '@serenity-js/core';
2
- import { AsyncOperationAttempted, AsyncOperationCompleted, DomainEvent, SceneFinished, SceneStarts, TestRunFinishes, TestSuiteFinished, TestSuiteStarts } from '@serenity-js/core/lib/events/index.js';
1
+ import type { Stage, StageCrewMember } from '@serenity-js/core';
2
+ import { LogicError } from '@serenity-js/core';
3
+ import type { DomainEvent} from '@serenity-js/core/lib/events/index.js';
4
+ import { AsyncOperationAttempted, AsyncOperationCompleted, SceneFinished, SceneStarts, TestRunFinishes, TestSuiteFinished, TestSuiteStarts } from '@serenity-js/core/lib/events/index.js';
5
+ import type {
6
+ Outcome,
7
+ TestSuiteDetails} from '@serenity-js/core/lib/model/index.js';
3
8
  import {
4
9
  CorrelationId,
5
10
  Description,
@@ -9,16 +14,14 @@ import {
9
14
  ExecutionIgnored,
10
15
  ExecutionSkipped,
11
16
  ImplementationPending, Name,
12
- Outcome,
13
- ProblemIndication,
14
- TestSuiteDetails,
17
+ ProblemIndication
15
18
  } from '@serenity-js/core/lib/model/index.js';
16
19
  import type { Test as testStats } from '@wdio/reporter';
17
20
  import type { Capabilities, Frameworks } from '@wdio/types';
18
21
  import type { EventEmitter } from 'events';
19
22
  import { match } from 'tiny-types';
20
23
 
21
- import { WebdriverIOConfig } from '../config/index.js';
24
+ import type { WebdriverIOConfig } from '../config/index.js';
22
25
 
23
26
  // interface Argument {
24
27
  // rows?: {
@@ -1,6 +1,6 @@
1
- import { Serenity } from '@serenity-js/core';
1
+ import type { Serenity } from '@serenity-js/core';
2
2
  import { SceneTagged } from '@serenity-js/core/lib/events/index.js';
3
- import { Tag } from '@serenity-js/core/lib/model/index.js';
3
+ import type { Tag } from '@serenity-js/core/lib/model/index.js';
4
4
  import Reporter from '@wdio/reporter';
5
5
  import type { Capabilities, Options, Reporters } from '@wdio/types';
6
6
 
@@ -1,4 +1,4 @@
1
- import { OutputStream } from '@serenity-js/core/lib/adapter/index.js';
1
+ import type { OutputStream } from '@serenity-js/core/lib/adapter/index.js';
2
2
 
3
3
  /**
4
4
  * @package
@@ -1,8 +1,9 @@
1
- import { Stage, StageCrewMember } from '@serenity-js/core';
2
- import { OutputStream } from '@serenity-js/core/lib/adapter/index.js';
3
- import { DomainEvent, SceneFinished } from '@serenity-js/core/lib/events/index.js';
1
+ import type { Stage, StageCrewMember } from '@serenity-js/core';
2
+ import type { OutputStream } from '@serenity-js/core/lib/adapter/index.js';
3
+ import type { DomainEvent} from '@serenity-js/core/lib/events/index.js';
4
+ import { SceneFinished } from '@serenity-js/core/lib/events/index.js';
4
5
 
5
- import { OutputStreamBuffer } from './OutputStreamBuffer.js';
6
+ import type { OutputStreamBuffer } from './OutputStreamBuffer.js';
6
7
 
7
8
  /**
8
9
  * @package
@@ -1,4 +1,4 @@
1
- import { OutputStream } from '@serenity-js/core/lib/adapter/index.js';
1
+ import type { OutputStream } from '@serenity-js/core/lib/adapter/index.js';
2
2
 
3
3
  /**
4
4
  * @package
@@ -1,4 +1,5 @@
1
- import { BrowserTag, PlatformTag, Tag } from '@serenity-js/core/lib/model/index.js';
1
+ import type { Tag } from '@serenity-js/core/lib/model/index.js';
2
+ import { BrowserTag, PlatformTag } from '@serenity-js/core/lib/model/index.js';
2
3
  import type { Capabilities } from '@wdio/types';
3
4
 
4
5
  /**
@@ -1,4 +1,4 @@
1
- import { SerenityConfig } from '@serenity-js/core';
1
+ import type { SerenityConfig } from '@serenity-js/core';
2
2
  import type { Options } from '@wdio/types';
3
3
 
4
4
  /**
package/src/index.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import { serenity } from '@serenity-js/core';
2
2
  import { ModuleLoader, Path } from '@serenity-js/core/lib/io/index.js';
3
- import { Capabilities } from '@wdio/types';
4
- import { EventEmitter } from 'events';
3
+ import type { Capabilities } from '@wdio/types';
4
+ import type { EventEmitter } from 'events';
5
5
 
6
- import { InitialisesReporters, ProvidesWriteStream } from './adapter/reporter/index.js';
7
- import { WebdriverIOConfig } from './config/index.js';
6
+ import type { InitialisesReporters, ProvidesWriteStream } from './adapter/reporter/index.js';
7
+ import type { WebdriverIOConfig } from './config/index.js';
8
8
 
9
9
  /**
10
10
  * WebdriverIO Framework Adapter integrates WebdriverIO with Serenity/JS
@@ -1,4 +1,4 @@
1
- import { BrowserCapabilities, BrowseTheWeb } from '@serenity-js/web';
1
+ import { BrowseTheWeb } from '@serenity-js/web';
2
2
  import type { Browser, Element } from 'webdriverio';
3
3
 
4
4
  import { WebdriverIOBrowsingSession } from '../models/index.js';
@@ -39,14 +39,6 @@ import { WebdriverIOBrowsingSession } from '../models/index.js';
39
39
  export class BrowseTheWebWithWebdriverIO extends BrowseTheWeb<Element> {
40
40
 
41
41
  static using(browserInstance: Browser): BrowseTheWebWithWebdriverIO {
42
- return new BrowseTheWebWithWebdriverIO(browserInstance);
43
- }
44
-
45
- constructor(protected readonly browser: Browser) {
46
- super(new WebdriverIOBrowsingSession(browser));
47
- }
48
-
49
- browserCapabilities(): Promise<BrowserCapabilities> {
50
- return Promise.resolve(this.browser.capabilities as BrowserCapabilities);
42
+ return new BrowseTheWebWithWebdriverIO(new WebdriverIOBrowsingSession(browserInstance));
51
43
  }
52
44
  }
@@ -1,6 +1,7 @@
1
1
  import { LogicError } from '@serenity-js/core';
2
2
  import { CorrelationId } from '@serenity-js/core/lib/model/index.js';
3
- import { BrowsingSession, ModalDialogHandler } from '@serenity-js/web';
3
+ import type { BrowserCapabilities, ModalDialogHandler } from '@serenity-js/web';
4
+ import { BrowsingSession } from '@serenity-js/web';
4
5
  import type { Page } from 'puppeteer-core';
5
6
  import type { Browser } from 'webdriverio';
6
7
 
@@ -24,7 +25,7 @@ export class WebdriverIOBrowsingSession extends BrowsingSession<WebdriverIOPage>
24
25
  }
25
26
  }
26
27
 
27
- async allPages(): Promise<Array<WebdriverIOPage>> {
28
+ override async allPages(): Promise<Array<WebdriverIOPage>> {
28
29
  // scan all the active window handles and add any newly opened windows if needed
29
30
  const windowHandles: string[] = await this.browser.getWindowHandles();
30
31
 
@@ -55,10 +56,9 @@ export class WebdriverIOBrowsingSession extends BrowsingSession<WebdriverIOPage>
55
56
  }
56
57
 
57
58
  /**
58
- * @override
59
59
  * @param page
60
60
  */
61
- async changeCurrentPageTo(page: WebdriverIOPage): Promise<void> {
61
+ override async changeCurrentPageTo(page: WebdriverIOPage): Promise<void> {
62
62
  const currentPage = await this.currentPage();
63
63
 
64
64
  // are we already on this page?
@@ -121,7 +121,7 @@ export class WebdriverIOBrowsingSession extends BrowsingSession<WebdriverIOPage>
121
121
  return this.currentBrowserPage;
122
122
  }
123
123
 
124
- protected async registerCurrentPage(): Promise<WebdriverIOPage> {
124
+ protected override async registerCurrentPage(): Promise<WebdriverIOPage> {
125
125
  const windowHandle = await this.browser.getWindowHandle();
126
126
 
127
127
  const errorHandler = new WebdriverIOErrorHandler();
@@ -168,4 +168,8 @@ export class WebdriverIOBrowsingSession extends BrowsingSession<WebdriverIOPage>
168
168
 
169
169
  return page;
170
170
  }
171
+
172
+ override browserCapabilities(): Promise<BrowserCapabilities> {
173
+ return Promise.resolve(this.browser.capabilities as BrowserCapabilities);
174
+ }
171
175
  }
@@ -1,5 +1,6 @@
1
1
  import { Timestamp } from '@serenity-js/core';
2
- import { Cookie, CookieData, CookieMissingError } from '@serenity-js/web';
2
+ import type { CookieData} from '@serenity-js/web';
3
+ import { Cookie, CookieMissingError } from '@serenity-js/web';
3
4
  import { ensure, isDefined } from 'tiny-types';
4
5
  import type { Browser } from 'webdriverio';
5
6
 
@@ -1,4 +1,4 @@
1
- import { WebdriverProtocolErrorCode } from './WebdriverProtocolErrorCode.js';
1
+ import type { WebdriverProtocolErrorCode } from './WebdriverProtocolErrorCode.js';
2
2
 
3
3
  export class WebdriverIOErrorHandler {
4
4
 
@@ -1,7 +1,8 @@
1
- import { AbsentModalDialog, AcceptedModalDialog, DismissedModalDialog, ModalDialog, ModalDialogHandler } from '@serenity-js/web';
1
+ import type { ModalDialog} from '@serenity-js/web';
2
+ import { AbsentModalDialog, AcceptedModalDialog, DismissedModalDialog, ModalDialogHandler } from '@serenity-js/web';
2
3
  import type { Browser } from 'webdriverio';
3
4
 
4
- import { WebdriverIOErrorHandler } from './WebdriverIOErrorHandler.js';
5
+ import type { WebdriverIOErrorHandler } from './WebdriverIOErrorHandler.js';
5
6
  import { WebdriverProtocolErrorCode } from './WebdriverProtocolErrorCode.js';
6
7
 
7
8
  /**
@@ -1,13 +1,14 @@
1
1
  import { LogicError } from '@serenity-js/core';
2
- import { CorrelationId } from '@serenity-js/core/lib/model/index.js';
3
- import { BrowserWindowClosedError, Cookie, CookieData, Key, ModalDialogHandler, Page, PageElement, PageElements, Selector } from '@serenity-js/web';
2
+ import type { CorrelationId } from '@serenity-js/core/lib/model/index.js';
3
+ import type { Cookie, CookieData, ModalDialogHandler, PageElement, Selector } from '@serenity-js/web';
4
+ import { BrowserWindowClosedError, ByCss, Key, Page, PageElements } from '@serenity-js/web';
4
5
  import { URL } from 'url';
5
6
  import type { Browser, Element } from 'webdriverio';
6
7
 
7
- import { WebdriverIOLocator, WebdriverIORootLocator } from './locators/index.js';
8
- import { WebdriverIOBrowsingSession } from './WebdriverIOBrowsingSession.js';
8
+ import { WebdriverIOExistingElementLocator, WebdriverIOLocator, WebdriverIORootLocator } from './locators/index.js';
9
+ import type { WebdriverIOBrowsingSession } from './WebdriverIOBrowsingSession.js';
9
10
  import { WebdriverIOCookie } from './WebdriverIOCookie.js';
10
- import { WebdriverIOErrorHandler } from './WebdriverIOErrorHandler.js';
11
+ import type { WebdriverIOErrorHandler } from './WebdriverIOErrorHandler.js';
11
12
  import { WebdriverIOPageElement } from './WebdriverIOPageElement.js';
12
13
 
13
14
  /**
@@ -34,6 +35,17 @@ export class WebdriverIOPage extends Page<Element> {
34
35
  );
35
36
  }
36
37
 
38
+ createPageElement(nativeElement: Element): PageElement<Element> {
39
+ return new WebdriverIOPageElement(
40
+ new WebdriverIOExistingElementLocator(
41
+ this.rootLocator,
42
+ new ByCss(String(nativeElement.selector)),
43
+ this.errorHandler,
44
+ nativeElement
45
+ )
46
+ );
47
+ }
48
+
37
49
  locate(selector: Selector): PageElement<Element> {
38
50
  return new WebdriverIOPageElement(
39
51
  new WebdriverIOLocator(this.rootLocator, selector, this.errorHandler)
@@ -1,9 +1,10 @@
1
1
  import { LogicError } from '@serenity-js/core';
2
- import { Key, PageElement, SelectOption, SwitchableOrigin } from '@serenity-js/web';
2
+ import type { SwitchableOrigin } from '@serenity-js/web';
3
+ import { Key, PageElement, SelectOption } from '@serenity-js/web';
3
4
  import * as scripts from '@serenity-js/web/lib/scripts/index.js';
4
5
  import type { Browser, Element } from 'webdriverio';
5
6
 
6
- import { WebdriverIOLocator } from './locators/index.js';
7
+ import type { WebdriverIOLocator } from './locators/index.js';
7
8
  import { WebdriverProtocolErrorCode } from './WebdriverProtocolErrorCode.js';
8
9
 
9
10
  /**
@@ -1,8 +1,9 @@
1
+ import type {
2
+ ModalDialog} from '@serenity-js/web';
1
3
  import {
2
4
  AbsentModalDialog,
3
5
  AcceptedModalDialog,
4
6
  DismissedModalDialog,
5
- ModalDialog,
6
7
  ModalDialogHandler
7
8
  } from '@serenity-js/web';
8
9
  import type { Dialog, Page } from 'puppeteer-core';
@@ -1,10 +1,11 @@
1
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
+ import type { PageElement, RootLocator, Selector } from '@serenity-js/web';
3
+ import { ByCss, ByCssContainingText, ByDeepCss, ById, ByTagName, ByXPath, Locator } from '@serenity-js/web';
3
4
  import type { Element } from 'webdriverio';
4
5
 
5
- import { WebdriverIOErrorHandler } from '../WebdriverIOErrorHandler.js';
6
+ import type { WebdriverIOErrorHandler } from '../WebdriverIOErrorHandler.js';
6
7
  import { WebdriverIOPageElement } from '../WebdriverIOPageElement.js';
7
- import { WebdriverIORootLocator } from './WebdriverIORootLocator.js';
8
+ import type { WebdriverIORootLocator } from './WebdriverIORootLocator.js';
8
9
 
9
10
  /**
10
11
  * WebdriverIO-specific implementation of {@apilink Locator}.
@@ -107,7 +108,7 @@ export class WebdriverIOLocator extends Locator<Element, string> {
107
108
 
108
109
  return elements.map(childElement =>
109
110
  new WebdriverIOPageElement(
110
- new ExistingElementLocator(
111
+ new WebdriverIOExistingElementLocator(
111
112
  this.parent as WebdriverIORootLocator,
112
113
  this.selector,
113
114
  this.errorHandler,
@@ -119,9 +120,9 @@ export class WebdriverIOLocator extends Locator<Element, string> {
119
120
  }
120
121
 
121
122
  /**
122
- * @private
123
+ * @internal
123
124
  */
124
- class ExistingElementLocator extends WebdriverIOLocator {
125
+ export class WebdriverIOExistingElementLocator extends WebdriverIOLocator {
125
126
  constructor(
126
127
  parentRoot: RootLocator<Element>,
127
128
  selector: Selector,