@serenity-js/protractor 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 (169) hide show
  1. package/CHANGELOG.md +144 -2236
  2. package/README.md +39 -26
  3. package/lib/adapter/Config.d.ts +11 -9
  4. package/lib/adapter/Config.d.ts.map +1 -0
  5. package/lib/adapter/ProtractorFrameworkAdapter.d.ts +2 -3
  6. package/lib/adapter/ProtractorFrameworkAdapter.d.ts.map +1 -0
  7. package/lib/adapter/ProtractorFrameworkAdapter.js +11 -10
  8. package/lib/adapter/ProtractorFrameworkAdapter.js.map +1 -1
  9. package/lib/adapter/browser-detector/BrowserDetector.d.ts +1 -0
  10. package/lib/adapter/browser-detector/BrowserDetector.d.ts.map +1 -0
  11. package/lib/adapter/browser-detector/BrowserDetector.js +5 -5
  12. package/lib/adapter/browser-detector/BrowserDetector.js.map +1 -1
  13. package/lib/adapter/browser-detector/StandardisedCapabilities.d.ts +5 -4
  14. package/lib/adapter/browser-detector/StandardisedCapabilities.d.ts.map +1 -0
  15. package/lib/adapter/browser-detector/StandardisedCapabilities.js +17 -17
  16. package/lib/adapter/browser-detector/StandardisedCapabilities.js.map +1 -1
  17. package/lib/adapter/browser-detector/index.d.ts +1 -0
  18. package/lib/adapter/browser-detector/index.d.ts.map +1 -0
  19. package/lib/adapter/browser-detector/index.js +5 -1
  20. package/lib/adapter/browser-detector/index.js.map +1 -1
  21. package/lib/adapter/index.d.ts +2 -0
  22. package/lib/adapter/index.d.ts.map +1 -0
  23. package/lib/adapter/index.js +6 -1
  24. package/lib/adapter/index.js.map +1 -1
  25. package/lib/adapter/reporter/ProtractorReport.d.ts +5 -6
  26. package/lib/adapter/reporter/ProtractorReport.d.ts.map +1 -0
  27. package/lib/adapter/reporter/ProtractorReporter.d.ts +1 -0
  28. package/lib/adapter/reporter/ProtractorReporter.d.ts.map +1 -0
  29. package/lib/adapter/reporter/ProtractorReporter.js +10 -5
  30. package/lib/adapter/reporter/ProtractorReporter.js.map +1 -1
  31. package/lib/adapter/reporter/index.d.ts +1 -0
  32. package/lib/adapter/reporter/index.d.ts.map +1 -0
  33. package/lib/adapter/reporter/index.js +5 -1
  34. package/lib/adapter/reporter/index.js.map +1 -1
  35. package/lib/adapter/run.d.ts +7 -4
  36. package/lib/adapter/run.d.ts.map +1 -0
  37. package/lib/adapter/run.js +6 -4
  38. package/lib/adapter/run.js.map +1 -1
  39. package/lib/adapter/runner/CucumberAdapterConfig.d.ts +5 -10
  40. package/lib/adapter/runner/CucumberAdapterConfig.d.ts.map +1 -0
  41. package/lib/adapter/runner/TestRunnerDetector.d.ts +5 -12
  42. package/lib/adapter/runner/TestRunnerDetector.d.ts.map +1 -0
  43. package/lib/adapter/runner/TestRunnerDetector.js +7 -15
  44. package/lib/adapter/runner/TestRunnerDetector.js.map +1 -1
  45. package/lib/adapter/runner/TestRunnerLoader.d.ts +20 -17
  46. package/lib/adapter/runner/TestRunnerLoader.d.ts.map +1 -0
  47. package/lib/adapter/runner/TestRunnerLoader.js +18 -18
  48. package/lib/adapter/runner/TestRunnerLoader.js.map +1 -1
  49. package/lib/adapter/runner/index.d.ts +1 -0
  50. package/lib/adapter/runner/index.d.ts.map +1 -0
  51. package/lib/adapter/runner/index.js +5 -1
  52. package/lib/adapter/runner/index.js.map +1 -1
  53. package/lib/index.d.ts +1 -0
  54. package/lib/index.d.ts.map +1 -0
  55. package/lib/index.js +5 -1
  56. package/lib/index.js.map +1 -1
  57. package/lib/screenplay/abilities/BrowseTheWebWithProtractor.d.ts +62 -300
  58. package/lib/screenplay/abilities/BrowseTheWebWithProtractor.d.ts.map +1 -0
  59. package/lib/screenplay/abilities/BrowseTheWebWithProtractor.js +62 -422
  60. package/lib/screenplay/abilities/BrowseTheWebWithProtractor.js.map +1 -1
  61. package/lib/screenplay/abilities/index.d.ts +1 -0
  62. package/lib/screenplay/abilities/index.d.ts.map +1 -0
  63. package/lib/screenplay/abilities/index.js +5 -1
  64. package/lib/screenplay/abilities/index.js.map +1 -1
  65. package/lib/screenplay/index.d.ts +1 -0
  66. package/lib/screenplay/index.d.ts.map +1 -0
  67. package/lib/screenplay/index.js +5 -1
  68. package/lib/screenplay/index.js.map +1 -1
  69. package/lib/screenplay/interactions/UseAngular.d.ts +53 -48
  70. package/lib/screenplay/interactions/UseAngular.d.ts.map +1 -0
  71. package/lib/screenplay/interactions/UseAngular.js +52 -42
  72. package/lib/screenplay/interactions/UseAngular.js.map +1 -1
  73. package/lib/screenplay/interactions/index.d.ts +1 -0
  74. package/lib/screenplay/interactions/index.d.ts.map +1 -0
  75. package/lib/screenplay/interactions/index.js +5 -1
  76. package/lib/screenplay/interactions/index.js.map +1 -1
  77. package/lib/screenplay/models/ProtractorBrowsingSession.d.ts +22 -0
  78. package/lib/screenplay/models/ProtractorBrowsingSession.d.ts.map +1 -0
  79. package/lib/screenplay/models/ProtractorBrowsingSession.js +99 -0
  80. package/lib/screenplay/models/ProtractorBrowsingSession.js.map +1 -0
  81. package/lib/screenplay/models/ProtractorCookie.d.ts +6 -0
  82. package/lib/screenplay/models/ProtractorCookie.d.ts.map +1 -0
  83. package/lib/screenplay/models/ProtractorCookie.js +8 -3
  84. package/lib/screenplay/models/ProtractorCookie.js.map +1 -1
  85. package/lib/screenplay/models/ProtractorErrorHandler.d.ts +8 -0
  86. package/lib/screenplay/models/ProtractorErrorHandler.d.ts.map +1 -0
  87. package/lib/screenplay/models/ProtractorErrorHandler.js +23 -0
  88. package/lib/screenplay/models/ProtractorErrorHandler.js.map +1 -0
  89. package/lib/screenplay/models/ProtractorModalDialogHandler.d.ts +25 -0
  90. package/lib/screenplay/models/ProtractorModalDialogHandler.d.ts.map +1 -0
  91. package/lib/screenplay/models/ProtractorModalDialogHandler.js +74 -0
  92. package/lib/screenplay/models/ProtractorModalDialogHandler.js.map +1 -0
  93. package/lib/screenplay/models/ProtractorPage.d.ts +58 -6
  94. package/lib/screenplay/models/ProtractorPage.d.ts.map +1 -0
  95. package/lib/screenplay/models/ProtractorPage.js +221 -44
  96. package/lib/screenplay/models/ProtractorPage.js.map +1 -1
  97. package/lib/screenplay/models/ProtractorPageElement.d.ts +10 -1
  98. package/lib/screenplay/models/ProtractorPageElement.d.ts.map +1 -0
  99. package/lib/screenplay/models/ProtractorPageElement.js +141 -147
  100. package/lib/screenplay/models/ProtractorPageElement.js.map +1 -1
  101. package/lib/screenplay/models/index.d.ts +2 -1
  102. package/lib/screenplay/models/index.d.ts.map +1 -0
  103. package/lib/screenplay/models/index.js +6 -2
  104. package/lib/screenplay/models/index.js.map +1 -1
  105. package/lib/screenplay/models/locators/ProtractorLocator.d.ts +21 -8
  106. package/lib/screenplay/models/locators/ProtractorLocator.d.ts.map +1 -0
  107. package/lib/screenplay/models/locators/ProtractorLocator.js +107 -10
  108. package/lib/screenplay/models/locators/ProtractorLocator.js.map +1 -1
  109. package/lib/screenplay/models/locators/ProtractorRootLocator.d.ts +17 -0
  110. package/lib/screenplay/models/locators/ProtractorRootLocator.d.ts.map +1 -0
  111. package/lib/screenplay/models/locators/ProtractorRootLocator.js +38 -0
  112. package/lib/screenplay/models/locators/ProtractorRootLocator.js.map +1 -0
  113. package/lib/screenplay/models/locators/index.d.ts +2 -1
  114. package/lib/screenplay/models/locators/index.d.ts.map +1 -0
  115. package/lib/screenplay/models/locators/index.js +6 -2
  116. package/lib/screenplay/models/locators/index.js.map +1 -1
  117. package/lib/screenplay/promised.d.ts +3 -3
  118. package/lib/screenplay/promised.d.ts.map +1 -0
  119. package/lib/screenplay/promised.js +2 -3
  120. package/lib/screenplay/promised.js.map +1 -1
  121. package/lib/screenplay/questions/ProtractorParam.d.ts +64 -51
  122. package/lib/screenplay/questions/ProtractorParam.d.ts.map +1 -0
  123. package/lib/screenplay/questions/ProtractorParam.js +59 -47
  124. package/lib/screenplay/questions/ProtractorParam.js.map +1 -1
  125. package/lib/screenplay/questions/index.d.ts +1 -0
  126. package/lib/screenplay/questions/index.d.ts.map +1 -0
  127. package/lib/screenplay/questions/index.js +5 -1
  128. package/lib/screenplay/questions/index.js.map +1 -1
  129. package/lib/screenplay/unpromisedWebElement.d.ts +6 -4
  130. package/lib/screenplay/unpromisedWebElement.d.ts.map +1 -0
  131. package/lib/screenplay/unpromisedWebElement.js +5 -4
  132. package/lib/screenplay/unpromisedWebElement.js.map +1 -1
  133. package/package.json +36 -60
  134. package/src/adapter/Config.ts +10 -9
  135. package/src/adapter/ProtractorFrameworkAdapter.ts +16 -10
  136. package/src/adapter/browser-detector/BrowserDetector.ts +3 -3
  137. package/src/adapter/browser-detector/StandardisedCapabilities.ts +24 -24
  138. package/src/adapter/index.ts +1 -0
  139. package/src/adapter/reporter/ProtractorReport.ts +4 -6
  140. package/src/adapter/reporter/ProtractorReporter.ts +16 -16
  141. package/src/adapter/run.ts +6 -4
  142. package/src/adapter/runner/CucumberAdapterConfig.ts +5 -10
  143. package/src/adapter/runner/TestRunnerDetector.ts +5 -13
  144. package/src/adapter/runner/TestRunnerLoader.ts +21 -19
  145. package/src/screenplay/abilities/BrowseTheWebWithProtractor.ts +63 -480
  146. package/src/screenplay/interactions/UseAngular.ts +55 -44
  147. package/src/screenplay/models/ProtractorBrowsingSession.ts +133 -0
  148. package/src/screenplay/models/ProtractorCookie.ts +8 -3
  149. package/src/screenplay/models/ProtractorErrorHandler.ts +23 -0
  150. package/src/screenplay/models/ProtractorModalDialogHandler.ts +97 -0
  151. package/src/screenplay/models/ProtractorPage.ts +282 -54
  152. package/src/screenplay/models/ProtractorPageElement.ts +160 -165
  153. package/src/screenplay/models/index.ts +1 -1
  154. package/src/screenplay/models/locators/ProtractorLocator.ts +121 -31
  155. package/src/screenplay/models/locators/ProtractorRootLocator.ts +41 -0
  156. package/src/screenplay/models/locators/index.ts +1 -1
  157. package/src/screenplay/promised.ts +2 -3
  158. package/src/screenplay/questions/ProtractorParam.ts +62 -49
  159. package/src/screenplay/unpromisedWebElement.ts +5 -4
  160. package/tsconfig.build.json +14 -0
  161. package/lib/screenplay/models/ProtractorModalDialog.d.ts +0 -11
  162. package/lib/screenplay/models/ProtractorModalDialog.js +0 -43
  163. package/lib/screenplay/models/ProtractorModalDialog.js.map +0 -1
  164. package/lib/screenplay/models/locators/ProtractorNativeElementRoot.d.ts +0 -5
  165. package/lib/screenplay/models/locators/ProtractorNativeElementRoot.js +0 -3
  166. package/lib/screenplay/models/locators/ProtractorNativeElementRoot.js.map +0 -1
  167. package/src/screenplay/models/ProtractorModalDialog.ts +0 -49
  168. package/src/screenplay/models/locators/ProtractorNativeElementRoot.ts +0 -6
  169. package/tsconfig.eslint.json +0 -10
@@ -1,11 +1,10 @@
1
1
  /**
2
- * @desc
3
- * Wraps Webdriver promise into a Node-native promise to allow for correct promise chaining.
2
+ * Wraps Webdriver promise-like objects into
3
+ * a Node-native promise to allow for correct promise chaining.
4
4
  *
5
5
  * @private
6
6
  *
7
7
  * @param promiseLike
8
- * @returns {Promise<T>}
9
8
  */
10
9
  export function promised<T>(promiseLike: PromiseLike<T>): Promise<T> {
11
10
  return new Promise((resolve, reject) => {
@@ -1,70 +1,83 @@
1
1
  /* eslint-disable unicorn/prevent-abbreviations */
2
- import { Answerable, Question, QuestionAdapter } from '@serenity-js/core';
3
- import { formatted } from '@serenity-js/core/lib/io';
2
+ import { Answerable, d, Question, QuestionAdapter } from '@serenity-js/core';
4
3
 
5
4
  import { BrowseTheWebWithProtractor } from '../abilities';
6
5
 
7
6
  /**
8
- * @desc
9
- * Returns a Protractor configuration parameter specified in `protractor.conf.js`.
10
- * Note that Protractor configuration parameters can be overridden via the command line.
7
+ * Returns a Protractor configuration parameter specified in `protractor.conf.js`
8
+ * and identified by name. Protractor configuration parameters can be overridden via the command line.
11
9
  *
12
- * @example <caption>protractor.conf.js</caption>
13
- * exports.config = {
14
- * params: {
15
- * login: {
16
- * username: 'jane@example.org'
17
- * password: process.env.PASSWORD
18
- * }
19
- * }
20
- * // ...
21
- * }
10
+ * **Warning:** this question is Protractor-specific, so using it in your tests
11
+ * will reduce their portability across test integration tools.
22
12
  *
23
- * @example <caption>Overriding configuration parameter via the command line</caption>
24
- * protractor ./protractor.conf.js --params.login.username="bob@example.org"
13
+ * ```js
14
+ * // protractor.conf.js
15
+ * exports.config = {
16
+ * params: {
17
+ * login: {
18
+ * username: 'jane@example.org'
19
+ * password: process.env.PASSWORD
20
+ * }
21
+ * }
22
+ * // ...
23
+ * }
24
+ * ```
25
25
  *
26
- * @example <caption>Using as Screenplay Adapter</caption>
27
- * import { actorCalled } from '@serenity-js/core';
28
- * import { BrowseTheWebWithProtractor, ProtractorParam } from '@serenity-js/protractor';
29
- * import { Enter } from '@serenity-js/web';
30
- * import { protractor } from 'protractor';
26
+ * ## Overriding configuration parameter using the command line
31
27
  *
32
- * actorCalled('Jane')
33
- * .whoCan( BrowseTheWebWithProtractor.using(protractor.browser))
34
- * .attemptsTo(
35
- * Enter.theValue(ProtractorParam.called('login').username).into(Form.exampleInput),
36
- * );
28
+ * ```shell
29
+ * npx protractor ./protractor.conf.js --params.login.username="bob@example.org"
30
+ * ```
37
31
  *
38
- * @example <caption>Specifying path to param as string</caption>
39
- * import { actorCalled } from '@serenity-js/core';
40
- * import { BrowseTheWebWithProtractor, ProtractorParam } from '@serenity-js/protractor';
41
- * import { Enter } from '@serenity-js/web';
42
- * import { protractor } from 'protractor';
32
+ * ## Using as `QuestionAdapter`
43
33
  *
44
- * actorCalled('Jane')
45
- * .whoCan( BrowseTheWebWithProtractor.using(protractor.browser))
46
- * .attemptsTo(
47
- * Enter.theValue(ProtractorParam.called('login.username')).into(Form.exampleInput),
48
- * );
34
+ * ```ts
35
+ * import { actorCalled } from '@serenity-js/core'
36
+ * import { BrowseTheWebWithProtractor, ProtractorParam } from '@serenity-js/protractor'
37
+ * import { Enter } from '@serenity-js/web'
38
+ * import { protractor } from 'protractor'
49
39
  *
50
- * @extends {@serenity-js/core/lib/screenplay~Question<Promise<T>>}
51
- *g
52
- * @see {@link BrowseTheWebWithProtractor#param}
40
+ * await actorCalled('Jane')
41
+ * .whoCan( BrowseTheWebWithProtractor.using(protractor.browser))
42
+ * .attemptsTo(
43
+ * Enter.theValue(ProtractorParam.called('login').username).into(Form.exampleInput),
44
+ * )
45
+ * ```
46
+ *
47
+ * ## Specifying path to param as string
48
+ *
49
+ * ```ts
50
+ * import { actorCalled } from '@serenity-js/core'
51
+ * import { BrowseTheWebWithProtractor, ProtractorParam } from '@serenity-js/protractor'
52
+ * import { Enter } from '@serenity-js/web'
53
+ * import { protractor } from 'protractor
54
+ *
55
+ * await actorCalled('Jane')
56
+ * .whoCan(BrowseTheWebWithProtractor.using(protractor.browser))
57
+ * .attemptsTo(
58
+ * Enter.theValue(ProtractorParam.called('login.username')).into(Form.exampleInput),
59
+ * );
60
+ * ```
61
+ *
62
+ * ## Learn more
63
+ * - {@apilink BrowseTheWebWithProtractor.param}
64
+ *
65
+ * @group Questions
53
66
  */
54
67
  export class ProtractorParam
55
68
  {
56
69
  /**
57
- * @desc
58
- * Name of the parameter to retrieve. This could also be a dot-delimited path,
59
- * i.e. `login.username`
70
+ * Name of the parameter to retrieve. This could also be a dot-delimited path,
71
+ * e.g. `login.username`
60
72
  *
61
- * @param {@serenity-js/core/lib/screenplay~Answerable<string>} name
62
- * @returns {Question<Promise<R>> & Adapter<R>}
73
+ * @param name
63
74
  */
64
- static called<R>(name: Answerable<string>): QuestionAdapter<R> {
65
- return Question.about<R>(formatted `the ${ name } param specified in Protractor config`, actor => {
66
- return actor.answer(name)
67
- .then(name => (actor.abilityTo(BrowseTheWebWithProtractor) as BrowseTheWebWithProtractor).param(name));
75
+ static called<Return_Type>(name: Answerable<string>): QuestionAdapter<Return_Type> {
76
+ return Question.about<Return_Type>(d`the ${ name } param specified in Protractor config`, async actor => {
77
+ const paramName = await actor.answer(name);
78
+ const browseTheWeb = BrowseTheWebWithProtractor.as(actor) as BrowseTheWebWithProtractor;
79
+
80
+ return browseTheWeb.param<Return_Type>(paramName);
68
81
  });
69
82
  }
70
83
  }
@@ -1,13 +1,14 @@
1
1
  import { WebElement } from 'protractor';
2
2
 
3
3
  /**
4
- * @desc
5
- * Wraps Webdriver then-ables into a Node-native promise to allow for correct promise chaining.
4
+ * Under [certain conditions](https://github.com/angular/protractor/blob/4bc80d1a459542d883ea9200e4e1f48d265d0fda/lib/element.ts#L797),
5
+ * Protractor `WebElement` implements a `then()` method, and under others it doesn't.
6
6
  *
7
- * @private
7
+ * This design makes it look like a "thenable" in some scenarios, but like a non-thenable in others.
8
+ *
9
+ * This function wraps `WebElement` in a `Proxy` object that ensures the wrapped element is always non-thenable.
8
10
  *
9
11
  * @param promiseLike
10
- * @returns {Promise<T>}
11
12
  */
12
13
  export function unpromisedWebElement<T extends WebElement>(promiseLike: T): T {
13
14
 
@@ -0,0 +1,14 @@
1
+ {
2
+ "extends": "../../tsconfig.build.json",
3
+ "compilerOptions": {
4
+ "outDir": "lib",
5
+ "rootDir": "src",
6
+ "lib": [
7
+ "es2019",
8
+ "dom"
9
+ ]
10
+ },
11
+ "include": [
12
+ "src/**/*.ts"
13
+ ]
14
+ }
@@ -1,11 +0,0 @@
1
- import { ModalDialog } from '@serenity-js/web';
2
- import { ProtractorBrowser } from 'protractor';
3
- export declare class ProtractorModalDialog extends ModalDialog {
4
- private readonly browser;
5
- constructor(browser: ProtractorBrowser);
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,43 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ProtractorModalDialog = void 0;
4
- const web_1 = require("@serenity-js/web");
5
- const selenium_webdriver_1 = require("selenium-webdriver");
6
- const promised_1 = require("../promised");
7
- class ProtractorModalDialog extends web_1.ModalDialog {
8
- constructor(browser) {
9
- super();
10
- this.browser = browser;
11
- }
12
- accept() {
13
- return (0, promised_1.promised)(this.browser.switchTo().alert().accept());
14
- }
15
- dismiss() {
16
- return (0, promised_1.promised)(this.browser.switchTo().alert().dismiss());
17
- }
18
- text() {
19
- return (0, promised_1.promised)(this.browser.switchTo().alert().getText());
20
- }
21
- async enterValue(value) {
22
- const text = [].concat(value).join('');
23
- await (0, promised_1.promised)(this.browser.switchTo().alert().sendKeys(text));
24
- await (0, promised_1.promised)(this.browser.switchTo().alert().accept());
25
- }
26
- // todo: remove in favour of auto-wait in the above methods
27
- isPresent() {
28
- return (0, promised_1.promised)(this.browser.switchTo().alert())
29
- .then(() => true, error => {
30
- // Based on:
31
- // https://github.com/SeleniumHQ/selenium/blob/941dc9c6b2e2aa4f701c1b72be8de03d4b7e996a/javascript/node/selenium-webdriver/lib/until.js#L107
32
- return error instanceof Error &&
33
- !(error.name === selenium_webdriver_1.error.NoSuchAlertError.name
34
- // XXX: Workaround for GeckoDriver error `TypeError: can't convert null
35
- // to object`. For more details, see
36
- // https://github.com/SeleniumHQ/selenium/pull/2137
37
- || (error.name === selenium_webdriver_1.error.WebDriverError.name
38
- && error.message === `can't convert null to object`));
39
- });
40
- }
41
- }
42
- exports.ProtractorModalDialog = ProtractorModalDialog;
43
- //# sourceMappingURL=ProtractorModalDialog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProtractorModalDialog.js","sourceRoot":"","sources":["../../../src/screenplay/models/ProtractorModalDialog.ts"],"names":[],"mappings":";;;AAAA,0CAA+C;AAE/C,2DAAqD;AAErD,0CAAuC;AAEvC,MAAa,qBAAsB,SAAQ,iBAAW;IAElD,YAA6B,OAA0B;QACnD,KAAK,EAAE,CAAC;QADiB,YAAO,GAAP,OAAO,CAAmB;IAEvD,CAAC;IAED,MAAM;QACF,OAAO,IAAA,mBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO;QACH,OAAO,IAAA,mBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI;QACA,OAAO,IAAA,mBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAA4C;QACzD,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,IAAA,mBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,MAAM,IAAA,mBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,2DAA2D;IAC3D,SAAS;QACL,OAAO,IAAA,mBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC;aAC3C,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;YAEtB,YAAY;YACZ,4IAA4I;YAC5I,OAAO,KAAK,YAAY,KAAK;gBACzB,CAAE,CACE,KAAK,CAAC,IAAI,KAAK,0BAAM,CAAC,gBAAgB,CAAC,IAAI;oBAC3C,uEAAuE;oBACvE,oCAAoC;oBACpC,mDAAmD;uBAChD,CAAC,KAAK,CAAC,IAAI,KAAK,0BAAM,CAAC,cAAc,CAAC,IAAI;2BACtC,KAAK,CAAC,OAAO,KAAK,8BAA8B,CAAC,CAC3D,CAAC;QACV,CAAC,CAAC,CAAC;IACX,CAAC;CACJ;AA1CD,sDA0CC"}
@@ -1,5 +0,0 @@
1
- import { ElementArrayFinder, ElementFinder, Locator } from 'protractor';
2
- export interface ProtractorNativeElementRoot {
3
- element(selector: Locator): ElementFinder;
4
- all(selector: Locator): ElementArrayFinder;
5
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=ProtractorNativeElementRoot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProtractorNativeElementRoot.js","sourceRoot":"","sources":["../../../../src/screenplay/models/locators/ProtractorNativeElementRoot.ts"],"names":[],"mappings":""}
@@ -1,49 +0,0 @@
1
- import { ModalDialog } from '@serenity-js/web';
2
- import { ProtractorBrowser } from 'protractor';
3
- import { error as errors } from 'selenium-webdriver';
4
-
5
- import { promised } from '../promised';
6
-
7
- export class ProtractorModalDialog extends ModalDialog {
8
-
9
- constructor(private readonly browser: ProtractorBrowser) {
10
- super();
11
- }
12
-
13
- accept(): Promise<void> {
14
- return promised(this.browser.switchTo().alert().accept());
15
- }
16
-
17
- dismiss(): Promise<void> {
18
- return promised(this.browser.switchTo().alert().dismiss());
19
- }
20
-
21
- text(): Promise<string> {
22
- return promised(this.browser.switchTo().alert().getText());
23
- }
24
-
25
- async enterValue(value: string | number | (string | number)[]): Promise<void> {
26
- const text = [].concat(value).join('');
27
- await promised(this.browser.switchTo().alert().sendKeys(text));
28
- await promised(this.browser.switchTo().alert().accept());
29
- }
30
-
31
- // todo: remove in favour of auto-wait in the above methods
32
- isPresent(): Promise<boolean> {
33
- return promised(this.browser.switchTo().alert())
34
- .then(() => true, error => {
35
-
36
- // Based on:
37
- // https://github.com/SeleniumHQ/selenium/blob/941dc9c6b2e2aa4f701c1b72be8de03d4b7e996a/javascript/node/selenium-webdriver/lib/until.js#L107
38
- return error instanceof Error &&
39
- ! (
40
- error.name === errors.NoSuchAlertError.name
41
- // XXX: Workaround for GeckoDriver error `TypeError: can't convert null
42
- // to object`. For more details, see
43
- // https://github.com/SeleniumHQ/selenium/pull/2137
44
- || (error.name === errors.WebDriverError.name
45
- && error.message === `can't convert null to object`)
46
- );
47
- });
48
- }
49
- }
@@ -1,6 +0,0 @@
1
- import { ElementArrayFinder, ElementFinder, Locator } from 'protractor';
2
-
3
- export interface ProtractorNativeElementRoot {
4
- element(selector: Locator): ElementFinder;
5
- all(selector: Locator): ElementArrayFinder;
6
- }
@@ -1,10 +0,0 @@
1
- {
2
- "extends": "./tsconfig",
3
- "include": [
4
- "src/**/*.ts",
5
- "spec/**/*.ts"
6
- ],
7
- "exclude": [
8
- "node_modules"
9
- ]
10
- }