@serenity-js/web 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 (175) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/lib/expectations/isActive.d.ts +1 -1
  3. package/lib/expectations/isActive.d.ts.map +1 -1
  4. package/lib/expectations/isClickable.d.ts +1 -1
  5. package/lib/expectations/isClickable.d.ts.map +1 -1
  6. package/lib/expectations/isEnabled.d.ts +1 -1
  7. package/lib/expectations/isEnabled.d.ts.map +1 -1
  8. package/lib/expectations/isSelected.d.ts +1 -1
  9. package/lib/expectations/isSelected.d.ts.map +1 -1
  10. package/lib/expectations/isVisible.d.ts +1 -1
  11. package/lib/expectations/isVisible.d.ts.map +1 -1
  12. package/lib/screenplay/abilities/BrowseTheWeb.d.ts +5 -5
  13. package/lib/screenplay/abilities/BrowseTheWeb.d.ts.map +1 -1
  14. package/lib/screenplay/abilities/BrowseTheWeb.js +6 -0
  15. package/lib/screenplay/abilities/BrowseTheWeb.js.map +1 -1
  16. package/lib/screenplay/interactions/Clear.d.ts +2 -2
  17. package/lib/screenplay/interactions/Clear.d.ts.map +1 -1
  18. package/lib/screenplay/interactions/Clear.js.map +1 -1
  19. package/lib/screenplay/interactions/Click.d.ts +2 -2
  20. package/lib/screenplay/interactions/Click.d.ts.map +1 -1
  21. package/lib/screenplay/interactions/Click.js.map +1 -1
  22. package/lib/screenplay/interactions/DoubleClick.d.ts +2 -2
  23. package/lib/screenplay/interactions/DoubleClick.d.ts.map +1 -1
  24. package/lib/screenplay/interactions/DoubleClick.js.map +1 -1
  25. package/lib/screenplay/interactions/Enter.d.ts +2 -2
  26. package/lib/screenplay/interactions/Enter.d.ts.map +1 -1
  27. package/lib/screenplay/interactions/Enter.js.map +1 -1
  28. package/lib/screenplay/interactions/ExecuteScript.d.ts +2 -1
  29. package/lib/screenplay/interactions/ExecuteScript.d.ts.map +1 -1
  30. package/lib/screenplay/interactions/ExecuteScript.js.map +1 -1
  31. package/lib/screenplay/interactions/Hover.d.ts +2 -2
  32. package/lib/screenplay/interactions/Hover.d.ts.map +1 -1
  33. package/lib/screenplay/interactions/Hover.js.map +1 -1
  34. package/lib/screenplay/interactions/Navigate.d.ts +2 -1
  35. package/lib/screenplay/interactions/Navigate.d.ts.map +1 -1
  36. package/lib/screenplay/interactions/Navigate.js.map +1 -1
  37. package/lib/screenplay/interactions/PageElementInteraction.d.ts +4 -3
  38. package/lib/screenplay/interactions/PageElementInteraction.d.ts.map +1 -1
  39. package/lib/screenplay/interactions/PageElementInteraction.js.map +1 -1
  40. package/lib/screenplay/interactions/Press.d.ts +4 -2
  41. package/lib/screenplay/interactions/Press.d.ts.map +1 -1
  42. package/lib/screenplay/interactions/Press.js.map +1 -1
  43. package/lib/screenplay/interactions/RightClick.d.ts +2 -2
  44. package/lib/screenplay/interactions/RightClick.d.ts.map +1 -1
  45. package/lib/screenplay/interactions/RightClick.js.map +1 -1
  46. package/lib/screenplay/interactions/Scroll.d.ts +3 -2
  47. package/lib/screenplay/interactions/Scroll.d.ts.map +1 -1
  48. package/lib/screenplay/interactions/Scroll.js.map +1 -1
  49. package/lib/screenplay/interactions/Select.d.ts +2 -2
  50. package/lib/screenplay/interactions/Select.d.ts.map +1 -1
  51. package/lib/screenplay/interactions/Select.js.map +1 -1
  52. package/lib/screenplay/interactions/Switch.d.ts +3 -2
  53. package/lib/screenplay/interactions/Switch.d.ts.map +1 -1
  54. package/lib/screenplay/interactions/Switch.js.map +1 -1
  55. package/lib/screenplay/interactions/TakeScreenshot.d.ts +2 -1
  56. package/lib/screenplay/interactions/TakeScreenshot.d.ts.map +1 -1
  57. package/lib/screenplay/interactions/TakeScreenshot.js.map +1 -1
  58. package/lib/screenplay/models/BrowsingSession.d.ts +7 -2
  59. package/lib/screenplay/models/BrowsingSession.d.ts.map +1 -1
  60. package/lib/screenplay/models/BrowsingSession.js.map +1 -1
  61. package/lib/screenplay/models/Cookie.d.ts +3 -2
  62. package/lib/screenplay/models/Cookie.d.ts.map +1 -1
  63. package/lib/screenplay/models/Cookie.js.map +1 -1
  64. package/lib/screenplay/models/CookieData.d.ts +1 -1
  65. package/lib/screenplay/models/CookieData.d.ts.map +1 -1
  66. package/lib/screenplay/models/Key.js +1 -1
  67. package/lib/screenplay/models/Key.js.map +1 -1
  68. package/lib/screenplay/models/Locator.d.ts +5 -2
  69. package/lib/screenplay/models/Locator.d.ts.map +1 -1
  70. package/lib/screenplay/models/Locator.js +3 -0
  71. package/lib/screenplay/models/Locator.js.map +1 -1
  72. package/lib/screenplay/models/Page.d.ts +20 -14
  73. package/lib/screenplay/models/Page.d.ts.map +1 -1
  74. package/lib/screenplay/models/Page.js.map +1 -1
  75. package/lib/screenplay/models/PageElement.d.ts +7 -6
  76. package/lib/screenplay/models/PageElement.d.ts.map +1 -1
  77. package/lib/screenplay/models/PageElement.js +6 -0
  78. package/lib/screenplay/models/PageElement.js.map +1 -1
  79. package/lib/screenplay/models/PageElements.d.ts +5 -4
  80. package/lib/screenplay/models/PageElements.d.ts.map +1 -1
  81. package/lib/screenplay/models/PageElements.js.map +1 -1
  82. package/lib/screenplay/models/RootLocator.d.ts +1 -1
  83. package/lib/screenplay/models/RootLocator.d.ts.map +1 -1
  84. package/lib/screenplay/models/Switchable.d.ts +1 -1
  85. package/lib/screenplay/models/Switchable.d.ts.map +1 -1
  86. package/lib/screenplay/models/dialogs/ModalDialog.d.ts +1 -1
  87. package/lib/screenplay/models/dialogs/ModalDialog.d.ts.map +1 -1
  88. package/lib/screenplay/models/dialogs/ModalDialog.js.map +1 -1
  89. package/lib/screenplay/models/dialogs/ModalDialogHandler.d.ts +1 -1
  90. package/lib/screenplay/models/dialogs/ModalDialogHandler.d.ts.map +1 -1
  91. package/lib/screenplay/models/selectors/By.d.ts +2 -1
  92. package/lib/screenplay/models/selectors/By.d.ts.map +1 -1
  93. package/lib/screenplay/models/selectors/By.js.map +1 -1
  94. package/lib/screenplay/models/selectors/Selector.d.ts +2 -1
  95. package/lib/screenplay/models/selectors/Selector.d.ts.map +1 -1
  96. package/lib/screenplay/models/selectors/Selector.js +2 -1
  97. package/lib/screenplay/models/selectors/Selector.js.map +1 -1
  98. package/lib/screenplay/questions/Attribute.d.ts +2 -1
  99. package/lib/screenplay/questions/Attribute.d.ts.map +1 -1
  100. package/lib/screenplay/questions/Attribute.js.map +1 -1
  101. package/lib/screenplay/questions/CssClasses.d.ts +2 -1
  102. package/lib/screenplay/questions/CssClasses.d.ts.map +1 -1
  103. package/lib/screenplay/questions/CssClasses.js.map +1 -1
  104. package/lib/screenplay/questions/LastScriptExecution.d.ts +1 -1
  105. package/lib/screenplay/questions/LastScriptExecution.d.ts.map +1 -1
  106. package/lib/screenplay/questions/LastScriptExecution.js.map +1 -1
  107. package/lib/screenplay/questions/Selected.d.ts +2 -2
  108. package/lib/screenplay/questions/Selected.d.ts.map +1 -1
  109. package/lib/screenplay/questions/Selected.js.map +1 -1
  110. package/lib/screenplay/questions/Text.d.ts +1 -1
  111. package/lib/screenplay/questions/Text.d.ts.map +1 -1
  112. package/lib/screenplay/questions/Text.js.map +1 -1
  113. package/lib/screenplay/questions/Value.d.ts +2 -1
  114. package/lib/screenplay/questions/Value.d.ts.map +1 -1
  115. package/lib/screenplay/questions/Value.js.map +1 -1
  116. package/lib/stage/crew/photographer/Photographer.d.ts +2 -2
  117. package/lib/stage/crew/photographer/Photographer.d.ts.map +1 -1
  118. package/lib/stage/crew/photographer/Photographer.js.map +1 -1
  119. package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.d.ts +2 -2
  120. package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.d.ts.map +1 -1
  121. package/lib/stage/crew/photographer/strategies/PhotoTakingStrategy.js.map +1 -1
  122. package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.d.ts +2 -1
  123. package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.d.ts.map +1 -1
  124. package/lib/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.js.map +1 -1
  125. package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.d.ts +2 -1
  126. package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.d.ts.map +1 -1
  127. package/lib/stage/crew/photographer/strategies/TakePhotosOfFailures.js.map +1 -1
  128. package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.d.ts +2 -1
  129. package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.d.ts.map +1 -1
  130. package/lib/stage/crew/photographer/strategies/TakePhotosOfInteractions.js.map +1 -1
  131. package/package.json +6 -6
  132. package/src/expectations/isActive.ts +1 -1
  133. package/src/expectations/isClickable.ts +1 -1
  134. package/src/expectations/isEnabled.ts +1 -1
  135. package/src/expectations/isSelected.ts +1 -1
  136. package/src/expectations/isVisible.ts +1 -1
  137. package/src/screenplay/abilities/BrowseTheWeb.ts +8 -6
  138. package/src/screenplay/interactions/Clear.ts +3 -2
  139. package/src/screenplay/interactions/Click.ts +3 -2
  140. package/src/screenplay/interactions/DoubleClick.ts +3 -2
  141. package/src/screenplay/interactions/Enter.ts +3 -2
  142. package/src/screenplay/interactions/ExecuteScript.ts +2 -1
  143. package/src/screenplay/interactions/Hover.ts +3 -2
  144. package/src/screenplay/interactions/Navigate.ts +2 -1
  145. package/src/screenplay/interactions/PageElementInteraction.ts +4 -3
  146. package/src/screenplay/interactions/Press.ts +4 -2
  147. package/src/screenplay/interactions/RightClick.ts +4 -3
  148. package/src/screenplay/interactions/Scroll.ts +3 -2
  149. package/src/screenplay/interactions/Select.ts +4 -2
  150. package/src/screenplay/interactions/Switch.ts +3 -2
  151. package/src/screenplay/interactions/TakeScreenshot.ts +2 -1
  152. package/src/screenplay/models/BrowsingSession.ts +8 -2
  153. package/src/screenplay/models/Cookie.ts +5 -3
  154. package/src/screenplay/models/CookieData.ts +1 -1
  155. package/src/screenplay/models/Locator.ts +5 -2
  156. package/src/screenplay/models/Page.ts +22 -14
  157. package/src/screenplay/models/PageElement.ts +15 -6
  158. package/src/screenplay/models/PageElements.ts +5 -4
  159. package/src/screenplay/models/RootLocator.ts +1 -1
  160. package/src/screenplay/models/Switchable.ts +1 -1
  161. package/src/screenplay/models/dialogs/ModalDialog.ts +2 -1
  162. package/src/screenplay/models/dialogs/ModalDialogHandler.ts +1 -1
  163. package/src/screenplay/models/selectors/By.ts +2 -1
  164. package/src/screenplay/models/selectors/Selector.ts +2 -1
  165. package/src/screenplay/questions/Attribute.ts +2 -1
  166. package/src/screenplay/questions/CssClasses.ts +2 -1
  167. package/src/screenplay/questions/LastScriptExecution.ts +2 -1
  168. package/src/screenplay/questions/Selected.ts +3 -2
  169. package/src/screenplay/questions/Text.ts +2 -1
  170. package/src/screenplay/questions/Value.ts +2 -1
  171. package/src/stage/crew/photographer/Photographer.ts +3 -2
  172. package/src/stage/crew/photographer/strategies/PhotoTakingStrategy.ts +4 -2
  173. package/src/stage/crew/photographer/strategies/TakePhotosBeforeAndAfterInteractions.ts +2 -1
  174. package/src/stage/crew/photographer/strategies/TakePhotosOfFailures.ts +2 -1
  175. package/src/stage/crew/photographer/strategies/TakePhotosOfInteractions.ts +2 -1
@@ -1,12 +1,13 @@
1
- import { Answerable, d, MetaQuestion, Optional, Question, QuestionAdapter } from '@serenity-js/core';
1
+ import type { Answerable, MetaQuestion, Optional, QuestionAdapter } from '@serenity-js/core';
2
+ import { d, Question } from '@serenity-js/core';
2
3
  import { ensure, isDefined } from 'tiny-types';
3
4
 
4
5
  import { BrowseTheWeb } from '../abilities';
5
- import { Locator } from './Locator';
6
- import { SelectOption } from './SelectOption';
7
- import { Selector } from './selectors';
8
- import { Switchable } from './Switchable';
9
- import { SwitchableOrigin } from './SwitchableOrigin';
6
+ import type { Locator } from './Locator';
7
+ import type { SelectOption } from './SelectOption';
8
+ import type { Selector } from './selectors';
9
+ import type { Switchable } from './Switchable';
10
+ import type { SwitchableOrigin } from './SwitchableOrigin';
10
11
 
11
12
  /**
12
13
  * Uses the {@apilink Actor|actor's} {@apilink Ability|ability} to {@apilink BrowseTheWeb} to identify
@@ -21,6 +22,14 @@ import { SwitchableOrigin } from './SwitchableOrigin';
21
22
  */
22
23
  export abstract class PageElement<Native_Element_Type = any> implements Optional, Switchable {
23
24
 
25
+ static from<NET>(nativeElement: NET): QuestionAdapter<PageElement<NET>> & MetaQuestion<PageElement, PageElement> {
26
+ return Question.about(`native page element`, async actor => {
27
+ const currentPage = await BrowseTheWeb.as<BrowseTheWeb<NET>>(actor).currentPage();
28
+
29
+ return currentPage.createPageElement(nativeElement);
30
+ }) as QuestionAdapter<PageElement<NET>> & MetaQuestion<PageElement, PageElement>;
31
+ }
32
+
24
33
  static located<NET>(selector: Answerable<Selector>): QuestionAdapter<PageElement<NET>> & MetaQuestion<PageElement, PageElement> {
25
34
  return Question.about(d`page element located ${ selector }`, async actor => {
26
35
  const bySelector = await actor.answer(selector);
@@ -1,9 +1,10 @@
1
- import { Answerable, List, MetaQuestion, Question } from '@serenity-js/core';
1
+ import type { Answerable, MetaQuestion} from '@serenity-js/core';
2
+ import { List, Question } from '@serenity-js/core';
2
3
 
3
4
  import { BrowseTheWeb } from '../abilities';
4
- import { Locator } from './Locator';
5
- import { PageElement } from './PageElement';
6
- import { Selector } from './selectors';
5
+ import type { Locator } from './Locator';
6
+ import type { PageElement } from './PageElement';
7
+ import type { Selector } from './selectors';
7
8
 
8
9
  /**
9
10
  * Uses the {@apilink Actor|actor's} {@apilink Ability|ability} to {@apilink BrowseTheWeb} to identify
@@ -1,4 +1,4 @@
1
- import { Optional } from '@serenity-js/core';
1
+ import type { Optional } from '@serenity-js/core';
2
2
  import { inspectedObject } from '@serenity-js/core/lib/io';
3
3
  import * as util from 'util'; // eslint-disable-line unicorn/import-style
4
4
 
@@ -1,4 +1,4 @@
1
- import { SwitchableOrigin } from './SwitchableOrigin';
1
+ import type { SwitchableOrigin } from './SwitchableOrigin';
2
2
 
3
3
  /**
4
4
  * Describes a Serenity/JS model object that can be switched _to_ and switched back _from_
@@ -1,4 +1,5 @@
1
- import { Answerable, d, Interaction, Optional, Question, QuestionAdapter } from '@serenity-js/core';
1
+ import type { Answerable, Interaction, Optional, Question, QuestionAdapter } from '@serenity-js/core';
2
+ import { d } from '@serenity-js/core';
2
3
 
3
4
  import { Page } from '../Page';
4
5
 
@@ -1,7 +1,7 @@
1
1
  import { ensure, isDefined } from 'tiny-types';
2
2
 
3
3
  import { AbsentModalDialog } from './AbsentModalDialog';
4
- import { ModalDialog } from './ModalDialog';
4
+ import type { ModalDialog } from './ModalDialog';
5
5
 
6
6
  /**
7
7
  * Represent the strategy to use with any upcoming {@apilink ModalDialog} windows.
@@ -1,4 +1,5 @@
1
- import { Answerable, f, Question } from '@serenity-js/core';
1
+ import type { Answerable} from '@serenity-js/core';
2
+ import { f, Question } from '@serenity-js/core';
2
3
 
3
4
  import { ByCss } from './ByCss';
4
5
  import { ByCssContainingText } from './ByCssContainingText';
@@ -1,11 +1,12 @@
1
1
  import { f } from '@serenity-js/core';
2
+ import { TinyType } from 'tiny-types';
2
3
 
3
4
  /**
4
5
  * Describes a selector you use to identify a {@apilink PageElement} or a group of {@apilink PageElements}.
5
6
  *
6
7
  * @group Models
7
8
  */
8
- export abstract class Selector {
9
+ export abstract class Selector extends TinyType {
9
10
 
10
11
  toString(): string {
11
12
  const selectorDescription = this.constructor.name.replaceAll(/([a-z])([A-Z])/g, '$1 $2').toLowerCase();
@@ -1,4 +1,5 @@
1
- import { Answerable, AnswersQuestions, d, LogicError, MetaQuestion, Question, QuestionAdapter, UsesAbilities } from '@serenity-js/core';
1
+ import type { Answerable, AnswersQuestions, MetaQuestion, QuestionAdapter, UsesAbilities } from '@serenity-js/core';
2
+ import { d, LogicError, Question } from '@serenity-js/core';
2
3
 
3
4
  import { PageElement } from '../models';
4
5
 
@@ -1,4 +1,5 @@
1
- import { Answerable, AnswersQuestions, d, MetaQuestion, Question, QuestionAdapter, UsesAbilities } from '@serenity-js/core';
1
+ import type { Answerable, AnswersQuestions, MetaQuestion, QuestionAdapter, UsesAbilities } from '@serenity-js/core';
2
+ import { d, Question } from '@serenity-js/core';
2
3
 
3
4
  import { PageElement } from '../models';
4
5
 
@@ -1,4 +1,5 @@
1
- import { Question, QuestionAdapter } from '@serenity-js/core';
1
+ import type { QuestionAdapter } from '@serenity-js/core';
2
+ import { Question } from '@serenity-js/core';
2
3
 
3
4
  import { BrowseTheWeb } from '../abilities';
4
5
 
@@ -1,6 +1,7 @@
1
- import { Answerable, d, Question, QuestionAdapter } from '@serenity-js/core';
1
+ import type { Answerable, QuestionAdapter } from '@serenity-js/core';
2
+ import { d, Question } from '@serenity-js/core';
2
3
 
3
- import { PageElement } from '../models';
4
+ import type { PageElement } from '../models';
4
5
 
5
6
  /**
6
7
  * Uses the {@apilink Actor|actor's} {@apilink Ability|ability} to {@apilink BrowseTheWeb} to retrieve
@@ -1,4 +1,5 @@
1
- import { Answerable, AnswersQuestions, d, MetaQuestion, Question, QuestionAdapter, UsesAbilities } from '@serenity-js/core';
1
+ import type { Answerable, AnswersQuestions, MetaQuestion, QuestionAdapter, UsesAbilities } from '@serenity-js/core';
2
+ import { d, Question } from '@serenity-js/core';
2
3
  import { asyncMap } from '@serenity-js/core/lib/io';
3
4
 
4
5
  import { PageElement, PageElements } from '../models';
@@ -1,4 +1,5 @@
1
- import { Answerable, AnswersQuestions, d, MetaQuestion, Question, QuestionAdapter, UsesAbilities } from '@serenity-js/core';
1
+ import type { Answerable, AnswersQuestions, MetaQuestion, QuestionAdapter, UsesAbilities } from '@serenity-js/core';
2
+ import { d, Question } from '@serenity-js/core';
2
3
 
3
4
  import { PageElement } from '../models';
4
5
 
@@ -1,6 +1,7 @@
1
1
  import { ConfigurationError, LogicError } from '@serenity-js/core';
2
- import { ActivityFinished, ActivityStarts, DomainEvent } from '@serenity-js/core/lib/events';
3
- import { Stage, StageCrewMember } from '@serenity-js/core/lib/stage';
2
+ import type { DomainEvent } from '@serenity-js/core/lib/events';
3
+ import { ActivityFinished, ActivityStarts } from '@serenity-js/core/lib/events';
4
+ import type { Stage, StageCrewMember } from '@serenity-js/core/lib/stage';
4
5
 
5
6
  import * as strategies from './strategies';
6
7
 
@@ -1,5 +1,7 @@
1
- import { LogicError, Stage } from '@serenity-js/core';
2
- import { ActivityFinished, ActivityRelatedArtifactGenerated, ActivityStarts, AsyncOperationAborted, AsyncOperationAttempted, AsyncOperationCompleted, AsyncOperationFailed, DomainEvent } from '@serenity-js/core/lib/events';
1
+ import type { Stage } from '@serenity-js/core';
2
+ import { LogicError } from '@serenity-js/core';
3
+ import type { ActivityFinished, ActivityStarts, DomainEvent } from '@serenity-js/core/lib/events';
4
+ import { ActivityRelatedArtifactGenerated, AsyncOperationAborted, AsyncOperationAttempted, AsyncOperationCompleted, AsyncOperationFailed } from '@serenity-js/core/lib/events';
3
5
  import { CorrelationId, Description, Name, Photo } from '@serenity-js/core/lib/model';
4
6
 
5
7
  import { BrowseTheWeb } from '../../../../screenplay';
@@ -1,4 +1,5 @@
1
- import { DomainEvent, InteractionFinished, InteractionStarts } from '@serenity-js/core/lib/events';
1
+ import type { DomainEvent} from '@serenity-js/core/lib/events';
2
+ import { InteractionFinished, InteractionStarts } from '@serenity-js/core/lib/events';
2
3
 
3
4
  import { PhotoTakingStrategy } from './PhotoTakingStrategy';
4
5
 
@@ -1,4 +1,5 @@
1
- import { DomainEvent, InteractionFinished } from '@serenity-js/core/lib/events';
1
+ import type { DomainEvent} from '@serenity-js/core/lib/events';
2
+ import { InteractionFinished } from '@serenity-js/core/lib/events';
2
3
  import { ImplementationPending } from '@serenity-js/core/lib/model';
3
4
 
4
5
  import { PhotoTakingStrategy } from './PhotoTakingStrategy';
@@ -1,4 +1,5 @@
1
- import { DomainEvent, InteractionFinished } from '@serenity-js/core/lib/events';
1
+ import type { DomainEvent} from '@serenity-js/core/lib/events';
2
+ import { InteractionFinished } from '@serenity-js/core/lib/events';
2
3
 
3
4
  import { PhotoTakingStrategy } from './PhotoTakingStrategy';
4
5